ETH Price: $3,127.92 (+1.61%)

Token

XMLY Token (XMLY)
 

Overview

Max Total Supply

5,000,000,000 XMLY

Holders

2,094

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
1,000 XMLY

Value
$0.00
0x0A1d60B5cA8755D674D09Bf1dFfdc9CA9771Ec70
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
XMLY

Compiler Version
v0.4.18+commit.9cf6e910

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-08-22
*/

pragma solidity ^0.4.18;

// ----------------------------------------------------------------------------
//喜马拉雅交易所 contract
//
//喜马拉雅荣耀
// Symbol      : XMH
// Name        : XiMaLaYa Honor
// Total supply: 1000
// Decimals    : 0
// 
//喜马拉雅币
// Symbol      : XMLY
// Name        : XiMaLaYa Token
// Total supply: 100000000000
// Decimals    : 18
// ----------------------------------------------------------------------------


// ----------------------------------------------------------------------------
// Safe maths
// ----------------------------------------------------------------------------
contract SafeMath {
    function safeAdd(uint a, uint b) public pure returns (uint c) {
        c = a + b;
        require(c >= a);
    }
    function safeSub(uint a, uint b) public pure returns (uint c) {
        require(b <= a);
        c = a - b;
    }
    function safeMul(uint a, uint b) public pure returns (uint c) {
        c = a * b;
        require(a == 0 || c / a == b);
    }
    function safeDiv(uint a, uint b) public pure returns (uint c) {
        require(b > 0);
        c = a / b;
    }
}


// ----------------------------------------------------------------------------
// ERC Token Standard #20 Interface
// ----------------------------------------------------------------------------
contract ERC20Interface {
    function totalSupply() public constant returns (uint);
    function balanceOf(address tokenOwner) public constant returns (uint balance);
    function allowance(address tokenOwner, address spender) public constant returns (uint remaining);
    function transfer(address to, uint tokens) public returns (bool success);
    function approve(address spender, uint tokens) public returns (bool success);
    function transferFrom(address from, address to, uint tokens) public returns (bool success);

    event Transfer(address indexed from, address indexed to, uint tokens);
    event Approval(address indexed tokenOwner, address indexed spender, uint tokens);
}


// ----------------------------------------------------------------------------
// Contract function to receive approval and execute function in one call
//
// Borrowed from MiniMeToken
// ----------------------------------------------------------------------------
contract ApproveAndCallFallBack {
    function receiveApproval(address from, uint256 tokens, address token, bytes data) public;
}


// ----------------------------------------------------------------------------
// Admin contract
// ----------------------------------------------------------------------------
contract Administration {
    event AdminTransferred(address indexed _from, address indexed _to);
    event Pause();
    event Unpause();

    address public CEOAddress = 0x5B807E379170d42f3B099C01A5399a2e1e58963B;
    address public CFOAddress = 0x92cFfCD79E6Ab6B16C7AFb96fbC0a2373bE516A4;

    bool public paused = false;

    modifier onlyCEO() {
        require(msg.sender == CEOAddress);
        _;
    }

    modifier onlyAdmin() {
        require(msg.sender == CEOAddress || msg.sender == CFOAddress);
        _;
    }

    function setCFO(address _newAdmin) public onlyCEO {
        require(_newAdmin != address(0));
        AdminTransferred(CFOAddress, _newAdmin);
        CFOAddress = _newAdmin;
        
    }

    function withdrawBalance() external onlyAdmin {
        CEOAddress.transfer(this.balance);
    }

    modifier whenNotPaused() {
        require(!paused);
        _;
    }

    modifier whenPaused() {
        require(paused);
        _;
    }

    function pause() public onlyAdmin whenNotPaused returns(bool) {
        paused = true;
        Pause();
        return true;
    }

    function unpause() public onlyAdmin whenPaused returns(bool) {
        paused = false;
        Unpause();
        return true;
    }

    uint oneEth = 1 ether;
}

contract XMLYBadge is ERC20Interface, Administration, SafeMath {
    event BadgeTransfer(address indexed from, address indexed to, uint tokens);
    
    string public badgeSymbol;
    string public badgeName;
    uint8 public badgeDecimals;
    uint public _badgeTotalSupply;

    mapping(address => uint) badgeBalances;
    mapping(address => bool) badgeFreezed;
    mapping(address => uint) badgeFreezeAmount;
    mapping(address => uint) badgeUnlockTime;


    // ------------------------------------------------------------------------
    // Constructor
    // ------------------------------------------------------------------------
    function XMLYBadge() public {
        badgeSymbol = "XMH";
        badgeName = "XMLY Honor";
        badgeDecimals = 0;
        _badgeTotalSupply = 1000;
        badgeBalances[CFOAddress] = _badgeTotalSupply;
        BadgeTransfer(address(0), CFOAddress, _badgeTotalSupply);
    }


    // ------------------------------------------------------------------------
    // Total supply
    // ------------------------------------------------------------------------
    function badgeTotalSupply() public constant returns (uint) {
        return _badgeTotalSupply  - badgeBalances[address(0)];
    }


    // ------------------------------------------------------------------------
    // Get the token balance for account tokenOwner
    // ------------------------------------------------------------------------
    function badgeBalanceOf(address tokenOwner) public constant returns (uint balance) {
        return badgeBalances[tokenOwner];
    }


    // ------------------------------------------------------------------------
    // Transfer the balance from token owner's account to to account
    // - Owner's account must have sufficient balance to transfer
    // - 0 value transfers are allowed
    // ------------------------------------------------------------------------
    function badgeTransfer(address to, uint tokens) public whenNotPaused returns (bool success) {
        if(badgeFreezed[msg.sender] == false){
            badgeBalances[msg.sender] = safeSub(badgeBalances[msg.sender], tokens);
            badgeBalances[to] = safeAdd(badgeBalances[to], tokens);
            BadgeTransfer(msg.sender, to, tokens);
        } else {
            if(badgeBalances[msg.sender] > badgeFreezeAmount[msg.sender]) {
                require(tokens <= safeSub(badgeBalances[msg.sender], badgeFreezeAmount[msg.sender]));
                badgeBalances[msg.sender] = safeSub(badgeBalances[msg.sender], tokens);
                badgeBalances[to] = safeAdd(badgeBalances[to], tokens);
                BadgeTransfer(msg.sender, to, tokens);
            }
        }
            
        return true;
    }

    // ------------------------------------------------------------------------
    // Mint Tokens
    // ------------------------------------------------------------------------
    function mintBadge(uint amount) public onlyAdmin {
        badgeBalances[msg.sender] = safeAdd(badgeBalances[msg.sender], amount);
        _badgeTotalSupply = safeAdd(_badgeTotalSupply, amount);
    }

    // ------------------------------------------------------------------------
    // Burn Tokens
    // ------------------------------------------------------------------------
    function burnBadge(uint amount) public onlyAdmin {
        badgeBalances[msg.sender] = safeSub(badgeBalances[msg.sender], amount);
        _badgeTotalSupply = safeSub(_badgeTotalSupply, amount);
    }
    
    // ------------------------------------------------------------------------
    // Freeze Tokens
    // ------------------------------------------------------------------------
    function badgeFreeze(address user, uint amount, uint period) public onlyAdmin {
        require(badgeBalances[user] >= amount);
        badgeFreezed[user] = true;
        badgeUnlockTime[user] = uint(now) + period;
        badgeFreezeAmount[user] = amount;
    }
    
    function _badgeFreeze(uint amount) internal {
        require(badgeFreezed[msg.sender] == false);
        require(badgeBalances[msg.sender] >= amount);
        badgeFreezed[msg.sender] = true;
        badgeUnlockTime[msg.sender] = uint(-1);
        badgeFreezeAmount[msg.sender] = amount;
    }

    // ------------------------------------------------------------------------
    // UnFreeze Tokens
    // ------------------------------------------------------------------------
    function badgeUnFreeze() public whenNotPaused {
        require(badgeFreezed[msg.sender] == true);
        require(badgeUnlockTime[msg.sender] < uint(now));
        badgeFreezed[msg.sender] = false;
        badgeFreezeAmount[msg.sender] = 0;
    }
    
    function _badgeUnFreeze(uint _amount) internal {
        require(badgeFreezed[msg.sender] == true);
        badgeUnlockTime[msg.sender] = 0;
        badgeFreezed[msg.sender] = false;
        badgeFreezeAmount[msg.sender] = safeSub(badgeFreezeAmount[msg.sender], _amount);
    }
    
    function badgeIfFreeze(address user) public view returns (
        bool check, 
        uint amount, 
        uint timeLeft
    ) {
        check = badgeFreezed[user];
        amount = badgeFreezeAmount[user];
        timeLeft = badgeUnlockTime[user] - uint(now);
    }

}

