ETH Price: $3,204.02 (+2.28%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer212114912024-11-18 2:03:5971 days ago1731895439IN
0xB708925e...025e04134
0 ETH0.000943458.73767716
Transfer208538872024-09-29 4:24:11121 days ago1727583851IN
0xB708925e...025e04134
0 ETH0.000190535.0048646
Transfer208538762024-09-29 4:21:59121 days ago1727583719IN
0xB708925e...025e04134
0 ETH0.000672486.51864074
Transfer208537032024-09-29 3:47:23121 days ago1727581643IN
0xB708925e...025e04134
0 ETH0.000559845.18545477
Transfer202243402024-07-03 6:57:59209 days ago1719989879IN
0xB708925e...025e04134
0 ETH0.000095322.22364041
Transfer202243312024-07-03 6:56:11209 days ago1719989771IN
0xB708925e...025e04134
0 ETH0.000103872.42297276
Transfer202175652024-07-02 8:13:59210 days ago1719908039IN
0xB708925e...025e04134
0 ETH0.000139723.2594396
Transfer202175122024-07-02 8:03:23210 days ago1719907403IN
0xB708925e...025e04134
0 ETH0.000177124.13188589
Transfer202174282024-07-02 7:46:23210 days ago1719906383IN
0xB708925e...025e04134
0 ETH0.00008233.27269656
Transfer202174172024-07-02 7:44:11210 days ago1719906251IN
0xB708925e...025e04134
0 ETH0.000136983.59835955
Transfer202173872024-07-02 7:38:11210 days ago1719905891IN
0xB708925e...025e04134
0 ETH0.000414223.83668521
Transfer201806902024-06-27 4:39:11215 days ago1719463151IN
0xB708925e...025e04134
0 ETH0.000164163.82829753
Transfer201806752024-06-27 4:36:11215 days ago1719462971IN
0xB708925e...025e04134
0 ETH0.000167673.91131263
Transfer201806692024-06-27 4:34:59215 days ago1719462899IN
0xB708925e...025e04134
0 ETH0.00017844.16173196
Transfer201806602024-06-27 4:33:11215 days ago1719462791IN
0xB708925e...025e04134
0 ETH0.00017083.98430451
Transfer201806552024-06-27 4:32:11215 days ago1719462731IN
0xB708925e...025e04134
0 ETH0.000185084.31737902
Transfer201806452024-06-27 4:30:11215 days ago1719462611IN
0xB708925e...025e04134
0 ETH0.000179734.19260098
Transfer201806392024-06-27 4:28:59215 days ago1719462539IN
0xB708925e...025e04134
0 ETH0.000194414.53515929
Transfer201806242024-06-27 4:25:59215 days ago1719462359IN
0xB708925e...025e04134
0 ETH0.000299454.99856541
Transfer201743932024-06-26 7:32:59216 days ago1719387179IN
0xB708925e...025e04134
0 ETH0.000078882.07157613
Transfer201735322024-06-26 4:40:11216 days ago1719376811IN
0xB708925e...025e04134
0 ETH0.0007718518
Transfer201735322024-06-26 4:40:11216 days ago1719376811IN
0xB708925e...025e04134
0 ETH0.0019435618
Transfer199591292024-05-27 5:30:11246 days ago1716787811IN
0xB708925e...025e04134
0 ETH0.0007720718
Transfer199591292024-05-27 5:30:11246 days ago1716787811IN
0xB708925e...025e04134
0 ETH0.0007718518
Transfer198462542024-05-11 10:40:11262 days ago1715424011IN
0xB708925e...025e04134
0 ETH0.0019437818
View all transactions

Advanced mode:
Parent Transaction Hash Block
From
To
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Token

Compiler Version
v0.4.18+commit.9cf6e910

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-12-17
*/

pragma solidity ^0.4.18;

library SafeMath {
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a * b;
        assert(a == 0 || c / a == b);
        return c;
    }

    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 c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        assert(b <= a);
        return a - b;
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        assert(c >= a);
        return c;
    }
}

contract owned {
    address public owner;
    function owned() public {
        owner = msg.sender;
    }

    modifier onlyOwner {
        require(msg.sender == owner);
        _;
    }

    function transferOwnership(address newOwner) public onlyOwner {
        require(newOwner != 0x0);
        owner = newOwner;
    }
}

contract BasicToken is owned {
    using SafeMath for uint256;

    mapping (address => uint256) internal balance_of;
    mapping (address => mapping (address => uint256)) internal allowances;

    mapping (address => bool) private address_exist;
    address[] private address_list;

    bool public transfer_close = false;

    event Transfer(address indexed from, address indexed to, uint256 value);

    function BasicToken() public {
    }

    function balanceOf(address token_owner) public constant returns (uint balance) {
        return balance_of[token_owner];
    }

    function allowance(
        address _hoarder,
        address _spender
    ) public constant returns (uint256) {
        return allowances[_hoarder][_spender];
    }

    function superApprove(
        address _hoarder,
        address _spender,
        uint256 _value
    ) onlyOwner public returns(bool) {
        require(_hoarder != address(0));
        require(_spender != address(0));
        require(_value >= 0);
        allowances[_hoarder][_spender] = _value;
        return true;
    }

    function approve(address _spender, uint256 _value) public returns (bool) {
        require(msg.sender != address(0));
        require(_spender != address(0));
        require(_value >= 0);
        allowances[msg.sender][_spender] = _value;
        return true;
    }

    function getAddressLength() onlyOwner public constant returns (uint) {
        return address_list.length;
    }

    function getAddressIndex(uint _address_index) onlyOwner public constant returns (address _address) {
        _address = address_list[_address_index];
    }

    function getAllAddress() onlyOwner public constant returns (address[]) {
        return address_list;
    }

    function getAddressExist(address _target) public constant returns (bool) {
        if (_target == address(0)) {
            return false;
        } else {
            return address_exist[_target];
        }
    }

    function addAddress(address _target) internal returns(bool) {
        if (_target == address(0)) {
            return false;
        } else if (address_exist[_target] == true) {
            return false;
        } else {
            address_exist[_target] = true;
            address_list[address_list.length++] = _target;
        }
    }

    function mintToken(
        address _to,
        uint256 token_amount,
        uint256 freeze_timestamp
    ) onlyOwner public returns (bool);

    function superMint(
        address _to,
        uint256 token_amount,
        uint256 freeze_timestamp) onlyOwner public returns(bool);

    function transfer(address to, uint256 value) public;
    function transferFrom(address _from, address _to, uint256 _amount) public;

    function transferOpen() onlyOwner public {
        transfer_close = false;
    }

    function transferClose() onlyOwner public {
        transfer_close = true;
    }
}

contract PreSale is owned{
    using SafeMath for uint256;

    struct Sale {
        uint sale_number;
        uint256 start_timestamp;
        uint256 end_timestamp;
        uint8 bonus_rate;
        uint256 sell_limit;
    }

    Sale[] private sale_list;
    uint256[] private sale_sold;

    function PreSale () public {

    }

    function getSaleLength() public constant returns(uint) {
        return sale_list.length;
    }

    function getSaleInfo(uint _index) public constant returns(
        uint sale_number,
        uint256 start_timestamp,
        uint256 end_timestamp,
        uint8 bonus_rate,
        uint256 sell_limit
    ) {
        sale_number = sale_list[_index].sale_number;
        start_timestamp = sale_list[_index].start_timestamp;
        end_timestamp = sale_list[_index].end_timestamp;
        bonus_rate = sale_list[_index].bonus_rate;
        sell_limit = sale_list[_index].sell_limit;
    }

    function getSaleSold(uint _index) public constant returns(uint256) {
        return sale_sold[_index];
    }


    function addBonus(
        uint256 _amount,
        uint8 _bonus
    ) internal pure returns(uint256) {
        return _amount.add((_amount.mul(_bonus)).div(100));
    }


    function newSale(
        uint256 start_timestamp,
        uint256 end_timestamp,
        uint8 bonus_rate,
        uint256 sell_token_limit
    ) onlyOwner public {
        require(start_timestamp > 0);
        require(end_timestamp > 0);
        require(sell_token_limit > 0);

        uint256 sale_number = sale_list.length;
        for (uint i=0; i < sale_list.length; i++) {
            require(sale_list[i].end_timestamp < start_timestamp);
        }

        sale_list[sale_list.length++] = Sale({
            sale_number: sale_number,
            start_timestamp: start_timestamp,
            end_timestamp: end_timestamp,
            bonus_rate: bonus_rate,
            sell_limit: sell_token_limit
        });
        sale_sold[sale_sold.length++] = 0;
    }

    function changeSaleInfo(
        uint256 _index,
        uint256 start_timestamp,
        uint256 end_timestamp,
        uint8 bonus_rate,
        uint256 sell_token_limit
    ) onlyOwner public returns(bool) {
        require(_index < sale_list.length);
        require(start_timestamp > 0);
        require(end_timestamp > 0);
        require(sell_token_limit > 0);

        sale_list[_index].start_timestamp = start_timestamp;
        sale_list[_index].end_timestamp = end_timestamp;
        sale_list[_index].bonus_rate = bonus_rate;
        sale_list[_index].sell_limit = sell_token_limit;
        return true;
    }

    function changeSaleStart(
        uint256 _index,
        uint256 start_timestamp
    ) onlyOwner public returns(bool) {
        require(_index < sale_list.length);
        require(start_timestamp > 0);
        sale_list[_index].start_timestamp = start_timestamp;
        return true;
    }

    function changeSaleEnd(
        uint256 _index,
        uint256 end_timestamp
    ) onlyOwner public returns(bool) {
        require(_index < sale_list.length);
        require(end_timestamp > 0);
        sale_list[_index].end_timestamp = end_timestamp;
        return true;
    }

    function changeSaleBonusRate(
        uint256 _index,
        uint8 bonus_rate
    ) onlyOwner public returns(bool) {
        require(_index < sale_list.length);
        sale_list[_index].bonus_rate = bonus_rate;
        return true;
    }

    function changeSaleTokenLimit(
        uint256 _index,
        uint256 sell_token_limit
    ) onlyOwner public returns(bool) {
        require(_index < sale_list.length);
        require(sell_token_limit > 0);
        sale_list[_index].sell_limit = sell_token_limit;
        return true;
    }


    function checkSaleCanSell(
        uint256 _index,
        uint256 _amount
    ) internal view returns(bool) {
        uint256 index_sold = sale_sold[_index];
        uint256 index_end_timestamp = sale_list[_index].end_timestamp;
        uint256 sell_limit = sale_list[_index].sell_limit;
        uint8 bonus_rate = sale_list[_index].bonus_rate;
        uint256 sell_limit_plus_bonus = addBonus(sell_limit, bonus_rate);

        if (now >= index_end_timestamp) {
            return false;
        } else if (index_sold.add(_amount) > sell_limit_plus_bonus) {
            return false;
        } else {
            return true;
        }
    }

    function addSaleSold(uint256 _index, uint256 amount) internal {
        require(amount > 0);
        require(_index < sale_sold.length);
        require(checkSaleCanSell(_index, amount) == true);
        sale_sold[_index] += amount;
    }

    function subSaleSold(uint256 _index, uint256 amount) internal {
        require(amount > 0);
        require(_index < sale_sold.length);
        require(sale_sold[_index].sub(amount) >= 0);
        sale_sold[_index] -= amount;
    }

    function canSaleInfo() public view returns(
        uint sale_number,
        uint256 start_timestamp,
        uint256 end_timestamp,
        uint8 bonus_rate,
        uint256 sell_limit
    ) {
        var(sale_info, isSale) = nowSaleInfo();
        require(isSale == true);
        sale_number = sale_info.sale_number;
        start_timestamp = sale_info.start_timestamp;
        end_timestamp = sale_info.end_timestamp;
        bonus_rate = sale_info.bonus_rate;
        sell_limit = sale_info.sell_limit;
    }

    function nowSaleInfo() internal view returns(Sale sale_info, bool isSale) {
        isSale = false;
        for (uint i=0; i < sale_list.length; i++) {
            uint256 end_timestamp = sale_list[i].end_timestamp;
            uint256 sell_limit = sale_list[i].sell_limit;
            uint8 bonus_rate = sale_list[i].bonus_rate;
            uint256 sell_limit_plus_bonus = addBonus(sell_limit, bonus_rate);
            uint256 temp_sold_token = sale_sold[i];
            if ((now <= end_timestamp) && (temp_sold_token < sell_limit_plus_bonus)) {
                sale_info = Sale({
                    sale_number: sale_list[i].sale_number,
                    start_timestamp: sale_list[i].start_timestamp,
                    end_timestamp: sale_list[i].end_timestamp,
                    bonus_rate: sale_list[i].bonus_rate,
                    sell_limit: sale_list[i].sell_limit
                });
                isSale = true;
                break;
            } else {
                isSale = false;
                continue;
            }
        }
    }
}

contract Vote is owned {
    event ProposalAdd(uint vote_id, address generator, string descript);
    event ProposalEnd(uint vote_id, string descript);

    struct Proposal {
        address generator;
        string descript;
        uint256 start_timestamp;
        uint256 end_timestamp;
        bool executed;
        uint256 voting_cut;
        uint256 threshold;

        uint256 voting_count;
        uint256 total_weight;
        mapping (address => uint256) voteWeightOf;
        mapping (address => bool) votedOf;
        address[] voter_address;
    }

    uint private vote_id = 0;
    Proposal[] private Proposals;

    function getProposalLength() public constant returns (uint) {
        return Proposals.length;
    }

    function getProposalIndex(uint _proposal_index) public constant returns (
        address generator,
        string descript,
        uint256 start_timestamp,
        uint256 end_timestamp,
        bool executed,
        uint256 voting_count,
        uint256 total_weight,
        uint256 voting_cut,
        uint256 threshold
    ) {
        generator = Proposals[_proposal_index].generator;
        descript = Proposals[_proposal_index].descript;
        start_timestamp = Proposals[_proposal_index].start_timestamp;
        end_timestamp = Proposals[_proposal_index].end_timestamp;
        executed = Proposals[_proposal_index].executed;
        voting_count = Proposals[_proposal_index].voting_count;
        total_weight = Proposals[_proposal_index].total_weight;
        voting_cut = Proposals[_proposal_index].voting_cut;
        threshold = Proposals[_proposal_index].threshold;
    }

    function getProposalVoterList(uint _proposal_index) public constant returns (address[]) {
        return Proposals[_proposal_index].voter_address;
    }

    function newVote(
        address who,
        string descript,
        uint256 start_timestamp,
        uint256 end_timestamp,
        uint256 voting_cut,
        uint256 threshold
    ) onlyOwner public returns (uint256) {
        if (Proposals.length >= 1) {
            require(Proposals[vote_id].end_timestamp < start_timestamp);
            require(Proposals[vote_id].executed == true);
        }

        vote_id = Proposals.length;
        Proposal storage p = Proposals[Proposals.length++];
        p.generator = who;
        p.descript = descript;
        p.start_timestamp = start_timestamp;
        p.end_timestamp = end_timestamp;
        p.executed = false;
        p.voting_cut = voting_cut;
        p.threshold = threshold;

        p.voting_count = 0;
        delete p.voter_address;
        ProposalAdd(vote_id, who, descript);
        return vote_id;
    }

    function voting(address _voter, uint256 _weight) internal returns(bool) {
        if (Proposals[vote_id].end_timestamp < now) {
            Proposals[vote_id].executed = true;
        }

        require(Proposals[vote_id].executed == false);
        require(Proposals[vote_id].end_timestamp > now);
        require(Proposals[vote_id].start_timestamp <= now);
        require(Proposals[vote_id].votedOf[_voter] == false);
        require(Proposals[vote_id].voting_cut <= _weight);

        Proposals[vote_id].votedOf[_voter] = true;
        Proposals[vote_id].voting_count += 1;
        Proposals[vote_id].voteWeightOf[_voter] = _weight;
        Proposals[vote_id].total_weight += _weight;
        Proposals[vote_id].voter_address[Proposals[vote_id].voter_address.length++] = _voter;

        if (Proposals[vote_id].total_weight >= Proposals[vote_id].threshold) {
            Proposals[vote_id].executed = true;
        }
        return true;
    }

    function voteClose() onlyOwner public {
        if (Proposals.length >= 1) {
            Proposals[vote_id].executed = true;
            ProposalEnd(vote_id, Proposals[vote_id].descript);
        }
    }

    function checkVote() onlyOwner public {
        if ((Proposals.length >= 1) &&
            (Proposals[vote_id].end_timestamp < now)) {
            voteClose();
        }
    }
}

