POL Price: $0.131502 (-3.64%)
 

Overview

POL Balance

Polygon PoS Chain LogoPolygon PoS Chain LogoPolygon PoS Chain Logo260.381170253796163704 POL

POL Value

$34.24 (@ $0.13/POL)

Token Holdings

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Block
From
To
Claim Divs818408572026-01-19 5:48:0627 hrs ago1768801686IN
0xE7856Cb3...CacFd117b
0 POL0.00764261157.88577077
Claim Divs812519942026-01-05 14:27:2714 days ago1767623247IN
0xE7856Cb3...CacFd117b
0 POL0.362166187,481.84487806
Claim Divs803034192025-12-14 11:37:3936 days ago1765712259IN
0xE7856Cb3...CacFd117b
0 POL0.0023378448.29652391
Claim Divs802863552025-12-14 2:08:5137 days ago1765678131IN
0xE7856Cb3...CacFd117b
0 POL0.0024506450.62687561
Claim Divs801923482025-12-11 21:53:2139 days ago1765490001IN
0xE7856Cb3...CacFd117b
0 POL0.0029044360.00148686
Claim Divs801222272025-12-10 6:53:1641 days ago1765349596IN
0xE7856Cb3...CacFd117b
0 POL0.0026866155.50173696
Claim Divs800870842025-12-09 11:20:2141 days ago1765279221IN
0xE7856Cb3...CacFd117b
0 POL0.0021196843.78970944
Claim Divs800497372025-12-08 14:35:1742 days ago1765204517IN
0xE7856Cb3...CacFd117b
0 POL0.01411308291.55643037
Claim Divs799864132025-12-07 3:24:2944 days ago1765077869IN
0xE7856Cb3...CacFd117b
0 POL0.0021426944.26500028
Claim Divs799851692025-12-07 2:43:0144 days ago1765075381IN
0xE7856Cb3...CacFd117b
0 POL0.0022024745.50000023
Claim Divs799591752025-12-06 12:16:3144 days ago1765023391IN
0xE7856Cb3...CacFd117b
0 POL0.0019982241.28062165
Claim Divs799591512025-12-06 12:15:4344 days ago1765023343IN
0xE7856Cb3...CacFd117b
0 POL0.0022024745.5000012
Claim Divs799524662025-12-06 8:32:5345 days ago1765009973IN
0xE7856Cb3...CacFd117b
0 POL0.0029805245.50000234
Claim Divs798990652025-12-05 2:52:5146 days ago1764903171IN
0xE7856Cb3...CacFd117b
0 POL0.0028928459.76221024
Claim Divs798537932025-12-04 1:43:4747 days ago1764812627IN
0xE7856Cb3...CacFd117b
0 POL0.0028935659.77707361
Claim Divs798351802025-12-03 15:23:2147 days ago1764775401IN
0xE7856Cb3...CacFd117b
0 POL0.00705826145.81387812
Claim Divs798344122025-12-03 14:57:4547 days ago1764773865IN
0xE7856Cb3...CacFd117b
0 POL0.00993018205.14364171
Claim Divs797928242025-12-02 15:51:2848 days ago1764690688IN
0xE7856Cb3...CacFd117b
0 POL0.01061192219.22752035
Claim Divs797928102025-12-02 15:51:0048 days ago1764690660IN
0xE7856Cb3...CacFd117b
0 POL0.01084503224.04315382
Claim Divs797862252025-12-02 12:11:3048 days ago1764677490IN
0xE7856Cb3...CacFd117b
0 POL0.0039065880.7044816
Claim Divs797750782025-12-02 5:59:5649 days ago1764655196IN
0xE7856Cb3...CacFd117b
0 POL0.0035939374.24555004
Registration Ext797448062025-12-01 13:10:5049 days ago1764594650IN
0xE7856Cb3...CacFd117b
4 POL0.2980896594.54302677
Claim Divs797443532025-12-01 12:55:4449 days ago1764593744IN
0xE7856Cb3...CacFd117b
0 POL0.02862641591.38150716
Claim Divs797315662025-12-01 5:49:3050 days ago1764568170IN
0xE7856Cb3...CacFd117b
0 POL0.0038159278.83158151
Claim Divs797305962025-12-01 5:17:1050 days ago1764566230IN
0xE7856Cb3...CacFd117b
0 POL0.0047304897.72514487
View all transactions

Latest 25 internal transactions (View All)

Parent Transaction Hash Block From To
818408572026-01-19 5:48:0627 hrs ago1768801686
0xE7856Cb3...CacFd117b
0.01035123 POL
812519942026-01-05 14:27:2714 days ago1767623247
0xE7856Cb3...CacFd117b
60.57844402 POL
803034192025-12-14 11:37:3936 days ago1765712259
0xE7856Cb3...CacFd117b
0.26075752 POL
802863552025-12-14 2:08:5137 days ago1765678131
0xE7856Cb3...CacFd117b
0.0073869 POL
801923482025-12-11 21:53:2139 days ago1765490001
0xE7856Cb3...CacFd117b
0.23807844 POL
801222272025-12-10 6:53:1641 days ago1765349596
0xE7856Cb3...CacFd117b
0.1138636 POL
800870842025-12-09 11:20:2141 days ago1765279221
0xE7856Cb3...CacFd117b
0.33854685 POL
800497372025-12-08 14:35:1742 days ago1765204517
0xE7856Cb3...CacFd117b
0.55870808 POL
799864132025-12-07 3:24:2944 days ago1765077869
0xE7856Cb3...CacFd117b
0.05751152 POL
799851692025-12-07 2:43:0144 days ago1765075381
0xE7856Cb3...CacFd117b
0.46537475 POL
799591752025-12-06 12:16:3144 days ago1765023391
0xE7856Cb3...CacFd117b
4.26569041 POL
799591512025-12-06 12:15:4344 days ago1765023343
0xE7856Cb3...CacFd117b
4.26569041 POL
799524662025-12-06 8:32:5345 days ago1765009973
0xE7856Cb3...CacFd117b
0.00442804 POL
798990652025-12-05 2:52:5146 days ago1764903171
0xE7856Cb3...CacFd117b
0.11080351 POL
798537932025-12-04 1:43:4747 days ago1764812627
0xE7856Cb3...CacFd117b
0.00295066 POL
798351802025-12-03 15:23:2147 days ago1764775401
0xE7856Cb3...CacFd117b
0.00147465 POL
798344122025-12-03 14:57:4547 days ago1764773865
0xE7856Cb3...CacFd117b
0.0147738 POL
797928242025-12-02 15:51:2848 days ago1764690688
0xE7856Cb3...CacFd117b
0.65212792 POL
797928102025-12-02 15:51:0048 days ago1764690660
0xE7856Cb3...CacFd117b
0.16989871 POL
797862252025-12-02 12:11:3048 days ago1764677490
0xE7856Cb3...CacFd117b
0.1138636 POL
797750782025-12-02 5:59:5649 days ago1764655196
0xE7856Cb3...CacFd117b
0.00147465 POL
797448062025-12-01 13:10:5049 days ago1764594650
0xE7856Cb3...CacFd117b
1.2 POL
797448062025-12-01 13:10:5049 days ago1764594650
0xE7856Cb3...CacFd117b
1.2 POL
797443532025-12-01 12:55:4449 days ago1764593744
0xE7856Cb3...CacFd117b
0.00147601 POL
797315662025-12-01 5:49:3050 days ago1764568170
0xE7856Cb3...CacFd117b
0.05756457 POL
View All Internal Transactions
Cross-Chain Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
PolPower

Compiler Version
v0.5.17+commit.d19bba13

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at polygonscan.com on 2025-04-03
*/

/**
   Website : https://pol-power.net/
*/

pragma solidity >=0.4.23 <0.6.0;

interface IERC20 {
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
}