contract XMLYToken is XMLYBadge {
    event PartnerCreated(uint indexed partnerId, address indexed partner, uint indexed amount, uint singleTrans, uint durance);
    event RewardDistribute(uint indexed postId, uint partnerId, address indexed user, uint indexed amount);
    
    event VipAgreementSign(uint indexed vipId, address indexed vip, uint durance, uint frequence, uint salar);
    event SalaryReceived(uint indexed vipId, address indexed vip, uint salary, uint indexed timestamp);
    
    string public symbol;
    string public  name;
    uint8 public decimals;
    uint public _totalSupply;
    uint public minePool;

    struct Partner {
        address admin;
        uint tokenPool;
        uint singleTrans;
        uint timestamp;
        uint durance;
    }
    
    struct Poster {
        address poster;
        bytes32 hashData;
        uint reward;
    }
    
    struct Vip {
        address vip;
        uint durance;
        uint frequence;
        uint salary;
        uint timestamp;
    }
    
    Partner[] partners;
    Vip[] vips;

    modifier onlyPartner(uint _partnerId) {
        require(partners[_partnerId].admin == msg.sender);
        require(partners[_partnerId].tokenPool > uint(0));
        uint deadline = safeAdd(partners[_partnerId].timestamp, partners[_partnerId].durance);
        require(deadline > now);
        _;
    }
    
    modifier onlyVip(uint _vipId) {
        require(vips[_vipId].vip == msg.sender);
        require(vips[_vipId].durance > now);
        require(vips[_vipId].timestamp < now);
        _;
    }

    mapping(address => uint) balances;
    mapping(address => mapping(address => uint)) allowed;
    mapping(address => bool) freezed;
    mapping(address => uint) freezeAmount;
    mapping(address => uint) unlockTime;
    
    mapping(uint => Poster[]) PartnerIdToPosterList;


    // ------------------------------------------------------------------------
    // Constructor
    // ------------------------------------------------------------------------
    function XMLYToken() public {
        symbol = "XMLY";
        name = "XMLY Token";
        decimals = 18;
        _totalSupply = 5000000000000000000000000000;
        minePool = 95000000000000000000000000000;
        balances[CFOAddress] = _totalSupply;
        Transfer(address(0), CFOAddress, _totalSupply);
    }
    
    // ------------------------------------------------------------------------
    // Total supply
    // ------------------------------------------------------------------------
    function totalSupply() public constant returns (uint) {
        return _totalSupply  - balances[address(0)];
    }


    // ------------------------------------------------------------------------
    // Get the token balance for account tokenOwner
    // ------------------------------------------------------------------------
    function balanceOf(address tokenOwner) public constant returns (uint balance) {
        return balances[tokenOwner];
    }


    // ------------------------------------------------------------------------
    // Transfer the balance from token owner's account to to account
    // - Owner's account must have sufficient balance to transfer
    // - 0 value transfers are allowed
    // ------------------------------------------------------------------------
    function transfer(address to, uint tokens) public returns (bool success) {
        if(freezed[msg.sender] == false){
            balances[msg.sender] = safeSub(balances[msg.sender], tokens);
            balances[to] = safeAdd(balances[to], tokens);
            Transfer(msg.sender, to, tokens);
        } else {
            if(balances[msg.sender] > freezeAmount[msg.sender]) {
                require(tokens <= safeSub(balances[msg.sender], freezeAmount[msg.sender]));
                balances[msg.sender] = safeSub(balances[msg.sender], tokens);
                balances[to] = safeAdd(balances[to], tokens);
                Transfer(msg.sender, to, tokens);
            }
        }
            
        return true;
    }


    // ------------------------------------------------------------------------
    // Token owner can approve for spender to transferFrom(...) tokens
    // from the token owner's account
    //
    // https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20-token-standard.md
    // recommends that there are no checks for the approval double-spend attack
    // as this should be implemented in user interfaces 
    // ------------------------------------------------------------------------
    function approve(address spender, uint tokens) public returns (bool success) {
        require(freezed[msg.sender] != true);
        allowed[msg.sender][spender] = tokens;
        Approval(msg.sender, spender, tokens);
        return true;
    }


    // ------------------------------------------------------------------------
    // Transfer tokens from the from account to the to account
    // 
    // The calling account must already have sufficient tokens approve(...)-d
    // for spending from the from account and
    // - From account must have sufficient balance to transfer
    // - Spender must have sufficient allowance to transfer
    // - 0 value transfers are allowed
    // ------------------------------------------------------------------------
    function transferFrom(address from, address to, uint tokens) public returns (bool success) {
        balances[from] = safeSub(balances[from], tokens);
        allowed[from][msg.sender] = safeSub(allowed[from][msg.sender], tokens);
        balances[to] = safeAdd(balances[to], tokens);
        Transfer(from, to, tokens);
        return true;
    }


    // ------------------------------------------------------------------------
    // Returns the amount of tokens approved by the owner that can be
    // transferred to the spender's account
    // ------------------------------------------------------------------------
    function allowance(address tokenOwner, address spender) public constant returns (uint remaining) {
        require(freezed[msg.sender] != true);
        return allowed[tokenOwner][spender];
    }


    // ------------------------------------------------------------------------
    // Token owner can approve for spender to transferFrom(...) tokens
    // from the token owner's account. The spender contract function
    // receiveApproval(...) is then executed
    // ------------------------------------------------------------------------
    function approveAndCall(address spender, uint tokens, bytes data) public returns (bool success) {
        require(freezed[msg.sender] != true);
        allowed[msg.sender][spender] = tokens;
        Approval(msg.sender, spender, tokens);
        ApproveAndCallFallBack(spender).receiveApproval(msg.sender, tokens, this, data);
        return true;
    }

    // ------------------------------------------------------------------------
    // Mint Tokens
    // ------------------------------------------------------------------------
    function _mint(uint amount, address receiver) internal {
        require(minePool >= amount);
        minePool = safeSub(minePool, amount);
        _totalSupply = safeAdd(_totalSupply, amount);
        balances[receiver] = safeAdd(balances[receiver], amount);
        Transfer(address(0), receiver, amount);
    }
    
    function mint(uint amount) public onlyAdmin {
        require(minePool >= amount);
        minePool = safeSub(minePool, amount);
        balances[msg.sender] = safeAdd(balances[msg.sender], amount);
        _totalSupply = safeAdd(_totalSupply, amount);
    }
    
    function burn(uint amount) public onlyAdmin {
        require(_totalSupply >= amount);
        balances[msg.sender] = safeSub(balances[msg.sender], amount);
        _totalSupply = safeSub(_totalSupply, amount);
    }
    
    // ------------------------------------------------------------------------
    // Freeze Tokens
    // ------------------------------------------------------------------------
    function freeze(address user, uint amount, uint period) public onlyAdmin {
        require(balances[user] >= amount);
        freezed[user] = true;
        unlockTime[user] = uint(now) + period;
        freezeAmount[user] = amount;
    }

    // ------------------------------------------------------------------------
    // UnFreeze Tokens
    // ------------------------------------------------------------------------
    function unFreeze() public whenNotPaused {
        require(freezed[msg.sender] == true);
        require(unlockTime[msg.sender] < uint(now));
        freezed[msg.sender] = false;
        freezeAmount[msg.sender] = 0;
    }
    
    function ifFreeze(address user) public view returns (
        bool check, 
        uint amount, 
        uint timeLeft
    ) {
        check = freezed[user];
        amount = freezeAmount[user];
        timeLeft = unlockTime[user] - uint(now);
    }
    
    // ------------------------------------------------------------------------
    // Partner Authorization
    // ------------------------------------------------------------------------
    function createPartner(address _partner, uint _amount, uint _singleTrans, uint _durance) public onlyAdmin returns (uint) {
        Partner memory _Partner = Partner({
            admin: _partner,
            tokenPool: _amount,
            singleTrans: _singleTrans,
            timestamp: uint(now),
            durance: _durance
        });
        uint newPartnerId = partners.push(_Partner) - 1;
        PartnerCreated(newPartnerId, _partner, _amount, _singleTrans, _durance);
        
        return newPartnerId;
    }
    
    function partnerTransfer(uint _partnerId, bytes32 _data, address _to, uint _amount) public onlyPartner(_partnerId) whenNotPaused returns (bool) {
        require(_amount <= partners[_partnerId].singleTrans);
        partners[_partnerId].tokenPool = safeSub(partners[_partnerId].tokenPool, _amount);
        Poster memory _Poster = Poster ({
           poster: _to,
           hashData: _data,
           reward: _amount
        });
        uint newPostId = PartnerIdToPosterList[_partnerId].push(_Poster) - 1;
        _mint(_amount, _to);
        RewardDistribute(newPostId, _partnerId, _to, _amount);
        return true;
    }
    
    function setPartnerPool(uint _partnerId, uint _amount) public onlyAdmin {
        partners[_partnerId].tokenPool = _amount;
    }
    
    function setPartnerDurance(uint _partnerId, uint _durance) public onlyAdmin {
        partners[_partnerId].durance = uint(now) + _durance;
    }
    
    function getPartnerInfo(uint _partnerId) public view returns (
        address admin,
        uint tokenPool,
        uint timeLeft
    ) {
        Partner memory _Partner = partners[_partnerId];
        admin = _Partner.admin;
        tokenPool = _Partner.tokenPool;
        if (_Partner.timestamp + _Partner.durance > uint(now)) {
            timeLeft = _Partner.timestamp + _Partner.durance - uint(now);
        } else {
            timeLeft = 0;
        }
        
    }

    function getPosterInfo(uint _partnerId, uint _posterId) public view returns (
        address poster,
        bytes32 hashData,
        uint reward
    ) {
        Poster memory _Poster = PartnerIdToPosterList[_partnerId][_posterId];
        poster = _Poster.poster;
        hashData = _Poster.hashData;
        reward = _Poster.reward;
    }

    // ------------------------------------------------------------------------
    // Vip Agreement
    // ------------------------------------------------------------------------
    function createVip(address _vip, uint _durance, uint _frequence, uint _salary) public onlyAdmin returns (uint) {
        Vip memory _Vip = Vip ({
           vip: _vip,
           durance: uint(now) + _durance,
           frequence: _frequence,
           salary: _salary,
           timestamp: now + _frequence
        });
        uint newVipId = vips.push(_Vip) - 1;
        VipAgreementSign(newVipId, _vip, _durance, _frequence, _salary);
        
        return newVipId;
    }
    
    function mineSalary(uint _vipId) public onlyVip(_vipId) whenNotPaused returns (bool) {
        Vip storage _Vip = vips[_vipId];
        _mint(_Vip.salary, _Vip.vip);
        _Vip.timestamp = safeAdd(_Vip.timestamp, _Vip.frequence);
        
        SalaryReceived(_vipId, _Vip.vip, _Vip.salary, _Vip.timestamp);
        return true;
    }
    
    function deleteVip(uint _vipId) public onlyAdmin {
        delete vips[_vipId];
    }
    
    function getVipInfo(uint _vipId) public view returns (
        address vip,
        uint durance,
        uint frequence,
        uint salary,
        uint nextSalary,
        string log
    ) {
        Vip memory _Vip = vips[_vipId];
        vip = _Vip.vip;
        durance = _Vip.durance;
        frequence = _Vip.frequence;
        salary = _Vip.salary;
        if(_Vip.timestamp >= uint(now)) {
            nextSalary = safeSub(_Vip.timestamp, uint(now));
            log = "Please Wait";
        } else {
            nextSalary = 0;
            log = "Pick Up Your Salary Now";
        }
    }

    // ------------------------------------------------------------------------
    // Accept ETH
    // ------------------------------------------------------------------------
    function () public payable {
    }

    // ------------------------------------------------------------------------
    // Owner can transfer out any accidentally sent ERC20 tokens
    // ------------------------------------------------------------------------
    function transferAnyERC20Token(address tokenAddress, uint tokens) public onlyAdmin returns (bool success) {
        return ERC20Interface(tokenAddress).transfer(CEOAddress, tokens);
    }
}