contract FreezeToken is owned {
    mapping (address => uint256) public freezeDateOf;

    event Freeze(address indexed _who, uint256 _date);
    event Melt(address indexed _who);

    function checkFreeze(address _sender) public constant returns (bool) {
        if (now >= freezeDateOf[_sender]) {
            return false;
        } else {
            return true;
        }
    }

    function freezeTo(address _who, uint256 _date) internal {
        freezeDateOf[_who] = _date;
        Freeze(_who, _date);
    }

    function meltNow(address _who) internal onlyOwner {
        freezeDateOf[_who] = now;
        Melt(_who);
    }
}

contract TokenInfo is owned {
    using SafeMath for uint256;

    address public token_wallet_address;

    string public name = "Value Interlocking Exchange Coin";
    string public symbol = "VIC";
    uint256 public decimals = 18;
    uint256 public total_supply = 1000000000 * (10 ** uint256(decimals));

    // 1 ether : 10,000 token
    uint256 public conversion_rate = 10;

    event ChangeTokenName(address indexed who);
    event ChangeTokenSymbol(address indexed who);
    event ChangeTokenWalletAddress(address indexed from, address indexed to);
    event ChangeTotalSupply(uint256 indexed from, uint256 indexed to);
    event ChangeConversionRate(uint256 indexed from, uint256 indexed to);
    event ChangeFreezeTime(uint256 indexed from, uint256 indexed to);

    function totalSupply() public constant returns (uint) {
        return total_supply;
    }

    function changeTokenName(string newName) onlyOwner public {
        name = newName;
        ChangeTokenName(msg.sender);
    }

    function changeTokenSymbol(string newSymbol) onlyOwner public {
        symbol = newSymbol;
        ChangeTokenSymbol(msg.sender);
    }

    function changeTokenWallet(address newTokenWallet) onlyOwner internal {
        require(newTokenWallet != address(0));
        address pre_address = token_wallet_address;
        token_wallet_address = newTokenWallet;
        ChangeTokenWalletAddress(pre_address, token_wallet_address);
    }

    function changeTotalSupply(uint256 _total_supply) onlyOwner internal {
        require(_total_supply > 0);
        uint256 pre_total_supply = total_supply;
        total_supply = _total_supply;
        ChangeTotalSupply(pre_total_supply, total_supply);
    }

    function changeConversionRate(uint256 _conversion_rate) onlyOwner public {
        require(_conversion_rate > 0);
        uint256 pre_conversion_rate = conversion_rate;
        conversion_rate = _conversion_rate;
        ChangeConversionRate(pre_conversion_rate, conversion_rate);
    }
}

contract Token is owned, PreSale, FreezeToken, TokenInfo, Vote, BasicToken {
    using SafeMath for uint256;

    bool public open_free = false;

    event Payable(address indexed who, uint256 eth_amount);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Burn(address indexed from, uint256 value);
    event Mint(address indexed to, uint256 value);

    function Token (address _owner_address, address _token_wallet_address) public {
        require(_token_wallet_address != address(0));

        if (_owner_address != address(0)) {
            owner = _owner_address;
            balance_of[owner] = 0;
        } else {
            owner = msg.sender;
            balance_of[owner] = 0;
        }

        token_wallet_address = _token_wallet_address;
        balance_of[token_wallet_address] = total_supply;
    }

    function mintToken(
        address to,
        uint256 token_amount,
        uint256 freeze_timestamp
    ) onlyOwner public returns (bool) {
        require(token_amount > 0);
        require(balance_of[token_wallet_address] >= token_amount);
        require(balance_of[to] + token_amount > balance_of[to]);
        uint256 token_plus_bonus = 0;
        uint sale_number = 0;

        var(sale_info, isSale) = nowSaleInfo();
        if (isSale) {
            sale_number = sale_info.sale_number;
            uint8 bonus_rate = sale_info.bonus_rate;
            token_plus_bonus = addBonus(token_amount, bonus_rate);
            require(checkSaleCanSell(sale_number, token_plus_bonus) == true);
            addSaleSold(sale_number, token_plus_bonus);
        } else if (open_free) {
            token_plus_bonus = token_amount;
        } else {
            require(open_free == true);
        }

        balance_of[token_wallet_address] -= token_plus_bonus;
        balance_of[to] += token_plus_bonus;

        uint256 _freeze = 0;
        if (freeze_timestamp >= 0) {
            _freeze = freeze_timestamp;
        }

        freezeTo(to, now + _freeze); // FreezeToken.sol
        Transfer(0x0, to, token_plus_bonus);
        addAddress(to);
        return true;
    }

    function mintTokenBulk(address[] _tos, uint256[] _amounts) onlyOwner public {
        require(_tos.length == _amounts.length);
        for (uint i=0; i < _tos.length; i++) {
            mintToken(_tos[i], _amounts[i], 0);
        }
    }

    function superMint(
        address to,
        uint256 token_amount,
        uint256 freeze_timestamp
    ) onlyOwner public returns(bool) {
        require(token_amount > 0);
        require(balance_of[token_wallet_address] >= token_amount);
        require(balance_of[to] + token_amount > balance_of[to]);

        balance_of[token_wallet_address] -= token_amount;
        balance_of[to] += token_amount;

        uint256 _freeze = 0;
        if (freeze_timestamp >= 0) {
            _freeze = freeze_timestamp;
        }

        freezeTo(to, now + _freeze);
        Transfer(0x0, to, token_amount);
        Mint(to, token_amount);
        addAddress(to);
        return true;
    }

    function superMintBulk(address[] _tos, uint256[] _amounts) onlyOwner public {
        require(_tos.length == _amounts.length);
        for (uint i=0; i < _tos.length; i++) {
            superMint(_tos[i], _amounts[i], 0);
        }
    }

    function transfer(address to, uint256 value) public {
        _transfer(msg.sender, to, value);
    }

    function transferBulk(address[] tos, uint256[] values) public {
        require(tos.length == values.length);
        for (uint i=0; i < tos.length; i++) {
            transfer(tos[i], values[i]);
        }
    }

    function transferFrom(
        address _from,
        address _to,
        uint256 _amount
    ) public {
        require(msg.sender != address(0));
        require(_from != address(0));
        require(_amount <= allowances[_from][msg.sender]);
        _transfer(_from, _to, _amount);
        allowances[_from][msg.sender] -= _amount;
    }

    function _transfer(
        address _from,
        address _to,
        uint256 _amount
    ) private {
        require(_from != address(0));
        require(_to != address(0));
        require(balance_of[_from] >= _amount);
        require(balance_of[_to].add(_amount) >= balance_of[_to]);
        require(transfer_close == false);
        require(checkFreeze(_from) == false);

        uint256 prevBalance = balance_of[_from] + balance_of[_to];
        balance_of[_from] -= _amount;
        balance_of[_to] += _amount;
        assert(balance_of[_from] + balance_of[_to] == prevBalance);
        addAddress(_to);
        Transfer(_from, _to, _amount);
    }

    function burn(address _who, uint256 _amount) onlyOwner public returns(bool) {
        require(_amount > 0);
        require(balanceOf(_who) >= _amount);
        balance_of[_who] -= _amount;
        total_supply -= _amount;
        Burn(_who, _amount);
        return true;
    }

    function additionalTotalSupply(uint256 _addition) onlyOwner public returns(bool) {
        require(_addition > 0);
        uint256 change_total_supply = total_supply.add(_addition);
        balance_of[token_wallet_address] += _addition;
        changeTotalSupply(change_total_supply);
    }

    function tokenWalletChange(address newTokenWallet) onlyOwner public returns(bool) {
        require(newTokenWallet != address(0));
        uint256 token_wallet_amount = balance_of[token_wallet_address];
        balance_of[newTokenWallet] = token_wallet_amount;
        balance_of[token_wallet_address] = 0;
        changeTokenWallet(newTokenWallet);
    }

    function () payable public {
        uint256 eth_amount = msg.value;
        msg.sender.transfer(eth_amount);
        Payable(msg.sender, eth_amount);
    }

    function tokenOpen() onlyOwner public {
        open_free = true;
    }

    function tokenClose() onlyOwner public {
        open_free = false;
    }

    function freezeAddress(
        address _who,
        uint256 _addTimestamp
    ) onlyOwner public returns(bool) {
        freezeTo(_who, _addTimestamp);
        return true;
    }

    function meltAddress(
        address _who
    ) onlyOwner public returns(bool) {
        meltNow(_who);
        return true;
    }

    // call a voting in Vote.sol
    function voteAgree() public returns (bool) {
        address _voter = msg.sender;
        uint256 _balance = balanceOf(_voter);
        require(_balance > 0);
        return voting(_voter, _balance);
    }

    function superVoteAgree(address who) onlyOwner public returns(bool) {
        require(who != address(0));
        uint256 _balance = balanceOf(who);
        require(_balance > 0);
        return voting(who, _balance);
    }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_who","type":"address"}],"name":"meltAddress","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"who","type":"address"}],"name":"superVoteAgree","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"voteAgree","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_hoarder","type":"address"},{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"superApprove","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"open_free","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"token_amount","type":"uint256"},{"name":"freeze_timestamp","type":"uint256"}],"name":"mintToken","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"transferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_index","type":"uint256"},{"name":"bonus_rate","type":"uint8"}],"name":"changeSaleBonusRate","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_proposal_index","type":"uint256"}],"name":"getProposalVoterList","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"total_supply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getAddressLength","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"token_amount","type":"uint256"},{"name":"freeze_timestamp","type":"uint256"}],"name":"superMint","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_proposal_index","type":"uint256"}],"name":"getProposalIndex","outputs":[{"name":"generator","type":"address"},{"name":"descript","type":"string"},{"name":"start_timestamp","type":"uint256"},{"name":"end_timestamp","type":"uint256"},{"name":"executed","type":"bool"},{"name":"voting_count","type":"uint256"},{"name":"total_weight","type":"uint256"},{"name":"voting_cut","type":"uint256"},{"name":"threshold","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_index","type":"uint256"},{"name":"sell_token_limit","type":"uint256"}],"name":"changeSaleTokenLimit","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_index","type":"uint256"}],"name":"getSaleSold","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tos","type":"address[]"},{"name":"_amounts","type":"uint256[]"}],"name":"mintTokenBulk","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_address_index","type":"uint256"}],"name":"getAddressIndex","outputs":[{"name":"_address","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_index","type":"uint256"}],"name":"getSaleInfo","outputs":[{"name":"sale_number","type":"uint256"},{"name":"start_timestamp","type":"uint256"},{"name":"end_timestamp","type":"uint256"},{"name":"bonus_rate","type":"uint8"},{"name":"sell_limit","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newTokenWallet","type":"address"}],"name":"tokenWalletChange","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"token_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getAllAddress","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_sender","type":"address"}],"name":"checkFreeze","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_index","type":"uint256"},{"name":"end_timestamp","type":"uint256"}],"name":"changeSaleEnd","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"tokenOpen","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getProposalLength","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"who","type":"address"},{"name":"descript","type":"string"},{"name":"start_timestamp","type":"uint256"},{"name":"end_timestamp","type":"uint256"},{"name":"voting_cut","type":"uint256"},{"name":"threshold","type":"uint256"}],"name":"newVote","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_index","type":"uint256"},{"name":"start_timestamp","type":"uint256"},{"name":"end_timestamp","type":"uint256"},{"name":"bonus_rate","type":"uint8"},{"name":"sell_token_limit","type":"uint256"}],"name":"changeSaleInfo","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"tos","type":"address[]"},{"name":"values","type":"uint256[]"}],"name":"transferBulk","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"token_wallet_address","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_who","type":"address"},{"name":"_amount","type":"uint256"}],"name":"burn","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_target","type":"address"}],"name":"getAddressExist","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"transferClose","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"canSaleInfo","outputs":[{"name":"sale_number","type":"uint256"},{"name":"start_timestamp","type":"uint256"},{"name":"end_timestamp","type":"uint256"},{"name":"bonus_rate","type":"uint8"},{"name":"sell_limit","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newName","type":"string"}],"name":"changeTokenName","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"checkVote","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"tokenClose","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"transfer_close","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"start_timestamp","type":"uint256"},{"name":"end_timestamp","type":"uint256"},{"name":"bonus_rate","type":"uint8"},{"name":"sell_token_limit","type":"uint256"}],"name":"newSale","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_who","type":"address"},{"name":"_addTimestamp","type":"uint256"}],"name":"freezeAddress","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"voteClose","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newSymbol","type":"string"}],"name":"changeTokenSymbol","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"transferOpen","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"freezeDateOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_conversion_rate","type":"uint256"}],"name":"changeConversionRate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_index","type":"uint256"},{"name":"start_timestamp","type":"uint256"}],"name":"changeSaleStart","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"conversion_rate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_hoarder","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getSaleLength","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_addition","type":"uint256"}],"name":"additionalTotalSupply","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tos","type":"address[]"},{"name":"_amounts","type":"uint256[]"}],"name":"superMintBulk","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_owner_address","type":"address"},{"name":"_token_wallet_address","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"who","type":"address"},{"indexed":false,"name":"eth_amount","type":"uint256"}],"name":"Payable","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"vote_id","type":"uint256"},{"indexed":false,"name":"generator","type":"address"},{"indexed":false,"name":"descript","type":"string"}],"name":"ProposalAdd","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"vote_id","type":"uint256"},{"indexed":false,"name":"descript","type":"string"}],"name":"ProposalEnd","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"who","type":"address"}],"name":"ChangeTokenName","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"who","type":"address"}],"name":"ChangeTokenSymbol","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"}],"name":"ChangeTokenWalletAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"uint256"},{"indexed":true,"name":"to","type":"uint256"}],"name":"ChangeTotalSupply","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"uint256"},{"indexed":true,"name":"to","type":"uint256"}],"name":"ChangeConversionRate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"uint256"},{"indexed":true,"name":"to","type":"uint256"}],"name":"ChangeFreezeTime","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_who","type":"address"},{"indexed":false,"name":"_date","type":"uint256"}],"name":"Freeze","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_who","type":"address"}],"name":"Melt","type":"event"}]