contract PolPower {
    
    struct User {
        uint id;
        address referrer;
        uint partnersCount;
        
        mapping(uint8 => bool) activeX3Levels;
        mapping(uint8 => bool) activeX6Levels;
        
        mapping(uint8 => X3) x3Matrix;
        mapping(uint8 => X6) x6Matrix;
        
        mapping(uint8 => uint) x3MatrixEarnings;
        mapping(uint8 => uint) x6MatrixEarnings;

        uint divClaimMark;
        uint totalPlayerDivPoints;
        uint divsClaimed; 
    }
    
    struct X3 {
        address currentReferrer;
        address[] referrals;
        bool blocked;
        uint reinvestCount;
    }
    
    struct X6 {
        address currentReferrer;
        address[] firstLevelReferrals;
        address[] secondLevelReferrals;
        bool blocked;
        uint reinvestCount;

        address closedPart;
    }

    uint8 public constant LAST_LEVEL = 12;
    uint16 public constant DIV_PERCENT = 400; // == 40.00%
    uint16 internal constant DIV_DIVISOR = 1000;

    IERC20 public myToken = IERC20(0x7A4f192d4Cf41A2db5eDBc48D5d0fEDafA8B723B);

    mapping(address => User) public users;
    mapping(uint => address) public idToAddress;

    bool public gameOpen = true;
    

    uint public divPot; 
    uint public totalDividendPoints;
    uint public totalDivs;
    uint internal calcDivs; 
    
    
    uint constant pointMultiplier = 1e18;
    

    uint public lastUserId = 2;
    address public owner;
    address internal admin;
    
    mapping(uint8 => uint) public levelPrice;
    
    event Registration(address indexed user, address indexed referrer, uint indexed userId, uint referrerId);
    event Reinvest(address indexed user, address indexed currentReferrer, address indexed caller, uint8 matrix, uint8 level);
    event Upgrade(address indexed user, address indexed referrer, uint8 matrix, uint8 level);
    event NewUserPlace(address indexed user, address indexed referrer, uint8 matrix, uint8 level, uint8 place);
    event MissedEthReceive(address indexed receiver, address indexed from, uint8 matrix, uint8 level);
    event SentExtraEthDividends(address indexed from, address indexed receiver, uint8 matrix, uint8 level);
    
    constructor(address ownerAddress) public {
        admin = msg.sender;
        levelPrice[1] = 2000000000000000000; 
        for (uint8 i = 2; i <= LAST_LEVEL; i++) {
            levelPrice[i] = levelPrice[i-1] * 2;
        }
        
        owner = ownerAddress;
        
        User memory user = User({
            id: 1,
            referrer: address(0),
            partnersCount: uint(0),
            divClaimMark: 0,
            totalPlayerDivPoints: 0,
            divsClaimed: 0
        });
        
        users[ownerAddress] = user;
        idToAddress[1] = ownerAddress;
        
        for (uint8 i = 1; i <= LAST_LEVEL; i++) {
            users[ownerAddress].activeX3Levels[i] = true;
            users[ownerAddress].activeX6Levels[i] = true;
        }

    }
    
    function updateGameOpen(bool _gameOpen) public {
        require(msg.sender == admin, "Only Admin");
        gameOpen = _gameOpen;
    }
    
    function() external payable {
        if(msg.data.length == 0) {
            return registration(msg.sender, owner);
        }
        
        registration(msg.sender, bytesToAddress(msg.data));
    }

    function registrationExt(address referrerAddress) external payable {
        require(gameOpen == true, "Game not yet open!");
        registration(msg.sender, referrerAddress);
    }
    
    function buyNewLevel(uint8 matrix, uint8 level) external payable {
        require(gameOpen == true, "Game not yet open!");
        require(isUserExists(msg.sender), "user is not exists. Register first.");
        require(matrix == 1 || matrix == 2, "invalid matrix");
        require(msg.value == levelPrice[level], "invalid price");
        require(level > 1 && level <= LAST_LEVEL, "invalid level");

        if(viewDivs(msg.sender) > 0){
            sendDivs(msg.sender);
        } else {
            users[msg.sender].divClaimMark = totalDividendPoints;
        }

        users[msg.sender].totalPlayerDivPoints += msg.value * DIV_PERCENT / DIV_DIVISOR;

        divPot += (msg.value * DIV_PERCENT / DIV_DIVISOR);
        totalDivs += (msg.value * DIV_PERCENT / DIV_DIVISOR);

        if (matrix == 1) {
            require(!users[msg.sender].activeX3Levels[level], "level already activated");

            if (users[msg.sender].x3Matrix[level-1].blocked) {
                users[msg.sender].x3Matrix[level-1].blocked = false;
            }
    
            address freeX3Referrer = findFreeX3Referrer(msg.sender, level);

            // Short-circuits to save Energy
            if(freeX3Referrer == owner){
                if(viewDivs(owner) > 0){
                    sendDivs(owner);
                } else {
                    users[owner].divClaimMark = totalDividendPoints;
                }

                users[owner].totalPlayerDivPoints += msg.value * DIV_PERCENT / DIV_DIVISOR;
                calcDivs += msg.value * DIV_PERCENT / DIV_DIVISOR * 2;
                totalDividendPoints += (msg.value * DIV_PERCENT / DIV_DIVISOR) * pointMultiplier / calcDivs;
            } else {
                calcDivs += (msg.value * DIV_PERCENT / DIV_DIVISOR);
                totalDividendPoints += (msg.value * DIV_PERCENT / DIV_DIVISOR) * pointMultiplier / calcDivs;
            }

            users[msg.sender].x3Matrix[level].currentReferrer = freeX3Referrer;
            users[msg.sender].activeX3Levels[level] = true;
            updateX3Referrer(msg.sender, freeX3Referrer, level);
            
            emit Upgrade(msg.sender, freeX3Referrer, 1, level);

        } else {
            require(!users[msg.sender].activeX6Levels[level], "level already activated"); 

            if (users[msg.sender].x6Matrix[level-1].blocked) {
                users[msg.sender].x6Matrix[level-1].blocked = false;
            }

            address freeX6Referrer = findFreeX6Referrer(msg.sender, level);

            // Short-circuits to save Energy
            if(freeX6Referrer == owner){
                if(viewDivs(owner) > 0){
                    sendDivs(owner);
                } else {
                    users[owner].divClaimMark = totalDividendPoints;
                }

                users[owner].totalPlayerDivPoints += msg.value * DIV_PERCENT / DIV_DIVISOR;
                calcDivs += msg.value * DIV_PERCENT / DIV_DIVISOR * 2;
                totalDividendPoints += (msg.value * DIV_PERCENT / DIV_DIVISOR) * pointMultiplier / calcDivs;
            } else {
                calcDivs += (msg.value * DIV_PERCENT / DIV_DIVISOR);
                totalDividendPoints += (msg.value * DIV_PERCENT / DIV_DIVISOR) * pointMultiplier / calcDivs;
            }
            
            users[msg.sender].activeX6Levels[level] = true;
            updateX6Referrer(msg.sender, freeX6Referrer, level);
            
            emit Upgrade(msg.sender, freeX6Referrer, 2, level);
        }
    }    
    
    function registration(address userAddress, address referrerAddress) private {
        require(msg.value == 4000000000000000000, "registration cost 4 POL");
        
        
        require(!isUserExists(userAddress), "user exists");

        require(isUserExists(referrerAddress), "referrer not exists");

        uint32 size;
        assembly {
            size := extcodesize(userAddress)
        }
        require(size == 0, "cannot be a contract");

        User memory user = User({
            id: lastUserId,
            referrer: referrerAddress,
            partnersCount: 0,
            divClaimMark: totalDividendPoints,
            totalPlayerDivPoints: 0,
            divsClaimed: 0
            
        });
        
        users[userAddress] = user;
        idToAddress[lastUserId] = userAddress;
        
        users[userAddress].referrer = referrerAddress;
        
        users[userAddress].activeX3Levels[1] = true; 
        users[userAddress].activeX6Levels[1] = true;
        
        users[userAddress].totalPlayerDivPoints += (msg.value * DIV_PERCENT / DIV_DIVISOR);


        divPot += msg.value * DIV_PERCENT / DIV_DIVISOR;
        totalDivs += (msg.value * DIV_PERCENT / DIV_DIVISOR);
        
        
        
        lastUserId++;
        
        users[referrerAddress].partnersCount++;

        address freeX3Referrer = findFreeX3Referrer(userAddress, 1);
        address freeX6Ref = findFreeX6Referrer(userAddress, 1);

        // Short-circuits to save Energy
        if(freeX3Referrer == owner || freeX6Ref == owner){
            if(viewDivs(owner) > 0){
                sendDivs(owner);
            } else {
                users[owner].divClaimMark = totalDividendPoints;
            }

            users[owner].totalPlayerDivPoints += msg.value * DIV_PERCENT / DIV_DIVISOR;
            calcDivs += msg.value * DIV_PERCENT / DIV_DIVISOR * 2;
            totalDividendPoints += (msg.value * DIV_PERCENT / DIV_DIVISOR) * pointMultiplier / calcDivs;
        } else {
            calcDivs += (msg.value * DIV_PERCENT / DIV_DIVISOR);
            totalDividendPoints += (msg.value * DIV_PERCENT / DIV_DIVISOR) * pointMultiplier / calcDivs;
        }

        users[userAddress].x3Matrix[1].currentReferrer = freeX3Referrer;
        updateX3Referrer(userAddress, freeX3Referrer, 1);

        updateX6Referrer(userAddress, freeX6Ref, 1);



        emit Registration(userAddress, referrerAddress, users[userAddress].id, users[referrerAddress].id);
    }
    
    
    function claimDivs() public returns(bool) {
        uint _divAmount = viewDivs(msg.sender);
        require(_divAmount > 0, "No divs available");
        sendDivs(msg.sender);
    }

    function sendDivs(address _user) internal returns(bool) {
        uint _divAmount = viewDivs(_user);
        divPot -= _divAmount;
        users[_user].divClaimMark = totalDividendPoints;
        users[_user].divsClaimed += _divAmount;
        
        return address(uint160(_user)).send(_divAmount);    
    }


    function viewDivsPercent(address _player) public view returns(uint divsPercent) {
        return  users[_player].totalPlayerDivPoints * 100 / calcDivs;
    }

    function viewDivs(address _player) public view returns(uint divsAvailable) {
        uint newDividendPoints = totalDividendPoints - users[_player].divClaimMark;
        return (users[_player].totalPlayerDivPoints * newDividendPoints) / pointMultiplier;
    }


    function updateX3Referrer(address userAddress, address referrerAddress, uint8 level) private {
        users[referrerAddress].x3Matrix[level].referrals.push(userAddress);

        if (users[referrerAddress].x3Matrix[level].referrals.length < 3) {
            emit NewUserPlace(userAddress, referrerAddress, 1, level, uint8(users[referrerAddress].x3Matrix[level].referrals.length));
            return sendPartnerTRX(referrerAddress, userAddress, 1, level);
        }
        
        emit NewUserPlace(userAddress, referrerAddress, 1, level, 3);
        users[referrerAddress].x3Matrix[level].referrals = new address[](0);
        if (!users[referrerAddress].activeX3Levels[level+1] && level != LAST_LEVEL) {
            users[referrerAddress].x3Matrix[level].blocked = true;
        }

        // Short-circuits to save Energy
        if (referrerAddress != owner) {
            address freeReferrerAddress = findFreeX3Referrer(referrerAddress, level);
            if (users[referrerAddress].x3Matrix[level].currentReferrer != freeReferrerAddress) {
                users[referrerAddress].x3Matrix[level].currentReferrer = freeReferrerAddress;
            }
            
            users[referrerAddress].x3Matrix[level].reinvestCount++;
            emit Reinvest(referrerAddress, freeReferrerAddress, userAddress, 1, level);
            updateX3Referrer(referrerAddress, freeReferrerAddress, level);
        } else {
            sendPartnerTRX(owner, userAddress, 1, level);
            users[owner].x3Matrix[level].reinvestCount++;
            emit Reinvest(owner, address(0), userAddress, 1, level);
        }
    }


    function updateX6Referrer(address userAddress, address referrerAddress, uint8 level) private {

        require(users[referrerAddress].activeX6Levels[level], "500. Referrer level is inactive");

        if (users[referrerAddress].x6Matrix[level].firstLevelReferrals.length < 2) { 
            users[referrerAddress].x6Matrix[level].firstLevelReferrals.push(userAddress); 
            emit NewUserPlace(userAddress, referrerAddress, 2, level, uint8(users[referrerAddress].x6Matrix[level].firstLevelReferrals.length));
            
            users[userAddress].x6Matrix[level].currentReferrer = referrerAddress; 

            // Short-circuits to save Energy
            if (referrerAddress == owner) {
                return sendPartnerTRX(referrerAddress, userAddress, 2, level);
            }
            
            address ref = users[referrerAddress].x6Matrix[level].currentReferrer;        
            users[ref].x6Matrix[level].secondLevelReferrals.push(userAddress);  
            
            uint len = users[ref].x6Matrix[level].firstLevelReferrals.length; 
            
            if ((len == 2) && 
                (users[ref].x6Matrix[level].firstLevelReferrals[0] == referrerAddress) &&
                (users[ref].x6Matrix[level].firstLevelReferrals[1] == referrerAddress)) {
                if (users[referrerAddress].x6Matrix[level].firstLevelReferrals.length == 1) {
                    emit NewUserPlace(userAddress, ref, 2, level, 5);
                } else {
                    emit NewUserPlace(userAddress, ref, 2, level, 6);
                }
            }  else if ((len == 1 || len == 2) &&
                    users[ref].x6Matrix[level].firstLevelReferrals[0] == referrerAddress) {
                if (users[referrerAddress].x6Matrix[level].firstLevelReferrals.length == 1) {
                    emit NewUserPlace(userAddress, ref, 2, level, 3);
                } else {
                    emit NewUserPlace(userAddress, ref, 2, level, 4);
                }
            } else if (len == 2 && users[ref].x6Matrix[level].firstLevelReferrals[1] == referrerAddress) {
                if (users[referrerAddress].x6Matrix[level].firstLevelReferrals.length == 1) {
                    emit NewUserPlace(userAddress, ref, 2, level, 5);
                } else {
                    emit NewUserPlace(userAddress, ref, 2, level, 6); 
                }
            }
            
            return updateX6ReferrerSecondLevel(userAddress, ref, level);
        }
        
        users[referrerAddress].x6Matrix[level].secondLevelReferrals.push(userAddress);

        if (users[referrerAddress].x6Matrix[level].closedPart != address(0)) {
            if ((users[referrerAddress].x6Matrix[level].firstLevelReferrals[0] == 
                users[referrerAddress].x6Matrix[level].firstLevelReferrals[1]) &&
                (users[referrerAddress].x6Matrix[level].firstLevelReferrals[0] ==
                users[referrerAddress].x6Matrix[level].closedPart)) {

                updateX6(userAddress, referrerAddress, level, true);
                return updateX6ReferrerSecondLevel(userAddress, referrerAddress, level);
            } else if (users[referrerAddress].x6Matrix[level].firstLevelReferrals[0] == 
                users[referrerAddress].x6Matrix[level].closedPart) {
                updateX6(userAddress, referrerAddress, level, true);
                return updateX6ReferrerSecondLevel(userAddress, referrerAddress, level);
            } else {
                updateX6(userAddress, referrerAddress, level, false);
                return updateX6ReferrerSecondLevel(userAddress, referrerAddress, level);
            }
        }

        if (users[referrerAddress].x6Matrix[level].firstLevelReferrals[1] == userAddress) {
            updateX6(userAddress, referrerAddress, level, false);
            return updateX6ReferrerSecondLevel(userAddress, referrerAddress, level);
        } else if (users[referrerAddress].x6Matrix[level].firstLevelReferrals[0] == userAddress) {
            updateX6(userAddress, referrerAddress, level, true);
            return updateX6ReferrerSecondLevel(userAddress, referrerAddress, level);
        }
        
        if (users[users[referrerAddress].x6Matrix[level].firstLevelReferrals[0]].x6Matrix[level].firstLevelReferrals.length <= 
            users[users[referrerAddress].x6Matrix[level].firstLevelReferrals[1]].x6Matrix[level].firstLevelReferrals.length) {
            updateX6(userAddress, referrerAddress, level, false);
        } else {
            updateX6(userAddress, referrerAddress, level, true);
        }
        
        updateX6ReferrerSecondLevel(userAddress, referrerAddress, level);
    }

    function updateX6(address userAddress, address referrerAddress, uint8 level, bool x2) private {
        if (!x2) {
            users[users[referrerAddress].x6Matrix[level].firstLevelReferrals[0]].x6Matrix[level].firstLevelReferrals.push(userAddress);
            emit NewUserPlace(userAddress, users[referrerAddress].x6Matrix[level].firstLevelReferrals[0], 2, level, uint8(users[users[referrerAddress].x6Matrix[level].firstLevelReferrals[0]].x6Matrix[level].firstLevelReferrals.length));
            emit NewUserPlace(userAddress, referrerAddress, 2, level, 2 + uint8(users[users[referrerAddress].x6Matrix[level].firstLevelReferrals[0]].x6Matrix[level].firstLevelReferrals.length));
            
            users[userAddress].x6Matrix[level].currentReferrer = users[referrerAddress].x6Matrix[level].firstLevelReferrals[0];
        } else {
            users[users[referrerAddress].x6Matrix[level].firstLevelReferrals[1]].x6Matrix[level].firstLevelReferrals.push(userAddress);
            emit NewUserPlace(userAddress, users[referrerAddress].x6Matrix[level].firstLevelReferrals[1], 2, level, uint8(users[users[referrerAddress].x6Matrix[level].firstLevelReferrals[1]].x6Matrix[level].firstLevelReferrals.length));
            emit NewUserPlace(userAddress, referrerAddress, 2, level, 4 + uint8(users[users[referrerAddress].x6Matrix[level].firstLevelReferrals[1]].x6Matrix[level].firstLevelReferrals.length));
            
            users[userAddress].x6Matrix[level].currentReferrer = users[referrerAddress].x6Matrix[level].firstLevelReferrals[1];
        }
    }
    
    function updateX6ReferrerSecondLevel(address userAddress, address referrerAddress, uint8 level) private {
        if (users[referrerAddress].x6Matrix[level].secondLevelReferrals.length < 4) {
            
            return sendPartnerTRX(referrerAddress, userAddress, 2, level);
        }
        
        address[] memory x6 = users[users[referrerAddress].x6Matrix[level].currentReferrer].x6Matrix[level].firstLevelReferrals;
        
        if (x6.length == 2) {
            if (x6[0] == referrerAddress ||
                x6[1] == referrerAddress) {
                users[users[referrerAddress].x6Matrix[level].currentReferrer].x6Matrix[level].closedPart = referrerAddress;
            } else if (x6.length == 1) {
                if (x6[0] == referrerAddress) {
                    users[users[referrerAddress].x6Matrix[level].currentReferrer].x6Matrix[level].closedPart = referrerAddress;
                }
            }
        }
        
        users[referrerAddress].x6Matrix[level].firstLevelReferrals = new address[](0);
        users[referrerAddress].x6Matrix[level].secondLevelReferrals = new address[](0);
        users[referrerAddress].x6Matrix[level].closedPart = address(0);

        if (!users[referrerAddress].activeX6Levels[level+1] && level != LAST_LEVEL) {
            users[referrerAddress].x6Matrix[level].blocked = true;
        }

        users[referrerAddress].x6Matrix[level].reinvestCount++;
        
        // Short-circuits to save Energy
        if (referrerAddress != owner) {
            address freeReferrerAddress = findFreeX6Referrer(referrerAddress, level);

            emit Reinvest(referrerAddress, freeReferrerAddress, userAddress, 2, level);
            updateX6Referrer(referrerAddress, freeReferrerAddress, level);
        } else {
            emit Reinvest(owner, address(0), userAddress, 2, level);
            sendPartnerTRX(owner, userAddress, 2, level);
        }
    }
    
    function findFreeX3Referrer(address userAddress, uint8 level) public view returns(address) {
        while (true) {
            if (users[users[userAddress].referrer].activeX3Levels[level]) {
                return users[userAddress].referrer;
            }
            
            userAddress = users[userAddress].referrer;
        }
    }
    
    function findFreeX6Referrer(address userAddress, uint8 level) public view returns(address) {
        while (true) {
            if (users[users[userAddress].referrer].activeX6Levels[level]) {
                return users[userAddress].referrer;
            }
            
            userAddress = users[userAddress].referrer;
        }
    }


    

    function usersActiveLevelsAll(address userAddress) public view returns(bool[13] memory x3LevelsActive, bool[13] memory x6LevelsActive) {
        for(uint8 c=1; c< 13; c++){
            x3LevelsActive[c] = users[userAddress].activeX3Levels[c];
            x6LevelsActive[c] = users[userAddress].activeX6Levels[c];
        }
    }
    
    function usersHighestLevels(address userAddress) public view returns(uint8 x3HighestLevel, uint8 x6HighestLevel) {
        for(uint8 c=1; c< 13; c++){
            if(users[userAddress].activeX3Levels[c])
                x3HighestLevel = c;
                
            if(users[userAddress].activeX6Levels[c])
                x6HighestLevel = c;
        }     
    }

    function usersActiveX6Levels(address userAddress, uint8 level) public view returns(bool) {
        return users[userAddress].activeX6Levels[level];
    }

    function userEarnings(address userAddress, uint8 level) public view returns(uint x3MatrixEarnings, uint x6MatrixEarnings) {
        x3MatrixEarnings = users[userAddress].x3MatrixEarnings[level];
        x6MatrixEarnings = users[userAddress].x6MatrixEarnings[level];
    }

    function userEarningsAll(address userAddress) public view returns(uint[13] memory x3MatrixEarnings, uint[13] memory x6MatrixEarnings){
    
        for(uint8 c=1; c< 13; c++){
            x3MatrixEarnings[c] = users[userAddress].x3MatrixEarnings[c];
            x6MatrixEarnings[c] = users[userAddress].x6MatrixEarnings[c];
        }
    }

    function usersX3Matrix(address userAddress, uint8 level) public view returns(address, address[] memory, bool) {
        return (users[userAddress].x3Matrix[level].currentReferrer,
                users[userAddress].x3Matrix[level].referrals,
                users[userAddress].x3Matrix[level].blocked);
    }


    function usersX6Matrix(address userAddress, uint8 level) public view returns(address, address[] memory, address[] memory, bool, address) {
        return (users[userAddress].x6Matrix[level].currentReferrer,
                users[userAddress].x6Matrix[level].firstLevelReferrals,
                users[userAddress].x6Matrix[level].secondLevelReferrals,
                users[userAddress].x6Matrix[level].blocked,
                users[userAddress].x6Matrix[level].closedPart);
    }



    
    function isUserExists(address user) public view returns (bool) {
        return (users[user].id != 0);
    }

    function findTRXReceiver(address userAddress, address _from, uint8 matrix, uint8 level) private returns(address, bool) {
        address receiver = userAddress;
        bool isExtraDividends;
        if (matrix == 1) {
            while (true) {
                if (users[receiver].x3Matrix[level].blocked) {
                    emit MissedEthReceive(receiver, _from, 1, level);
                    isExtraDividends = true;
                    receiver = users[receiver].x3Matrix[level].currentReferrer;
                } else {
                    return (receiver, isExtraDividends);
                }
            }
        } else {
            while (true) {
                if (users[receiver].x6Matrix[level].blocked) {
                    emit MissedEthReceive(receiver, _from, 2, level);
                    isExtraDividends = true;
                    receiver = users[receiver].x6Matrix[level].currentReferrer;
                } else {
                    return (receiver, isExtraDividends);
                }
            }
        }
    }

    function SetMyToken(address _token) public {
        require(msg.sender == admin, "Only Admin");
        myToken = IERC20(_token);
    }

    function sendPartnerTRX(address userAddress, address _from, uint8 matrix, uint8 level) private {

        (address receiver, bool isExtraDividends) = findTRXReceiver(userAddress, _from, matrix, level);
        uint deductedPrice = levelPrice[level] - (levelPrice[level] * DIV_PERCENT / DIV_DIVISOR);
        
        address(uint160(receiver)).transfer(deductedPrice);
        myToken.transfer(receiver, deductedPrice * 1);

        if(matrix == 1)
            users[receiver].x3MatrixEarnings[level] += deductedPrice;
        else
            users[receiver].x6MatrixEarnings[level] += deductedPrice;

        
        if (isExtraDividends) {
            emit SentExtraEthDividends(_from, receiver, matrix, level);
        }
    }
    

    
    function bytesToAddress(bytes memory bys) private pure returns (address addr) {
        assembly {
            addr := mload(add(bys, 20))
        }
    }
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"ownerAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint8","name":"matrix","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"level","type":"uint8"}],"name":"MissedEthReceive","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"referrer","type":"address"},{"indexed":false,"internalType":"uint8","name":"matrix","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"level","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"place","type":"uint8"}],"name":"NewUserPlace","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"referrer","type":"address"},{"indexed":true,"internalType":"uint256","name":"userId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"referrerId","type":"uint256"}],"name":"Registration","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"currentReferrer","type":"address"},{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint8","name":"matrix","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"level","type":"uint8"}],"name":"Reinvest","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint8","name":"matrix","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"level","type":"uint8"}],"name":"SentExtraEthDividends","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"referrer","type":"address"},{"indexed":false,"internalType":"uint8","name":"matrix","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"level","type":"uint8"}],"name":"Upgrade","type":"event"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":true,"inputs":[],"name":"DIV_PERCENT","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"LAST_LEVEL","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"SetMyToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint8","name":"matrix","type":"uint8"},{"internalType":"uint8","name":"level","type":"uint8"}],"name":"buyNewLevel","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"claimDivs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"divPot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"uint8","name":"level","type":"uint8"}],"name":"findFreeX3Referrer","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"uint8","name":"level","type":"uint8"}],"name":"findFreeX6Referrer","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"gameOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"idToAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"isUserExists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lastUserId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint8","name":"","type":"uint8"}],"name":"levelPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"myToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"referrerAddress","type":"address"}],"name":"registrationExt","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"totalDividendPoints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalDivs","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"bool","name":"_gameOpen","type":"bool"}],"name":"updateGameOpen","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"uint8","name":"level","type":"uint8"}],"name":"userEarnings","outputs":[{"internalType":"uint256","name":"x3MatrixEarnings","type":"uint256"},{"internalType":"uint256","name":"x6MatrixEarnings","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"userAddress","type":"address"}],"name":"userEarningsAll","outputs":[{"internalType":"uint256[13]","name":"x3MatrixEarnings","type":"uint256[13]"},{"internalType":"uint256[13]","name":"x6MatrixEarnings","type":"uint256[13]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"users","outputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"address","name":"referrer","type":"address"},{"internalType":"uint256","name":"partnersCount","type":"uint256"},{"internalType":"uint256","name":"divClaimMark","type":"uint256"},{"internalType":"uint256","name":"totalPlayerDivPoints","type":"uint256"},{"internalType":"uint256","name":"divsClaimed","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"userAddress","type":"address"}],"name":"usersActiveLevelsAll","outputs":[{"internalType":"bool[13]","name":"x3LevelsActive","type":"bool[13]"},{"internalType":"bool[13]","name":"x6LevelsActive","type":"bool[13]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"uint8","name":"level","type":"uint8"}],"name":"usersActiveX6Levels","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"userAddress","type":"address"}],"name":"usersHighestLevels","outputs":[{"internalType":"uint8","name":"x3HighestLevel","type":"uint8"},{"internalType":"uint8","name":"x6HighestLevel","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"uint8","name":"level","type":"uint8"}],"name":"usersX3Matrix","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address[]","name":"","type":"address[]"},{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"uint8","name":"level","type":"uint8"}],"name":"usersX6Matrix","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address[]","name":"","type":"address[]"},{"internalType":"address[]","name":"","type":"address[]"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_player","type":"address"}],"name":"viewDivs","outputs":[{"internalType":"uint256","name":"divsAvailable","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_player","type":"address"}],"name":"viewDivsPercent","outputs":[{"internalType":"uint256","name":"divsPercent","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"}]

6080604052600080546001600160a01b031916737a4f192d4cf41a2db5edbc48d5d0fedafa8b723b1790556003805460ff1916600117905560026008553480156200004957600080fd5b5060405162003b6f38038062003b6f833981810160405260208110156200006f57600080fd5b5051600a80546001600160a01b031916331790556001600052600b602052671bc16d674ec800007f72c6bfb7988af3a1efa6568f02a999bc52252641c659d85961ca3d372b57d5cf5560025b600c60ff821611620000f75760ff600019820181166000908152600b6020526040808220549284168252902060029091029055600101620000bb565b50600980546001600160a01b0319166001600160a01b0383161790556200011d62000244565b506040805160c081018252600180825260006020808401828152848601838152606086018481526080870185815260a088018681526001600160a01b038b81168089528988529a88208a5181559551868a018054919092166001600160a01b0319918216179091559351600280870191909155925160098601559051600a85015551600b909301929092559284905290527fe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e08054909116909317909255905b600c60ff8216116200023b576001600160a01b038316600090815260016020818152604080842060ff86168552600381018352818520805460ff19908116861790915560049091019092529092208054909216811790915501620001dc565b50505062000283565b6040518060c001604052806000815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001600081525090565b6138dc80620002936000396000f3fe6080604052600436106101c25760003560e01c80637bffe9d8116100f7578063be389d5711610095578063e06e8dbd11610064578063e06e8dbd14610889578063ecabdf79146108c5578063fa45323d146108f2578063fe10c4191461092e576101c2565b8063be389d57146107a6578063c8d6b7f7146107ce578063cd96f22214610801578063db58c62614610856576101c2565b80639cc102fc116100d15780639cc102fc146105ee578063a87430ba146106e7578063b2f7543a14610755578063b8fcf93714610791576101c2565b80637bffe9d81461051b57806383ba31b2146105305780638da5cb5b146105d9576101c2565b80632ae34dc611610164578063509222cd1161013e578063509222cd146103f7578063570354c51461042a578063689493721461045d578063797eee24146104f5576101c2565b80632ae34dc6146103a1578063348d4487146103cd5780633cca779b146103e2576101c2565b80632113342d116101a05780632113342d146102b657806327d205ab146102dd57806329c70400146103305780632a2d0c471461035b576101c2565b80630388b4a31461022e5780630e3d0d351461026157806319aa70e71461028d575b366101e3576009546101de9033906001600160a01b0316610943565b61022c565b61022c336102276000368080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610d9e92505050565b610943565b005b34801561023a57600080fd5b5061022c6004803603602081101561025157600080fd5b50356001600160a01b0316610da5565b34801561026d57600080fd5b50610276610e13565b6040805161ffff9092168252519081900360200190f35b34801561029957600080fd5b506102a2610e19565b604080519115158252519081900360200190f35b3480156102c257600080fd5b506102cb610e7e565b60408051918252519081900360200190f35b3480156102e957600080fd5b506103106004803603602081101561030057600080fd5b50356001600160a01b0316610e84565b6040805160ff938416815291909216602082015281519081900390910190f35b34801561033c57600080fd5b50610345610f14565b6040805160ff9092168252519081900360200190f35b34801561036757600080fd5b506103856004803603602081101561037e57600080fd5b5035610f19565b604080516001600160a01b039092168252519081900360200190f35b3480156103ad57600080fd5b5061022c600480360360208110156103c457600080fd5b50351515610f34565b3480156103d957600080fd5b506102cb610f93565b3480156103ee57600080fd5b506102a2610f99565b34801561040357600080fd5b506102a26004803603602081101561041a57600080fd5b50356001600160a01b0316610fa2565b34801561043657600080fd5b506102cb6004803603602081101561044d57600080fd5b50356001600160a01b0316610fbf565b34801561046957600080fd5b506104906004803603602081101561048057600080fd5b50356001600160a01b0316610ff8565b60405180836101a080838360005b838110156104b657818101518382015260200161049e565b5050505090500182600d60200280838360005b838110156104e15781810151838201526020016104c9565b505050509050019250505060405180910390f35b61022c6004803603602081101561050b57600080fd5b50356001600160a01b03166110ad565b34801561052757600080fd5b506102cb61110b565b34801561053c57600080fd5b5061056c6004803603604081101561055357600080fd5b5080356001600160a01b0316906020013560ff16611111565b604080516001600160a01b0385168152821515918101919091526060602080830182815285519284019290925284516080840191868101910280838360005b838110156105c35781810151838201526020016105ab565b5050505090500194505050505060405180910390f35b3480156105e557600080fd5b506103856111bb565b3480156105fa57600080fd5b5061062a6004803603604081101561061157600080fd5b5080356001600160a01b0316906020013560ff166111ca565b604080516001600160a01b03808816825284151560608301528316608082015260a060208083018281528851928401929092528751929391929184019160c0850191898101910280838360005b8381101561068f578181015183820152602001610677565b50505050905001838103825286818151815260200191508051906020019060200280838360005b838110156106ce5781810151838201526020016106b6565b5050505090500197505050505050505060405180910390f35b3480156106f357600080fd5b5061071a6004803603602081101561070a57600080fd5b50356001600160a01b03166112e7565b604080519687526001600160a01b039095166020870152858501939093526060850191909152608084015260a0830152519081900360c00190f35b34801561076157600080fd5b506102a26004803603604081101561077857600080fd5b5080356001600160a01b0316906020013560ff16611327565b34801561079d57600080fd5b5061038561135d565b61022c600480360360408110156107bc57600080fd5b5060ff8135811691602001351661136c565b3480156107da57600080fd5b50610490600480360360208110156107f157600080fd5b50356001600160a01b0316611a7a565b34801561080d57600080fd5b5061083d6004803603604081101561082457600080fd5b5080356001600160a01b0316906020013560ff16611b25565b6040805192835260208301919091528051918290030190f35b34801561086257600080fd5b506102cb6004803603602081101561087957600080fd5b50356001600160a01b0316611b62565b34801561089557600080fd5b50610385600480360360408110156108ac57600080fd5b5080356001600160a01b0316906020013560ff16611b95565b3480156108d157600080fd5b506102cb600480360360208110156108e857600080fd5b503560ff16611c24565b3480156108fe57600080fd5b506103856004803603604081101561091557600080fd5b5080356001600160a01b0316906020013560ff16611c36565b34801561093a57600080fd5b506102cb611cc5565b34673782dace9d9000001461099f576040805162461bcd60e51b815260206004820152601760248201527f726567697374726174696f6e20636f7374203420504f4c000000000000000000604482015290519081900360640190fd5b6109a882610fa2565b156109e8576040805162461bcd60e51b815260206004820152600b60248201526a757365722065786973747360a81b604482015290519081900360640190fd5b6109f181610fa2565b610a38576040805162461bcd60e51b81526020600482015260136024820152727265666572726572206e6f742065786973747360681b604482015290519081900360640190fd5b813b63ffffffff811615610a8a576040805162461bcd60e51b815260206004820152601460248201527318d85b9b9bdd08189948184818dbdb9d1c9858dd60621b604482015290519081900360640190fd5b610a9261375a565b506040805160c0810182526008805482526001600160a01b0385811660208085018281526000868801818152600554606089019081526080890183815260a08a018481528e891680865260018089528d87208d5181559751888201805491909c166001600160a01b0319918216178c5595516002808a0191909155945160098901559251600a88019081559151600b8801558a5486528388528c862080548616909117905588549093168717909755868352600384018552898320805460ff199081168917909155600494850186528a84208054909116881790559386905280546103e83461019002049081019091558254810190925560068054909201909155845484019094559083529382209093018054840190559091610bb6908690611c36565b90506000610bc5866001611b95565b6009549091506001600160a01b0383811691161480610bf157506009546001600160a01b038281169116145b15610caf57600954600090610c0e906001600160a01b0316610fbf565b1115610c2f57600954610c29906001600160a01b0316611ccb565b50610c50565b600554600980546001600160a01b0316600090815260016020526040902001555b6009546001600160a01b03166000908152600160205260409020600a0180546103e86101903402049081019091556007805460028302019081905590670de0b6b3a76400000281610c9d57fe5b60058054929091049091019055610ce2565b600780546103e861019034020490810191829055670de0b6b3a76400000281610cd457fe5b600580549290910490910190555b6001600160a01b03868116600090815260016020818152604080842083855260050190915290912080546001600160a01b03191692851692909217909155610d2d9087908490611d31565b610d39868260016120a0565b6001600160a01b03808716600081815260016020908152604080832054948a168084529281902054815190815290519293927f309bb360e8b69c23937ccc5fb01f9aeeead1c95a99604e175113ff82f2b1723a929181900390910190a4505050505050565b6014015190565b600a546001600160a01b03163314610df1576040805162461bcd60e51b815260206004820152600a60248201526927b7363c9020b236b4b760b11b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b61019081565b600080610e2533610fbf565b905060008111610e70576040805162461bcd60e51b81526020600482015260116024820152704e6f206469767320617661696c61626c6560781b604482015290519081900360640190fd5b610e7933611ccb565b505090565b60055481565b60008060015b600d8160ff161015610f0e576001600160a01b038416600090815260016020908152604080832060ff80861685526003909101909252909120541615610ece578092505b6001600160a01b038416600090815260016020908152604080832060ff80861685526004909101909252909120541615610f06578091505b600101610e8a565b50915091565b600c81565b6002602052600090815260409020546001600160a01b031681565b600a546001600160a01b03163314610f80576040805162461bcd60e51b815260206004820152600a60248201526927b7363c9020b236b4b760b11b604482015290519081900360640190fd5b6003805460ff1916911515919091179055565b60085481565b60035460ff1681565b6001600160a01b0316600090815260016020526040902054151590565b6001600160a01b031660009081526001602052604090206009810154600554600a90920154670de0b6b3a7640000919092039091020490565b611000613799565b611008613799565b60015b600d8160ff161015610f0e576001600160a01b038416600090815260016020908152604080832060ff808616808652600390920190935292205416908490600d811061105357fe5b911515602092830291909101526001600160a01b038516600090815260018252604080822060ff8086168085526004909201909452912054909116908390600d811061109b57fe5b9115156020909202015260010161100b565b60035460ff1615156001146110fe576040805162461bcd60e51b815260206004820152601260248201527147616d65206e6f7420796574206f70656e2160701b604482015290519081900360640190fd5b6111083382610943565b50565b60065481565b6001600160a01b03828116600090815260016020818152604080842060ff8781168652600590910183528185208054600282015491909501805484518187028101870190955280855296976060978997909116959194929093169284918301828280156111a757602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611189575b505050505091509250925092509250925092565b6009546001600160a01b031681565b6001600160a01b03828116600090815260016020818152604080842060ff878116865260069091018352818520805460038201546005830154968301805486518189028101890190975280875298996060998a998c998a9996841698949760020196959094169492169286919083018282801561127057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611252575b50505050509350828054806020026020016040519081016040528092919081815260200182805480156112cc57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116112ae575b50505050509250945094509450945094509295509295909350565b600160208190526000918252604090912080549181015460028201546009830154600a840154600b909401546001600160a01b0390931693919290919086565b6001600160a01b038216600090815260016020908152604080832060ff8086168552600490910190925290912054165b92915050565b6000546001600160a01b031681565b60035460ff1615156001146113bd576040805162461bcd60e51b815260206004820152601260248201527147616d65206e6f7420796574206f70656e2160701b604482015290519081900360640190fd5b6113c633610fa2565b6114015760405162461bcd60e51b81526004018080602001828103825260238152602001806138856023913960400191505060405180910390fd5b8160ff166001148061141657508160ff166002145b611458576040805162461bcd60e51b815260206004820152600e60248201526d0d2dcecc2d8d2c840dac2e8e4d2f60931b604482015290519081900360640190fd5b60ff81166000908152600b602052604090205434146114ae576040805162461bcd60e51b815260206004820152600d60248201526c696e76616c696420707269636560981b604482015290519081900360640190fd5b60018160ff161180156114c55750600c60ff821611155b611506576040805162461bcd60e51b815260206004820152600d60248201526c1a5b9d985b1a59081b195d995b609a1b604482015290519081900360640190fd5b600061151133610fbf565b11156115265761152033611ccb565b5061153d565b600554336000908152600160205260409020600901555b336000908152600160208190526040909120600a0180546103e8610190340204908101909155600480548201905560068054909101905560ff8316141561180d5733600090815260016020908152604080832060ff808616855260039091019092529091205416156115f0576040805162461bcd60e51b81526020600482015260176024820152761b195d995b08185b1c9958591e481858dd1a5d985d1959604a1b604482015290519081900360640190fd5b33600090815260016020908152604080832060ff60001986018116855260059091019092529091206002015416156116525733600090815260016020908152604080832060ff60001986011684526005019091529020600201805460ff191690555b600061165e3383611c36565b6009549091506001600160a01b03808316911614156117305760095460009061168f906001600160a01b0316610fbf565b11156116b0576009546116aa906001600160a01b0316611ccb565b506116d1565b600554600980546001600160a01b0316600090815260016020526040902001555b6009546001600160a01b03166000908152600160205260409020600a0180546103e86101903402049081019091556007805460028302019081905590670de0b6b3a7640000028161171e57fe5b60058054929091049091019055611763565b600780546103e861019034020490810191829055670de0b6b3a7640000028161175557fe5b600580549290910490910190555b33600081815260016020818152604080842060ff8816855260058101835281852080546001600160a01b0319166001600160a01b038916179055600301909152909120805460ff191690911790556117bc908284611d31565b604080516001815260ff8416602082015281516001600160a01b0384169233927f18a92df19fd94d6cfff209966673a5ca05a1c8e2bb68e097fce2bdc2ed811119929081900390910190a350611a76565b33600090815260016020908152604080832060ff8086168552600490910190925290912054161561187f576040805162461bcd60e51b81526020600482015260176024820152761b195d995b08185b1c9958591e481858dd1a5d985d1959604a1b604482015290519081900360640190fd5b33600090815260016020908152604080832060ff60001986018116855260069091019092529091206003015416156118e15733600090815260016020908152604080832060ff60001986011684526006019091529020600301805460ff191690555b60006118ed3383611b95565b6009549091506001600160a01b03808316911614156119bf5760095460009061191e906001600160a01b0316610fbf565b111561193f57600954611939906001600160a01b0316611ccb565b50611960565b600554600980546001600160a01b0316600090815260016020526040902001555b6009546001600160a01b03166000908152600160205260409020600a0180546103e86101903402049081019091556007805460028302019081905590670de0b6b3a764000002816119ad57fe5b600580549290910490910190556119f2565b600780546103e861019034020490810191829055670de0b6b3a764000002816119e457fe5b600580549290910490910190555b33600081815260016020818152604080842060ff88168552600401909152909120805460ff19169091179055611a299082846120a0565b604080516002815260ff8416602082015281516001600160a01b0384169233927f18a92df19fd94d6cfff209966673a5ca05a1c8e2bb68e097fce2bdc2ed811119929081900390910190a3505b5050565b611a82613799565b611a8a613799565b60015b600d8160ff161015610f0e576001600160a01b038416600090815260016020908152604080832060ff8516808552600790910190925290912054908490600d8110611ad457fe5b602090810291909101919091526001600160a01b038516600090815260018252604080822060ff85168084526008909101909352902054908390600d8110611b1857fe5b6020020152600101611a8d565b6001600160a01b0391909116600090815260016020908152604080832060ff90941683526007840182528083205460089094019091529020549091565b6007546001600160a01b0382166000908152600160205260408120600a015490919060640281611b8e57fe5b0492915050565b60005b6001600160a01b03808416600090815260016020818152604080842090920154909316825280822060ff808716845260049091019093529020541615611bfd57506001600160a01b038083166000908152600160208190526040909120015416611357565b6001600160a01b039283166000908152600160208190526040909120015490921691611b98565b600b6020526000908152604090205481565b60005b6001600160a01b03808416600090815260016020818152604080842090920154909316825280822060ff808716845260039091019093529020541615611c9e57506001600160a01b038083166000908152600160208190526040909120015416611357565b6001600160a01b039283166000908152600160208190526040909120015490921691611c39565b60045481565b600080611cd783610fbf565b6004805482900390556005546001600160a01b0385166000818152600160205260408082206009810194909455600b90930180548501905591519293509183156108fc0291849190818181858888f1979650505050505050565b6001600160a01b03828116600090815260016020818152604080842060ff87168086526005909101835290842083018054938401815580855291842090920180546001600160a01b0319169488169490941790935590525460031115611e03576001600160a01b03808316600081815260016020818152604080842060ff8089168087526005909201845294829020840154825194855292840152921681830152905191928616916000805160206138458339815191529181900360600190a3611dfe8284600184612a35565b61209b565b604080516001815260ff8316602082015260038183015290516001600160a01b0380851692908616916000805160206138458339815191529181900360600190a360408051600080825260208083018085526001600160a01b0387168352600180835285842060ff88168552600501909252939091209151611e8a939290910191906137b8565b506001600160a01b038216600090815260016020818152604080842060ff938601841685526003019091529091205416158015611ecb575060ff8116600c14155b15611f09576001600160a01b038216600090815260016020818152604080842060ff86168552600501909152909120600201805460ff191690911790555b6009546001600160a01b03838116911614612016576000611f2a8383611c36565b6001600160a01b03848116600090815260016020908152604080832060ff88168452600501909152902054919250828116911614611fa2576001600160a01b03838116600090815260016020908152604080832060ff87168452600501909152902080546001600160a01b0319169183169190911790555b6001600160a01b03808416600081815260016020818152604080842060ff8916808652600590910183529381902060030180548401905580519283529082019290925281518885169486169392600080516020613865833981519152928290030190a4612010838284611d31565b5061209b565b60095461202f906001600160a01b031684600184612a35565b600980546001600160a01b03908116600090815260016020818152604080842060ff881680865260059091018352818520600301805485019055955481519384529183019590955284518885169593949190911692600080516020613865833981519152928290030190a45b505050565b6001600160a01b038216600090815260016020908152604080832060ff808616855260049091019092529091205416612120576040805162461bcd60e51b815260206004820152601f60248201527f3530302e205265666572726572206c6576656c20697320696e61637469766500604482015290519081900360640190fd5b6001600160a01b038216600090815260016020818152604080842060ff86168552600601909152909120015460021115612686576001600160a01b03828116600081815260016020818152604080842060ff8881168087526006909201845282862085018054958601815580875284872090950180546001600160a01b031916988c16988917905594819052925481516002815292830193909352919092168282015251919291600080516020613845833981519152916060908290030190a36001600160a01b03838116600090815260016020908152604080832060ff86168452600601909152902080546001600160a01b031916848316908117909155600954909116141561223857611dfe8284600284612a35565b6001600160a01b03828116600090815260016020818152604080842060ff871680865260069182018452828620548716808752858552838720828852909201845291852060028082018054808801825590885294872090940180546001600160a01b031916978b1697909717909655935292015490918114801561230857506001600160a01b03828116600090815260016020818152604080842060ff891685526006019091528220018054928716929091906122f157fe5b6000918252602090912001546001600160a01b0316145b801561236457506001600160a01b03828116600090815260016020818152604080842060ff891685526006019091529091208101805492871692909190811061234d57fe5b6000918252602090912001546001600160a01b0316145b15612429576001600160a01b038416600090815260016020818152604080842060ff8816855260060190915290912081015414156123e257604080516002815260ff8516602082015260058183015290516001600160a01b0380851692908816916000805160206138458339815191529181900360600190a3612424565b604080516002815260ff8516602082015260068183015290516001600160a01b0380851692908816916000805160206138458339815191529181900360600190a35b612674565b80600114806124385750806002145b801561249057506001600160a01b03828116600090815260016020818152604080842060ff8916855260060190915282200180549287169290919061247957fe5b6000918252602090912001546001600160a01b0316145b15612554576001600160a01b038416600090815260016020818152604080842060ff88168552600601909152909120810154141561250e57604080516002815260ff8516602082015260038183015290516001600160a01b0380851692908816916000805160206138458339815191529181900360600190a3612424565b604080516002815260ff8516602082015260048183015290516001600160a01b0380851692908816916000805160206138458339815191529181900360600190a3612674565b8060021480156125b457506001600160a01b03828116600090815260016020818152604080842060ff891685526006019091529091208101805492871692909190811061259d57fe5b6000918252602090912001546001600160a01b0316145b15612674576001600160a01b038416600090815260016020818152604080842060ff88168552600601909152909120810154141561263257604080516002815260ff8516602082015260058183015290516001600160a01b0380851692908816916000805160206138458339815191529181900360600190a3612674565b604080516002815260ff8516602082015260068183015290516001600160a01b0380851692908816916000805160206138458339815191529181900360600190a35b61267f858385612bf3565b505061209b565b6001600160a01b03828116600090815260016020818152604080842060ff8716808652600690910183529084206002810180549485018155855291842090920180546001600160a01b0319168886161790559152600501541615612869576001600160a01b038216600090815260016020818152604080842060ff8616855260060190915290912081018054909190811061271d57fe5b60009182526020808320909101546001600160a01b0385811684526001808452604080862060ff8816875260060190945292842090920180549290911692909161276357fe5b6000918252602090912001546001600160a01b03161480156127d757506001600160a01b03828116600090815260016020818152604080842060ff871685526006019091528220600581015491018054919093169291906127c057fe5b6000918252602090912001546001600160a01b0316145b156127f4576127e98383836001613053565b611dfe838383612bf3565b6001600160a01b03828116600090815260016020818152604080842060ff8716855260060190915282206005810154910180549190931692919061283457fe5b6000918252602090912001546001600160a01b0316141561285c576127e98383836001613053565b6127e98383836000613053565b6001600160a01b03828116600090815260016020818152604080842060ff87168552600601909152909120810180549286169290919081106128a757fe5b6000918252602090912001546001600160a01b031614156128cf576127e98383836000613053565b6001600160a01b03828116600090815260016020818152604080842060ff8716855260060190915282200180549286169290919061290957fe5b6000918252602090912001546001600160a01b03161415612931576127e98383836001613053565b6001600160a01b038216600090815260016020818152604080842060ff861685526006019091528220810180549192918390811061296b57fe5b60009182526020808320909101546001600160a01b039081168452838201949094526040928301822060ff861680845260069182018352848420600190810154968916855280845285852091855291019091529181208201805482906129cd57fe5b60009182526020808320909101546001600160a01b03168352828101939093526040918201812060ff8616825260060190925290206001015411612a1d57612a188383836000613053565b612a2a565b612a2a8383836001613053565b61209b838383612bf3565b600080612a44868686866135ba565b60ff85166000908152600b60205260408082205490519395509193506103e8610190830204909103916001600160a01b038516916108fc841502918491818181858888f19350505050158015612a9e573d6000803e3d6000fd5b50600080546040805163a9059cbb60e01b81526001600160a01b038781166004830152602482018690529151919092169263a9059cbb92604480820193602093909283900390910190829087803b158015612af857600080fd5b505af1158015612b0c573d6000803e3d6000fd5b505050506040513d6020811015612b2257600080fd5b5050600160ff86161415612b64576001600160a01b038316600090815260016020908152604080832060ff881684526007019091529020805482019055612b94565b6001600160a01b038316600090815260016020908152604080832060ff8816845260080190915290208054820190555b8115612bea576040805160ff80881682528616602082015281516001600160a01b0380871693908a16927ff0ddc65c0d411f042f723dcfa1b7d13e85a35b7b70761d447c6500411cacf328929081900390910190a35b50505050505050565b6001600160a01b038216600090815260016020908152604080832060ff8516845260060190915290206002015460041115612c3557611dfe8284600284612a35565b6001600160a01b03808316600090815260016020818152604080842060ff8716808652600691820184528286205490961685528383528185209585529490940181529183902001805483518184028101840190945280845260609392830182828015612cca57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612cac575b50505050509050805160021415612e2b57826001600160a01b031681600081518110612cf257fe5b60200260200101516001600160a01b03161480612d345750826001600160a01b031681600181518110612d2157fe5b60200260200101516001600160a01b0316145b15612d98576001600160a01b03808416600081815260016020818152604080842060ff8916808652600691820184528286205490971685529282528084209584529490910190529190912060050180546001600160a01b0319169091179055612e2b565b805160011415612e2b57826001600160a01b031681600081518110612db957fe5b60200260200101516001600160a01b03161415612e2b576001600160a01b03808416600081815260016020818152604080842060ff8916808652600691820184528286205490971685529282528084209584529490910190529190912060050180546001600160a01b03191690911790555b60408051600080825260208083018085526001600160a01b0388168352600180835285842060ff89168552600601909252939091209151612e71939290910191906137b8565b5060408051600080825260208083018085526001600160a01b03881683526001825284832060ff881684526006019091529290209051612eb792600290920191906137b8565b506001600160a01b038316600090815260016020818152604080842060ff808816865260068201845282862060050180546001600160a01b0319169055938701841685526004019091529091205416158015612f17575060ff8216600c14155b15612f55576001600160a01b038316600090815260016020818152604080842060ff87168552600601909152909120600301805460ff191690911790555b6001600160a01b03808416600081815260016020818152604080842060ff891685526006019091529091206004018054909101905560095490911614612ff3576000612fa18484611b95565b604080516002815260ff8616602082015281519293506001600160a01b0380891693818616939189169260008051602061386583398151915292908290030190a4612fed8482856120a0565b5061304d565b600954604080516002815260ff8516602082015281516001600160a01b0380891694600094911692600080516020613865833981519152929081900390910190a460095461304d906001600160a01b031685600285612a35565b50505050565b80613304576001600160a01b038316600090815260016020818152604080842060ff87168552600601909152822081018054919291829061309057fe5b6000918252602080832091909101546001600160a01b039081168452838201949094526040928301822060ff8716808452600691820183528484206001908101805480830182559086528486200180546001600160a01b0319168c89161790559589168452858352848420908452019052908120909101805490919061311257fe5b60009182526020808320909101546001600160a01b0386811684526001808452604080862060ff891687526006019094529284208301805492821694918916936000805160206138458339815191529360029389939091829061317157fe5b60009182526020808320909101546001600160a01b03168352828101939093526040918201812060ff808c1683526006909101845290829020600101548251958216865293811692850192909252911682820152519081900360600190a36001600160a01b03808416600081815260016020818152604080842060ff8916855260060190915282208101805493948916936000805160206138458339815191529360029389939092829061322157fe5b60009182526020808320909101546001600160a01b03168352828101939093526040918201812060ff808c168352600690910184529082902060010154825195821686529381169285019290925260029092011682820152519081900360600190a36001600160a01b038316600090815260016020818152604080842060ff8716855260060190915282200180549091906132b857fe5b60009182526020808320909101546001600160a01b03878116845260018352604080852060ff881686526006019093529190922080546001600160a01b0319169190921617905561304d565b6001600160a01b038316600090815260016020818152604080842060ff871685526006019091528220810180549192918390811061333e57fe5b6000918252602080832091909101546001600160a01b039081168452838201949094526040928301822060ff8716808452600691820183528484206001908101805480830182559086528486200180546001600160a01b0319168c89161790559589168452858352848420908452019052208101805490919081106133bf57fe5b60009182526020808320909101546001600160a01b0386811684526001808452604080862060ff8916875260060190945292842083018054928216949189169360008051602061384583398151915293600293899390918390811061342057fe5b60009182526020808320909101546001600160a01b03168352828101939093526040918201812060ff808c1683526006909101845290829020600101548251958216865293811692850192909252911682820152519081900360600190a36001600160a01b03808416600081815260016020818152604080842060ff8916855260060190915282208101805493948916936000805160206138458339815191529360029389939092839081106134d257fe5b60009182526020808320909101546001600160a01b03168352828101939093526040918201812060ff808c168352600690910184529082902060010154825195821686529381169285019290925260049092011682820152519081900360600190a36001600160a01b038316600090815260016020818152604080842060ff8716855260060190915290912081018054909190811061356d57fe5b60009182526020808320909101546001600160a01b03878116845260018352604080852060ff881686526006019093529190922080546001600160a01b0319169190921617905550505050565b6000808581600160ff87161415613696575b6001600160a01b038216600090815260016020908152604080832060ff808a168552600590910190925290912060020154161561368757604080516001815260ff8716602082015281516001600160a01b03808b1693908616927ffc0cb63f8dbd6b20ceb84a3c5358a41576a1479e6ecd040b4b985525dc09a709929081900390910190a3506001600160a01b03908116600090815260016020818152604080842060ff891685526005019091529091205490911690613691565b9092509050613751565b6135cc565b6001600160a01b038216600090815260016020908152604080832060ff808a168552600690910190925290912060030154161561368757604080516002815260ff8716602082015281516001600160a01b03808b1693908616927ffc0cb63f8dbd6b20ceb84a3c5358a41576a1479e6ecd040b4b985525dc09a709929081900390910190a3506001600160a01b03908116600090815260016020818152604080842060ff891685526006019091529091205490911690613696565b94509492505050565b6040518060c001604052806000815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001600081525090565b604051806101a00160405280600d906020820280388339509192915050565b82805482825590600052602060002090810192821561380d579160200282015b8281111561380d57825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906137d8565b5061381992915061381d565b5090565b61384191905b808211156138195780546001600160a01b0319168155600101613823565b9056fe68062c5925c4317adf3a7095478d28b33fd8b41458bc7620b61bc46bf1b24d82a00c953eff38ec1b71e7fe060b2ab8df0bbe5354319fbdde4fbdafd6324386a675736572206973206e6f74206578697374732e2052656769737465722066697273742ea265627a7a72315820a666d96804defea3d146a91ceb2e9ae80f8c14b044001b268276e09b344fae0464736f6c6343000511003200000000000000000000000018442258126f1868f94ea422d4d45f756ca2e04a

Deployed Bytecode

0x6080604052600436106101c25760003560e01c80637bffe9d8116100f7578063be389d5711610095578063e06e8dbd11610064578063e06e8dbd14610889578063ecabdf79146108c5578063fa45323d146108f2578063fe10c4191461092e576101c2565b8063be389d57146107a6578063c8d6b7f7146107ce578063cd96f22214610801578063db58c62614610856576101c2565b80639cc102fc116100d15780639cc102fc146105ee578063a87430ba146106e7578063b2f7543a14610755578063b8fcf93714610791576101c2565b80637bffe9d81461051b57806383ba31b2146105305780638da5cb5b146105d9576101c2565b80632ae34dc611610164578063509222cd1161013e578063509222cd146103f7578063570354c51461042a578063689493721461045d578063797eee24146104f5576101c2565b80632ae34dc6146103a1578063348d4487146103cd5780633cca779b146103e2576101c2565b80632113342d116101a05780632113342d146102b657806327d205ab146102dd57806329c70400146103305780632a2d0c471461035b576101c2565b80630388b4a31461022e5780630e3d0d351461026157806319aa70e71461028d575b366101e3576009546101de9033906001600160a01b0316610943565b61022c565b61022c336102276000368080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610d9e92505050565b610943565b005b34801561023a57600080fd5b5061022c6004803603602081101561025157600080fd5b50356001600160a01b0316610da5565b34801561026d57600080fd5b50610276610e13565b6040805161ffff9092168252519081900360200190f35b34801561029957600080fd5b506102a2610e19565b604080519115158252519081900360200190f35b3480156102c257600080fd5b506102cb610e7e565b60408051918252519081900360200190f35b3480156102e957600080fd5b506103106004803603602081101561030057600080fd5b50356001600160a01b0316610e84565b6040805160ff938416815291909216602082015281519081900390910190f35b34801561033c57600080fd5b50610345610f14565b6040805160ff9092168252519081900360200190f35b34801561036757600080fd5b506103856004803603602081101561037e57600080fd5b5035610f19565b604080516001600160a01b039092168252519081900360200190f35b3480156103ad57600080fd5b5061022c600480360360208110156103c457600080fd5b50351515610f34565b3480156103d957600080fd5b506102cb610f93565b3480156103ee57600080fd5b506102a2610f99565b34801561040357600080fd5b506102a26004803603602081101561041a57600080fd5b50356001600160a01b0316610fa2565b34801561043657600080fd5b506102cb6004803603602081101561044d57600080fd5b50356001600160a01b0316610fbf565b34801561046957600080fd5b506104906004803603602081101561048057600080fd5b50356001600160a01b0316610ff8565b60405180836101a080838360005b838110156104b657818101518382015260200161049e565b5050505090500182600d60200280838360005b838110156104e15781810151838201526020016104c9565b505050509050019250505060405180910390f35b61022c6004803603602081101561050b57600080fd5b50356001600160a01b03166110ad565b34801561052757600080fd5b506102cb61110b565b34801561053c57600080fd5b5061056c6004803603604081101561055357600080fd5b5080356001600160a01b0316906020013560ff16611111565b604080516001600160a01b0385168152821515918101919091526060602080830182815285519284019290925284516080840191868101910280838360005b838110156105c35781810151838201526020016105ab565b5050505090500194505050505060405180910390f35b3480156105e557600080fd5b506103856111bb565b3480156105fa57600080fd5b5061062a6004803603604081101561061157600080fd5b5080356001600160a01b0316906020013560ff166111ca565b604080516001600160a01b03808816825284151560608301528316608082015260a060208083018281528851928401929092528751929391929184019160c0850191898101910280838360005b8381101561068f578181015183820152602001610677565b50505050905001838103825286818151815260200191508051906020019060200280838360005b838110156106ce5781810151838201526020016106b6565b5050505090500197505050505050505060405180910390f35b3480156106f357600080fd5b5061071a6004803603602081101561070a57600080fd5b50356001600160a01b03166112e7565b604080519687526001600160a01b039095166020870152858501939093526060850191909152608084015260a0830152519081900360c00190f35b34801561076157600080fd5b506102a26004803603604081101561077857600080fd5b5080356001600160a01b0316906020013560ff16611327565b34801561079d57600080fd5b5061038561135d565b61022c600480360360408110156107bc57600080fd5b5060ff8135811691602001351661136c565b3480156107da57600080fd5b50610490600480360360208110156107f157600080fd5b50356001600160a01b0316611a7a565b34801561080d57600080fd5b5061083d6004803603604081101561082457600080fd5b5080356001600160a01b0316906020013560ff16611b25565b6040805192835260208301919091528051918290030190f35b34801561086257600080fd5b506102cb6004803603602081101561087957600080fd5b50356001600160a01b0316611b62565b34801561089557600080fd5b50610385600480360360408110156108ac57600080fd5b5080356001600160a01b0316906020013560ff16611b95565b3480156108d157600080fd5b506102cb600480360360208110156108e857600080fd5b503560ff16611c24565b3480156108fe57600080fd5b506103856004803603604081101561091557600080fd5b5080356001600160a01b0316906020013560ff16611c36565b34801561093a57600080fd5b506102cb611cc5565b34673782dace9d9000001461099f576040805162461bcd60e51b815260206004820152601760248201527f726567697374726174696f6e20636f7374203420504f4c000000000000000000604482015290519081900360640190fd5b6109a882610fa2565b156109e8576040805162461bcd60e51b815260206004820152600b60248201526a757365722065786973747360a81b604482015290519081900360640190fd5b6109f181610fa2565b610a38576040805162461bcd60e51b81526020600482015260136024820152727265666572726572206e6f742065786973747360681b604482015290519081900360640190fd5b813b63ffffffff811615610a8a576040805162461bcd60e51b815260206004820152601460248201527318d85b9b9bdd08189948184818dbdb9d1c9858dd60621b604482015290519081900360640190fd5b610a9261375a565b506040805160c0810182526008805482526001600160a01b0385811660208085018281526000868801818152600554606089019081526080890183815260a08a018481528e891680865260018089528d87208d5181559751888201805491909c166001600160a01b0319918216178c5595516002808a0191909155945160098901559251600a88019081559151600b8801558a5486528388528c862080548616909117905588549093168717909755868352600384018552898320805460ff199081168917909155600494850186528a84208054909116881790559386905280546103e83461019002049081019091558254810190925560068054909201909155845484019094559083529382209093018054840190559091610bb6908690611c36565b90506000610bc5866001611b95565b6009549091506001600160a01b0383811691161480610bf157506009546001600160a01b038281169116145b15610caf57600954600090610c0e906001600160a01b0316610fbf565b1115610c2f57600954610c29906001600160a01b0316611ccb565b50610c50565b600554600980546001600160a01b0316600090815260016020526040902001555b6009546001600160a01b03166000908152600160205260409020600a0180546103e86101903402049081019091556007805460028302019081905590670de0b6b3a76400000281610c9d57fe5b60058054929091049091019055610ce2565b600780546103e861019034020490810191829055670de0b6b3a76400000281610cd457fe5b600580549290910490910190555b6001600160a01b03868116600090815260016020818152604080842083855260050190915290912080546001600160a01b03191692851692909217909155610d2d9087908490611d31565b610d39868260016120a0565b6001600160a01b03808716600081815260016020908152604080832054948a168084529281902054815190815290519293927f309bb360e8b69c23937ccc5fb01f9aeeead1c95a99604e175113ff82f2b1723a929181900390910190a4505050505050565b6014015190565b600a546001600160a01b03163314610df1576040805162461bcd60e51b815260206004820152600a60248201526927b7363c9020b236b4b760b11b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b61019081565b600080610e2533610fbf565b905060008111610e70576040805162461bcd60e51b81526020600482015260116024820152704e6f206469767320617661696c61626c6560781b604482015290519081900360640190fd5b610e7933611ccb565b505090565b60055481565b60008060015b600d8160ff161015610f0e576001600160a01b038416600090815260016020908152604080832060ff80861685526003909101909252909120541615610ece578092505b6001600160a01b038416600090815260016020908152604080832060ff80861685526004909101909252909120541615610f06578091505b600101610e8a565b50915091565b600c81565b6002602052600090815260409020546001600160a01b031681565b600a546001600160a01b03163314610f80576040805162461bcd60e51b815260206004820152600a60248201526927b7363c9020b236b4b760b11b604482015290519081900360640190fd5b6003805460ff1916911515919091179055565b60085481565b60035460ff1681565b6001600160a01b0316600090815260016020526040902054151590565b6001600160a01b031660009081526001602052604090206009810154600554600a90920154670de0b6b3a7640000919092039091020490565b611000613799565b611008613799565b60015b600d8160ff161015610f0e576001600160a01b038416600090815260016020908152604080832060ff808616808652600390920190935292205416908490600d811061105357fe5b911515602092830291909101526001600160a01b038516600090815260018252604080822060ff8086168085526004909201909452912054909116908390600d811061109b57fe5b9115156020909202015260010161100b565b60035460ff1615156001146110fe576040805162461bcd60e51b815260206004820152601260248201527147616d65206e6f7420796574206f70656e2160701b604482015290519081900360640190fd5b6111083382610943565b50565b60065481565b6001600160a01b03828116600090815260016020818152604080842060ff8781168652600590910183528185208054600282015491909501805484518187028101870190955280855296976060978997909116959194929093169284918301828280156111a757602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611189575b505050505091509250925092509250925092565b6009546001600160a01b031681565b6001600160a01b03828116600090815260016020818152604080842060ff878116865260069091018352818520805460038201546005830154968301805486518189028101890190975280875298996060998a998c998a9996841698949760020196959094169492169286919083018282801561127057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611252575b50505050509350828054806020026020016040519081016040528092919081815260200182805480156112cc57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116112ae575b50505050509250945094509450945094509295509295909350565b600160208190526000918252604090912080549181015460028201546009830154600a840154600b909401546001600160a01b0390931693919290919086565b6001600160a01b038216600090815260016020908152604080832060ff8086168552600490910190925290912054165b92915050565b6000546001600160a01b031681565b60035460ff1615156001146113bd576040805162461bcd60e51b815260206004820152601260248201527147616d65206e6f7420796574206f70656e2160701b604482015290519081900360640190fd5b6113c633610fa2565b6114015760405162461bcd60e51b81526004018080602001828103825260238152602001806138856023913960400191505060405180910390fd5b8160ff166001148061141657508160ff166002145b611458576040805162461bcd60e51b815260206004820152600e60248201526d0d2dcecc2d8d2c840dac2e8e4d2f60931b604482015290519081900360640190fd5b60ff81166000908152600b602052604090205434146114ae576040805162461bcd60e51b815260206004820152600d60248201526c696e76616c696420707269636560981b604482015290519081900360640190fd5b60018160ff161180156114c55750600c60ff821611155b611506576040805162461bcd60e51b815260206004820152600d60248201526c1a5b9d985b1a59081b195d995b609a1b604482015290519081900360640190fd5b600061151133610fbf565b11156115265761152033611ccb565b5061153d565b600554336000908152600160205260409020600901555b336000908152600160208190526040909120600a0180546103e8610190340204908101909155600480548201905560068054909101905560ff8316141561180d5733600090815260016020908152604080832060ff808616855260039091019092529091205416156115f0576040805162461bcd60e51b81526020600482015260176024820152761b195d995b08185b1c9958591e481858dd1a5d985d1959604a1b604482015290519081900360640190fd5b33600090815260016020908152604080832060ff60001986018116855260059091019092529091206002015416156116525733600090815260016020908152604080832060ff60001986011684526005019091529020600201805460ff191690555b600061165e3383611c36565b6009549091506001600160a01b03808316911614156117305760095460009061168f906001600160a01b0316610fbf565b11156116b0576009546116aa906001600160a01b0316611ccb565b506116d1565b600554600980546001600160a01b0316600090815260016020526040902001555b6009546001600160a01b03166000908152600160205260409020600a0180546103e86101903402049081019091556007805460028302019081905590670de0b6b3a7640000028161171e57fe5b60058054929091049091019055611763565b600780546103e861019034020490810191829055670de0b6b3a7640000028161175557fe5b600580549290910490910190555b33600081815260016020818152604080842060ff8816855260058101835281852080546001600160a01b0319166001600160a01b038916179055600301909152909120805460ff191690911790556117bc908284611d31565b604080516001815260ff8416602082015281516001600160a01b0384169233927f18a92df19fd94d6cfff209966673a5ca05a1c8e2bb68e097fce2bdc2ed811119929081900390910190a350611a76565b33600090815260016020908152604080832060ff8086168552600490910190925290912054161561187f576040805162461bcd60e51b81526020600482015260176024820152761b195d995b08185b1c9958591e481858dd1a5d985d1959604a1b604482015290519081900360640190fd5b33600090815260016020908152604080832060ff60001986018116855260069091019092529091206003015416156118e15733600090815260016020908152604080832060ff60001986011684526006019091529020600301805460ff191690555b60006118ed3383611b95565b6009549091506001600160a01b03808316911614156119bf5760095460009061191e906001600160a01b0316610fbf565b111561193f57600954611939906001600160a01b0316611ccb565b50611960565b600554600980546001600160a01b0316600090815260016020526040902001555b6009546001600160a01b03166000908152600160205260409020600a0180546103e86101903402049081019091556007805460028302019081905590670de0b6b3a764000002816119ad57fe5b600580549290910490910190556119f2565b600780546103e861019034020490810191829055670de0b6b3a764000002816119e457fe5b600580549290910490910190555b33600081815260016020818152604080842060ff88168552600401909152909120805460ff19169091179055611a299082846120a0565b604080516002815260ff8416602082015281516001600160a01b0384169233927f18a92df19fd94d6cfff209966673a5ca05a1c8e2bb68e097fce2bdc2ed811119929081900390910190a3505b5050565b611a82613799565b611a8a613799565b60015b600d8160ff161015610f0e576001600160a01b038416600090815260016020908152604080832060ff8516808552600790910190925290912054908490600d8110611ad457fe5b602090810291909101919091526001600160a01b038516600090815260018252604080822060ff85168084526008909101909352902054908390600d8110611b1857fe5b6020020152600101611a8d565b6001600160a01b0391909116600090815260016020908152604080832060ff90941683526007840182528083205460089094019091529020549091565b6007546001600160a01b0382166000908152600160205260408120600a015490919060640281611b8e57fe5b0492915050565b60005b6001600160a01b03808416600090815260016020818152604080842090920154909316825280822060ff808716845260049091019093529020541615611bfd57506001600160a01b038083166000908152600160208190526040909120015416611357565b6001600160a01b039283166000908152600160208190526040909120015490921691611b98565b600b6020526000908152604090205481565b60005b6001600160a01b03808416600090815260016020818152604080842090920154909316825280822060ff808716845260039091019093529020541615611c9e57506001600160a01b038083166000908152600160208190526040909120015416611357565b6001600160a01b039283166000908152600160208190526040909120015490921691611c39565b60045481565b600080611cd783610fbf565b6004805482900390556005546001600160a01b0385166000818152600160205260408082206009810194909455600b90930180548501905591519293509183156108fc0291849190818181858888f1979650505050505050565b6001600160a01b03828116600090815260016020818152604080842060ff87168086526005909101835290842083018054938401815580855291842090920180546001600160a01b0319169488169490941790935590525460031115611e03576001600160a01b03808316600081815260016020818152604080842060ff8089168087526005909201845294829020840154825194855292840152921681830152905191928616916000805160206138458339815191529181900360600190a3611dfe8284600184612a35565b61209b565b604080516001815260ff8316602082015260038183015290516001600160a01b0380851692908616916000805160206138458339815191529181900360600190a360408051600080825260208083018085526001600160a01b0387168352600180835285842060ff88168552600501909252939091209151611e8a939290910191906137b8565b506001600160a01b038216600090815260016020818152604080842060ff938601841685526003019091529091205416158015611ecb575060ff8116600c14155b15611f09576001600160a01b038216600090815260016020818152604080842060ff86168552600501909152909120600201805460ff191690911790555b6009546001600160a01b03838116911614612016576000611f2a8383611c36565b6001600160a01b03848116600090815260016020908152604080832060ff88168452600501909152902054919250828116911614611fa2576001600160a01b03838116600090815260016020908152604080832060ff87168452600501909152902080546001600160a01b0319169183169190911790555b6001600160a01b03808416600081815260016020818152604080842060ff8916808652600590910183529381902060030180548401905580519283529082019290925281518885169486169392600080516020613865833981519152928290030190a4612010838284611d31565b5061209b565b60095461202f906001600160a01b031684600184612a35565b600980546001600160a01b03908116600090815260016020818152604080842060ff881680865260059091018352818520600301805485019055955481519384529183019590955284518885169593949190911692600080516020613865833981519152928290030190a45b505050565b6001600160a01b038216600090815260016020908152604080832060ff808616855260049091019092529091205416612120576040805162461bcd60e51b815260206004820152601f60248201527f3530302e205265666572726572206c6576656c20697320696e61637469766500604482015290519081900360640190fd5b6001600160a01b038216600090815260016020818152604080842060ff86168552600601909152909120015460021115612686576001600160a01b03828116600081815260016020818152604080842060ff8881168087526006909201845282862085018054958601815580875284872090950180546001600160a01b031916988c16988917905594819052925481516002815292830193909352919092168282015251919291600080516020613845833981519152916060908290030190a36001600160a01b03838116600090815260016020908152604080832060ff86168452600601909152902080546001600160a01b031916848316908117909155600954909116141561223857611dfe8284600284612a35565b6001600160a01b03828116600090815260016020818152604080842060ff871680865260069182018452828620548716808752858552838720828852909201845291852060028082018054808801825590885294872090940180546001600160a01b031916978b1697909717909655935292015490918114801561230857506001600160a01b03828116600090815260016020818152604080842060ff891685526006019091528220018054928716929091906122f157fe5b6000918252602090912001546001600160a01b0316145b801561236457506001600160a01b03828116600090815260016020818152604080842060ff891685526006019091529091208101805492871692909190811061234d57fe5b6000918252602090912001546001600160a01b0316145b15612429576001600160a01b038416600090815260016020818152604080842060ff8816855260060190915290912081015414156123e257604080516002815260ff8516602082015260058183015290516001600160a01b0380851692908816916000805160206138458339815191529181900360600190a3612424565b604080516002815260ff8516602082015260068183015290516001600160a01b0380851692908816916000805160206138458339815191529181900360600190a35b612674565b80600114806124385750806002145b801561249057506001600160a01b03828116600090815260016020818152604080842060ff8916855260060190915282200180549287169290919061247957fe5b6000918252602090912001546001600160a01b0316145b15612554576001600160a01b038416600090815260016020818152604080842060ff88168552600601909152909120810154141561250e57604080516002815260ff8516602082015260038183015290516001600160a01b0380851692908816916000805160206138458339815191529181900360600190a3612424565b604080516002815260ff8516602082015260048183015290516001600160a01b0380851692908816916000805160206138458339815191529181900360600190a3612674565b8060021480156125b457506001600160a01b03828116600090815260016020818152604080842060ff891685526006019091529091208101805492871692909190811061259d57fe5b6000918252602090912001546001600160a01b0316145b15612674576001600160a01b038416600090815260016020818152604080842060ff88168552600601909152909120810154141561263257604080516002815260ff8516602082015260058183015290516001600160a01b0380851692908816916000805160206138458339815191529181900360600190a3612674565b604080516002815260ff8516602082015260068183015290516001600160a01b0380851692908816916000805160206138458339815191529181900360600190a35b61267f858385612bf3565b505061209b565b6001600160a01b03828116600090815260016020818152604080842060ff8716808652600690910183529084206002810180549485018155855291842090920180546001600160a01b0319168886161790559152600501541615612869576001600160a01b038216600090815260016020818152604080842060ff8616855260060190915290912081018054909190811061271d57fe5b60009182526020808320909101546001600160a01b0385811684526001808452604080862060ff8816875260060190945292842090920180549290911692909161276357fe5b6000918252602090912001546001600160a01b03161480156127d757506001600160a01b03828116600090815260016020818152604080842060ff871685526006019091528220600581015491018054919093169291906127c057fe5b6000918252602090912001546001600160a01b0316145b156127f4576127e98383836001613053565b611dfe838383612bf3565b6001600160a01b03828116600090815260016020818152604080842060ff8716855260060190915282206005810154910180549190931692919061283457fe5b6000918252602090912001546001600160a01b0316141561285c576127e98383836001613053565b6127e98383836000613053565b6001600160a01b03828116600090815260016020818152604080842060ff87168552600601909152909120810180549286169290919081106128a757fe5b6000918252602090912001546001600160a01b031614156128cf576127e98383836000613053565b6001600160a01b03828116600090815260016020818152604080842060ff8716855260060190915282200180549286169290919061290957fe5b6000918252602090912001546001600160a01b03161415612931576127e98383836001613053565b6001600160a01b038216600090815260016020818152604080842060ff861685526006019091528220810180549192918390811061296b57fe5b60009182526020808320909101546001600160a01b039081168452838201949094526040928301822060ff861680845260069182018352848420600190810154968916855280845285852091855291019091529181208201805482906129cd57fe5b60009182526020808320909101546001600160a01b03168352828101939093526040918201812060ff8616825260060190925290206001015411612a1d57612a188383836000613053565b612a2a565b612a2a8383836001613053565b61209b838383612bf3565b600080612a44868686866135ba565b60ff85166000908152600b60205260408082205490519395509193506103e8610190830204909103916001600160a01b038516916108fc841502918491818181858888f19350505050158015612a9e573d6000803e3d6000fd5b50600080546040805163a9059cbb60e01b81526001600160a01b038781166004830152602482018690529151919092169263a9059cbb92604480820193602093909283900390910190829087803b158015612af857600080fd5b505af1158015612b0c573d6000803e3d6000fd5b505050506040513d6020811015612b2257600080fd5b5050600160ff86161415612b64576001600160a01b038316600090815260016020908152604080832060ff881684526007019091529020805482019055612b94565b6001600160a01b038316600090815260016020908152604080832060ff8816845260080190915290208054820190555b8115612bea576040805160ff80881682528616602082015281516001600160a01b0380871693908a16927ff0ddc65c0d411f042f723dcfa1b7d13e85a35b7b70761d447c6500411cacf328929081900390910190a35b50505050505050565b6001600160a01b038216600090815260016020908152604080832060ff8516845260060190915290206002015460041115612c3557611dfe8284600284612a35565b6001600160a01b03808316600090815260016020818152604080842060ff8716808652600691820184528286205490961685528383528185209585529490940181529183902001805483518184028101840190945280845260609392830182828015612cca57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612cac575b50505050509050805160021415612e2b57826001600160a01b031681600081518110612cf257fe5b60200260200101516001600160a01b03161480612d345750826001600160a01b031681600181518110612d2157fe5b60200260200101516001600160a01b0316145b15612d98576001600160a01b03808416600081815260016020818152604080842060ff8916808652600691820184528286205490971685529282528084209584529490910190529190912060050180546001600160a01b0319169091179055612e2b565b805160011415612e2b57826001600160a01b031681600081518110612db957fe5b60200260200101516001600160a01b03161415612e2b576001600160a01b03808416600081815260016020818152604080842060ff8916808652600691820184528286205490971685529282528084209584529490910190529190912060050180546001600160a01b03191690911790555b60408051600080825260208083018085526001600160a01b0388168352600180835285842060ff89168552600601909252939091209151612e71939290910191906137b8565b5060408051600080825260208083018085526001600160a01b03881683526001825284832060ff881684526006019091529290209051612eb792600290920191906137b8565b506001600160a01b038316600090815260016020818152604080842060ff808816865260068201845282862060050180546001600160a01b0319169055938701841685526004019091529091205416158015612f17575060ff8216600c14155b15612f55576001600160a01b038316600090815260016020818152604080842060ff87168552600601909152909120600301805460ff191690911790555b6001600160a01b03808416600081815260016020818152604080842060ff891685526006019091529091206004018054909101905560095490911614612ff3576000612fa18484611b95565b604080516002815260ff8616602082015281519293506001600160a01b0380891693818616939189169260008051602061386583398151915292908290030190a4612fed8482856120a0565b5061304d565b600954604080516002815260ff8516602082015281516001600160a01b0380891694600094911692600080516020613865833981519152929081900390910190a460095461304d906001600160a01b031685600285612a35565b50505050565b80613304576001600160a01b038316600090815260016020818152604080842060ff87168552600601909152822081018054919291829061309057fe5b6000918252602080832091909101546001600160a01b039081168452838201949094526040928301822060ff8716808452600691820183528484206001908101805480830182559086528486200180546001600160a01b0319168c89161790559589168452858352848420908452019052908120909101805490919061311257fe5b60009182526020808320909101546001600160a01b0386811684526001808452604080862060ff891687526006019094529284208301805492821694918916936000805160206138458339815191529360029389939091829061317157fe5b60009182526020808320909101546001600160a01b03168352828101939093526040918201812060ff808c1683526006909101845290829020600101548251958216865293811692850192909252911682820152519081900360600190a36001600160a01b03808416600081815260016020818152604080842060ff8916855260060190915282208101805493948916936000805160206138458339815191529360029389939092829061322157fe5b60009182526020808320909101546001600160a01b03168352828101939093526040918201812060ff808c168352600690910184529082902060010154825195821686529381169285019290925260029092011682820152519081900360600190a36001600160a01b038316600090815260016020818152604080842060ff8716855260060190915282200180549091906132b857fe5b60009182526020808320909101546001600160a01b03878116845260018352604080852060ff881686526006019093529190922080546001600160a01b0319169190921617905561304d565b6001600160a01b038316600090815260016020818152604080842060ff871685526006019091528220810180549192918390811061333e57fe5b6000918252602080832091909101546001600160a01b039081168452838201949094526040928301822060ff8716808452600691820183528484206001908101805480830182559086528486200180546001600160a01b0319168c89161790559589168452858352848420908452019052208101805490919081106133bf57fe5b60009182526020808320909101546001600160a01b0386811684526001808452604080862060ff8916875260060190945292842083018054928216949189169360008051602061384583398151915293600293899390918390811061342057fe5b60009182526020808320909101546001600160a01b03168352828101939093526040918201812060ff808c1683526006909101845290829020600101548251958216865293811692850192909252911682820152519081900360600190a36001600160a01b03808416600081815260016020818152604080842060ff8916855260060190915282208101805493948916936000805160206138458339815191529360029389939092839081106134d257fe5b60009182526020808320909101546001600160a01b03168352828101939093526040918201812060ff808c168352600690910184529082902060010154825195821686529381169285019290925260049092011682820152519081900360600190a36001600160a01b038316600090815260016020818152604080842060ff8716855260060190915290912081018054909190811061356d57fe5b60009182526020808320909101546001600160a01b03878116845260018352604080852060ff881686526006019093529190922080546001600160a01b0319169190921617905550505050565b6000808581600160ff87161415613696575b6001600160a01b038216600090815260016020908152604080832060ff808a168552600590910190925290912060020154161561368757604080516001815260ff8716602082015281516001600160a01b03808b1693908616927ffc0cb63f8dbd6b20ceb84a3c5358a41576a1479e6ecd040b4b985525dc09a709929081900390910190a3506001600160a01b03908116600090815260016020818152604080842060ff891685526005019091529091205490911690613691565b9092509050613751565b6135cc565b6001600160a01b038216600090815260016020908152604080832060ff808a168552600690910190925290912060030154161561368757604080516002815260ff8716602082015281516001600160a01b03808b1693908616927ffc0cb63f8dbd6b20ceb84a3c5358a41576a1479e6ecd040b4b985525dc09a709929081900390910190a3506001600160a01b03908116600090815260016020818152604080842060ff891685526006019091529091205490911690613696565b94509492505050565b6040518060c001604052806000815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001600081525090565b604051806101a00160405280600d906020820280388339509192915050565b82805482825590600052602060002090810192821561380d579160200282015b8281111561380d57825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906137d8565b5061381992915061381d565b5090565b61384191905b808211156138195780546001600160a01b0319168155600101613823565b9056fe68062c5925c4317adf3a7095478d28b33fd8b41458bc7620b61bc46bf1b24d82a00c953eff38ec1b71e7fe060b2ab8df0bbe5354319fbdde4fbdafd6324386a675736572206973206e6f74206578697374732e2052656769737465722066697273742ea265627a7a72315820a666d96804defea3d146a91ceb2e9ae80f8c14b044001b268276e09b344fae0464736f6c63430005110032

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

00000000000000000000000018442258126f1868f94ea422d4d45f756ca2e04a

-----Decoded View---------------
Arg [0] : ownerAddress (address): 0x18442258126f1868f94Ea422d4D45f756CA2E04a

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000018442258126f1868f94ea422d4d45f756ca2e04a


Block Transaction Gas Used Reward
view all blocks produced

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

Validator Index Block Amount
View All Withdrawals

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

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