contract XMLY is XMLYToken {
    event MembershipUpdate(address indexed member, uint indexed level);
    event MembershipCancel(address indexed member);
    event XMLYTradeCreated(uint indexed tradeId, bool indexed ifBadge, uint badge, uint token);
    event TradeCancel(uint indexed tradeId);
    event TradeComplete(uint indexed tradeId, address indexed buyer, address indexed seller, uint badge, uint token);
    event Mine(address indexed miner, uint indexed salary);
    
    mapping (address => uint) MemberToLevel;
    mapping (address => uint) MemberToBadge;
    mapping (address => uint) MemberToToken;
    mapping (address => uint) MemberToTime;
    
    uint public period = 30 days;
    
    uint[5] public boardMember =[
        0,
        1,
        10
    ];
    
    uint[5] public salary = [
        0,
        10000000000000000000000,
        100000000000000000000000
    ];
    
    struct XMLYTrade {
        address seller;
        bool ifBadge;
        uint badge;
        uint token;
    }
    
    XMLYTrade[] xmlyTrades;
    
    function boardMemberApply(uint _level) public whenNotPaused {
        require(_level > 0 && _level <= 4);
        require(badgeBalances[msg.sender] >= boardMember[_level]);
        _badgeFreeze(boardMember[_level]);
        MemberToLevel[msg.sender] = _level;
        if(MemberToTime[msg.sender] == 0) {
            MemberToTime[msg.sender] = uint(now);
        }
        
        MembershipUpdate(msg.sender, _level);
    }
    
    function getBoardMember(address _member) public view returns (
        uint level,
        uint timeLeft
    ) {
        level = MemberToLevel[_member];
        if(MemberToTime[_member] > uint(now)) {
            timeLeft = safeSub(MemberToTime[_member], uint(now));
        } else {
            timeLeft = 0;
        }
    }
    
    function boardMemberCancel() public whenNotPaused {
        require(MemberToLevel[msg.sender] > 0);
        _badgeUnFreeze(boardMember[MemberToLevel[msg.sender]]);
        
        MemberToLevel[msg.sender] = 0;
        MembershipCancel(msg.sender);
    }
    
    function createXMLYTrade(bool _ifBadge, uint _badge, uint _token) public whenNotPaused returns (uint) {
        if(_ifBadge) {
            require(badgeBalances[msg.sender] >= _badge);
            badgeBalances[msg.sender] = safeSub(badgeBalances[msg.sender], _badge);
            MemberToBadge[msg.sender] = _badge;
            XMLYTrade memory xmly = XMLYTrade({
               seller: msg.sender,
               ifBadge:_ifBadge,
               badge: _badge,
               token: _token
            });
            uint newBadgeTradeId = xmlyTrades.push(xmly) - 1;
            XMLYTradeCreated(newBadgeTradeId, _ifBadge, _badge, _token);
            
            return newBadgeTradeId;
        } else {
            require(balances[msg.sender] >= _token);
            balances[msg.sender] = safeSub(balances[msg.sender], _token);
            MemberToToken[msg.sender] = _token;
            XMLYTrade memory _xmly = XMLYTrade({
               seller: msg.sender,
               ifBadge:_ifBadge,
               badge: _badge,
               token: _token
            });
            uint newTokenTradeId = xmlyTrades.push(_xmly) - 1;
            XMLYTradeCreated(newTokenTradeId, _ifBadge, _badge, _token);
            
            return newTokenTradeId;
        }
    }
    
    function cancelTrade(uint _tradeId) public whenNotPaused {
        XMLYTrade memory xmly = xmlyTrades[_tradeId];
        require(xmly.seller == msg.sender);
        if(xmly.ifBadge){
            badgeBalances[msg.sender] = safeAdd(badgeBalances[msg.sender], xmly.badge);
            MemberToBadge[msg.sender] = 0;
        } else {
            balances[msg.sender] = safeAdd(balances[msg.sender], xmly.token);
            MemberToToken[msg.sender] = 0;
        }
        delete xmlyTrades[_tradeId];
        TradeCancel(_tradeId);
    }
    
    function trade(uint _tradeId) public whenNotPaused {
        XMLYTrade memory xmly = xmlyTrades[_tradeId];
        if(xmly.ifBadge){
            badgeBalances[msg.sender] = safeAdd(badgeBalances[msg.sender], xmly.badge);
            MemberToBadge[xmly.seller] = 0;
            transfer(xmly.seller, xmly.token);
            delete xmlyTrades[_tradeId];
            TradeComplete(_tradeId, msg.sender, xmly.seller, xmly.badge, xmly.token);
        } else {
            balances[msg.sender] = safeAdd(balances[msg.sender], xmly.token);
            MemberToToken[xmly.seller] = 0;
            badgeTransfer(xmly.seller, xmly.badge);
            delete xmlyTrades[_tradeId];
            TradeComplete(_tradeId, msg.sender, xmly.seller, xmly.badge, xmly.token);
        }
    }
    
    function mine() public whenNotPaused {
        uint level = MemberToLevel[msg.sender];
        require(MemberToTime[msg.sender] < uint(now)); 
        require(level > 0);
        _mint(salary[level], msg.sender);
        MemberToTime[msg.sender] = safeAdd(MemberToTime[msg.sender], period);
        Mine(msg.sender, salary[level]);
    }
    
    function setBoardMember(uint one, uint two) public onlyAdmin {
        boardMember[1] = one;
        boardMember[2] = two;
    }
    
    function setSalary(uint one, uint two) public onlyAdmin {
        salary[1] = one;
        salary[2] = two;
    }
    
    function setPeriod(uint time) public onlyAdmin {
        period = time;
    }
    
    function getTrade(uint _tradeId) public view returns (
        address seller,
        bool ifBadge,
        uint badge,
        uint token 
    ) {
        XMLYTrade memory _xmly = xmlyTrades[_tradeId];
        seller = _xmly.seller;
        ifBadge = _xmly.ifBadge;
        badge = _xmly.badge;
        token = _xmly.token;
    }
    
    function WhoIsTheContractMaster() public pure returns (string) {
        return "Alexander The Exlosion";
    }
}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[{"name":"_level","type":"uint256"}],"name":"boardMemberApply","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"tokens","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tradeId","type":"uint256"}],"name":"cancelTrade","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"time","type":"uint256"}],"name":"setPeriod","outputs":[],"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":"_partner","type":"address"},{"name":"_amount","type":"uint256"},{"name":"_singleTrans","type":"uint256"},{"name":"_durance","type":"uint256"}],"name":"createPartner","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"tokens","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"user","type":"address"},{"name":"amount","type":"uint256"},{"name":"period","type":"uint256"}],"name":"badgeFreeze","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"CFOAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"tokens","type":"uint256"}],"name":"badgeTransfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_tradeId","type":"uint256"}],"name":"getTrade","outputs":[{"name":"seller","type":"address"},{"name":"ifBadge","type":"bool"},{"name":"badge","type":"uint256"},{"name":"token","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"user","type":"address"},{"name":"amount","type":"uint256"},{"name":"period","type":"uint256"}],"name":"freeze","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_badgeTotalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_vipId","type":"uint256"}],"name":"getVipInfo","outputs":[{"name":"vip","type":"address"},{"name":"durance","type":"uint256"},{"name":"frequence","type":"uint256"},{"name":"salary","type":"uint256"},{"name":"nextSalary","type":"uint256"},{"name":"log","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newAdmin","type":"address"}],"name":"setCFO","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_partnerId","type":"uint256"},{"name":"_durance","type":"uint256"}],"name":"setPartnerDurance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_partnerId","type":"uint256"}],"name":"getPartnerInfo","outputs":[{"name":"admin","type":"address"},{"name":"tokenPool","type":"uint256"},{"name":"timeLeft","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"burnBadge","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_ifBadge","type":"bool"},{"name":"_badge","type":"uint256"},{"name":"_token","type":"uint256"}],"name":"createXMLYTrade","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"CEOAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdrawBalance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"minePool","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"badgeName","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_member","type":"address"}],"name":"getBoardMember","outputs":[{"name":"level","type":"uint256"},{"name":"timeLeft","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"user","type":"address"}],"name":"ifFreeze","outputs":[{"name":"check","type":"bool"},{"name":"amount","type":"uint256"},{"name":"timeLeft","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_partnerId","type":"uint256"},{"name":"_amount","type":"uint256"}],"name":"setPartnerPool","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"tokenOwner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"one","type":"uint256"},{"name":"two","type":"uint256"}],"name":"setSalary","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"WhoIsTheContractMaster","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[],"name":"boardMemberCancel","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unFreeze","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"one","type":"uint256"},{"name":"two","type":"uint256"}],"name":"setBoardMember","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"user","type":"address"}],"name":"badgeIfFreeze","outputs":[{"name":"check","type":"bool"},{"name":"amount","type":"uint256"},{"name":"timeLeft","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_vipId","type":"uint256"}],"name":"mineSalary","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"badgeDecimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"boardMember","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_vipId","type":"uint256"}],"name":"deleteVip","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"mine","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"mint","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"a","type":"uint256"},{"name":"b","type":"uint256"}],"name":"safeSub","outputs":[{"name":"c","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"name":"_partnerId","type":"uint256"},{"name":"_posterId","type":"uint256"}],"name":"getPosterInfo","outputs":[{"name":"poster","type":"address"},{"name":"hashData","type":"bytes32"},{"name":"reward","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"tokens","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"salary","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"badgeSymbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"a","type":"uint256"},{"name":"b","type":"uint256"}],"name":"safeDiv","outputs":[{"name":"c","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"mintBadge","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"tokenOwner","type":"address"}],"name":"badgeBalanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"tokens","type":"uint256"},{"name":"data","type":"bytes"}],"name":"approveAndCall","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_vip","type":"address"},{"name":"_durance","type":"uint256"},{"name":"_frequence","type":"uint256"},{"name":"_salary","type":"uint256"}],"name":"createVip","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"a","type":"uint256"},{"name":"b","type":"uint256"}],"name":"safeMul","outputs":[{"name":"c","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"tokenAddress","type":"address"},{"name":"tokens","type":"uint256"}],"name":"transferAnyERC20Token","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"tokenOwner","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tradeId","type":"uint256"}],"name":"trade","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"a","type":"uint256"},{"name":"b","type":"uint256"}],"name":"safeAdd","outputs":[{"name":"c","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"period","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"badgeUnFreeze","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_partnerId","type":"uint256"},{"name":"_data","type":"bytes32"},{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"partnerTransfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"badgeTotalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"member","type":"address"},{"indexed":true,"name":"level","type":"uint256"}],"name":"MembershipUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"member","type":"address"}],"name":"MembershipCancel","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"tradeId","type":"uint256"},{"indexed":true,"name":"ifBadge","type":"bool"},{"indexed":false,"name":"badge","type":"uint256"},{"indexed":false,"name":"token","type":"uint256"}],"name":"XMLYTradeCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"tradeId","type":"uint256"}],"name":"TradeCancel","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"tradeId","type":"uint256"},{"indexed":true,"name":"buyer","type":"address"},{"indexed":true,"name":"seller","type":"address"},{"indexed":false,"name":"badge","type":"uint256"},{"indexed":false,"name":"token","type":"uint256"}],"name":"TradeComplete","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"miner","type":"address"},{"indexed":true,"name":"salary","type":"uint256"}],"name":"Mine","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"partnerId","type":"uint256"},{"indexed":true,"name":"partner","type":"address"},{"indexed":true,"name":"amount","type":"uint256"},{"indexed":false,"name":"singleTrans","type":"uint256"},{"indexed":false,"name":"durance","type":"uint256"}],"name":"PartnerCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"postId","type":"uint256"},{"indexed":false,"name":"partnerId","type":"uint256"},{"indexed":true,"name":"user","type":"address"},{"indexed":true,"name":"amount","type":"uint256"}],"name":"RewardDistribute","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"vipId","type":"uint256"},{"indexed":true,"name":"vip","type":"address"},{"indexed":false,"name":"durance","type":"uint256"},{"indexed":false,"name":"frequence","type":"uint256"},{"indexed":false,"name":"salar","type":"uint256"}],"name":"VipAgreementSign","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"vipId","type":"uint256"},{"indexed":true,"name":"vip","type":"address"},{"indexed":false,"name":"salary","type":"uint256"},{"indexed":true,"name":"timestamp","type":"uint256"}],"name":"SalaryReceived","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"BadgeTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"}],"name":"AdminTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"tokenOwner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"Approval","type":"event"}]