60606040526040805190810160405260208082527f56616c756520496e7465726c6f636b696e672045786368616e676520436f696e9082015260059080516200004d929160200190620001c9565b5060408051908101604052600381527f56494300000000000000000000000000000000000000000000000000000000006020820152600690805162000097929160200190620001c9565b5060126007556b033b2e3c9fd0803ce8000000600855600a6009819055600090556010805461ffff191690553415620000cf57600080fd5b604051604080620035cc833981016040528080519190602001805160008054600160a060020a03191633600160a060020a03908116919091179091559092508216151590506200011e57600080fd5b600160a060020a03821615620001615760008054600160a060020a031916600160a060020a0384811691909117808355168152600c602052604081205562000190565b60008054600160a060020a03191633600160a060020a0390811691909117808355168152600c60205260408120555b60048054600160a060020a031916600160a060020a03928316179081905560085491166000908152600c6020526040902055506200026e565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200020c57805160ff19168380011785556200023c565b828001600101855582156200023c579182015b828111156200023c5782518255916020019190600101906200021f565b506200024a9291506200024e565b5090565b6200026b91905b808211156200024a576000815560010162000255565b90565b61334e806200027e6000396000f3006060604052600436106102b35763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde038114610325578063095ea7b3146103af5780630d33cfa0146103e55780630e05a512146104045780631725b8471461042357806318160ddd1461043657806318ece6321461045b578063191ad1901461048357806323a36d2b1461049657806323b872dd146104bb578063313ce567146104e5578063349c3d75146104f857806337f2beed146105145780633940e9ee1461057d5780633b3672bd146105905780633f6c0696146105a35780635c61c853146105c857806360734859146106a457806361840c69146106bd57806362fca3fa146106d357806363c1b7531461076257806364b3b844146107945780636eedc46d146107de57806370a08231146107fd578063715b208b1461081c57806372e2f8f51461082f5780637720e74c1461084e5780637e87cf30146108675780638263a9381461087a5780638820e2d61461088d5780638da5cb5b146108ff578063913918a6146109125780639316c3e71461093757806395d89b41146109c65780639acf603b146109d95780639dc29fac146109ec578063a7cdc2ad14610a0e578063a9059cbb14610a2d578063aae3d02514610a4f578063acb74e7314610a62578063b0018bfc14610a75578063b0417e9814610ac6578063b3a844ae14610ad9578063b6abd4e714610aec578063b9bd4f7614610aff578063bd9934f114610b21578063c6279ab114610b43578063c6d3ab9d14610b56578063c8a73eca14610ba7578063d28e88bd14610bba578063d3895c9114610bd9578063d4b0e96614610bef578063da73f0f914610c08578063dd62ed3e14610c1b578063e5926ddc14610c40578063e8992d4014610c53578063eba2a91b14610c69578063f2fde38b14610cf8575b34600160a060020a03331681156108fc0282604051600060405180830381858888f1935050505015156102e557600080fd5b33600160a060020a03167f9b29a2957f5f631926547e5cbadee5b66cbd705ebbf2c26eb7583f04b4f04ab58260405190815260200160405180910390a250005b341561033057600080fd5b610338610d17565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561037457808201518382015260200161035c565b50505050905090810190601f1680156103a15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156103ba57600080fd5b6103d1600160a060020a0360043516602435610db5565b604051901515815260200160405180910390f35b34156103f057600080fd5b6103d1600160a060020a0360043516610e20565b341561040f57600080fd5b6103d1600160a060020a0360043516610e4e565b341561042e57600080fd5b6103d1610eac565b341561044157600080fd5b610449610ed9565b60405190815260200160405180910390f35b341561046657600080fd5b6103d1600160a060020a0360043581169060243516604435610ee0565b341561048e57600080fd5b6103d1610f64565b34156104a157600080fd5b6103d1600160a060020a0360043516602435604435610f72565b34156104c657600080fd5b6104e3600160a060020a0360043581169060243516604435611126565b005b34156104f057600080fd5b6104496111c3565b341561050357600080fd5b6103d160043560ff602435166111c9565b341561051f57600080fd5b61052a600435611236565b60405160208082528190810183818151815260200191508051906020019060200280838360005b83811015610569578082015183820152602001610551565b505050509050019250505060405180910390f35b341561058857600080fd5b6104496112bd565b341561059b57600080fd5b6104496112c3565b34156105ae57600080fd5b6103d1600160a060020a03600435166024356044356112e6565b34156105d357600080fd5b6105de600435611439565b604051808a600160a060020a0316600160a060020a03168152602001806020018981526020018881526020018715151515815260200186815260200185815260200184815260200183815260200182810382528a818151815260200191508051906020019080838360005b83811015610661578082015183820152602001610649565b50505050905090810190601f16801561068e5780820380516001836020036101000a031916815260200191505b509a505050505050505050505060405180910390f35b34156106af57600080fd5b6103d160043560243561163f565b34156106c857600080fd5b6104496004356116a3565b34156106de57600080fd5b6104e36004602481358181019083013580602081810201604051908101604052809392919081815260200183836020028082843782019150505050505091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437509496506116c795505050505050565b341561076d57600080fd5b610778600435611742565b604051600160a060020a03909116815260200160405180910390f35b341561079f57600080fd5b6107aa600435611787565b604051948552602085019390935260408085019290925260ff166060840152608083019190915260a0909101905180910390f35b34156107e957600080fd5b6103d1600160a060020a036004351661184e565b341561080857600080fd5b610449600160a060020a03600435166118c0565b341561082757600080fd5b61052a6118db565b341561083a57600080fd5b6103d1600160a060020a036004351661195e565b341561085957600080fd5b6103d160043560243561198d565b341561087257600080fd5b6104e36119f1565b341561088557600080fd5b610449611a1d565b341561089857600080fd5b61044960048035600160a060020a03169060446024803590810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650508435946020810135945060408101359350606001359150611a239050565b341561090a57600080fd5b610778611c21565b341561091d57600080fd5b6103d160043560243560443560ff60643516608435611c30565b341561094257600080fd5b6104e3600460248135818101908301358060208181020160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843750949650611d3495505050505050565b34156109d157600080fd5b610338611d8d565b34156109e457600080fd5b610778611df8565b34156109f757600080fd5b6103d1600160a060020a0360043516602435611e07565b3415610a1957600080fd5b6103d1600160a060020a0360043516611eab565b3415610a3857600080fd5b6104e3600160a060020a0360043516602435611ee7565b3415610a5a57600080fd5b6104e3611ef6565b3415610a6d57600080fd5b6107aa611f20565b3415610a8057600080fd5b6104e360046024813581810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650611f7795505050505050565b3415610ad157600080fd5b6104e3611fdf565b3415610ae457600080fd5b6104e361203e565b3415610af757600080fd5b6103d1612066565b3415610b0a57600080fd5b6104e360043560243560ff6044351660643561206f565b3415610b2c57600080fd5b6103d1600160a060020a03600435166024356121c5565b3415610b4e57600080fd5b6104e36121f4565b3415610b6157600080fd5b6104e360046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965061232b95505050505050565b3415610bb257600080fd5b6104e3612393565b3415610bc557600080fd5b610449600160a060020a03600435166123ba565b3415610be457600080fd5b6104e36004356123cc565b3415610bfa57600080fd5b6103d1600435602435612430565b3415610c1357600080fd5b610449612496565b3415610c2657600080fd5b610449600160a060020a036004358116906024351661249c565b3415610c4b57600080fd5b6104496124c7565b3415610c5e57600080fd5b6103d16004356124cd565b3415610c7457600080fd5b6104e360046024813581810190830135806020818102016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284375094965061253695505050505050565b3415610d0357600080fd5b6104e3600160a060020a03600435166125ac565b60058054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610dad5780601f10610d8257610100808354040283529160200191610dad565b820191906000526020600020905b815481529060010190602001808311610d9057829003601f168201915b505050505081565b600033600160a060020a03161515610dcc57600080fd5b600160a060020a0383161515610de157600080fd5b6000821015610def57600080fd5b50600160a060020a033381166000908152600d60209081526040808320938616835292905220819055600192915050565b6000805433600160a060020a03908116911614610e3c57600080fd5b610e458261260b565b5060015b919050565b60008054819033600160a060020a03908116911614610e6c57600080fd5b600160a060020a0383161515610e8157600080fd5b610e8a836118c0565b905060008111610e9957600080fd5b610ea38382612671565b91505b50919050565b60003381610eb9826118c0565b905060008111610ec857600080fd5b610ed28282612671565b9250505090565b6008545b90565b6000805433600160a060020a03908116911614610efc57600080fd5b600160a060020a0384161515610f1157600080fd5b600160a060020a0383161515610f2657600080fd5b6000821015610f3457600080fd5b50600160a060020a039283166000908152600d602090815260408083209490951682529290925291902055600190565b601054610100900460ff1681565b6000806000610f7f6130a3565b600080548190819033600160a060020a03908116911614610f9f57600080fd5b60008911610fac57600080fd5b600454600160a060020a03166000908152600c602052604090205489901015610fd457600080fd5b600160a060020a038a166000908152600c602052604090205489810111610ffa57600080fd5b600095506000945061100a6129d7565b9350935082156110525783519450836060015191506110298983612b8f565b95506110358587612bcc565b151560011461104357600080fd5b61104d8587612cad565b611084565b601054610100900460ff161561106a57889550611084565b60105460ff61010090910416151560011461108457600080fd5b50600454600160a060020a039081166000908152600c602052604080822080548990039055918b1681529081208054870190558088106110c15750865b6110cd8a824201612d06565b89600160a060020a031660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8860405190815260200160405180910390a36111158a612d5a565b5060019a9950505050505050505050565b33600160a060020a0316151561113b57600080fd5b600160a060020a038316151561115057600080fd5b600160a060020a038084166000908152600d60209081526040808320339094168352929052205481111561118357600080fd5b61118e838383612e20565b600160a060020a039283166000908152600d602090815260408083203390961683529490529290922080549290920390915550565b60075481565b6000805433600160a060020a039081169116146111e557600080fd5b60015483106111f357600080fd5b8160018481548110151561120357fe5b906000526020600020906005020160030160006101000a81548160ff021916908360ff1602179055506001905092915050565b61123e6130d6565b600b80548390811061124c57fe5b90600052602060002090600c0201600b018054806020026020016040519081016040528092919081815260200182805480156112b157602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311611293575b50505050509050919050565b60085481565b6000805433600160a060020a039081169116146112df57600080fd5b50600f5490565b60008054819033600160a060020a0390811691161461130457600080fd5b6000841161131157600080fd5b600454600160a060020a03166000908152600c60205260409020548490101561133957600080fd5b600160a060020a0385166000908152600c60205260409020548481011161135f57600080fd5b50600454600160a060020a039081166000908152600c602052604080822080548790039055918616815290812080548501905580831061139c5750815b6113a885824201612d06565b84600160a060020a031660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405190815260200160405180910390a384600160a060020a03167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968858560405190815260200160405180910390a261142d85612d5a565b50600195945050505050565b60006114436130d6565b6000806000806000806000600b8a81548110151561145d57fe5b60009182526020909120600c9091020154600b8054600160a060020a039092169a50908b90811061148a57fe5b90600052602060002090600c02016001018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561152f5780601f106115045761010080835404028352916020019161152f565b820191906000526020600020905b81548152906001019060200180831161151257829003601f168201915b50505050509750600b8a81548110151561154557fe5b90600052602060002090600c0201600201549650600b8a81548110151561156857fe5b90600052602060002090600c0201600301549550600b8a81548110151561158b57fe5b600091825260209091206004600c909202010154600b805460ff9092169650908b9081106115b557fe5b90600052602060002090600c0201600701549350600b8a8154811015156115d857fe5b90600052602060002090600c0201600801549250600b8a8154811015156115fb57fe5b90600052602060002090600c0201600501549150600b8a81548110151561161e57fe5b90600052602060002090600c02016006015490509193959799909294969850565b6000805433600160a060020a0390811691161461165b57600080fd5b600154831061166957600080fd5b6000821161167657600080fd5b8160018481548110151561168657fe5b600091825260209091206004600590920201015550600192915050565b60006002828154811015156116b457fe5b9060005260206000209001549050919050565b6000805433600160a060020a039081169116146116e357600080fd5b81518351146116f157600080fd5b5060005b825181101561173d5761173483828151811061170d57fe5b9060200190602002015183838151811061172357fe5b906020019060200201516000610f72565b506001016116f5565b505050565b6000805433600160a060020a0390811691161461175e57600080fd5b600f80548390811061176c57fe5b600091825260209091200154600160a060020a031692915050565b600080600080600060018681548110151561179e57fe5b90600052602060002090600502016000015494506001868154811015156117c157fe5b90600052602060002090600502016001015493506001868154811015156117e457fe5b906000526020600020906005020160020154925060018681548110151561180757fe5b60009182526020909120600360059092020101546001805460ff9092169350908790811061183157fe5b906000526020600020906005020160040154905091939590929450565b60008054819033600160a060020a0390811691161461186c57600080fd5b600160a060020a038316151561188157600080fd5b5060048054600160a060020a039081166000908152600c60205260408082205486841683528183208190559354909216815290812055610ea683612f61565b600160a060020a03166000908152600c602052604090205490565b6118e36130d6565b60005433600160a060020a039081169116146118fe57600080fd5b600f80548060200260200160405190810160405280929190818152602001828054801561195457602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311611936575b5050505050905090565b600160a060020a038116600090815260036020526040812054421061198557506000610e49565b506001610e49565b6000805433600160a060020a039081169116146119a957600080fd5b60015483106119b757600080fd5b600082116119c457600080fd5b816001848154811015156119d457fe5b600091825260209091206002600590920201015550600192915050565b60005433600160a060020a03908116911614611a0c57600080fd5b6010805461ff001916610100179055565b600b5490565b60008054819033600160a060020a03908116911614611a4157600080fd5b600b5460019010611ab25785600b600a54815481101515611a5e57fe5b90600052602060002090600c020160030154101515611a7c57600080fd5b600b600a54815481101515611a8d57fe5b600091825260209091206004600c90920201015460ff161515600114611ab257600080fd5b600b8054600a819055611ac882600183016130e8565b81548110611ad257fe5b60009182526020909120600c90910201805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038a16178155905060018101878051611b1f929160200190613114565b50600281018690556003810185905560048101805460ff191690556005810184905560068101839055600060078201819055611b5f90600b830190613192565b7f43668efaa788fb6b06a31e91bec501787611092634a0b8e767b3483242f0644f600a548989604051838152600160a060020a038316602082015260606040820181815290820183818151815260200191508051906020019080838360005b83811015611bd6578082015183820152602001611bbe565b50505050905090810190601f168015611c035780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a15050600a549695505050505050565b600054600160a060020a031681565b6000805433600160a060020a03908116911614611c4c57600080fd5b6001548610611c5a57600080fd5b60008511611c6757600080fd5b60008411611c7457600080fd5b60008211611c8157600080fd5b84600187815481101515611c9157fe5b90600052602060002090600502016001018190555083600187815481101515611cb657fe5b90600052602060002090600502016002018190555082600187815481101515611cdb57fe5b906000526020600020906005020160030160006101000a81548160ff021916908360ff16021790555081600187815481101515611d1457fe5b600091825260209091206004600590920201015550600195945050505050565b60008151835114611d4457600080fd5b5060005b825181101561173d57611d85838281518110611d6057fe5b90602001906020020151838381518110611d7657fe5b90602001906020020151611ee7565b600101611d48565b60068054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610dad5780601f10610d8257610100808354040283529160200191610dad565b600454600160a060020a031681565b6000805433600160a060020a03908116911614611e2357600080fd5b60008211611e3057600080fd5b81611e3a846118c0565b1015611e4557600080fd5b600160a060020a0383166000818152600c602052604090819020805485900390556008805485900390557fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca59084905190815260200160405180910390a250600192915050565b6000600160a060020a0382161515611ec557506000610e49565b50600160a060020a0381166000908152600e602052604090205460ff16610e49565b611ef2338383612e20565b5050565b60005433600160a060020a03908116911614611f1157600080fd5b6010805460ff19166001179055565b6000806000806000611f306130a3565b6000611f3a6129d7565b9092509050600181151514611f4e57600080fd5b815196508160200151955081604001519450816060015193508160800151925050509091929394565b60005433600160a060020a03908116911614611f9257600080fd5b6005818051611fa5929160200190613114565b5033600160a060020a03167fdadb20be9d77ea17b31d336da02f73cacca8a15e298fd22d8771fd605a22b55760405160405180910390a250565b60005433600160a060020a03908116911614611ffa57600080fd5b600b546001901080159061202f575042600b600a5481548110151561201b57fe5b90600052602060002090600c020160030154105b1561203c5761203c6121f4565b565b60005433600160a060020a0390811691161461205957600080fd5b6010805461ff0019169055565b60105460ff1681565b60008054819033600160a060020a0390811691161461208d57600080fd5b6000861161209a57600080fd5b600085116120a757600080fd5b600083116120b457600080fd5b505060015460005b6001548110156120fc57856001828154811015156120d657fe5b9060005260206000209060050201600201541015156120f457600080fd5b6001016120bc565b60a0604051908101604090815283825260208201889052810186905260ff851660608201526080810184905260018054612138828281016131b3565b8154811061214257fe5b9060005260206000209060050201600082015181556020820151816001015560408201518160020155606082015160038201805460ff191660ff9290921691909117905560808201516004909101555060028054600091906121a782600183016131df565b815481106121b157fe5b600091825260209091200155505050505050565b6000805433600160a060020a039081169116146121e157600080fd5b6121eb8383612d06565b50600192915050565b60005433600160a060020a0390811691161461220f57600080fd5b600b546001901061203c576001600b600a5481548110151561222d57fe5b90600052602060002090600c020160040160006101000a81548160ff0219169083151502179055507fc37991e3c775e6b1801058fdaf62ba55bd74756854d9ac3b11ba4de5f982f99e600a54600b600a5481548110151561228a57fe5b90600052602060002090600c02016001016040518281526040602082018181528354600260001961010060018416150201909116049183018290529060608301908490801561231a5780601f106122ef5761010080835404028352916020019161231a565b820191906000526020600020905b8154815290600101906020018083116122fd57829003601f168201915b5050935050505060405180910390a1565b60005433600160a060020a0390811691161461234657600080fd5b6006818051612359929160200190613114565b5033600160a060020a03167f66a857f48884758bc7cdb4ed42437ead131a3b8206a03f877ccce37c6e54c71e60405160405180910390a250565b60005433600160a060020a039081169116146123ae57600080fd5b6010805460ff19169055565b60036020526000908152604090205481565b6000805433600160a060020a039081169116146123e857600080fd5b600082116123f557600080fd5b50600980549082905581817f9af003bd4853b99f968563a4b5b828f1cea45068f8d0d6f53f017fc1a8e0354b60405160405180910390a35050565b6000805433600160a060020a0390811691161461244c57600080fd5b600154831061245a57600080fd5b6000821161246757600080fd5b8160018481548110151561247757fe5b9060005260206000209060050201600101819055506001905092915050565b60095481565b600160a060020a039182166000908152600d6020908152604080832093909416825291909152205490565b60015490565b60008054819033600160a060020a039081169116146124eb57600080fd5b600083116124f857600080fd5b60085461250b908463ffffffff612ff516565b600454600160a060020a03166000908152600c602052604090208054850190559050610ea681613004565b6000805433600160a060020a0390811691161461255257600080fd5b815183511461256057600080fd5b5060005b825181101561173d576125a383828151811061257c57fe5b9060200190602002015183838151811061259257fe5b9060200190602002015160006112e6565b50600101612564565b60005433600160a060020a039081169116146125c757600080fd5b600160a060020a03811615156125dc57600080fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60005433600160a060020a0390811691161461262657600080fd5b600160a060020a038116600081815260036020526040908190204290557f33d0a56b2045491e09850aff553970a014517abe73114e055855b96c69005720905160405180910390a250565b600042600b600a5481548110151561268557fe5b90600052602060002090600c02016003015410156126d3576001600b600a548154811015156126b057fe5b60009182526020909120600c90910201600401805460ff19169115159190911790555b600b600a548154811015156126e457fe5b600091825260209091206004600c90920201015460ff161561270557600080fd5b42600b600a5481548110151561271757fe5b90600052602060002090600c02016003015411151561273557600080fd5b42600b600a5481548110151561274757fe5b90600052602060002090600c0201600201541115151561276657600080fd5b600b600a5481548110151561277757fe5b60009182526020808320600160a060020a0387168452600a600c90930201919091019052604090205460ff16156127ad57600080fd5b81600b600a548154811015156127bf57fe5b90600052602060002090600c020160050154111515156127de57600080fd5b6001600b600a548154811015156127f157fe5b60009182526020808320600160a060020a0388168452600a600c90930201820190526040909120805492151560ff199093169290921790915554600b805460019290811061283b57fe5b600091825260209091206007600c909202010180549091019055600a54600b8054849290811061286757fe5b60009182526020808320600160a060020a03881684526009600c909302019190910190526040902055600a54600b805484929081106128a257fe5b600091825260209091206008600c909202010180549091019055600a54600b805485929081106128ce57fe5b90600052602060002090600c0201600b01600b600a548154811015156128f057fe5b90600052602060002090600c0201600b01805480919060010161291391906131df565b8154811061291d57fe5b906000526020600020900160006101000a815481600160a060020a030219169083600160a060020a03160217905550600b600a5481548110151561295d57fe5b90600052602060002090600c020160060154600b600a5481548110151561298057fe5b90600052602060002090600c0201600801541015156121eb576001600b600a548154811015156129ac57fe5b60009182526020909120600c90910201600401805460ff191691151591909117905550600192915050565b6129df6130a3565b60008080808080805b600154861015612b85576001805487908110612a0057fe5b9060005260206000209060050201600201549450600186815481101515612a2357fe5b9060005260206000209060050201600401549350600186815481101515612a4657fe5b600091825260209091206003600590920201015460ff169250612a698484612b8f565b9150600286815481101515612a7a57fe5b9060005260206000209001549050844211158015612a9757508181105b15612b765760a060405190810160405280600188815481101515612ab757fe5b9060005260206000209060050201600001548152602001600188815481101515612add57fe5b9060005260206000209060050201600101548152602001600188815481101515612b0357fe5b9060005260206000209060050201600201548152602001600188815481101515612b2957fe5b60009182526020918290206003600590920201015460ff16825260018054929091019189908110612b5657fe5b906000526020600020906005020160040154815250975060019650612b85565b600096506001909501946129e8565b5050505050509091565b6000612bc5612bb86064612bac8660ff871663ffffffff61306816565b9063ffffffff61308c16565b849063ffffffff612ff516565b9392505050565b600080600080600080600288815481101515612be457fe5b9060005260206000209001549450600188815481101515612c0157fe5b9060005260206000209060050201600201549350600188815481101515612c2457fe5b9060005260206000209060050201600401549250600188815481101515612c4757fe5b600091825260209091206003600590920201015460ff169150612c6a8383612b8f565b905042849010612c7d5760009550612ca2565b80612c8e868963ffffffff612ff516565b1115612c9d5760009550612ca2565b600195505b505050505092915050565b60008111612cba57600080fd5b6002548210612cc857600080fd5b612cd28282612bcc565b1515600114612ce057600080fd5b80600283815481101515612cf057fe5b6000918252602090912001805490910190555050565b600160a060020a038216600081815260036020526040908190208390557ff97a274face0b5517365ad396b1fdba6f68bd3135ef603e44272adba3af5a1e09083905190815260200160405180910390a25050565b6000600160a060020a0382161515612d7457506000610e49565b600160a060020a0382166000908152600e602052604090205460ff16151560011415612da257506000610e49565b600160a060020a0382166000908152600e60205260409020805460ff19166001908117909155600f80548492612ddb90839083016131df565b81548110612de557fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055919050565b6000600160a060020a0384161515612e3757600080fd5b600160a060020a0383161515612e4c57600080fd5b600160a060020a0384166000908152600c602052604090205482901015612e7257600080fd5b600160a060020a0383166000908152600c6020526040902054612e9b818463ffffffff612ff516565b1015612ea657600080fd5b60105460ff1615612eb657600080fd5b612ebf8461195e565b15612ec957600080fd5b50600160a060020a038281166000908152600c60205260408082208054938716835291208054848103825582548501928390559054920191018114612f0a57fe5b612f1383612d5a565b5082600160a060020a031684600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405190815260200160405180910390a350505050565b6000805433600160a060020a03908116911614612f7d57600080fd5b600160a060020a0382161515612f9257600080fd5b5060048054600160a060020a0383811673ffffffffffffffffffffffffffffffffffffffff19831617928390559081169116817f737d8c8e31e545dc1c6678164ab5d755d0f47df46c8154c71a492d6745e27c3160405160405180910390a35050565b600082820183811015612bc557fe5b6000805433600160a060020a0390811691161461302057600080fd5b6000821161302d57600080fd5b50600880549082905581817f9a2b4bdfe09e60fd8f8f7601c8eb426298255a1983acbe31a88ea6675abd02e360405160405180910390a35050565b6000828202831580613084575082848281151561308157fe5b04145b1515612bc557fe5b600080828481151561309a57fe5b04949350505050565b60a060405190810160405280600081526020016000815260200160008152602001600060ff168152602001600081525090565b60206040519081016040526000815290565b81548183558181151161173d57600c0281600c02836000526020600020918201910161173d9190613203565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061315557805160ff1916838001178555613182565b82800160010185558215613182579182015b82811115613182578251825591602001919060010190613167565b5061318e92915061328a565b5090565b50805460008255906000526020600020908101906131b0919061328a565b50565b81548183558181151161173d5760050281600502836000526020600020918201910161173d91906132a4565b81548183558181151161173d5760008381526020902061173d91810190830161328a565b610edd91905b8082111561318e57805473ffffffffffffffffffffffffffffffffffffffff19168155600061323b60018301826132de565b6000600283018190556003830181905560048301805460ff191690556005830181905560068301819055600783018190556008830181905561328190600b840190613192565b50600c01613209565b610edd91905b8082111561318e5760008155600101613290565b610edd91905b8082111561318e576000808255600182018190556002820181905560038201805460ff1916905560048201556005016132aa565b50805460018160011615610100020316600290046000825580601f1061330457506131b0565b601f0160209004906000526020600020908101906131b0919061328a5600a165627a7a7230582018828cca54a8099d764ef7d8bbcf72b9d744a68c50913f662dafa55bcdf8022800290000000000000000000000008bf5eac06065bfa380acca9d2f04fddf6ac2d0a40000000000000000000000008bf5eac06065bfa380acca9d2f04fddf6ac2d0a4

Deployed Bytecode

0x6060604052600436106102b35763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde038114610325578063095ea7b3146103af5780630d33cfa0146103e55780630e05a512146104045780631725b8471461042357806318160ddd1461043657806318ece6321461045b578063191ad1901461048357806323a36d2b1461049657806323b872dd146104bb578063313ce567146104e5578063349c3d75146104f857806337f2beed146105145780633940e9ee1461057d5780633b3672bd146105905780633f6c0696146105a35780635c61c853146105c857806360734859146106a457806361840c69146106bd57806362fca3fa146106d357806363c1b7531461076257806364b3b844146107945780636eedc46d146107de57806370a08231146107fd578063715b208b1461081c57806372e2f8f51461082f5780637720e74c1461084e5780637e87cf30146108675780638263a9381461087a5780638820e2d61461088d5780638da5cb5b146108ff578063913918a6146109125780639316c3e71461093757806395d89b41146109c65780639acf603b146109d95780639dc29fac146109ec578063a7cdc2ad14610a0e578063a9059cbb14610a2d578063aae3d02514610a4f578063acb74e7314610a62578063b0018bfc14610a75578063b0417e9814610ac6578063b3a844ae14610ad9578063b6abd4e714610aec578063b9bd4f7614610aff578063bd9934f114610b21578063c6279ab114610b43578063c6d3ab9d14610b56578063c8a73eca14610ba7578063d28e88bd14610bba578063d3895c9114610bd9578063d4b0e96614610bef578063da73f0f914610c08578063dd62ed3e14610c1b578063e5926ddc14610c40578063e8992d4014610c53578063eba2a91b14610c69578063f2fde38b14610cf8575b34600160a060020a03331681156108fc0282604051600060405180830381858888f1935050505015156102e557600080fd5b33600160a060020a03167f9b29a2957f5f631926547e5cbadee5b66cbd705ebbf2c26eb7583f04b4f04ab58260405190815260200160405180910390a250005b341561033057600080fd5b610338610d17565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561037457808201518382015260200161035c565b50505050905090810190601f1680156103a15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156103ba57600080fd5b6103d1600160a060020a0360043516602435610db5565b604051901515815260200160405180910390f35b34156103f057600080fd5b6103d1600160a060020a0360043516610e20565b341561040f57600080fd5b6103d1600160a060020a0360043516610e4e565b341561042e57600080fd5b6103d1610eac565b341561044157600080fd5b610449610ed9565b60405190815260200160405180910390f35b341561046657600080fd5b6103d1600160a060020a0360043581169060243516604435610ee0565b341561048e57600080fd5b6103d1610f64565b34156104a157600080fd5b6103d1600160a060020a0360043516602435604435610f72565b34156104c657600080fd5b6104e3600160a060020a0360043581169060243516604435611126565b005b34156104f057600080fd5b6104496111c3565b341561050357600080fd5b6103d160043560ff602435166111c9565b341561051f57600080fd5b61052a600435611236565b60405160208082528190810183818151815260200191508051906020019060200280838360005b83811015610569578082015183820152602001610551565b505050509050019250505060405180910390f35b341561058857600080fd5b6104496112bd565b341561059b57600080fd5b6104496112c3565b34156105ae57600080fd5b6103d1600160a060020a03600435166024356044356112e6565b34156105d357600080fd5b6105de600435611439565b604051808a600160a060020a0316600160a060020a03168152602001806020018981526020018881526020018715151515815260200186815260200185815260200184815260200183815260200182810382528a818151815260200191508051906020019080838360005b83811015610661578082015183820152602001610649565b50505050905090810190601f16801561068e5780820380516001836020036101000a031916815260200191505b509a505050505050505050505060405180910390f35b34156106af57600080fd5b6103d160043560243561163f565b34156106c857600080fd5b6104496004356116a3565b34156106de57600080fd5b6104e36004602481358181019083013580602081810201604051908101604052809392919081815260200183836020028082843782019150505050505091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437509496506116c795505050505050565b341561076d57600080fd5b610778600435611742565b604051600160a060020a03909116815260200160405180910390f35b341561079f57600080fd5b6107aa600435611787565b604051948552602085019390935260408085019290925260ff166060840152608083019190915260a0909101905180910390f35b34156107e957600080fd5b6103d1600160a060020a036004351661184e565b341561080857600080fd5b610449600160a060020a03600435166118c0565b341561082757600080fd5b61052a6118db565b341561083a57600080fd5b6103d1600160a060020a036004351661195e565b341561085957600080fd5b6103d160043560243561198d565b341561087257600080fd5b6104e36119f1565b341561088557600080fd5b610449611a1d565b341561089857600080fd5b61044960048035600160a060020a03169060446024803590810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650508435946020810135945060408101359350606001359150611a239050565b341561090a57600080fd5b610778611c21565b341561091d57600080fd5b6103d160043560243560443560ff60643516608435611c30565b341561094257600080fd5b6104e3600460248135818101908301358060208181020160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843750949650611d3495505050505050565b34156109d157600080fd5b610338611d8d565b34156109e457600080fd5b610778611df8565b34156109f757600080fd5b6103d1600160a060020a0360043516602435611e07565b3415610a1957600080fd5b6103d1600160a060020a0360043516611eab565b3415610a3857600080fd5b6104e3600160a060020a0360043516602435611ee7565b3415610a5a57600080fd5b6104e3611ef6565b3415610a6d57600080fd5b6107aa611f20565b3415610a8057600080fd5b6104e360046024813581810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650611f7795505050505050565b3415610ad157600080fd5b6104e3611fdf565b3415610ae457600080fd5b6104e361203e565b3415610af757600080fd5b6103d1612066565b3415610b0a57600080fd5b6104e360043560243560ff6044351660643561206f565b3415610b2c57600080fd5b6103d1600160a060020a03600435166024356121c5565b3415610b4e57600080fd5b6104e36121f4565b3415610b6157600080fd5b6104e360046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965061232b95505050505050565b3415610bb257600080fd5b6104e3612393565b3415610bc557600080fd5b610449600160a060020a03600435166123ba565b3415610be457600080fd5b6104e36004356123cc565b3415610bfa57600080fd5b6103d1600435602435612430565b3415610c1357600080fd5b610449612496565b3415610c2657600080fd5b610449600160a060020a036004358116906024351661249c565b3415610c4b57600080fd5b6104496124c7565b3415610c5e57600080fd5b6103d16004356124cd565b3415610c7457600080fd5b6104e360046024813581810190830135806020818102016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284375094965061253695505050505050565b3415610d0357600080fd5b6104e3600160a060020a03600435166125ac565b60058054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610dad5780601f10610d8257610100808354040283529160200191610dad565b820191906000526020600020905b815481529060010190602001808311610d9057829003601f168201915b505050505081565b600033600160a060020a03161515610dcc57600080fd5b600160a060020a0383161515610de157600080fd5b6000821015610def57600080fd5b50600160a060020a033381166000908152600d60209081526040808320938616835292905220819055600192915050565b6000805433600160a060020a03908116911614610e3c57600080fd5b610e458261260b565b5060015b919050565b60008054819033600160a060020a03908116911614610e6c57600080fd5b600160a060020a0383161515610e8157600080fd5b610e8a836118c0565b905060008111610e9957600080fd5b610ea38382612671565b91505b50919050565b60003381610eb9826118c0565b905060008111610ec857600080fd5b610ed28282612671565b9250505090565b6008545b90565b6000805433600160a060020a03908116911614610efc57600080fd5b600160a060020a0384161515610f1157600080fd5b600160a060020a0383161515610f2657600080fd5b6000821015610f3457600080fd5b50600160a060020a039283166000908152600d602090815260408083209490951682529290925291902055600190565b601054610100900460ff1681565b6000806000610f7f6130a3565b600080548190819033600160a060020a03908116911614610f9f57600080fd5b60008911610fac57600080fd5b600454600160a060020a03166000908152600c602052604090205489901015610fd457600080fd5b600160a060020a038a166000908152600c602052604090205489810111610ffa57600080fd5b600095506000945061100a6129d7565b9350935082156110525783519450836060015191506110298983612b8f565b95506110358587612bcc565b151560011461104357600080fd5b61104d8587612cad565b611084565b601054610100900460ff161561106a57889550611084565b60105460ff61010090910416151560011461108457600080fd5b50600454600160a060020a039081166000908152600c602052604080822080548990039055918b1681529081208054870190558088106110c15750865b6110cd8a824201612d06565b89600160a060020a031660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8860405190815260200160405180910390a36111158a612d5a565b5060019a9950505050505050505050565b33600160a060020a0316151561113b57600080fd5b600160a060020a038316151561115057600080fd5b600160a060020a038084166000908152600d60209081526040808320339094168352929052205481111561118357600080fd5b61118e838383612e20565b600160a060020a039283166000908152600d602090815260408083203390961683529490529290922080549290920390915550565b60075481565b6000805433600160a060020a039081169116146111e557600080fd5b60015483106111f357600080fd5b8160018481548110151561120357fe5b906000526020600020906005020160030160006101000a81548160ff021916908360ff1602179055506001905092915050565b61123e6130d6565b600b80548390811061124c57fe5b90600052602060002090600c0201600b018054806020026020016040519081016040528092919081815260200182805480156112b157602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311611293575b50505050509050919050565b60085481565b6000805433600160a060020a039081169116146112df57600080fd5b50600f5490565b60008054819033600160a060020a0390811691161461130457600080fd5b6000841161131157600080fd5b600454600160a060020a03166000908152600c60205260409020548490101561133957600080fd5b600160a060020a0385166000908152600c60205260409020548481011161135f57600080fd5b50600454600160a060020a039081166000908152600c602052604080822080548790039055918616815290812080548501905580831061139c5750815b6113a885824201612d06565b84600160a060020a031660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405190815260200160405180910390a384600160a060020a03167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968858560405190815260200160405180910390a261142d85612d5a565b50600195945050505050565b60006114436130d6565b6000806000806000806000600b8a81548110151561145d57fe5b60009182526020909120600c9091020154600b8054600160a060020a039092169a50908b90811061148a57fe5b90600052602060002090600c02016001018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561152f5780601f106115045761010080835404028352916020019161152f565b820191906000526020600020905b81548152906001019060200180831161151257829003601f168201915b50505050509750600b8a81548110151561154557fe5b90600052602060002090600c0201600201549650600b8a81548110151561156857fe5b90600052602060002090600c0201600301549550600b8a81548110151561158b57fe5b600091825260209091206004600c909202010154600b805460ff9092169650908b9081106115b557fe5b90600052602060002090600c0201600701549350600b8a8154811015156115d857fe5b90600052602060002090600c0201600801549250600b8a8154811015156115fb57fe5b90600052602060002090600c0201600501549150600b8a81548110151561161e57fe5b90600052602060002090600c02016006015490509193959799909294969850565b6000805433600160a060020a0390811691161461165b57600080fd5b600154831061166957600080fd5b6000821161167657600080fd5b8160018481548110151561168657fe5b600091825260209091206004600590920201015550600192915050565b60006002828154811015156116b457fe5b9060005260206000209001549050919050565b6000805433600160a060020a039081169116146116e357600080fd5b81518351146116f157600080fd5b5060005b825181101561173d5761173483828151811061170d57fe5b9060200190602002015183838151811061172357fe5b906020019060200201516000610f72565b506001016116f5565b505050565b6000805433600160a060020a0390811691161461175e57600080fd5b600f80548390811061176c57fe5b600091825260209091200154600160a060020a031692915050565b600080600080600060018681548110151561179e57fe5b90600052602060002090600502016000015494506001868154811015156117c157fe5b90600052602060002090600502016001015493506001868154811015156117e457fe5b906000526020600020906005020160020154925060018681548110151561180757fe5b60009182526020909120600360059092020101546001805460ff9092169350908790811061183157fe5b906000526020600020906005020160040154905091939590929450565b60008054819033600160a060020a0390811691161461186c57600080fd5b600160a060020a038316151561188157600080fd5b5060048054600160a060020a039081166000908152600c60205260408082205486841683528183208190559354909216815290812055610ea683612f61565b600160a060020a03166000908152600c602052604090205490565b6118e36130d6565b60005433600160a060020a039081169116146118fe57600080fd5b600f80548060200260200160405190810160405280929190818152602001828054801561195457602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311611936575b5050505050905090565b600160a060020a038116600090815260036020526040812054421061198557506000610e49565b506001610e49565b6000805433600160a060020a039081169116146119a957600080fd5b60015483106119b757600080fd5b600082116119c457600080fd5b816001848154811015156119d457fe5b600091825260209091206002600590920201015550600192915050565b60005433600160a060020a03908116911614611a0c57600080fd5b6010805461ff001916610100179055565b600b5490565b60008054819033600160a060020a03908116911614611a4157600080fd5b600b5460019010611ab25785600b600a54815481101515611a5e57fe5b90600052602060002090600c020160030154101515611a7c57600080fd5b600b600a54815481101515611a8d57fe5b600091825260209091206004600c90920201015460ff161515600114611ab257600080fd5b600b8054600a819055611ac882600183016130e8565b81548110611ad257fe5b60009182526020909120600c90910201805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038a16178155905060018101878051611b1f929160200190613114565b50600281018690556003810185905560048101805460ff191690556005810184905560068101839055600060078201819055611b5f90600b830190613192565b7f43668efaa788fb6b06a31e91bec501787611092634a0b8e767b3483242f0644f600a548989604051838152600160a060020a038316602082015260606040820181815290820183818151815260200191508051906020019080838360005b83811015611bd6578082015183820152602001611bbe565b50505050905090810190601f168015611c035780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a15050600a549695505050505050565b600054600160a060020a031681565b6000805433600160a060020a03908116911614611c4c57600080fd5b6001548610611c5a57600080fd5b60008511611c6757600080fd5b60008411611c7457600080fd5b60008211611c8157600080fd5b84600187815481101515611c9157fe5b90600052602060002090600502016001018190555083600187815481101515611cb657fe5b90600052602060002090600502016002018190555082600187815481101515611cdb57fe5b906000526020600020906005020160030160006101000a81548160ff021916908360ff16021790555081600187815481101515611d1457fe5b600091825260209091206004600590920201015550600195945050505050565b60008151835114611d4457600080fd5b5060005b825181101561173d57611d85838281518110611d6057fe5b90602001906020020151838381518110611d7657fe5b90602001906020020151611ee7565b600101611d48565b60068054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610dad5780601f10610d8257610100808354040283529160200191610dad565b600454600160a060020a031681565b6000805433600160a060020a03908116911614611e2357600080fd5b60008211611e3057600080fd5b81611e3a846118c0565b1015611e4557600080fd5b600160a060020a0383166000818152600c602052604090819020805485900390556008805485900390557fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca59084905190815260200160405180910390a250600192915050565b6000600160a060020a0382161515611ec557506000610e49565b50600160a060020a0381166000908152600e602052604090205460ff16610e49565b611ef2338383612e20565b5050565b60005433600160a060020a03908116911614611f1157600080fd5b6010805460ff19166001179055565b6000806000806000611f306130a3565b6000611f3a6129d7565b9092509050600181151514611f4e57600080fd5b815196508160200151955081604001519450816060015193508160800151925050509091929394565b60005433600160a060020a03908116911614611f9257600080fd5b6005818051611fa5929160200190613114565b5033600160a060020a03167fdadb20be9d77ea17b31d336da02f73cacca8a15e298fd22d8771fd605a22b55760405160405180910390a250565b60005433600160a060020a03908116911614611ffa57600080fd5b600b546001901080159061202f575042600b600a5481548110151561201b57fe5b90600052602060002090600c020160030154105b1561203c5761203c6121f4565b565b60005433600160a060020a0390811691161461205957600080fd5b6010805461ff0019169055565b60105460ff1681565b60008054819033600160a060020a0390811691161461208d57600080fd5b6000861161209a57600080fd5b600085116120a757600080fd5b600083116120b457600080fd5b505060015460005b6001548110156120fc57856001828154811015156120d657fe5b9060005260206000209060050201600201541015156120f457600080fd5b6001016120bc565b60a0604051908101604090815283825260208201889052810186905260ff851660608201526080810184905260018054612138828281016131b3565b8154811061214257fe5b9060005260206000209060050201600082015181556020820151816001015560408201518160020155606082015160038201805460ff191660ff9290921691909117905560808201516004909101555060028054600091906121a782600183016131df565b815481106121b157fe5b600091825260209091200155505050505050565b6000805433600160a060020a039081169116146121e157600080fd5b6121eb8383612d06565b50600192915050565b60005433600160a060020a0390811691161461220f57600080fd5b600b546001901061203c576001600b600a5481548110151561222d57fe5b90600052602060002090600c020160040160006101000a81548160ff0219169083151502179055507fc37991e3c775e6b1801058fdaf62ba55bd74756854d9ac3b11ba4de5f982f99e600a54600b600a5481548110151561228a57fe5b90600052602060002090600c02016001016040518281526040602082018181528354600260001961010060018416150201909116049183018290529060608301908490801561231a5780601f106122ef5761010080835404028352916020019161231a565b820191906000526020600020905b8154815290600101906020018083116122fd57829003601f168201915b5050935050505060405180910390a1565b60005433600160a060020a0390811691161461234657600080fd5b6006818051612359929160200190613114565b5033600160a060020a03167f66a857f48884758bc7cdb4ed42437ead131a3b8206a03f877ccce37c6e54c71e60405160405180910390a250565b60005433600160a060020a039081169116146123ae57600080fd5b6010805460ff19169055565b60036020526000908152604090205481565b6000805433600160a060020a039081169116146123e857600080fd5b600082116123f557600080fd5b50600980549082905581817f9af003bd4853b99f968563a4b5b828f1cea45068f8d0d6f53f017fc1a8e0354b60405160405180910390a35050565b6000805433600160a060020a0390811691161461244c57600080fd5b600154831061245a57600080fd5b6000821161246757600080fd5b8160018481548110151561247757fe5b9060005260206000209060050201600101819055506001905092915050565b60095481565b600160a060020a039182166000908152600d6020908152604080832093909416825291909152205490565b60015490565b60008054819033600160a060020a039081169116146124eb57600080fd5b600083116124f857600080fd5b60085461250b908463ffffffff612ff516565b600454600160a060020a03166000908152600c602052604090208054850190559050610ea681613004565b6000805433600160a060020a0390811691161461255257600080fd5b815183511461256057600080fd5b5060005b825181101561173d576125a383828151811061257c57fe5b9060200190602002015183838151811061259257fe5b9060200190602002015160006112e6565b50600101612564565b60005433600160a060020a039081169116146125c757600080fd5b600160a060020a03811615156125dc57600080fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60005433600160a060020a0390811691161461262657600080fd5b600160a060020a038116600081815260036020526040908190204290557f33d0a56b2045491e09850aff553970a014517abe73114e055855b96c69005720905160405180910390a250565b600042600b600a5481548110151561268557fe5b90600052602060002090600c02016003015410156126d3576001600b600a548154811015156126b057fe5b60009182526020909120600c90910201600401805460ff19169115159190911790555b600b600a548154811015156126e457fe5b600091825260209091206004600c90920201015460ff161561270557600080fd5b42600b600a5481548110151561271757fe5b90600052602060002090600c02016003015411151561273557600080fd5b42600b600a5481548110151561274757fe5b90600052602060002090600c0201600201541115151561276657600080fd5b600b600a5481548110151561277757fe5b60009182526020808320600160a060020a0387168452600a600c90930201919091019052604090205460ff16156127ad57600080fd5b81600b600a548154811015156127bf57fe5b90600052602060002090600c020160050154111515156127de57600080fd5b6001600b600a548154811015156127f157fe5b60009182526020808320600160a060020a0388168452600a600c90930201820190526040909120805492151560ff199093169290921790915554600b805460019290811061283b57fe5b600091825260209091206007600c909202010180549091019055600a54600b8054849290811061286757fe5b60009182526020808320600160a060020a03881684526009600c909302019190910190526040902055600a54600b805484929081106128a257fe5b600091825260209091206008600c909202010180549091019055600a54600b805485929081106128ce57fe5b90600052602060002090600c0201600b01600b600a548154811015156128f057fe5b90600052602060002090600c0201600b01805480919060010161291391906131df565b8154811061291d57fe5b906000526020600020900160006101000a815481600160a060020a030219169083600160a060020a03160217905550600b600a5481548110151561295d57fe5b90600052602060002090600c020160060154600b600a5481548110151561298057fe5b90600052602060002090600c0201600801541015156121eb576001600b600a548154811015156129ac57fe5b60009182526020909120600c90910201600401805460ff191691151591909117905550600192915050565b6129df6130a3565b60008080808080805b600154861015612b85576001805487908110612a0057fe5b9060005260206000209060050201600201549450600186815481101515612a2357fe5b9060005260206000209060050201600401549350600186815481101515612a4657fe5b600091825260209091206003600590920201015460ff169250612a698484612b8f565b9150600286815481101515612a7a57fe5b9060005260206000209001549050844211158015612a9757508181105b15612b765760a060405190810160405280600188815481101515612ab757fe5b9060005260206000209060050201600001548152602001600188815481101515612add57fe5b9060005260206000209060050201600101548152602001600188815481101515612b0357fe5b9060005260206000209060050201600201548152602001600188815481101515612b2957fe5b60009182526020918290206003600590920201015460ff16825260018054929091019189908110612b5657fe5b906000526020600020906005020160040154815250975060019650612b85565b600096506001909501946129e8565b5050505050509091565b6000612bc5612bb86064612bac8660ff871663ffffffff61306816565b9063ffffffff61308c16565b849063ffffffff612ff516565b9392505050565b600080600080600080600288815481101515612be457fe5b9060005260206000209001549450600188815481101515612c0157fe5b9060005260206000209060050201600201549350600188815481101515612c2457fe5b9060005260206000209060050201600401549250600188815481101515612c4757fe5b600091825260209091206003600590920201015460ff169150612c6a8383612b8f565b905042849010612c7d5760009550612ca2565b80612c8e868963ffffffff612ff516565b1115612c9d5760009550612ca2565b600195505b505050505092915050565b60008111612cba57600080fd5b6002548210612cc857600080fd5b612cd28282612bcc565b1515600114612ce057600080fd5b80600283815481101515612cf057fe5b6000918252602090912001805490910190555050565b600160a060020a038216600081815260036020526040908190208390557ff97a274face0b5517365ad396b1fdba6f68bd3135ef603e44272adba3af5a1e09083905190815260200160405180910390a25050565b6000600160a060020a0382161515612d7457506000610e49565b600160a060020a0382166000908152600e602052604090205460ff16151560011415612da257506000610e49565b600160a060020a0382166000908152600e60205260409020805460ff19166001908117909155600f80548492612ddb90839083016131df565b81548110612de557fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055919050565b6000600160a060020a0384161515612e3757600080fd5b600160a060020a0383161515612e4c57600080fd5b600160a060020a0384166000908152600c602052604090205482901015612e7257600080fd5b600160a060020a0383166000908152600c6020526040902054612e9b818463ffffffff612ff516565b1015612ea657600080fd5b60105460ff1615612eb657600080fd5b612ebf8461195e565b15612ec957600080fd5b50600160a060020a038281166000908152600c60205260408082208054938716835291208054848103825582548501928390559054920191018114612f0a57fe5b612f1383612d5a565b5082600160a060020a031684600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405190815260200160405180910390a350505050565b6000805433600160a060020a03908116911614612f7d57600080fd5b600160a060020a0382161515612f9257600080fd5b5060048054600160a060020a0383811673ffffffffffffffffffffffffffffffffffffffff19831617928390559081169116817f737d8c8e31e545dc1c6678164ab5d755d0f47df46c8154c71a492d6745e27c3160405160405180910390a35050565b600082820183811015612bc557fe5b6000805433600160a060020a0390811691161461302057600080fd5b6000821161302d57600080fd5b50600880549082905581817f9a2b4bdfe09e60fd8f8f7601c8eb426298255a1983acbe31a88ea6675abd02e360405160405180910390a35050565b6000828202831580613084575082848281151561308157fe5b04145b1515612bc557fe5b600080828481151561309a57fe5b04949350505050565b60a060405190810160405280600081526020016000815260200160008152602001600060ff168152602001600081525090565b60206040519081016040526000815290565b81548183558181151161173d57600c0281600c02836000526020600020918201910161173d9190613203565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061315557805160ff1916838001178555613182565b82800160010185558215613182579182015b82811115613182578251825591602001919060010190613167565b5061318e92915061328a565b5090565b50805460008255906000526020600020908101906131b0919061328a565b50565b81548183558181151161173d5760050281600502836000526020600020918201910161173d91906132a4565b81548183558181151161173d5760008381526020902061173d91810190830161328a565b610edd91905b8082111561318e57805473ffffffffffffffffffffffffffffffffffffffff19168155600061323b60018301826132de565b6000600283018190556003830181905560048301805460ff191690556005830181905560068301819055600783018190556008830181905561328190600b840190613192565b50600c01613209565b610edd91905b8082111561318e5760008155600101613290565b610edd91905b8082111561318e576000808255600182018190556002820181905560038201805460ff1916905560048201556005016132aa565b50805460018160011615610100020316600290046000825580601f1061330457506131b0565b601f0160209004906000526020600020908101906131b0919061328a5600a165627a7a7230582018828cca54a8099d764ef7d8bbcf72b9d744a68c50913f662dafa55bcdf802280029

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