6060604081815260008054600160a060020a0319908116735b807e379170d42f3b099c01a5399a2e1e58963b179091556001805460a060020a60ff021992167392cffcd79e6ab6b16c7afb96fbc0a2373be516a417919091169055670de0b6b3a764000060025562278d00601c555190810160409081526000825260016020830152600a908201526200009790601d906003620002fe565b50606060405190810160409081526000825269021e19e0c9bab2400000602083015269152d02c7e14af680000090820152620000d890602290600362000346565b506040805190810160405260038082527f584d48000000000000000000000000000000000000000000000000000000000060208301529080516200012192916020019062000382565b5060408051908101604052600a81527f584d4c5920486f6e6f7200000000000000000000000000000000000000000000602082015260049080516200016b92916020019062000382565b506005805460ff191690556103e8600681905560018054600160a060020a0390811660009081526007602052604080822085905592549091169290917f82de2639fdc3c65a9413c0716d4cbd73c6182095571c159d8cabaee5b16a363191905190815260200160405180910390a360408051908101604052600481527f584d4c59000000000000000000000000000000000000000000000000000000006020820152600b9080516200022292916020019062000382565b5060408051908101604052600a81527f584d4c5920546f6b656e000000000000000000000000000000000000000000006020820152600c9080516200026c92916020019062000382565b50600d805460ff191660129081179091556b1027e72f1f12813088000000600e8190556c0132f6287f4e5f969a18000000600f5560018054600160a060020a039081166000908152602094909452604080852084905591541692917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef915190815260200160405180910390a362000415565b826005810192821562000334579160200282015b8281111562000334578251829060ff1690559160200191906001019062000312565b5062000342929150620003f5565b5090565b826005810192821562000334579160200282015b828111156200033457825182906001605060020a03169055916020019190600101906200035a565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620003c557805160ff191683800117855562000334565b8280016001018555821562000334579182015b8281111562000334578251825591602001919060010190620003d8565b6200041291905b80821115620003425760008155600101620003fc565b90565b61382b80620004256000396000f3006060604052600436106102f25763ffffffff60e060020a6000350416630486529b81146102f457806306fdde031461030a578063095ea7b31461039457806309ec6cc7146103ca5780630f3a9f65146103e057806318160ddd146103f657806320db91e21461041b57806323b872dd1461044357806327acfff91461046b578063298ad569146104905780632bac276b146104bf5780632db25e05146104e157806330e1e4e51461052d578063313ce567146105525780633a573e021461057b5780633eaaf86b1461058e5780633f4ba83a146105a157806342966c68146105b45780634d65beb1146105ca5780634e0a33791461068d5780634ea611cd146106ac5780635538c964146106c557806355de28ae146107115780635ad5ca74146107275780635c975abb146107455780635fcee7a0146107585780635fd8c7101461076b578063602e66231461077e578063610c300914610791578063637fcf95146107a457806363c454ca146107db5780636509c1951461082057806370a082311461083957806374a37efc1461085857806376637dcd146108715780637c85ab3a146108845780637cf12b9014610897578063808134c8146108aa57806382f4b3a8146108c35780638456cb59146108e2578063876f9795146108f557806387b8963c1461090b5780638a5839111461091e5780638d72f8561461093457806395d89b411461094a57806399f4b2511461095d578063a0712d6814610970578063a293d1e814610986578063a61d68291461099f578063a9059cbb146109e6578063a9b6c43514610a08578063ae479a6314610a1e578063b5931f7c14610a31578063c3c63edc14610a4a578063c681d68d14610a60578063cae9ca5114610a7f578063cdfe281514610ae4578063d05c78da14610b0c578063dc39d06d14610b25578063dd62ed3e14610b47578063df1dd82614610b6c578063e6cb901314610b82578063ef78d4fd14610b9b578063f52ad69014610bae578063fc04c0c414610bc1578063fc24e58914610be9575b005b34156102ff57600080fd5b6102f2600435610bfc565b341561031557600080fd5b61031d610cfb565b60405160208082528190810183818151815260200191508051906020019080838360005b83811015610359578082015183820152602001610341565b50505050905090810190601f1680156103865780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561039f57600080fd5b6103b6600160a060020a0360043516602435610d99565b604051901515815260200160405180910390f35b34156103d557600080fd5b6102f2600435610e2e565b34156103eb57600080fd5b6102f2600435610fe8565b341561040157600080fd5b610409611023565b60405190815260200160405180910390f35b341561042657600080fd5b610409600160a060020a0360043516602435604435606435611056565b341561044e57600080fd5b6103b6600160a060020a036004358116906024351660443561118a565b341561047657600080fd5b6102f2600160a060020a0360043516602435604435611279565b341561049b57600080fd5b6104a3611315565b604051600160a060020a03909116815260200160405180910390f35b34156104ca57600080fd5b6103b6600160a060020a0360043516602435611324565b34156104ec57600080fd5b6104f7600435611529565b604051600160a060020a039094168452911515602084015260408084019190915260608301919091526080909101905180910390f35b341561053857600080fd5b6102f2600160a060020a03600435166024356044356115b6565b341561055d57600080fd5b610565611652565b60405160ff909116815260200160405180910390f35b341561058657600080fd5b61040961165b565b341561059957600080fd5b610409611661565b34156105ac57600080fd5b6103b6611667565b34156105bf57600080fd5b6102f2600435611706565b34156105d557600080fd5b6105e060043561179b565b6040518087600160a060020a0316600160a060020a0316815260200186815260200185815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561064d578082015183820152602001610635565b50505050905090810190601f16801561067a5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390f35b341561069857600080fd5b6102f2600160a060020a03600435166118c7565b34156106b757600080fd5b6102f2600435602435611955565b34156106d057600080fd5b6106db6004356119b6565b6040518084600160a060020a0316600160a060020a03168152602001838152602001828152602001935050505060405180910390f35b341561071c57600080fd5b6102f2600435611a61565b341561073257600080fd5b6104096004351515602435604435611ae6565b341561075057600080fd5b6103b6611dff565b341561076357600080fd5b6104a3611e0f565b341561077657600080fd5b6102f2611e1e565b341561078957600080fd5b610409611e8f565b341561079c57600080fd5b61031d611e95565b34156107af57600080fd5b6107c3600160a060020a0360043516611f00565b60405191825260208201526040908101905180910390f35b34156107e657600080fd5b6107fa600160a060020a0360043516611f62565b604051921515835260208301919091526040808301919091526060909101905180910390f35b341561082b57600080fd5b6102f2600435602435611f9b565b341561084457600080fd5b610409600160a060020a0360043516611ffa565b341561086357600080fd5b6102f2600435602435612015565b341561087c57600080fd5b61031d61205c565b341561088f57600080fd5b6102f261209d565b34156108a257600080fd5b6102f2612152565b34156108b557600080fd5b6102f26004356024356121e5565b34156108ce57600080fd5b6107fa600160a060020a036004351661222a565b34156108ed57600080fd5b6103b6612263565b341561090057600080fd5b6103b6600435612307565b341561091657600080fd5b610565612460565b341561092957600080fd5b610409600435612469565b341561093f57600080fd5b6102f260043561247d565b341561095557600080fd5b61031d6124fa565b341561096857600080fd5b6102f2612565565b341561097b57600080fd5b6102f260043561265d565b341561099157600080fd5b6104096004356024356126fb565b34156109aa57600080fd5b6109b8600435602435612710565b604051600160a060020a03909316835260208301919091526040808301919091526060909101905180910390f35b34156109f157600080fd5b6103b6600160a060020a0360043516602435612792565b3415610a1357600080fd5b610409600435612958565b3415610a2957600080fd5b61031d612965565b3415610a3c57600080fd5b6104096004356024356129d0565b3415610a5557600080fd5b6102f26004356129f1565b3415610a6b57600080fd5b610409600160a060020a0360043516612a70565b3415610a8a57600080fd5b6103b660048035600160a060020a03169060248035919060649060443590810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650612a8b95505050505050565b3415610aef57600080fd5b610409600160a060020a0360043516602435604435606435612c1a565b3415610b1757600080fd5b610409600435602435612d5e565b3415610b3057600080fd5b6103b6600160a060020a0360043516602435612d83565b3415610b5257600080fd5b610409600160a060020a0360043581169060243516612e41565b3415610b7757600080fd5b6102f2600435612e98565b3415610b8d57600080fd5b610409600435602435613146565b3415610ba657600080fd5b610409613156565b3415610bb957600080fd5b6102f261315c565b3415610bcc57600080fd5b6103b6600435602435600160a060020a03604435166064356131ef565b3415610bf457600080fd5b610409613439565b60015460a060020a900460ff1615610c1357600080fd5b600081118015610c24575060048111155b1515610c2f57600080fd5b601d8160058110610c3c57fe5b0154600160a060020a0333166000908152600760205260409020541015610c6257600080fd5b610c79601d8260058110610c7257fe5b015461346b565b600160a060020a0333166000908152601860209081526040808320849055601b9091529020541515610cc157600160a060020a0333166000908152601b602052604090204290555b8033600160a060020a03167f0cc0076665281ff8398c9431c41b09049a4aa58f50f11b4130ef230ed60adc8760405160405180910390a350565b600c8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d915780601f10610d6657610100808354040283529160200191610d91565b820191906000526020600020905b815481529060010190602001808311610d7457829003601f168201915b505050505081565b600160a060020a03331660009081526014602052604081205460ff16151560011415610dc457600080fd5b600160a060020a03338116600081815260136020908152604080832094881680845294909152908190208590557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b92915050565b610e3661360e565b60015460a060020a900460ff1615610e4d57600080fd5b6027805483908110610e5b57fe5b9060005260206000209060030201608060405190810160409081528254600160a060020a03808216845260a060020a90910460ff16151560208401526001840154918301919091526002909201546060820152915033168151600160a060020a031614610ec757600080fd5b806020015115610f2457600160a060020a0333166000908152600760205260409081902054610ef891830151613146565b600160a060020a0333166000908152600760209081526040808320939093556019905290812055610f73565b600160a060020a033316600090815260126020526040902054610f4b906060830151613146565b600160a060020a033316600090815260126020908152604080832093909355601a9052908120555b6027805483908110610f8157fe5b600091825260208220600390910201805474ffffffffffffffffffffffffffffffffffffffffff191681556001810182905560020155817f223868bda9e47fa465ee1e1401b3bd23888b9b951308671e785b0e890b728a9660405160405180910390a25050565b60005433600160a060020a0390811691161480611013575060015433600160a060020a039081169116145b151561101e57600080fd5b601c55565b6000805260126020527f7e7fa33969761a458e04f477e039a608702b4f924981d6653935a8319a08ad7b54600e54035b90565b6000611060613635565b6000805433600160a060020a039081169116148061108c575060015433600160a060020a039081169116145b151561109757600080fd5b60a06040519081016040528088600160a060020a031681526020018781526020018681526020014281526020018581525091506001601080548060010182816110e0919061366e565b6000928352602090922085916005020181518154600160a060020a031916600160a060020a03919091161781556020820151816001015560408201518160020155606082015181600301556080820151816004015550500390508587600160a060020a0316827ff2b85b43211ffec4da9402231db708764bd4c87ed2853c3b3e9308ec067ae02a888860405191825260208201526040908101905180910390a49695505050505050565b600160a060020a0383166000908152601260205260408120546111ad90836126fb565b600160a060020a03808616600090815260126020908152604080832094909455601381528382203390931682529190915220546111ea90836126fb565b600160a060020a038086166000908152601360209081526040808320338516845282528083209490945591861681526012909152205461122a9083613146565b600160a060020a03808516600081815260126020526040908190209390935591908616906000805160206137e08339815191529085905190815260200160405180910390a35060019392505050565b60005433600160a060020a03908116911614806112a4575060015433600160a060020a039081169116145b15156112af57600080fd5b600160a060020a038316600090815260076020526040902054829010156112d557600080fd5b600160a060020a039092166000908152600860209081526040808320805460ff19166001179055600a825280832042909501909455600990529190912055565b600154600160a060020a031681565b60015460009060a060020a900460ff161561133e57600080fd5b600160a060020a03331660009081526008602052604090205460ff16151561140f57600160a060020a03331660009081526007602052604090205461138390836126fb565b600160a060020a0333811660009081526007602052604080822093909355908516815220546113b29083613146565b600160a060020a0380851660008181526007602052604090819020939093559133909116907f82de2639fdc3c65a9413c0716d4cbd73c6182095571c159d8cabaee5b16a36319085905190815260200160405180910390a3611520565b600160a060020a033316600090815260096020908152604080832054600790925290912054111561152057600160a060020a03331660009081526007602090815260408083205460099092529091205461146991906126fb565b82111561147557600080fd5b600160a060020a03331660009081526007602052604090205461149890836126fb565b600160a060020a0333811660009081526007602052604080822093909355908516815220546114c79083613146565b600160a060020a0380851660008181526007602052604090819020939093559133909116907f82de2639fdc3c65a9413c0716d4cbd73c6182095571c159d8cabaee5b16a36319085905190815260200160405180910390a35b50600192915050565b60008060008061153761360e565b602780548790811061154557fe5b9060005260206000209060030201608060405190810160409081528254600160a060020a038116835260a060020a900460ff16151560208301526001830154908201526002909101546060820152905080519450806020015193508060400151925080606001519150509193509193565b60005433600160a060020a03908116911614806115e1575060015433600160a060020a039081169116145b15156115ec57600080fd5b600160a060020a0383166000908152601260205260409020548290101561161257600080fd5b600160a060020a039092166000908152601460209081526040808320805460ff191660011790556016825280832042909501909455601590529190912055565b600d5460ff1681565b60065481565b600e5481565b6000805433600160a060020a0390811691161480611693575060015433600160a060020a039081169116145b151561169e57600080fd5b60015460a060020a900460ff1615156116b657600080fd5b6001805474ff0000000000000000000000000000000000000000191690557f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a150600190565b60005433600160a060020a0390811691161480611731575060015433600160a060020a039081169116145b151561173c57600080fd5b600e548190101561174c57600080fd5b600160a060020a03331660009081526012602052604090205461176f90826126fb565b600160a060020a033316600090815260126020526040902055600e5461179590826126fb565b600e5550565b60008060008060006117ab61369f565b6117b3613635565b60118054899081106117c157fe5b906000526020600020906005020160a060405190810160409081528254600160a060020a031682526001830154602083015260028301549082015260038201546060820152600490910154608082015290508051965080602001519550806040015194508060600151935042816080015110611882576118458160800151426126fb565b925060408051908101604052600b81527f506c656173652057616974000000000000000000000000000000000000000000602082015291506118bd565b6000925060408051908101604052601781527f5069636b20557020596f75722053616c617279204e6f77000000000000000000602082015291505b5091939550919395565b60005433600160a060020a039081169116146118e257600080fd5b600160a060020a03811615156118f757600080fd5b600154600160a060020a0380831691167ff8ccb027dfcd135e000e9d45e6cc2d662578a8825d4c45b5e32e0adf67e79ec660405160405180910390a360018054600160a060020a031916600160a060020a0392909216919091179055565b60005433600160a060020a0390811691161480611980575060015433600160a060020a039081169116145b151561198b57600080fd5b80420160108381548110151561199d57fe5b9060005260206000209060050201600401819055505050565b60008060006119c3613635565b60108054869081106119d157fe5b906000526020600020906005020160a060405190810160409081528254600160a060020a0316825260018301546020830152600283015490820152600382015460608201526004909101546080820152905080519350806020015192504281608001518260600151011115611a5457428160800151826060015101039150611a59565b600091505b509193909250565b60005433600160a060020a0390811691161480611a8c575060015433600160a060020a039081169116145b1515611a9757600080fd5b600160a060020a033316600090815260076020526040902054611aba90826126fb565b600160a060020a033316600090815260076020526040902055600654611ae090826126fb565b60065550565b6000611af061360e565b6000611afa61360e565b60015460009060a060020a900460ff1615611b1457600080fd5b8715611c8957600160a060020a03331660009081526007602052604090205487901015611b4057600080fd5b600160a060020a033316600090815260076020526040902054611b6390886126fb565b600160a060020a03331660009081526007602090815260408083209390935560199052819020889055608090519081016040528033600160a060020a031681526020018915158152602001888152602001878152509350600160278054806001018281611bd091906136b1565b6000928352602090922087916003020181518154600160a060020a031916600160a060020a03919091161781556020820151815490151560a060020a0274ff00000000000000000000000000000000000000001990911617815560408201518160010155606082015181600201555050039250871515837f163fa711b7e61f884dd700360ed0dc2c369376de0c6a1956fce4171ca0a9cef1898960405191825260208201526040908101905180910390a3829450611df4565b600160a060020a03331660009081526012602052604090205486901015611caf57600080fd5b600160a060020a033316600090815260126020526040902054611cd290876126fb565b600160a060020a033316600090815260126020908152604080832093909355601a9052819020879055608090519081016040528033600160a060020a031681526020018915158152602001888152602001878152509150600160278054806001018281611d3f91906136b1565b6000928352602090922085916003020181518154600160a060020a031916600160a060020a03919091161781556020820151815490151560a060020a0274ff00000000000000000000000000000000000000001990911617815560408201518160010155606082015181600201555050039050871515817f163fa711b7e61f884dd700360ed0dc2c369376de0c6a1956fce4171ca0a9cef1898960405191825260208201526040908101905180910390a38094505b505050509392505050565b60015460a060020a900460ff1681565b600054600160a060020a031681565b60005433600160a060020a0390811691161480611e49575060015433600160a060020a039081169116145b1515611e5457600080fd5b600054600160a060020a039081169030163180156108fc0290604051600060405180830381858888f193505050501515611e8d57600080fd5b565b600f5481565b60048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d915780601f10610d6657610100808354040283529160200191610d91565b600160a060020a038116600090815260186020908152604080832054601b90925282205490919042901115611f5957600160a060020a0383166000908152601b6020526040902054611f5290426126fb565b9050611f5d565b5060005b915091565b600160a060020a03166000908152601460209081526040808320546015835281842054601690935292205460ff90921692909142900390565b60005433600160a060020a0390811691161480611fc6575060015433600160a060020a039081169116145b1515611fd157600080fd5b80601083815481101515611fe157fe5b9060005260206000209060050201600101819055505050565b600160a060020a031660009081526012602052604090205490565b60005433600160a060020a0390811691161480612040575060015433600160a060020a039081169116145b151561204b57600080fd5b602382905580602260025b01555050565b61206461369f565b60408051908101604052601681527f416c6578616e646572205468652045786c6f73696f6e000000000000000000006020820152905090565b60015460a060020a900460ff16156120b457600080fd5b600160a060020a033316600090815260186020526040812054116120d757600080fd5b600160a060020a03331660009081526018602052604090205461210890601d906005811061210157fe5b01546134f3565b600160a060020a033316600081815260186020526040808220919091557f16bfdc1e6dc7f481f073edc603659a221eed08e79f1d7e075d30eced1d10cc11905160405180910390a2565b60015460a060020a900460ff161561216957600080fd5b600160a060020a03331660009081526014602052604090205460ff16151560011461219357600080fd5b600160a060020a0333166000908152601660205260409020544290106121b857600080fd5b600160a060020a0333166000908152601460209081526040808320805460ff191690556015909152812055565b60005433600160a060020a0390811691161480612210575060015433600160a060020a039081169116145b151561221b57600080fd5b601e82905580601d6002612056565b600160a060020a03166000908152600860209081526040808320546009835281842054600a90935292205460ff90921692909142900390565b6000805433600160a060020a039081169116148061228f575060015433600160a060020a039081169116145b151561229a57600080fd5b60015460a060020a900460ff16156122b157600080fd5b6001805474ff0000000000000000000000000000000000000000191660a060020a1790557f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a150600190565b6000808233600160a060020a031660118281548110151561232457fe5b6000918252602090912060059091020154600160a060020a03161461234857600080fd5b4260118281548110151561235857fe5b90600052602060002090600502016001015411151561237657600080fd5b4260118281548110151561238657fe5b9060005260206000209060050201600401541015156123a457600080fd5b60015460a060020a900460ff16156123bb57600080fd5b60118054859081106123c957fe5b60009182526020909120600590910201600381015481549193506123f591600160a060020a0316613578565b61240782600401548360020154613146565b6004830181905582546003840154600160a060020a039091169086907fe59c03907eb3e86b26f58d894ce2930fb7654708c75e33e4ae4a8025631ce94d9060405190815260200160405180910390a45060019392505050565b60055460ff1681565b601d816005811061247657fe5b0154905081565b60005433600160a060020a03908116911614806124a8575060015433600160a060020a039081169116145b15156124b357600080fd5b60118054829081106124c157fe5b6000918252602082206005909102018054600160a060020a03191681556001810182905560028101829055600381018290556004015550565b600b8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d915780601f10610d6657610100808354040283529160200191610d91565b60015460009060a060020a900460ff161561257f57600080fd5b50600160a060020a033316600090815260186020908152604080832054601b909252909120544290106125b157600080fd5b600081116125be57600080fd5b6125d6602282600581106125ce57fe5b015433613578565b600160a060020a0333166000908152601b6020526040902054601c546125fc9190613146565b600160a060020a0333166000908152601b60205260409020556022816005811061262257fe5b015433600160a060020a03167ff23a961744a760027f8811c59a0eaef0d29cf965578b17412bcc375b52fa39d160405160405180910390a350565b60005433600160a060020a0390811691161480612688575060015433600160a060020a039081169116145b151561269357600080fd5b600f54819010156126a357600080fd5b6126af600f54826126fb565b600f55600160a060020a0333166000908152601260205260409020546126d59082613146565b600160a060020a033316600090815260126020526040902055600e546117959082613146565b60008282111561270a57600080fd5b50900390565b600080600061271d6136dd565b600086815260176020526040902080548690811061273757fe5b9060005260206000209060030201606060405190810160409081528254600160a060020a0316825260018301546020830152600290920154918101919091529050805193508060200151925080604001519150509250925092565b600160a060020a03331660009081526014602052604081205460ff16151561285157600160a060020a0333166000908152601260205260409020546127d790836126fb565b600160a060020a0333811660009081526012602052604080822093909355908516815220546128069083613146565b600160a060020a0380851660008181526012602052604090819020939093559133909116906000805160206137e08339815191529085905190815260200160405180910390a3611520565b600160a060020a033316600090815260156020908152604080832054601290925290912054111561152057600160a060020a0333166000908152601260209081526040808320546015909252909120546128ab91906126fb565b8211156128b757600080fd5b600160a060020a0333166000908152601260205260409020546128da90836126fb565b600160a060020a0333811660009081526012602052604080822093909355908516815220546129099083613146565b600160a060020a0380851660008181526012602052604090819020939093559133909116906000805160206137e08339815191529085905190815260200160405180910390a350600192915050565b6022816005811061247657fe5b60038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d915780601f10610d6657610100808354040283529160200191610d91565b60008082116129de57600080fd5b81838115156129e957fe5b049392505050565b60005433600160a060020a0390811691161480612a1c575060015433600160a060020a039081169116145b1515612a2757600080fd5b600160a060020a033316600090815260076020526040902054612a4a9082613146565b600160a060020a033316600090815260076020526040902055600654611ae09082613146565b600160a060020a031660009081526007602052604090205490565b600160a060020a03331660009081526014602052604081205460ff16151560011415612ab657600080fd5b600160a060020a03338116600081815260136020908152604080832094891680845294909152908190208690557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259086905190815260200160405180910390a383600160a060020a0316638f4ffcb1338530866040518563ffffffff1660e060020a0281526004018085600160a060020a0316600160a060020a0316815260200184815260200183600160a060020a0316600160a060020a0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612bae578082015183820152602001612b96565b50505050905090810190601f168015612bdb5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1515612bfc57600080fd5b6102c65a03f11515612c0d57600080fd5b5060019695505050505050565b6000612c24613635565b6000805433600160a060020a0390811691161480612c50575060015433600160a060020a039081169116145b1515612c5b57600080fd5b60a06040519081016040528088600160a060020a0316815260200187420181526020018681526020018581526020018642018152509150600160118054806001018281612ca8919061366e565b6000928352602090922085916005020181518154600160a060020a031916600160a060020a039190911617815560208201518160010155604082015181600201556060820151816003015560808201518160040155505003905086600160a060020a0316817fe0a25f374c3ccea9b3852380e0d550961e95fb10b5dd9efb7d390e852786ef7088888860405180848152602001838152602001828152602001935050505060405180910390a39695505050505050565b818102821580612d785750818382811515612d7557fe5b04145b1515610e2857600080fd5b6000805433600160a060020a0390811691161480612daf575060015433600160a060020a039081169116145b1515612dba57600080fd5b60008054600160a060020a038086169263a9059cbb929091169085906040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515612e2057600080fd5b6102c65a03f11515612e3157600080fd5b5050506040518051949350505050565b600160a060020a03331660009081526014602052604081205460ff16151560011415612e6c57600080fd5b50600160a060020a03918216600090815260136020908152604080832093909416825291909152205490565b612ea061360e565b60015460a060020a900460ff1615612eb757600080fd5b6027805483908110612ec557fe5b9060005260206000209060030201608060405190810160409081528254600160a060020a038116835260a060020a900460ff1615156020830190815260018401549183019190915260029092015460608201529150511561303357600160a060020a0333166000908152600760205260409081902054612f4791830151613146565b600160a060020a0333166000908152600760205260408120919091556019818351600160a060020a03168152602081019190915260400160002055612f9181518260600151612792565b506027805483908110612fa057fe5b600091825260208220600390910201805474ffffffffffffffffffffffffffffffffffffffffff1916815560018101829055600201558051600160a060020a031633600160a060020a0316837f8e5d31db095940719a41f61a733ac177443e93085309b93626db618db0c9f2718460400151856060015160405191825260208201526040908101905180910390a4613142565b600160a060020a03331660009081526012602052604090205461305a906060830151613146565b600160a060020a033316600090815260126020526040812091909155601a818351600160a060020a031681526020810191909152604001600020556130a481518260400151611324565b5060278054839081106130b357fe5b600091825260208220600390910201805474ffffffffffffffffffffffffffffffffffffffffff1916815560018101829055600201558051600160a060020a031633600160a060020a0316837f8e5d31db095940719a41f61a733ac177443e93085309b93626db618db0c9f2718460400151856060015160405191825260208201526040908101905180910390a45b5050565b81810182811015610e2857600080fd5b601c5481565b60015460a060020a900460ff161561317357600080fd5b600160a060020a03331660009081526008602052604090205460ff16151560011461319d57600080fd5b600160a060020a0333166000908152600a60205260409020544290106131c257600080fd5b600160a060020a0333166000908152600860209081526040808320805460ff191690556009909152812055565b60006131f96136dd565b600086600033600160a060020a031660108381548110151561321757fe5b6000918252602090912060059091020154600160a060020a03161461323b57600080fd5b600060108381548110151561324c57fe5b90600052602060002090600502016001015411151561326a57600080fd5b6132b460108381548110151561327c57fe5b90600052602060002090600502016003015460108481548110151561329d57fe5b906000526020600020906005020160040154613146565b90504281116132c257600080fd5b60015460a060020a900460ff16156132d957600080fd5b601080548a9081106132e757fe5b906000526020600020906005020160020154861115151561330757600080fd5b61333160108a81548110151561331957fe5b906000526020600020906005020160010154876126fb565b601080548b90811061333f57fe5b90600052602060002090600502016001018190555060606040519081016040908152600160a060020a038916825260208083018b905281830189905260008c8152601790915220805491955060019180830161339b83826136fd565b6000928352602090922087916003020181518154600160a060020a031916600160a060020a0391909116178155602082015160018201556040820151816002015550500392506133eb8688613578565b8587600160a060020a0316847fdf6fd8077aa2d207937dd80dc1ddb27e974d3420442c7def38ec089f4364b74e8c60405190815260200160405180910390a450600198975050505050505050565b6000805260076020527f6d5257204ebe7d88fd91ae87941cb2dd9d8062b64ae5a2bd2d28ec40b9fbf6df546006540390565b600160a060020a03331660009081526008602052604090205460ff161561349157600080fd5b600160a060020a033316600090815260076020526040902054819010156134b757600080fd5b600160a060020a0333166000908152600860209081526040808320805460ff19166001179055600a825280832060001990556009909152902055565b600160a060020a03331660009081526008602052604090205460ff16151560011461351d57600080fd5b600160a060020a0333166000908152600a6020908152604080832083905560088252808320805460ff19169055600990915290205461355c90826126fb565b600160a060020a03331660009081526009602052604090205550565b600f548290101561358857600080fd5b613594600f54836126fb565b600f55600e546135a49083613146565b600e55600160a060020a0381166000908152601260205260409020546135ca9083613146565b600160a060020a0382166000818152601260205260408082209390935590916000805160206137e08339815191529085905190815260200160405180910390a35050565b60806040519081016040908152600080835260208301819052908201819052606082015290565b60a0604051908101604052806000600160a060020a03168152602001600081526020016000815260200160008152602001600081525090565b81548183558181151161369a5760050281600502836000526020600020918201910161369a9190613729565b505050565b60206040519081016040526000815290565b81548183558181151161369a5760030281600302836000526020600020918201910161369a919061376d565b606060405190810160409081526000808352602083018190529082015290565b81548183558181151161369a5760030281600302836000526020600020918201910161369a91906137ad565b61105391905b80821115613769578054600160a060020a03191681556000600182018190556002820181905560038201819055600482015560050161372f565b5090565b61105391905b8082111561376957805474ffffffffffffffffffffffffffffffffffffffffff191681556000600182018190556002820155600301613773565b61105391905b80821115613769578054600160a060020a031916815560006001820181905560028201556003016137b35600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a7230582082046e2290510e6518b962bd7c474b806b958e6acba229ebbd5d4255de76eb1a0029