0000000000000000000000008bf5eac06065bfa380acca9d2f04fddf6ac2d0a40000000000000000000000008bf5eac06065bfa380acca9d2f04fddf6ac2d0a4

-----Decoded View---------------
Arg [0] : _owner_address (address): 0x8Bf5eac06065bFa380aCCa9D2f04fddF6AC2D0A4
Arg [1] : _token_wallet_address (address): 0x8Bf5eac06065bFa380aCCa9D2f04fddF6AC2D0A4

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000008bf5eac06065bfa380acca9d2f04fddf6ac2d0a4
Arg [1] : 0000000000000000000000008bf5eac06065bfa380acca9d2f04fddf6ac2d0a4


Deployed Bytecode Sourcemap

17687:6913:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23506:9;-1:-1:-1;;;;;23526:10:0;:19;:31;;;;23506:9;23526:31;;;;;;;;;;;;;;;;;;;;;;;;;;23576:10;-1:-1:-1;;;;;23568:31:0;;23588:10;23568:31;;;;;;;;;;;;;;23447:160;17687:6913;15746:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;71:3;;;64:6;52:2;45:3;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2266:272:0;;;;;;;;;;-1:-1:-1;;;;;2266:272:0;;;;;;;;;;;;;;;;;;;;;;;;23973:136;;;;;;;;;;-1:-1:-1;;;;;23973:136:0;;;;;24369:228;;;;;;;;;;-1:-1:-1;;;;;24369:228:0;;;;;24151:210;;;;;;;;;;;;16429:92;;;;;;;;;;;;;;;;;;;;;;;;;;;1924:334;;;;;;;;;;-1:-1:-1;;;;;1924:334:0;;;;;;;;;;;;17804:29;;;;;;;;;;;;18571:1308;;;;;;;;;;-1:-1:-1;;;;;18571:1308:0;;;;;;;;;21439:351;;;;;;;;;;-1:-1:-1;;;;;21439:351:0;;;;;;;;;;;;;;15843:28;;;;;;;;;;;;7472:246;;;;;;;;;;;;;;;;;;12518:154;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;71:3;;;64:6;52:2;45:3;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;15878:68:0;;;;;;;;;;;;2546:114;;;;;;;;;;;;20137:708;;;;;;;;;;-1:-1:-1;;;;;20137:708:0;;;;;;;;;11598:912;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11598:912:0;-1:-1:-1;;;;;11598:912:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;71:3;;;64:6;52:2;45:3;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7726:301:0;;;;;;;;;;;;;;;;5121:110;;;;;;;;;;;;;;19887:242;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19887:242:0;;-1:-1:-1;19887:242:0;;-1:-1:-1;;;;;;19887:242:0;2668:157;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2668:157:0;;;;;;;;;;;;;;4613:500;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23078:361;;;;;;;;;;-1:-1:-1;;;;;23078:361:0;;;;;1610:128;;;;;;;;;;-1:-1:-1;;;;;1610:128:0;;;;;2833:109;;;;;;;;;;;;15160:204;;;;;;;;;;-1:-1:-1;;;;;15160:204:0;;;;;7176:288;;;;;;;;;;;;;;;;23615:73;;;;;;;;;;;;11488:102;;;;;;;;;;;;12680:902;;;;;;;;;;;;;-1:-1:-1;;;;;12680:902:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12680:902:0;;-1:-1:-1;;12680:902:0;;;;;;;;-1:-1:-1;12680:902:0;;;;;-1:-1:-1;12680:902:0;;;;-1:-1:-1;12680:902:0;;-1:-1:-1;12680:902:0;824:20;;;;;;;;;;;;6224:638;;;;;;;;;;;;;;;;;;;;;;;;21214:217;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21214:217:0;;-1:-1:-1;21214:217:0;;-1:-1:-1;;;;;;21214:217:0;15808:28;;;;;;;;;;;;15702:35;;;;;;;;;;;;22482:285;;;;;;;;;;-1:-1:-1;;;;;22482:285:0;;;;;;;2950:219;;;;;;;;;;-1:-1:-1;;;;;2950:219:0;;;;;21103:103;;;;;;;;;;-1:-1:-1;;;;;21103:103:0;;;;;;;4063:82;;;;;;;;;;;;9200:528;;;;;;;;;;;;16529:129;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16529:129:0;;-1:-1:-1;16529:129:0;;-1:-1:-1;;;;;;16529:129:0;14782:180;;;;;;;;;;;;23696:75;;;;;;;;;;;;1442:34;;;;;;;;;;;;5425:791;;;;;;;;;;;;;;;;;;;;;;23779:186;;;;;;;;;;-1:-1:-1;;;;;23779:186:0;;;;;;;14566:208;;;;;;;;;;;;16666:139;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16666:139:0;;-1:-1:-1;16666:139:0;;-1:-1:-1;;;;;;16666:139:0;3973:82;;;;;;;;;;;;15006:48;;;;;;;;;;-1:-1:-1;;;;;15006:48:0;;;;;17389:291;;;;;;;;;;;;;;6870:298;;;;;;;;;;;;;;;;15986:35;;;;;;;;;;;;1746:170;;;;;;;;;;-1:-1:-1;;;;;1746:170:0;;;;;;;;;;4508:97;;;;;;;;;;;;22775:295;;;;;;;;;;;;;;20853:242;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20853:242:0;;-1:-1:-1;20853:242:0;;-1:-1:-1;;;;;;20853:242:0;1006:132;;;;;;;;;;-1:-1:-1;;;;;1006:132:0;;;;;15746:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2266:272::-;2333:4;2358:10;-1:-1:-1;;;;;2358:24:0;;;2350:33;;;;;;-1:-1:-1;;;;;2402:22:0;;;;2394:31;;;;;;2454:1;2444:11;;;2436:20;;;;;;-1:-1:-1;;;;;;2478:10:0;2467:22;;;;;;:10;:22;;;;;;;;:32;;;;;;;;;:41;;;2526:4;2266:272;;;;:::o;23973:136::-;24049:4;972:5;;958:10;-1:-1:-1;;;;;958:19:0;;;972:5;;958:19;950:28;;;;;;24066:13;24074:4;24066:7;:13::i;:::-;-1:-1:-1;24097:4:0;989:1;23973:136;;;:::o;24369:228::-;24431:4;972:5;;24431:4;;958:10;-1:-1:-1;;;;;958:19:0;;;972:5;;958:19;950:28;;;;;;-1:-1:-1;;;;;24456:17:0;;;;24448:26;;;;;;24504:14;24514:3;24504:9;:14::i;:::-;24485:33;-1:-1:-1;24548:1:0;24537:12;;24529:21;;;;;;24568;24575:3;24580:8;24568:6;:21::i;:::-;24561:28;;989:1;24369:228;;;;:::o;24151:210::-;24188:4;24222:10;24188:4;24262:17;24222:10;24262:9;:17::i;:::-;24243:36;-1:-1:-1;24309:1:0;24298:12;;24290:21;;;;;;24329:24;24336:6;24344:8;24329:6;:24::i;:::-;24322:31;;24151:210;;;:::o;16429:92::-;16501:12;;16429:92;;:::o;1924:334::-;2057:4;972:5;;958:10;-1:-1:-1;;;;;958:19:0;;;972:5;;958:19;950:28;;;;;;-1:-1:-1;;;;;2082:22:0;;;;2074:31;;;;;;-1:-1:-1;;;;;2124:22:0;;;;2116:31;;;;;;2176:1;2166:11;;;2158:20;;;;;;-1:-1:-1;;;;;;2189:20:0;;;;;;;:10;:20;;;;;;;;:30;;;;;;;;;;;;;:39;2246:4;;1924:334::o;17804:29::-;;;;;;;;;:::o;18571:1308::-;18710:4;18897:24;18936:16;18973:9;;:::i;:::-;18984:6;972:5;;18984:6;;;;958:10;-1:-1:-1;;;;;958:19:0;;;972:5;;958:19;950:28;;;;;;18750:1;18735:16;;18727:25;;;;;;18782:20;;-1:-1:-1;;;;;18782:20:0;18771:32;;;;:10;:32;;;;;;:48;;;;18763:57;;;;;;-1:-1:-1;;;;;18871:14:0;;;;;;:10;:14;;;;;;18839:29;;;:46;18831:55;;;;;;18924:1;18897:28;;18955:1;18936:20;;18994:13;:11;:13::i;:::-;18969:38;;;;19022:6;19018:470;;;19059:9;:21;19045:35;;19114:9;:20;;;19095:39;;19168:34;19177:12;19191:10;19168:8;:34::i;:::-;19149:53;;19225:47;19242:11;19255:16;19225;:47::i;:::-;:55;;19276:4;19225:55;19217:64;;;;;;19296:42;19308:11;19321:16;19296:11;:42::i;:::-;19018:470;;;19360:9;;;;;;;19356:132;;;19405:12;19386:31;;19356:132;;;19458:9;;;;;;;;:17;;:9;:17;19450:26;;;;;;-1:-1:-1;19511:20:0;;-1:-1:-1;;;;;19511:20:0;;;19500:32;;;;:10;:32;;;;;;:52;;;;;;;19563:14;;;;;;;;:34;;;;;;19644:21;;;19640:80;;-1:-1:-1;19692:16:0;19640:80;19732:27;19741:2;19751:7;19745:3;:13;19732:8;:27::i;:::-;19803:2;-1:-1:-1;;;;;19789:35:0;19798:3;19789:35;19807:16;19789:35;;;;;;;;;;;;;;19835:14;19846:2;19835:10;:14::i;:::-;-1:-1:-1;19867:4:0;;18571:1308;-1:-1:-1;;;;;;;;;;18571:1308:0:o;21439:351::-;21566:10;-1:-1:-1;;;;;21566:24:0;;;21558:33;;;;;;-1:-1:-1;;;;;21610:19:0;;;;21602:28;;;;;;-1:-1:-1;;;;;21660:17:0;;;;;;;:10;:17;;;;;;;;21678:10;21660:29;;;;;;;;;;21649:40;;;21641:49;;;;;;21701:30;21711:5;21718:3;21723:7;21701:9;:30::i;:::-;-1:-1:-1;;;;;21742:17:0;;;;;;;:10;:17;;;;;;;;21760:10;21742:29;;;;;;;;;;;;:40;;;;;;;;;-1:-1:-1;21439:351:0:o;15843:28::-;;;;:::o;7472:246::-;7585:4;972:5;;958:10;-1:-1:-1;;;;;958:19:0;;;972:5;;958:19;950:28;;;;;;7619:9;:16;7610:25;;7602:34;;;;;;7678:10;7647:9;7657:6;7647:17;;;;;;;;;;;;;;;;;;;;:28;;;:41;;;;;;;;;;;;;;;;;;7706:4;7699:11;;7472:246;;;;:::o;12518:154::-;12595:9;;:::i;:::-;12624;:26;;12634:15;;12624:26;;;;;;;;;;;;;;;;:40;;12617:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12617:47:0;;;;;;;;;;;;;;;;;;;;;;;12518:154;;;:::o;15878:68::-;;;;:::o;2546:114::-;2609:4;972:5;;958:10;-1:-1:-1;;;;;958:19:0;;;972:5;;958:19;950:28;;;;;;-1:-1:-1;2633:12:0;:19;2546:114;:::o;20137:708::-;20275:4;972:5;;20275:4;;958:10;-1:-1:-1;;;;;958:19:0;;;972:5;;958:19;950:28;;;;;;20315:1;20300:16;;20292:25;;;;;;20347:20;;-1:-1:-1;;;;;20347:20:0;20336:32;;;;:10;:32;;;;;;:48;;;;20328:57;;;;;;-1:-1:-1;;;;;20436:14:0;;;;;;:10;:14;;;;;;20404:29;;;:46;20396:55;;;;;;-1:-1:-1;20475:20:0;;-1:-1:-1;;;;;20475:20:0;;;20464:32;;;;:10;:32;;;;;;:48;;;;;;;20523:14;;;;;;;;:30;;;;;;20600:21;;;20596:80;;-1:-1:-1;20648:16:0;20596:80;20688:27;20697:2;20707:7;20701:3;:13;20688:8;:27::i;:::-;20740:2;-1:-1:-1;;;;;20726:31:0;20735:3;20726:31;20744:12;20726:31;;;;;;;;;;;;;;20773:2;-1:-1:-1;;;;;20768:22:0;;20777:12;20768:22;;;;;;;;;;;;;;20801:14;20812:2;20801:10;:14::i;:::-;-1:-1:-1;20833:4:0;;20137:708;-1:-1:-1;;;;;20137:708:0:o;11598:912::-;11681:17;11709:15;;:::i;:::-;11735:23;11769:21;11801:13;11825:20;11856;11887:18;11916:17;11964:9;11974:15;11964:26;;;;;;;;;;;;;;;;;;;;;;;:36;12022:9;:26;;-1:-1:-1;;;;;11964:36:0;;;;-1:-1:-1;12022:9:0;12032:15;;12022:26;;;;;;;;;;;;;;;;:35;;12011:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12086:9;12096:15;12086:26;;;;;;;;;;;;;;;;;;;;:42;;;12068:60;;12155:9;12165:15;12155:26;;;;;;;;;;;;;;;;;;;;:40;;;12139:56;;12217:9;12227:15;12217:26;;;;;;;;;;;;;;;;;;:35;:26;;;;;:35;;12278:9;:26;;12217:35;;;;;-1:-1:-1;12278:9:0;12288:15;;12278:26;;;;;;;;;;;;;;;;:39;;;12263:54;;12343:9;12353:15;12343:26;;;;;;;;;;;;;;;;;;;;:39;;;12328:54;;12406:9;12416:15;12406:26;;;;;;;;;;;;;;;;;;;;:37;;;12393:50;;12466:9;12476:15;12466:26;;;;;;;;;;;;;;;;;;;;:36;;;12454:48;;11598:912;;;;;;;;;;;:::o;7726:301::-;7848:4;972:5;;958:10;-1:-1:-1;;;;;958:19:0;;;972:5;;958:19;950:28;;;;;;7882:9;:16;7873:25;;7865:34;;;;;;7937:1;7918:20;;7910:29;;;;;;7981:16;7950:9;7960:6;7950:17;;;;;;;;;;;;;;;;;;:28;:17;;;;;:28;:47;-1:-1:-1;8015:4:0;7726:301;;;;:::o;5121:110::-;5179:7;5206:9;5216:6;5206:17;;;;;;;;;;;;;;;;;;;5199:24;;5121:110;;;:::o;19887:242::-;20029:6;972:5;;958:10;-1:-1:-1;;;;;958:19:0;;;972:5;;958:19;950:28;;;;;;19997:8;:15;19982:4;:11;:30;19974:39;;;;;;-1:-1:-1;20036:1:0;20024:98;20043:4;:11;20039:1;:15;20024:98;;;20076:34;20086:4;20091:1;20086:7;;;;;;;;;;;;;;;;20095:8;20104:1;20095:11;;;;;;;;;;;;;;;;20108:1;20076:9;:34::i;:::-;-1:-1:-1;20056:3:0;;20024:98;;;19887:242;;;:::o;2668:157::-;2749:16;972:5;;958:10;-1:-1:-1;;;;;958:19:0;;;972:5;;958:19;950:28;;;;;;2789:12;:28;;2802:14;;2789:28;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2789:28:0;;2668:157;-1:-1:-1;;2668:157:0:o;4613:500::-;4681:16;4708:23;4742:21;4774:16;4801:18;4852:9;4862:6;4852:17;;;;;;;;;;;;;;;;;;;;:29;;;4838:43;;4910:9;4920:6;4910:17;;;;;;;;;;;;;;;;;;;;:33;;;4892:51;;4970:9;4980:6;4970:17;;;;;;;;;;;;;;;;;;;;:31;;;4954:47;;5025:9;5035:6;5025:17;;;;;;;;;;;;;;;;;;:28;:17;;;;;:28;;;5077:17;;5025:28;;;;;-1:-1:-1;5025:28:0;5087:6;;5077:17;;;;;;;;;;;;;;;;:28;;;5064:41;;4613:500;;;;;;;:::o;23078:361::-;23154:4;972:5;;23154:4;;958:10;-1:-1:-1;;;;;958:19:0;;;972:5;;958:19;950:28;;;;;;-1:-1:-1;;;;;23179:28:0;;;;23171:37;;;;;;-1:-1:-1;23260:20:0;;;-1:-1:-1;;;;;23260:20:0;;;23249:32;;;;:10;:32;;;;;;;23292:26;;;;;;;;:48;;;23362:20;;;;;23351:32;;;;;:36;23398:33;23303:14;23398:17;:33::i;1610:128::-;-1:-1:-1;;;;;1707:23:0;1675:12;1707:23;;;:10;:23;;;;;;;1610:128::o;2833:109::-;2893:9;;:::i;:::-;972:5;;958:10;-1:-1:-1;;;;;958:19:0;;;972:5;;958:19;950:28;;;;;;2922:12;2915:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2915:19:0;;;;;;;;;;;;;;;;;;;;;;;2833:109;:::o;15160:204::-;-1:-1:-1;;;;;15251:21:0;;15223:4;15251:21;;;:12;:21;;;;;;15244:3;:28;15240:117;;-1:-1:-1;15296:5:0;15289:12;;15240:117;-1:-1:-1;15341:4:0;15334:11;;7176:288;7288:4;972:5;;958:10;-1:-1:-1;;;;;958:19:0;;;972:5;;958:19;950:28;;;;;;7322:9;:16;7313:25;;7305:34;;;;;;7374:1;7358:17;;7350:26;;;;;;7421:13;7387:9;7397:6;7387:17;;;;;;;;;;;;;;;;;;:31;:17;;;;;:31;:47;-1:-1:-1;7452:4:0;7176:288;;;;:::o;23615:73::-;972:5;;958:10;-1:-1:-1;;;;;958:19:0;;;972:5;;958:19;950:28;;;;;;23664:9;:16;;-1:-1:-1;;23664:16:0;;;;;23615:73::o;11488:102::-;11566:9;:16;11488:102;:::o;12680:902::-;12901:7;972:5;;12901:7;;958:10;-1:-1:-1;;;;;958:19:0;;;972:5;;958:19;950:28;;;;;;12925:9;:16;12945:1;12925:21;;12921:172;;13006:15;12971:9;12981:7;;12971:18;;;;;;;;;;;;;;;;;;;;:32;;;:50;12963:59;;;;;;;;13045:9;13055:7;;13045:18;;;;;;;;;;;;;;;;;;:27;:18;;;;;:27;;;;:35;;:27;:35;13037:44;;;;;;13115:9;:16;;13105:7;:26;;;13173:18;13115:9;-1:-1:-1;13173:18:0;;;:::i;:::-;13163:29;;;;;;;;;;;;;;;;;;;;;13203:17;;-1:-1:-1;;13203:17:0;-1:-1:-1;;;;;13203:17:0;;;;;13163:29;-1:-1:-1;;13231:10:0;;13244:8;;13231:21;;;;;;;;:::i;:::-;-1:-1:-1;13263:17:0;;;:35;;;13309:15;;;:31;;;13351:10;;;:18;;-1:-1:-1;;13351:18:0;;;13380:12;;;:25;;;13416:11;;;:23;;;-1:-1:-1;13452:14:0;;;:18;;;13481:22;;13488:15;;;;13481:22;:::i;:::-;13514:35;13526:7;;13535:3;13540:8;13514:35;;;;;-1:-1:-1;;;;;13514:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;71:3;;;64:6;52:2;45:3;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1;;13567:7:0;;;12680:902;-1:-1:-1;;;;;;12680:902:0:o;824:20::-;;;-1:-1:-1;;;;;824:20:0;;:::o;6224:638::-;6433:4;972:5;;958:10;-1:-1:-1;;;;;958:19:0;;;972:5;;958:19;950:28;;;;;;6467:9;:16;6458:25;;6450:34;;;;;;6521:1;6503:19;;6495:28;;;;;;6558:1;6542:17;;6534:26;;;;;;6598:1;6579:20;;6571:29;;;;;;6649:15;6613:9;6623:6;6613:17;;;;;;;;;;;;;;;;;;;;:33;;:51;;;;6709:13;6675:9;6685:6;6675:17;;;;;;;;;;;;;;;;;;;;:31;;:47;;;;6764:10;6733:9;6743:6;6733:17;;;;;;;;;;;;;;;;;;;;:28;;;:41;;;;;;;;;;;;;;;;;;6816:16;6785:9;6795:6;6785:17;;;;;;;;;;;;;;;;;;:28;:17;;;;;:28;:47;-1:-1:-1;6850:4:0;6224:638;;;;;;;:::o;21214:217::-;21339:6;21309;:13;21295:3;:10;:27;21287:36;;;;;;-1:-1:-1;21346:1:0;21334:90;21353:3;:10;21349:1;:14;21334:90;;;21385:27;21394:3;21398:1;21394:6;;;;;;;;;;;;;;;;21402;21409:1;21402:9;;;;;;;;;;;;;;;;21385:8;:27::i;:::-;21365:3;;21334:90;;15808:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15702:35;;;-1:-1:-1;;;;;15702:35:0;;:::o;22482:285::-;22552:4;972:5;;958:10;-1:-1:-1;;;;;958:19:0;;;972:5;;958:19;950:28;;;;;;22587:1;22577:11;;22569:20;;;;;;22627:7;22608:15;22618:4;22608:9;:15::i;:::-;:26;;22600:35;;;;;;-1:-1:-1;;;;;22646:16:0;;;;;;:10;:16;;;;;;;:27;;;;;;;22684:12;:23;;;;;;;22718:19;;22666:7;;22718:19;;;;;;;;;;;;;-1:-1:-1;22755:4:0;22482:285;;;;:::o;2950:219::-;3017:4;-1:-1:-1;;;;;3038:21:0;;;3034:128;;;-1:-1:-1;3083:5:0;3076:12;;3034:128;-1:-1:-1;;;;;;3128:22:0;;;;;;:13;:22;;;;;;;;3121:29;;21103:103;21166:32;21176:10;21188:2;21192:5;21166:9;:32::i;:::-;21103:103;;:::o;4063:82::-;972:5;;958:10;-1:-1:-1;;;;;958:19:0;;;972:5;;958:19;950:28;;;;;;4116:14;:21;;-1:-1:-1;;4116:21:0;4133:4;4116:21;;;4063:82::o;9200:528::-;9253:16;9280:23;9314:21;9346:16;9373:18;9414:9;;:::i;:::-;9425:6;9435:13;:11;:13::i;:::-;9410:38;;-1:-1:-1;9410:38:0;-1:-1:-1;9477:4:0;9467:14;;;;9459:23;;;;;;9507:9;:21;9493:35;;9557:9;:25;;;9539:43;;9609:9;:23;;;9593:39;;9656:9;:20;;;9643:33;;9700:9;:20;;;9687:33;;9200:528;;;;;;;:::o;16529:129::-;972:5;;958:10;-1:-1:-1;;;;;958:19:0;;;972:5;;958:19;950:28;;;;;;16598:4;16605:7;;16598:14;;;;;;;;:::i;:::-;;16639:10;-1:-1:-1;;;;;16623:27:0;;;;;;;;;;;16529:129;:::o;14782:180::-;972:5;;958:10;-1:-1:-1;;;;;958:19:0;;;972:5;;958:19;950:28;;;;;;14836:9;:16;14856:1;14836:21;;;;;14835:80;;;14911:3;14876:9;14886:7;;14876:18;;;;;;;;;;;;;;;;;;;;:32;;;:38;14835:80;14831:124;;;14932:11;:9;:11::i;:::-;14782:180::o;23696:75::-;972:5;;958:10;-1:-1:-1;;;;;958:19:0;;;972:5;;958:19;950:28;;;;;;23746:9;:17;;-1:-1:-1;;23746:17:0;;;23696:75::o;1442:34::-;;;;;;:::o;5425:791::-;5723:19;972:5;;5723:19;;958:10;-1:-1:-1;;;;;958:19:0;;;972:5;;958:19;950:28;;;;;;5631:1;5613:19;;5605:28;;;;;;5668:1;5652:17;;5644:26;;;;;;5708:1;5689:20;;5681:29;;;;;;-1:-1:-1;;5745:9:0;:16;5784:1;5772:122;5791:9;:16;5787:20;;5772:122;;;5866:15;5837:9;5847:1;5837:12;;;;;;;;;;;;;;;;;;;;:26;;;:44;5829:53;;;;;;;;5809:3;;5772:122;;;5938:226;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5906:9;5916:18;;;5906:9;5916:18;;;;:::i;:::-;5906:29;;;;;;;;;;;;;;;;;;:258;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5906:258:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6175:9:0;6185:18;;6207:1;;6175:9;6185:18;6175:9;6185:18;;;;:::i;:::-;6175:29;;;;;;;;;;;;;;;;;:33;-1:-1:-1;;;;;;5425:791:0:o;23779:186::-;23889:4;972:5;;958:10;-1:-1:-1;;;;;958:19:0;;;972:5;;958:19;950:28;;;;;;23906:29;23915:4;23921:13;23906:8;:29::i;:::-;-1:-1:-1;23953:4:0;23779:186;;;;:::o;14566:208::-;972:5;;958:10;-1:-1:-1;;;;;958:19:0;;;972:5;;958:19;950:28;;;;;;14619:9;:16;14639:1;14619:21;;14615:152;;14687:4;14657:9;14667:7;;14657:18;;;;;;;;;;;;;;;;;;;;:27;;;:34;;;;;;;;;;;;;;;;;;14706:49;14718:7;;14727:9;14737:7;;14727:18;;;;;;;;;;;;;;;;;;;;:27;;14706:49;;;;;;;;;;;;;;;-1:-1:-1;;14706:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14566:208::o;16666:139::-;972:5;;958:10;-1:-1:-1;;;;;958:19:0;;;972:5;;958:19;950:28;;;;;;16739:6;16748:9;;16739:18;;;;;;;;:::i;:::-;;16786:10;-1:-1:-1;;;;;16768:29:0;;;;;;;;;;;16666:139;:::o;3973:82::-;972:5;;958:10;-1:-1:-1;;;;;958:19:0;;;972:5;;958:19;950:28;;;;;;4025:14;:22;;-1:-1:-1;;4025:22:0;;;3973:82::o;15006:48::-;;;;;;;;;;;;;:::o;17389:291::-;17513:27;972:5;;958:10;-1:-1:-1;;;;;958:19:0;;;972:5;;958:19;950:28;;;;;;17500:1;17481:20;;17473:29;;;;;;-1:-1:-1;17543:15:0;;;17569:34;;;;17587:16;17543:15;17614:58;;;;;;;;;;17389:291;;:::o;6870:298::-;6986:4;972:5;;958:10;-1:-1:-1;;;;;958:19:0;;;972:5;;958:19;950:28;;;;;;7020:9;:16;7011:25;;7003:34;;;;;;7074:1;7056:19;;7048:28;;;;;;7123:15;7087:9;7097:6;7087:17;;;;;;;;;;;;;;;;;;;;:33;;:51;;;;7156:4;7149:11;;6870:298;;;;:::o;15986:35::-;;;;:::o;1746:170::-;-1:-1:-1;;;;;1878:20:0;;;1851:7;1878:20;;;:10;:20;;;;;;;;:30;;;;;;;;;;;;;1746:170::o;4508:97::-;4581:9;:16;4508:97;:::o;22775:295::-;22850:4;972:5;;22850:4;;958:10;-1:-1:-1;;;;;958:19:0;;;972:5;;958:19;950:28;;;;;;22887:1;22875:13;;22867:22;;;;;;22930:12;;:27;;22947:9;22930:27;:16;:27;:::i;:::-;22979:20;;-1:-1:-1;;;;;22979:20:0;22968:32;;;;:10;:32;;;;;:45;;;;;;22900:57;-1:-1:-1;23024:38:0;22900:57;23024:17;:38::i;20853:242::-;20995:6;972:5;;958:10;-1:-1:-1;;;;;958:19:0;;;972:5;;958:19;950:28;;;;;;20963:8;:15;20948:4;:11;:30;20940:39;;;;;;-1:-1:-1;21002:1:0;20990:98;21009:4;:11;21005:1;:15;20990:98;;;21042:34;21052:4;21057:1;21052:7;;;;;;;;;;;;;;;;21061:8;21070:1;21061:11;;;;;;;;;;;;;;;;21074:1;21042:9;:34::i;:::-;-1:-1:-1;21022:3:0;;20990:98;;1006:132;972:5;;958:10;-1:-1:-1;;;;;958:19:0;;;972:5;;958:19;950:28;;;;;;-1:-1:-1;;;;;1087:15:0;;;;1079:24;;;;;;1114:5;:16;;-1:-1:-1;;1114:16:0;-1:-1:-1;;;;;1114:16:0;;;;;;;;;;1006:132::o;15511:114::-;972:5;;958:10;-1:-1:-1;;;;;958:19:0;;;972:5;;958:19;950:28;;;;;;-1:-1:-1;;;;;15572:18:0;;;;;;:12;:18;;;;;;;15593:3;15572:24;;15607:10;;;;;;;;;;15511:114;:::o;13590:968::-;13656:4;13712:3;13677:9;13687:7;;13677:18;;;;;;;;;;;;;;;;;;;;:32;;;:38;13673:105;;;13762:4;13732:9;13742:7;;13732:18;;;;;;;;;;;;;;;;;;;;;;;:27;;:34;;-1:-1:-1;;13732:34:0;;;;;;;;;;13673:105;13798:9;13808:7;;13798:18;;;;;;;;;;;;;;;;;;:27;:18;;;;;:27;;;;:36;13790:45;;;;;;13889:3;13854:9;13864:7;;13854:18;;;;;;;;;;;;;;;;;;;;:32;;;:38;13846:47;;;;;;;;13950:3;13912:9;13922:7;;13912:18;;;;;;;;;;;;;;;;;;;;:34;;;:41;;13904:50;;;;;;;;13973:9;13983:7;;13973:18;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13973:34:0;;;;:26;:18;;;;;:26;;;;:34;;;;;;;;:43;13965:52;;;;;;14069:7;14036:9;14046:7;;14036:18;;;;;;;;;;;;;;;;;;;;:29;;;:40;;14028:49;;;;;;;;14127:4;14090:9;14100:7;;14090:18;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14090:34:0;;;;:26;:18;;;;;:26;;:34;;;;;;:41;;;;;-1:-1:-1;;14090:41:0;;;;;;;;;;14152:7;14142:9;:18;;14090:41;;14152:7;14142:18;;;;;;;;;;;;;;:31;:18;;;;;:31;:36;;;;;;;14199:7;;14189:9;:18;;14231:7;;14199;14189:18;;;;;;;;;;;;;;-1:-1:-1;;;;;14189:39:0;;;;:31;:18;;;;;:31;;;;:39;;;;;:49;14259:7;;14249:9;:18;;14284:7;;14259;14249:18;;;;;;;;;;;;;;:31;:18;;;;;:31;:42;;;;;;;14312:7;;14302:9;:18;;14380:6;;14312:7;14302:18;;;;;;;;;;;;;;;;:32;;14335:9;14345:7;;14335:18;;;;;;;;;;;;;;;;;;;;:32;;:41;;;;;;;;;;;:::i;:::-;14302:75;;;;;;;;;;;;;;;;;:84;;;;;-1:-1:-1;;;;;14302:84:0;;;;;-1:-1:-1;;;;;14302:84:0;;;;;;14438:9;14448:7;;14438:18;;;;;;;;;;;;;;;;;;;;:28;;;14403:9;14413:7;;14403:18;;;;;;;;;;;;;;;;;;;;:31;;;:63;;14399:130;;;14513:4;14483:9;14493:7;;14483:18;;;;;;;;;;;;;;;;;;;;;;;:27;;:34;;-1:-1:-1;;14483:34:0;;;;;;;;;;-1:-1:-1;;;13590:968:0;-1:-1:-1;;13590:968:0:o;9736:1089::-;9781:14;;:::i;:::-;9797:11;;;;;;;9846:972;9865:9;:16;9861:20;;9846:972;;;9927:9;:12;;9937:1;;9927:12;;;;;;;;;;;;;;;;:26;;;9903:50;;9989:9;9999:1;9989:12;;;;;;;;;;;;;;;;;;;;:23;;;9968:44;;10046:9;10056:1;10046:12;;;;;;;;;;;;;;;;;;:23;:12;;;;;:23;;;;;-1:-1:-1;10116:32:0;10125:10;10046:23;10116:8;:32::i;:::-;10084:64;;10189:9;10199:1;10189:12;;;;;;;;;;;;;;;;;;;10163:38;;10228:13;10221:3;:20;;10220:67;;;;;10265:21;10247:15;:39;10220:67;10216:591;;;10320:333;;;;;;;;;10361:9;10371:1;10361:12;;;;;;;;;;;;;;;;;;;;:24;;;10320:333;;;;10425:9;10435:1;10425:12;;;;;;;;;;;;;;;;;;;;:28;;;10320:333;;;;10491:9;10501:1;10491:12;;;;;;;;;;;;;;;;;;;;:26;;;10320:333;;;;10552:9;10562:1;10552:12;;;;;;;;;;;;;;;;;;;:23;:12;;;;;:23;;;;10320:333;;10552:23;10610:12;;10320:333;;;;;10620:1;;10610:12;;;;;;;;;;;;;;;;:23;;;10320:333;;;10308:345;;10681:4;10672:13;;10704:5;;10216:591;10759:5;10750:14;;9883:3;;;;;9846:972;;;9736:1089;;;;;;;;:::o;5241:174::-;5337:7;5364:43;5376:30;5402:3;5377:19;:7;:19;;;;:11;:19;:::i;:::-;5376:25;:30;:25;:30;:::i;:::-;5364:7;;:43;:11;:43;:::i;:::-;5357:50;5241:174;-1:-1:-1;;;5241:174:0:o;8037:659::-;8143:4;8160:18;8209:27;8281:18;8341:16;8399:29;8181:9;8191:6;8181:17;;;;;;;;;;;;;;;;;;;8160:38;;8239:9;8249:6;8239:17;;;;;;;;;;;;;;;;;;;;:31;;;8209:61;;8302:9;8312:6;8302:17;;;;;;;;;;;;;;;;;;;;:28;;;8281:49;;8360:9;8370:6;8360:17;;;;;;;;;;;;;;;;;;:28;:17;;;;;:28;;;;;-1:-1:-1;8431:32:0;8440:10;8360:28;8431:8;:32::i;:::-;8399:64;-1:-1:-1;8480:3:0;:26;;;8476:213;;8530:5;8523:12;;;;8476:213;8583:21;8557:23;:10;8572:7;8557:23;:14;:23;:::i;:::-;:47;8553:136;;;8628:5;8621:12;;;;8553:136;8673:4;8666:11;;8553:136;8037:659;;;;;;;;;:::o;8704:243::-;8794:1;8785:10;;8777:19;;;;;;8824:9;:16;8815:25;;8807:34;;;;;;8860:32;8877:6;8885;8860:16;:32::i;:::-;:40;;8896:4;8860:40;8852:49;;;;;;8933:6;8912:9;8922:6;8912:17;;;;;;;;;;;;;;;;;;;:27;;;;;;;-1:-1:-1;;8704:243:0:o;15372:131::-;-1:-1:-1;;;;;15439:18:0;;;;;;:12;:18;;;;;;;:26;;;15476:19;;15460:5;;15476:19;;;;;;;;;;;;;15372:131;;:::o;3177:347::-;3231:4;-1:-1:-1;;;;;3252:21:0;;;3248:269;;;-1:-1:-1;3297:5:0;3290:12;;3248:269;-1:-1:-1;;;;;3324:22:0;;;;;;:13;:22;;;;;;;;:30;;:22;:30;3320:197;;;-1:-1:-1;3378:5:0;3371:12;;3320:197;-1:-1:-1;;;;;3416:22:0;;;;;;:13;:22;;;;;:29;;-1:-1:-1;;3416:29:0;3441:4;3416:29;;;;;;3460:12;3473:21;;3430:7;;3473:21;;3460:12;;3473:21;;;:::i;:::-;3460:35;;;;;;;;;;;;;;;;;:45;;-1:-1:-1;;3460:45:0;-1:-1:-1;;;;;3460:45:0;;;;;;;;;;3177:347;;-1:-1:-1;3177:347:0:o;21798:676::-;22198:19;-1:-1:-1;;;;;21923:19:0;;;;21915:28;;;;;;-1:-1:-1;;;;;21962:17:0;;;;21954:26;;;;;;-1:-1:-1;;;;;21999:17:0;;;;;;:10;:17;;;;;;:28;;;;21991:37;;;;;;-1:-1:-1;;;;;22079:15:0;;;;;;:10;:15;;;;;;22047:28;22079:15;22067:7;22047:28;:19;:28;:::i;:::-;:47;;22039:56;;;;;;22114:14;;;;:23;22106:32;;;;;;22157:18;22169:5;22157:11;:18::i;:::-;:27;22149:36;;;;;;-1:-1:-1;;;;;;22240:15:0;;;;;;;:10;:15;;;;;;;;22220:17;;;;;;;;;22266:28;;;;;22305:26;;;;;;;;22349:17;;22220:35;;;22349;:50;;22342:58;;;;22411:15;22422:3;22411:10;:15::i;:::-;;22453:3;-1:-1:-1;;;;;22437:29:0;22446:5;-1:-1:-1;;;;;22437:29:0;;22458:7;22437:29;;;;;;;;;;;;;;21798:676;;;;:::o;16813:297::-;16942:19;972:5;;958:10;-1:-1:-1;;;;;958:19:0;;;972:5;;958:19;950:28;;;;;;-1:-1:-1;;;;;16902:28:0;;;;16894:37;;;;;;-1:-1:-1;16964:20:0;;;-1:-1:-1;;;;;16995:37:0;;;-1:-1:-1;;16995:37:0;;;;;;;16964:20;;;;17081;16964;17043:59;;;;;;;;;;16813:297;;:::o;648:147::-;706:7;738:5;;;761:6;;;;754:14;;;17118:263;17235:24;972:5;;958:10;-1:-1:-1;;;;;958:19:0;;;972:5;;958:19;950:28;;;;;;17222:1;17206:17;;17198:26;;;;;;-1:-1:-1;17262:12:0;;;17285:28;;;;17300:13;17262:12;17324:49;;;;;;;;;;17118:263;;:::o;52:161::-;110:7;142:5;;;165:6;;;:20;;;184:1;179;175;:5;;;;;;;;:10;165:20;158:28;;;;;221:288;279:7;378:9;394:1;390;:5;;;;;;;;;221:288;-1:-1:-1;;;;221:288:0:o;17687:6913::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17687:6913:0;;;-1:-1:-1;17687:6913:0;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;17687:6913:0;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17687:6913:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17687:6913:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i

Swarm Source

bzzr://18828cca54a8099d764ef7d8bbcf72b9d744a68c50913f662dafa55bcdf80228

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.