Deployed Bytecode

0x6060604052600436106102f25763ffffffff60e060020a6000350416630486529b81146102f457806306fdde031461030a578063095ea7b31461039457806309ec6cc7146103ca5780630f3a9f65146103e057806318160ddd146103f657806320db91e21461041b57806323b872dd1461044357806327acfff91461046b578063298ad569146104905780632bac276b146104bf5780632db25e05146104e157806330e1e4e51461052d578063313ce567146105525780633a573e021461057b5780633eaaf86b1461058e5780633f4ba83a146105a157806342966c68146105b45780634d65beb1146105ca5780634e0a33791461068d5780634ea611cd146106ac5780635538c964146106c557806355de28ae146107115780635ad5ca74146107275780635c975abb146107455780635fcee7a0146107585780635fd8c7101461076b578063602e66231461077e578063610c300914610791578063637fcf95146107a457806363c454ca146107db5780636509c1951461082057806370a082311461083957806374a37efc1461085857806376637dcd146108715780637c85ab3a146108845780637cf12b9014610897578063808134c8146108aa57806382f4b3a8146108c35780638456cb59146108e2578063876f9795146108f557806387b8963c1461090b5780638a5839111461091e5780638d72f8561461093457806395d89b411461094a57806399f4b2511461095d578063a0712d6814610970578063a293d1e814610986578063a61d68291461099f578063a9059cbb146109e6578063a9b6c43514610a08578063ae479a6314610a1e578063b5931f7c14610a31578063c3c63edc14610a4a578063c681d68d14610a60578063cae9ca5114610a7f578063cdfe281514610ae4578063d05c78da14610b0c578063dc39d06d14610b25578063dd62ed3e14610b47578063df1dd82614610b6c578063e6cb901314610b82578063ef78d4fd14610b9b578063f52ad69014610bae578063fc04c0c414610bc1578063fc24e58914610be9575b005b34156102ff57600080fd5b6102f2600435610bfc565b341561031557600080fd5b61031d610cfb565b60405160208082528190810183818151815260200191508051906020019080838360005b83811015610359578082015183820152602001610341565b50505050905090810190601f1680156103865780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561039f57600080fd5b6103b6600160a060020a0360043516602435610d99565b604051901515815260200160405180910390f35b34156103d557600080fd5b6102f2600435610e2e565b34156103eb57600080fd5b6102f2600435610fe8565b341561040157600080fd5b610409611023565b60405190815260200160405180910390f35b341561042657600080fd5b610409600160a060020a0360043516602435604435606435611056565b341561044e57600080fd5b6103b6600160a060020a036004358116906024351660443561118a565b341561047657600080fd5b6102f2600160a060020a0360043516602435604435611279565b341561049b57600080fd5b6104a3611315565b604051600160a060020a03909116815260200160405180910390f35b34156104ca57600080fd5b6103b6600160a060020a0360043516602435611324565b34156104ec57600080fd5b6104f7600435611529565b604051600160a060020a039094168452911515602084015260408084019190915260608301919091526080909101905180910390f35b341561053857600080fd5b6102f2600160a060020a03600435166024356044356115b6565b341561055d57600080fd5b610565611652565b60405160ff909116815260200160405180910390f35b341561058657600080fd5b61040961165b565b341561059957600080fd5b610409611661565b34156105ac57600080fd5b6103b6611667565b34156105bf57600080fd5b6102f2600435611706565b34156105d557600080fd5b6105e060043561179b565b6040518087600160a060020a0316600160a060020a0316815260200186815260200185815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561064d578082015183820152602001610635565b50505050905090810190601f16801561067a5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390f35b341561069857600080fd5b6102f2600160a060020a03600435166118c7565b34156106b757600080fd5b6102f2600435602435611955565b34156106d057600080fd5b6106db6004356119b6565b6040518084600160a060020a0316600160a060020a03168152602001838152602001828152602001935050505060405180910390f35b341561071c57600080fd5b6102f2600435611a61565b341561073257600080fd5b6104096004351515602435604435611ae6565b341561075057600080fd5b6103b6611dff565b341561076357600080fd5b6104a3611e0f565b341561077657600080fd5b6102f2611e1e565b341561078957600080fd5b610409611e8f565b341561079c57600080fd5b61031d611e95565b34156107af57600080fd5b6107c3600160a060020a0360043516611f00565b60405191825260208201526040908101905180910390f35b34156107e657600080fd5b6107fa600160a060020a0360043516611f62565b604051921515835260208301919091526040808301919091526060909101905180910390f35b341561082b57600080fd5b6102f2600435602435611f9b565b341561084457600080fd5b610409600160a060020a0360043516611ffa565b341561086357600080fd5b6102f2600435602435612015565b341561087c57600080fd5b61031d61205c565b341561088f57600080fd5b6102f261209d565b34156108a257600080fd5b6102f2612152565b34156108b557600080fd5b6102f26004356024356121e5565b34156108ce57600080fd5b6107fa600160a060020a036004351661222a565b34156108ed57600080fd5b6103b6612263565b341561090057600080fd5b6103b6600435612307565b341561091657600080fd5b610565612460565b341561092957600080fd5b610409600435612469565b341561093f57600080fd5b6102f260043561247d565b341561095557600080fd5b61031d6124fa565b341561096857600080fd5b6102f2612565565b341561097b57600080fd5b6102f260043561265d565b341561099157600080fd5b6104096004356024356126fb565b34156109aa57600080fd5b6109b8600435602435612710565b604051600160a060020a03909316835260208301919091526040808301919091526060909101905180910390f35b34156109f157600080fd5b6103b6600160a060020a0360043516602435612792565b3415610a1357600080fd5b610409600435612958565b3415610a2957600080fd5b61031d612965565b3415610a3c57600080fd5b6104096004356024356129d0565b3415610a5557600080fd5b6102f26004356129f1565b3415610a6b57600080fd5b610409600160a060020a0360043516612a70565b3415610a8a57600080fd5b6103b660048035600160a060020a03169060248035919060649060443590810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650612a8b95505050505050565b3415610aef57600080fd5b610409600160a060020a0360043516602435604435606435612c1a565b3415610b1757600080fd5b610409600435602435612d5e565b3415610b3057600080fd5b6103b6600160a060020a0360043516602435612d83565b3415610b5257600080fd5b610409600160a060020a0360043581169060243516612e41565b3415610b7757600080fd5b6102f2600435612e98565b3415610b8d57600080fd5b610409600435602435613146565b3415610ba657600080fd5b610409613156565b3415610bb957600080fd5b6102f261315c565b3415610bcc57600080fd5b6103b6600435602435600160a060020a03604435166064356131ef565b3415610bf457600080fd5b610409613439565b60015460a060020a900460ff1615610c1357600080fd5b600081118015610c24575060048111155b1515610c2f57600080fd5b601d8160058110610c3c57fe5b0154600160a060020a0333166000908152600760205260409020541015610c6257600080fd5b610c79601d8260058110610c7257fe5b015461346b565b600160a060020a0333166000908152601860209081526040808320849055601b9091529020541515610cc157600160a060020a0333166000908152601b602052604090204290555b8033600160a060020a03167f0cc0076665281ff8398c9431c41b09049a4aa58f50f11b4130ef230ed60adc8760405160405180910390a350565b600c8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d915780601f10610d6657610100808354040283529160200191610d91565b820191906000526020600020905b815481529060010190602001808311610d7457829003601f168201915b505050505081565b600160a060020a03331660009081526014602052604081205460ff16151560011415610dc457600080fd5b600160a060020a03338116600081815260136020908152604080832094881680845294909152908190208590557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b92915050565b610e3661360e565b60015460a060020a900460ff1615610e4d57600080fd5b6027805483908110610e5b57fe5b9060005260206000209060030201608060405190810160409081528254600160a060020a03808216845260a060020a90910460ff16151560208401526001840154918301919091526002909201546060820152915033168151600160a060020a031614610ec757600080fd5b806020015115610f2457600160a060020a0333166000908152600760205260409081902054610ef891830151613146565b600160a060020a0333166000908152600760209081526040808320939093556019905290812055610f73565b600160a060020a033316600090815260126020526040902054610f4b906060830151613146565b600160a060020a033316600090815260126020908152604080832093909355601a9052908120555b6027805483908110610f8157fe5b600091825260208220600390910201805474ffffffffffffffffffffffffffffffffffffffffff191681556001810182905560020155817f223868bda9e47fa465ee1e1401b3bd23888b9b951308671e785b0e890b728a9660405160405180910390a25050565b60005433600160a060020a0390811691161480611013575060015433600160a060020a039081169116145b151561101e57600080fd5b601c55565b6000805260126020527f7e7fa33969761a458e04f477e039a608702b4f924981d6653935a8319a08ad7b54600e54035b90565b6000611060613635565b6000805433600160a060020a039081169116148061108c575060015433600160a060020a039081169116145b151561109757600080fd5b60a06040519081016040528088600160a060020a031681526020018781526020018681526020014281526020018581525091506001601080548060010182816110e0919061366e565b6000928352602090922085916005020181518154600160a060020a031916600160a060020a03919091161781556020820151816001015560408201518160020155606082015181600301556080820151816004015550500390508587600160a060020a0316827ff2b85b43211ffec4da9402231db708764bd4c87ed2853c3b3e9308ec067ae02a888860405191825260208201526040908101905180910390a49695505050505050565b600160a060020a0383166000908152601260205260408120546111ad90836126fb565b600160a060020a03808616600090815260126020908152604080832094909455601381528382203390931682529190915220546111ea90836126fb565b600160a060020a038086166000908152601360209081526040808320338516845282528083209490945591861681526012909152205461122a9083613146565b600160a060020a03808516600081815260126020526040908190209390935591908616906000805160206137e08339815191529085905190815260200160405180910390a35060019392505050565b60005433600160a060020a03908116911614806112a4575060015433600160a060020a039081169116145b15156112af57600080fd5b600160a060020a038316600090815260076020526040902054829010156112d557600080fd5b600160a060020a039092166000908152600860209081526040808320805460ff19166001179055600a825280832042909501909455600990529190912055565b600154600160a060020a031681565b60015460009060a060020a900460ff161561133e57600080fd5b600160a060020a03331660009081526008602052604090205460ff16151561140f57600160a060020a03331660009081526007602052604090205461138390836126fb565b600160a060020a0333811660009081526007602052604080822093909355908516815220546113b29083613146565b600160a060020a0380851660008181526007602052604090819020939093559133909116907f82de2639fdc3c65a9413c0716d4cbd73c6182095571c159d8cabaee5b16a36319085905190815260200160405180910390a3611520565b600160a060020a033316600090815260096020908152604080832054600790925290912054111561152057600160a060020a03331660009081526007602090815260408083205460099092529091205461146991906126fb565b82111561147557600080fd5b600160a060020a03331660009081526007602052604090205461149890836126fb565b600160a060020a0333811660009081526007602052604080822093909355908516815220546114c79083613146565b600160a060020a0380851660008181526007602052604090819020939093559133909116907f82de2639fdc3c65a9413c0716d4cbd73c6182095571c159d8cabaee5b16a36319085905190815260200160405180910390a35b50600192915050565b60008060008061153761360e565b602780548790811061154557fe5b9060005260206000209060030201608060405190810160409081528254600160a060020a038116835260a060020a900460ff16151560208301526001830154908201526002909101546060820152905080519450806020015193508060400151925080606001519150509193509193565b60005433600160a060020a03908116911614806115e1575060015433600160a060020a039081169116145b15156115ec57600080fd5b600160a060020a0383166000908152601260205260409020548290101561161257600080fd5b600160a060020a039092166000908152601460209081526040808320805460ff191660011790556016825280832042909501909455601590529190912055565b600d5460ff1681565b60065481565b600e5481565b6000805433600160a060020a0390811691161480611693575060015433600160a060020a039081169116145b151561169e57600080fd5b60015460a060020a900460ff1615156116b657600080fd5b6001805474ff0000000000000000000000000000000000000000191690557f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a150600190565b60005433600160a060020a0390811691161480611731575060015433600160a060020a039081169116145b151561173c57600080fd5b600e548190101561174c57600080fd5b600160a060020a03331660009081526012602052604090205461176f90826126fb565b600160a060020a033316600090815260126020526040902055600e5461179590826126fb565b600e5550565b60008060008060006117ab61369f565b6117b3613635565b60118054899081106117c157fe5b906000526020600020906005020160a060405190810160409081528254600160a060020a031682526001830154602083015260028301549082015260038201546060820152600490910154608082015290508051965080602001519550806040015194508060600151935042816080015110611882576118458160800151426126fb565b925060408051908101604052600b81527f506c656173652057616974000000000000000000000000000000000000000000602082015291506118bd565b6000925060408051908101604052601781527f5069636b20557020596f75722053616c617279204e6f77000000000000000000602082015291505b5091939550919395565b60005433600160a060020a039081169116146118e257600080fd5b600160a060020a03811615156118f757600080fd5b600154600160a060020a0380831691167ff8ccb027dfcd135e000e9d45e6cc2d662578a8825d4c45b5e32e0adf67e79ec660405160405180910390a360018054600160a060020a031916600160a060020a0392909216919091179055565b60005433600160a060020a0390811691161480611980575060015433600160a060020a039081169116145b151561198b57600080fd5b80420160108381548110151561199d57fe5b9060005260206000209060050201600401819055505050565b60008060006119c3613635565b60108054869081106119d157fe5b906000526020600020906005020160a060405190810160409081528254600160a060020a0316825260018301546020830152600283015490820152600382015460608201526004909101546080820152905080519350806020015192504281608001518260600151011115611a5457428160800151826060015101039150611a59565b600091505b509193909250565b60005433600160a060020a0390811691161480611a8c575060015433600160a060020a039081169116145b1515611a9757600080fd5b600160a060020a033316600090815260076020526040902054611aba90826126fb565b600160a060020a033316600090815260076020526040902055600654611ae090826126fb565b60065550565b6000611af061360e565b6000611afa61360e565b60015460009060a060020a900460ff1615611b1457600080fd5b8715611c8957600160a060020a03331660009081526007602052604090205487901015611b4057600080fd5b600160a060020a033316600090815260076020526040902054611b6390886126fb565b600160a060020a03331660009081526007602090815260408083209390935560199052819020889055608090519081016040528033600160a060020a031681526020018915158152602001888152602001878152509350600160278054806001018281611bd091906136b1565b6000928352602090922087916003020181518154600160a060020a031916600160a060020a03919091161781556020820151815490151560a060020a0274ff00000000000000000000000000000000000000001990911617815560408201518160010155606082015181600201555050039250871515837f163fa711b7e61f884dd700360ed0dc2c369376de0c6a1956fce4171ca0a9cef1898960405191825260208201526040908101905180910390a3829450611df4565b600160a060020a03331660009081526012602052604090205486901015611caf57600080fd5b600160a060020a033316600090815260126020526040902054611cd290876126fb565b600160a060020a033316600090815260126020908152604080832093909355601a9052819020879055608090519081016040528033600160a060020a031681526020018915158152602001888152602001878152509150600160278054806001018281611d3f91906136b1565b6000928352602090922085916003020181518154600160a060020a031916600160a060020a03919091161781556020820151815490151560a060020a0274ff00000000000000000000000000000000000000001990911617815560408201518160010155606082015181600201555050039050871515817f163fa711b7e61f884dd700360ed0dc2c369376de0c6a1956fce4171ca0a9cef1898960405191825260208201526040908101905180910390a38094505b505050509392505050565b60015460a060020a900460ff1681565b600054600160a060020a031681565b60005433600160a060020a0390811691161480611e49575060015433600160a060020a039081169116145b1515611e5457600080fd5b600054600160a060020a039081169030163180156108fc0290604051600060405180830381858888f193505050501515611e8d57600080fd5b565b600f5481565b60048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d915780601f10610d6657610100808354040283529160200191610d91565b600160a060020a038116600090815260186020908152604080832054601b90925282205490919042901115611f5957600160a060020a0383166000908152601b6020526040902054611f5290426126fb565b9050611f5d565b5060005b915091565b600160a060020a03166000908152601460209081526040808320546015835281842054601690935292205460ff90921692909142900390565b60005433600160a060020a0390811691161480611fc6575060015433600160a060020a039081169116145b1515611fd157600080fd5b80601083815481101515611fe157fe5b9060005260206000209060050201600101819055505050565b600160a060020a031660009081526012602052604090205490565b60005433600160a060020a0390811691161480612040575060015433600160a060020a039081169116145b151561204b57600080fd5b602382905580602260025b01555050565b61206461369f565b60408051908101604052601681527f416c6578616e646572205468652045786c6f73696f6e000000000000000000006020820152905090565b60015460a060020a900460ff16156120b457600080fd5b600160a060020a033316600090815260186020526040812054116120d757600080fd5b600160a060020a03331660009081526018602052604090205461210890601d906005811061210157fe5b01546134f3565b600160a060020a033316600081815260186020526040808220919091557f16bfdc1e6dc7f481f073edc603659a221eed08e79f1d7e075d30eced1d10cc11905160405180910390a2565b60015460a060020a900460ff161561216957600080fd5b600160a060020a03331660009081526014602052604090205460ff16151560011461219357600080fd5b600160a060020a0333166000908152601660205260409020544290106121b857600080fd5b600160a060020a0333166000908152601460209081526040808320805460ff191690556015909152812055565b60005433600160a060020a0390811691161480612210575060015433600160a060020a039081169116145b151561221b57600080fd5b601e82905580601d6002612056565b600160a060020a03166000908152600860209081526040808320546009835281842054600a90935292205460ff90921692909142900390565b6000805433600160a060020a039081169116148061228f575060015433600160a060020a039081169116145b151561229a57600080fd5b60015460a060020a900460ff16156122b157600080fd5b6001805474ff0000000000000000000000000000000000000000191660a060020a1790557f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a150600190565b6000808233600160a060020a031660118281548110151561232457fe5b6000918252602090912060059091020154600160a060020a03161461234857600080fd5b4260118281548110151561235857fe5b90600052602060002090600502016001015411151561237657600080fd5b4260118281548110151561238657fe5b9060005260206000209060050201600401541015156123a457600080fd5b60015460a060020a900460ff16156123bb57600080fd5b60118054859081106123c957fe5b60009182526020909120600590910201600381015481549193506123f591600160a060020a0316613578565b61240782600401548360020154613146565b6004830181905582546003840154600160a060020a039091169086907fe59c03907eb3e86b26f58d894ce2930fb7654708c75e33e4ae4a8025631ce94d9060405190815260200160405180910390a45060019392505050565b60055460ff1681565b601d816005811061247657fe5b0154905081565b60005433600160a060020a03908116911614806124a8575060015433600160a060020a039081169116145b15156124b357600080fd5b60118054829081106124c157fe5b6000918252602082206005909102018054600160a060020a03191681556001810182905560028101829055600381018290556004015550565b600b8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d915780601f10610d6657610100808354040283529160200191610d91565b60015460009060a060020a900460ff161561257f57600080fd5b50600160a060020a033316600090815260186020908152604080832054601b909252909120544290106125b157600080fd5b600081116125be57600080fd5b6125d6602282600581106125ce57fe5b015433613578565b600160a060020a0333166000908152601b6020526040902054601c546125fc9190613146565b600160a060020a0333166000908152601b60205260409020556022816005811061262257fe5b015433600160a060020a03167ff23a961744a760027f8811c59a0eaef0d29cf965578b17412bcc375b52fa39d160405160405180910390a350565b60005433600160a060020a0390811691161480612688575060015433600160a060020a039081169116145b151561269357600080fd5b600f54819010156126a357600080fd5b6126af600f54826126fb565b600f55600160a060020a0333166000908152601260205260409020546126d59082613146565b600160a060020a033316600090815260126020526040902055600e546117959082613146565b60008282111561270a57600080fd5b50900390565b600080600061271d6136dd565b600086815260176020526040902080548690811061273757fe5b9060005260206000209060030201606060405190810160409081528254600160a060020a0316825260018301546020830152600290920154918101919091529050805193508060200151925080604001519150509250925092565b600160a060020a03331660009081526014602052604081205460ff16151561285157600160a060020a0333166000908152601260205260409020546127d790836126fb565b600160a060020a0333811660009081526012602052604080822093909355908516815220546128069083613146565b600160a060020a0380851660008181526012602052604090819020939093559133909116906000805160206137e08339815191529085905190815260200160405180910390a3611520565b600160a060020a033316600090815260156020908152604080832054601290925290912054111561152057600160a060020a0333166000908152601260209081526040808320546015909252909120546128ab91906126fb565b8211156128b757600080fd5b600160a060020a0333166000908152601260205260409020546128da90836126fb565b600160a060020a0333811660009081526012602052604080822093909355908516815220546129099083613146565b600160a060020a0380851660008181526012602052604090819020939093559133909116906000805160206137e08339815191529085905190815260200160405180910390a350600192915050565b6022816005811061247657fe5b60038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d915780601f10610d6657610100808354040283529160200191610d91565b60008082116129de57600080fd5b81838115156129e957fe5b049392505050565b60005433600160a060020a0390811691161480612a1c575060015433600160a060020a039081169116145b1515612a2757600080fd5b600160a060020a033316600090815260076020526040902054612a4a9082613146565b600160a060020a033316600090815260076020526040902055600654611ae09082613146565b600160a060020a031660009081526007602052604090205490565b600160a060020a03331660009081526014602052604081205460ff16151560011415612ab657600080fd5b600160a060020a03338116600081815260136020908152604080832094891680845294909152908190208690557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259086905190815260200160405180910390a383600160a060020a0316638f4ffcb1338530866040518563ffffffff1660e060020a0281526004018085600160a060020a0316600160a060020a0316815260200184815260200183600160a060020a0316600160a060020a0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612bae578082015183820152602001612b96565b50505050905090810190601f168015612bdb5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1515612bfc57600080fd5b6102c65a03f11515612c0d57600080fd5b5060019695505050505050565b6000612c24613635565b6000805433600160a060020a0390811691161480612c50575060015433600160a060020a039081169116145b1515612c5b57600080fd5b60a06040519081016040528088600160a060020a0316815260200187420181526020018681526020018581526020018642018152509150600160118054806001018281612ca8919061366e565b6000928352602090922085916005020181518154600160a060020a031916600160a060020a039190911617815560208201518160010155604082015181600201556060820151816003015560808201518160040155505003905086600160a060020a0316817fe0a25f374c3ccea9b3852380e0d550961e95fb10b5dd9efb7d390e852786ef7088888860405180848152602001838152602001828152602001935050505060405180910390a39695505050505050565b818102821580612d785750818382811515612d7557fe5b04145b1515610e2857600080fd5b6000805433600160a060020a0390811691161480612daf575060015433600160a060020a039081169116145b1515612dba57600080fd5b60008054600160a060020a038086169263a9059cbb929091169085906040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515612e2057600080fd5b6102c65a03f11515612e3157600080fd5b5050506040518051949350505050565b600160a060020a03331660009081526014602052604081205460ff16151560011415612e6c57600080fd5b50600160a060020a03918216600090815260136020908152604080832093909416825291909152205490565b612ea061360e565b60015460a060020a900460ff1615612eb757600080fd5b6027805483908110612ec557fe5b9060005260206000209060030201608060405190810160409081528254600160a060020a038116835260a060020a900460ff1615156020830190815260018401549183019190915260029092015460608201529150511561303357600160a060020a0333166000908152600760205260409081902054612f4791830151613146565b600160a060020a0333166000908152600760205260408120919091556019818351600160a060020a03168152602081019190915260400160002055612f9181518260600151612792565b506027805483908110612fa057fe5b600091825260208220600390910201805474ffffffffffffffffffffffffffffffffffffffffff1916815560018101829055600201558051600160a060020a031633600160a060020a0316837f8e5d31db095940719a41f61a733ac177443e93085309b93626db618db0c9f2718460400151856060015160405191825260208201526040908101905180910390a4613142565b600160a060020a03331660009081526012602052604090205461305a906060830151613146565b600160a060020a033316600090815260126020526040812091909155601a818351600160a060020a031681526020810191909152604001600020556130a481518260400151611324565b5060278054839081106130b357fe5b600091825260208220600390910201805474ffffffffffffffffffffffffffffffffffffffffff1916815560018101829055600201558051600160a060020a031633600160a060020a0316837f8e5d31db095940719a41f61a733ac177443e93085309b93626db618db0c9f2718460400151856060015160405191825260208201526040908101905180910390a45b5050565b81810182811015610e2857600080fd5b601c5481565b60015460a060020a900460ff161561317357600080fd5b600160a060020a03331660009081526008602052604090205460ff16151560011461319d57600080fd5b600160a060020a0333166000908152600a60205260409020544290106131c257600080fd5b600160a060020a0333166000908152600860209081526040808320805460ff191690556009909152812055565b60006131f96136dd565b600086600033600160a060020a031660108381548110151561321757fe5b6000918252602090912060059091020154600160a060020a03161461323b57600080fd5b600060108381548110151561324c57fe5b90600052602060002090600502016001015411151561326a57600080fd5b6132b460108381548110151561327c57fe5b90600052602060002090600502016003015460108481548110151561329d57fe5b906000526020600020906005020160040154613146565b90504281116132c257600080fd5b60015460a060020a900460ff16156132d957600080fd5b601080548a9081106132e757fe5b906000526020600020906005020160020154861115151561330757600080fd5b61333160108a81548110151561331957fe5b906000526020600020906005020160010154876126fb565b601080548b90811061333f57fe5b90600052602060002090600502016001018190555060606040519081016040908152600160a060020a038916825260208083018b905281830189905260008c8152601790915220805491955060019180830161339b83826136fd565b6000928352602090922087916003020181518154600160a060020a031916600160a060020a0391909116178155602082015160018201556040820151816002015550500392506133eb8688613578565b8587600160a060020a0316847fdf6fd8077aa2d207937dd80dc1ddb27e974d3420442c7def38ec089f4364b74e8c60405190815260200160405180910390a450600198975050505050505050565b6000805260076020527f6d5257204ebe7d88fd91ae87941cb2dd9d8062b64ae5a2bd2d28ec40b9fbf6df546006540390565b600160a060020a03331660009081526008602052604090205460ff161561349157600080fd5b600160a060020a033316600090815260076020526040902054819010156134b757600080fd5b600160a060020a0333166000908152600860209081526040808320805460ff19166001179055600a825280832060001990556009909152902055565b600160a060020a03331660009081526008602052604090205460ff16151560011461351d57600080fd5b600160a060020a0333166000908152600a6020908152604080832083905560088252808320805460ff19169055600990915290205461355c90826126fb565b600160a060020a03331660009081526009602052604090205550565b600f548290101561358857600080fd5b613594600f54836126fb565b600f55600e546135a49083613146565b600e55600160a060020a0381166000908152601260205260409020546135ca9083613146565b600160a060020a0382166000818152601260205260408082209390935590916000805160206137e08339815191529085905190815260200160405180910390a35050565b60806040519081016040908152600080835260208301819052908201819052606082015290565b60a0604051908101604052806000600160a060020a03168152602001600081526020016000815260200160008152602001600081525090565b81548183558181151161369a5760050281600502836000526020600020918201910161369a9190613729565b505050565b60206040519081016040526000815290565b81548183558181151161369a5760030281600302836000526020600020918201910161369a919061376d565b606060405190810160409081526000808352602083018190529082015290565b81548183558181151161369a5760030281600302836000526020600020918201910161369a91906137ad565b61105391905b80821115613769578054600160a060020a03191681556000600182018190556002820181905560038201819055600482015560050161372f565b5090565b61105391905b8082111561376957805474ffffffffffffffffffffffffffffffffffffffffff191681556000600182018190556002820155600301613773565b61105391905b80821115613769578054600160a060020a031916815560006001820181905560028201556003016137b35600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a7230582082046e2290510e6518b962bd7c474b806b958e6acba229ebbd5d4255de76eb1a0029

Swarm Source

bzzr://82046e2290510e6518b962bd7c474b806b958e6acba229ebbd5d4255de76eb1a
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.