blockscan
Check your 2024 Onchain highlights with Blockscan Wrapped

Contract

0xa1C20AC67f805A4Aabf94cDe9C8Dc2903De78926

Overview

S Balance

Sonic LogoSonic LogoSonic Logo0 S

S Value

-

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Purchase16156232024-12-26 2:41:306 hrs ago1735180890IN
0xa1C20AC6...03De78926
20 S0.000225711.1
Purchase16155982024-12-26 2:41:056 hrs ago1735180865IN
0xa1C20AC6...03De78926
10 S0.000228791.1
Purchase16117082024-12-26 1:23:167 hrs ago1735176196IN
0xa1C20AC6...03De78926
5 S0.000940441.1
Purchase16048212024-12-25 23:22:009 hrs ago1735168920IN
0xa1C20AC6...03De78926
5 S0.000921631.1
Purchase15953702024-12-25 20:52:2612 hrs ago1735159946IN
0xa1C20AC6...03De78926
20 S0.000659331.1
Purchase15953612024-12-25 20:52:1412 hrs ago1735159934IN
0xa1C20AC6...03De78926
10 S0.000659331.1
Purchase15953322024-12-25 20:52:0112 hrs ago1735159921IN
0xa1C20AC6...03De78926
5 S0.000921631.1
Purchase15923902024-12-25 19:59:4412 hrs ago1735156784IN
0xa1C20AC6...03De78926
5 S0.000582061.1
Purchase15875422024-12-25 18:51:3314 hrs ago1735152693IN
0xa1C20AC6...03De78926
10 S0.000225711.1
Purchase15874712024-12-25 18:50:5014 hrs ago1735152650IN
0xa1C20AC6...03De78926
5 S0.000488011.1
Purchase15853292024-12-25 18:27:4914 hrs ago1735151269IN
0xa1C20AC6...03De78926
20 S0.000659331.1
Purchase15849882024-12-25 18:24:1714 hrs ago1735151057IN
0xa1C20AC6...03De78926
10 S0.000659331.1
Purchase15847402024-12-25 18:21:1514 hrs ago1735150875IN
0xa1C20AC6...03De78926
5 S0.000940441.1
Purchase15689332024-12-25 15:11:2817 hrs ago1735139488IN
0xa1C20AC6...03De78926
80 S0.000225711.1
Purchase15683452024-12-25 15:05:0117 hrs ago1735139101IN
0xa1C20AC6...03De78926
40 S0.000225711.1
Purchase15683172024-12-25 15:04:4317 hrs ago1735139083IN
0xa1C20AC6...03De78926
20 S0.000225711.1
Purchase15683022024-12-25 15:04:2717 hrs ago1735139067IN
0xa1C20AC6...03De78926
10 S0.000225711.1
Purchase15682732024-12-25 15:04:1017 hrs ago1735139050IN
0xa1C20AC6...03De78926
5 S0.000582061.1
Purchase15494612024-12-25 10:40:2022 hrs ago1735123220IN
0xa1C20AC6...03De78926
10 S0.000225711.1
Purchase15494432024-12-25 10:40:0322 hrs ago1735123203IN
0xa1C20AC6...03De78926
5 S0.000582061.1
Purchase15481632024-12-25 10:20:3722 hrs ago1735122037IN
0xa1C20AC6...03De78926
10 S0.000659331.1
Purchase15481362024-12-25 10:20:1522 hrs ago1735122015IN
0xa1C20AC6...03De78926
5 S0.000921631.1
Purchase15384502024-12-25 7:20:5025 hrs ago1735111250IN
0xa1C20AC6...03De78926
10 S0.000225711.1
Purchase15384082024-12-25 7:20:0725 hrs ago1735111207IN
0xa1C20AC6...03De78926
5 S0.000488011.1
Purchase15307322024-12-25 5:02:0827 hrs ago1735102928IN
0xa1C20AC6...03De78926
40 S0.000659331.1
View all transactions

Latest 25 internal transactions (View All)

Parent Transaction Hash Block From To
16156232024-12-26 2:41:306 hrs ago1735180890
0xa1C20AC6...03De78926
20 S
16155982024-12-26 2:41:056 hrs ago1735180865
0xa1C20AC6...03De78926
10 S
16117082024-12-26 1:23:167 hrs ago1735176196
0xa1C20AC6...03De78926
1.25 S
16117082024-12-26 1:23:167 hrs ago1735176196
0xa1C20AC6...03De78926
1.25 S
16117082024-12-26 1:23:167 hrs ago1735176196
0xa1C20AC6...03De78926
1.25 S
16117082024-12-26 1:23:167 hrs ago1735176196
0xa1C20AC6...03De78926
1.25 S
16048212024-12-25 23:22:009 hrs ago1735168920
0xa1C20AC6...03De78926
1.25 S
16048212024-12-25 23:22:009 hrs ago1735168920
0xa1C20AC6...03De78926
1.25 S
16048212024-12-25 23:22:009 hrs ago1735168920
0xa1C20AC6...03De78926
1.25 S
16048212024-12-25 23:22:009 hrs ago1735168920
0xa1C20AC6...03De78926
1.25 S
15953702024-12-25 20:52:2612 hrs ago1735159946
0xa1C20AC6...03De78926
5 S
15953702024-12-25 20:52:2612 hrs ago1735159946
0xa1C20AC6...03De78926
5 S
15953702024-12-25 20:52:2612 hrs ago1735159946
0xa1C20AC6...03De78926
5 S
15953702024-12-25 20:52:2612 hrs ago1735159946
0xa1C20AC6...03De78926
5 S
15953612024-12-25 20:52:1412 hrs ago1735159934
0xa1C20AC6...03De78926
2.5 S
15953612024-12-25 20:52:1412 hrs ago1735159934
0xa1C20AC6...03De78926
2.5 S
15953612024-12-25 20:52:1412 hrs ago1735159934
0xa1C20AC6...03De78926
2.5 S
15953612024-12-25 20:52:1412 hrs ago1735159934
0xa1C20AC6...03De78926
2.5 S
15953322024-12-25 20:52:0112 hrs ago1735159921
0xa1C20AC6...03De78926
1.25 S
15953322024-12-25 20:52:0112 hrs ago1735159921
0xa1C20AC6...03De78926
1.25 S
15953322024-12-25 20:52:0112 hrs ago1735159921
0xa1C20AC6...03De78926
1.25 S
15953322024-12-25 20:52:0112 hrs ago1735159921
0xa1C20AC6...03De78926
1.25 S
15923902024-12-25 19:59:4412 hrs ago1735156784
0xa1C20AC6...03De78926
5 S
15875422024-12-25 18:51:3314 hrs ago1735152693
0xa1C20AC6...03De78926
10 S
15874712024-12-25 18:50:5014 hrs ago1735152650
0xa1C20AC6...03De78926
5 S
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
VRMatrix

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at SonicScan.org on 2024-12-21
*/

// SPDX-License-Identifier: MIT
pragma solidity 0.8.0;
// Ownable contract to manage contract ownership
contract Ownable {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor() {
        _transferOwnership(msg.sender);
    }

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(_owner == msg.sender, "Ownable: caller is not the owner");
        _;
    }

    function transferOwnership(address newOwner) public onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

// ReentrancyGuard contract to prevent reentrancy attacks
contract ReentrancyGuard {
    uint256 private _status;
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    constructor() {
        _status = _NOT_ENTERED;
    }

    modifier nonReentrant() {
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");
        _status = _ENTERED;
        _;
        _status = _NOT_ENTERED;
    }
}

// Interface for the registration contract

interface IREG {
    function NumberOfUsers() external view returns (uint256);
    function AddressToCountId(address user) external view returns (uint256);
    function countIdToAddress(uint id) external view returns (address);
    function isRegistered(address user) external view returns (bool);
    function userUpline(address user) external view returns (address);
}


contract VRMatrix is Ownable , ReentrancyGuard {

  // public variables-
    uint public numberOfActiveUsers;
    uint public totalEarned ;
    IREG public regContract;
    address public lastUser;


    uint public TOTAL_LEVELS = 10;

    constructor() {
     regContract = IREG(0xbbcd14B04924F33c303627578708fd4f51d39383); 
     levelPrice[1] = 5 ether ;

      for (uint i = 2; i < TOTAL_LEVELS ; i++ ) {
        levelPrice[i] = levelPrice[i - 1] * 2; // each price from 1 is 2X the last price

      }
     initOwner(); // initialize the constante variables and public variables with the values from the registry  
    }

       
       
    

     
    function initOwner() internal {
        address zeroAddress = address(0);
        lastUser = getFirstID();
        virtualUplineOf[lastUser] = zeroAddress ;
         
         users[lastUser] = User ({
         userAddress : lastUser,
         team_Id :  1 ,
         totalIncome : 0 ,
         totalVirtualIncome : 0 , 
         transactionCount : 0 , 
         totalDirect : 0 , 
         lastUpdate : block.timestamp ,
         currentUserLevel : TOTAL_LEVELS ,
         firstActivationDate : block.timestamp 

       }) ;


       userLevel[lastUser] = TOTAL_LEVELS ;
       virtualIds[lastUser] = numberOfActiveUsers;
       isActive[lastUser] = true ;
        numberOfActiveUsers = 1;
      
       emit ownerInit(lastUser);
    }

        
   mapping (address => address ) public virtualUplineOf;
   mapping (uint => uint ) public levelPrice;
   mapping (address => uint ) public userLevel;
   mapping (address => uint ) public totalVirtualDirect;
   mapping (address => address[] ) public virtualDirectsOf;
   mapping (uint => address ) public virtualAddresses;
   mapping (address => uint ) public virtualIds;
   mapping (address => bool ) public isActive;

   mapping (address => User ) public users;
   mapping (address => UserHistory [] ) public history;




 // user structure to save total informations
    struct User {
        address userAddress;
        uint team_Id ;
        uint totalIncome;
        uint totalVirtualIncome;
        uint transactionCount;
        uint totalDirect;
        uint lastUpdate;
        uint currentUserLevel ;
        uint firstActivationDate ;

    }

  // userHistory to track system activities
    struct UserHistory {
        string actionName;
        uint actionAmount;
        address actionFrom;
        uint actionDate;
    }
    // events to track contract activities 

    event TransferSent (address to, uint amount , uint timestamp);
    event virtualGainSent (address to , uint amount , uint timestamp);
    event RoyaltyGainSent(address to, uint amount , uint timestamp);
    event LevelPurchased (address from, uint amount , uint timestamp);
    event ownerInit (address owner) ;

  // get the fiirst id registered
   function getFirstID () internal view returns(address) {
    return regContract.countIdToAddress(1);
   }


   function purchase (uint level ) public nonReentrant payable {
   // the user must enter the correct level

        require(level > 0 && level < 11, "Level is out of range");

        // the user can't be the 0 address

        require(msg.sender != address(0), "Zero address is not allowed");

        // the user must be regsitered 

        require(regContract.isRegistered(msg.sender), "User is not registered");

        // the value to send must be equal to the price of the level
        require(msg.value == levelPrice[level], "not enougth opBNB");
        
        if (level  > 1 ) {
            // the user must have the previus level activated 
            require(userLevel[msg.sender] == level - 1, "Previous level not activated");
        }
        // handling user purchase

          if (level == 1) {

            
                 handlePurchase(level) ;

          } else {
              handlePurchaseFromVrData (level) ;
          }
        // after distribution handle updates

      address uplineOfUser = regContract.userUpline(msg.sender);
      uint totalDirect = totalVirtualDirect[uplineOfUser] ;

       if (users[msg.sender].userAddress == address(0) ) {
       // it's the user first time to buy the level ...

       users[msg.sender] = User ({
         userAddress : msg.sender,
         team_Id : totalDirect + 1 ,
         totalIncome : 0 ,
         totalVirtualIncome : 0 , 
         transactionCount : 0 , 
         totalDirect : 0 , 
         lastUpdate : block.timestamp ,
         currentUserLevel : level ,
         firstActivationDate : block.timestamp 

       }) ;


       totalVirtualDirect[uplineOfUser] ++ ;
       virtualDirectsOf[uplineOfUser].push(msg.sender) ;
       numberOfActiveUsers ++ ;
       virtualIds[msg.sender] = numberOfActiveUsers;
       isActive[msg.sender] = true ;
       virtualUplineOf[msg.sender] = uplineOfUser;

       }


userLevel[msg.sender] = level ;
lastUser  = msg.sender ;

totalEarned += msg.value ;

emit LevelPurchased(msg.sender , levelPrice[level], block.timestamp) ;


     
   }

   function purchase_sec_case (address user , uint level ) public nonReentrant onlyOwner  {
   // the user must enter the correct level

        require(level > 0 && level < 11, "Level is out of range");

        // the user can't be the 0 address

        require(user != address(0), "Zero address is not allowed");

        // the user must be regsitered 

        require(regContract.isRegistered(user), "User is not registered");

        
        // after distribution handle updates

      address uplineOfUser = regContract.userUpline(user);
      uint totalDirect = totalVirtualDirect[uplineOfUser] ;

       if (users[user].userAddress == address(0) ) {
       // it's the user first time to buy the level ...

       users[user] = User ({
         userAddress : user,
         team_Id : totalDirect + 1 ,
         totalIncome : 0 ,
         totalVirtualIncome : 0 , 
         transactionCount : 0 , 
         totalDirect : 0 , 
         lastUpdate : block.timestamp ,
         currentUserLevel : level ,
         firstActivationDate : block.timestamp 

       }) ;


       totalVirtualDirect[uplineOfUser] ++ ;
       virtualDirectsOf[uplineOfUser].push(user) ;
       numberOfActiveUsers ++ ;
       virtualIds[user] = numberOfActiveUsers;
       isActive[user] = true ;
       virtualUplineOf[user] = uplineOfUser;

       }
 userLevel[user] = level ;

emit LevelPurchased(user , levelPrice[level], block.timestamp) ;


     
   }


function handlePurchase (uint level) internal {
         address uplineOfUser = regContract.userUpline(msg.sender);
         address [4] memory uplines = getUPlinesArray(uplineOfUser);

        if (uplineOfUser != address(0)) {
            // we get the number of virtual downlines of the upline of this adress
            // and add 1 to get the position of the upcoming user 
            uint directNumber =  totalVirtualDirect[uplineOfUser] + 1;
            // if the upcoming user is odd
            if (directNumber % 2 != 0) {

                // the direct is odd
                // this function will distribute 90% to the direct upline
                // and 10% to the last user has Free income
                distributeDirectIncome ( level , uplines);

            } else {
                distributeToUplines (level , uplines) ;
            }

        } 
}

function getUPlinesArray (address uplineOne) internal view returns (address  [4] memory  ) {
    address [4] memory uplines ;
    uplines[0] = uplineOne;
     // we already have one upline , this function will return 4 uplines
     for (uint i = 1 ;  i < 4 ; i++ ) {
       uplines[i] = regContract.userUpline(uplines[i - 1]);
     }

  return uplines;

}

function distributeDirectIncome ( uint level , address [4] memory  uplines) internal returns(uint ) {
   address firstUpline = uplines[0];
   address currentUpline  ;
   address firstId = getFirstID();
   if (firstUpline == address(0)) {

    currentUpline = firstId;

  distributeFunds(level , currentUpline) ;
    return 0 ;

   }  

  for (uint i = 0 ; i < uplines.length; i ++)   {
    if (hasLevel(level, uplines[i])) {
        currentUpline = uplines[i] ;
        break ;
    }
    if (i == 3) {

        currentUpline = firstId;
    }
  }


  distributeFunds(level , currentUpline) ;
  return 0 ;

}


    function hasLevel (uint level ,address user) internal view returns (bool){

     return userLevel[user] >= level;



}



// this function transfer the amount to the sponsor who is detecet by the function callert 

function distributeFunds(uint level, address user) internal {
    uint amount = levelPrice[level] ;

    if (user != address(0)) {
        (bool success , ) = user.call{value : amount}("") ;
        require(success, "Transfer to the user failed") ;

         UserHistory memory newHistory = UserHistory ({
         actionName : "Direct Gain" ,
         actionAmount :  amount ,
         actionFrom : msg.sender ,
         actionDate : block.timestamp 
            
         }) ;

       history[user].push(newHistory) ;


            // upldate user state
            users[user].totalIncome += amount ;
            users[user].transactionCount += 1 ;
            users[user].lastUpdate = block.timestamp ;
        

    } else {
        address firstSponsor = getFirstID();
        (bool success2 , ) = firstSponsor.call{value : amount}("");
        require(success2, "An error occured during direct transfer");
    }
    
   emit TransferSent(user, amount, block.timestamp);
        
     } 


// this function send   at the same time to 4 sponsor 25% of the investment if they are available
function distributeToUplines (uint level , address [4] memory uplines) internal {

    uint staticAmount = levelPrice[level] * 25 / 100;
    address initialUpline = getFirstID();

    for (uint i = 0 ; i < uplines.length ; i ++) {
        
          address currentUpline = uplines[i] ;
          address availableUpline;
        if (currentUpline == address(0) || !hasLevel(level, currentUpline)) {
          availableUpline = initialUpline ;
        } else {
          availableUpline = currentUpline ;

        }



        (bool success , ) = availableUpline.call{value :staticAmount }("");
        require(success, "the transfer to the current upline amoung 4 of them failed");
        

         UserHistory memory newHistory = UserHistory ({
         actionName : "Sponsor Gain" ,
         actionAmount :  staticAmount  ,
         actionFrom : msg.sender ,
         actionDate : block.timestamp 
            
         }) ;

       history[availableUpline].push(newHistory);


            // upldate user state
            users[availableUpline].totalIncome += staticAmount;
            users[availableUpline].transactionCount += 1 ;
            users[availableUpline].lastUpdate = block.timestamp ;
            users[availableUpline].totalVirtualIncome += staticAmount;
           emit TransferSent(availableUpline, staticAmount, block.timestamp);


    }
}


function handlePurchaseFromVrData (uint level) internal {

  uint team_idOfUser = users[msg.sender].team_Id ;
     address uplineOfUser = regContract.userUpline(msg.sender);
         address [4] memory uplines = getUPlinesArray(uplineOfUser);

  if (team_idOfUser % 2 != 0) {
    distributeDirectIncome (level , uplines) ;
  } else {
     distributeToUplines(level , uplines) ;
  }

}
 
function getvirtualTeamSize(address user) public view returns (uint256) {
    require(regContract.isRegistered(user), "User not registered");

    uint256 totalTeamSize = _getTotalTeamSize(user);
    return totalTeamSize;
}


function _getTotalTeamSize(address user) internal view returns (uint256) {
    uint256 teamSize = virtualDirectsOf[user].length;

    // Parcours récursif pour compter les downlines des downlines
    for (uint256 i = 0; i < virtualDirectsOf[user].length; i++) {
        teamSize += _getTotalTeamSize(virtualDirectsOf[user][i]);
    }

    return teamSize;
}
  function getStories (address user) external view returns (UserHistory[] memory) {
    return history[user];

   }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"LevelPurchased","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"RoyaltyGainSent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"TransferSent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"ownerInit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"virtualGainSent","type":"event"},{"inputs":[],"name":"TOTAL_LEVELS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getStories","outputs":[{"components":[{"internalType":"string","name":"actionName","type":"string"},{"internalType":"uint256","name":"actionAmount","type":"uint256"},{"internalType":"address","name":"actionFrom","type":"address"},{"internalType":"uint256","name":"actionDate","type":"uint256"}],"internalType":"struct VRMatrix.UserHistory[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getvirtualTeamSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"history","outputs":[{"internalType":"string","name":"actionName","type":"string"},{"internalType":"uint256","name":"actionAmount","type":"uint256"},{"internalType":"address","name":"actionFrom","type":"address"},{"internalType":"uint256","name":"actionDate","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastUser","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"levelPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numberOfActiveUsers","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"level","type":"uint256"}],"name":"purchase","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"level","type":"uint256"}],"name":"purchase_sec_case","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"regContract","outputs":[{"internalType":"contract IREG","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalEarned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"totalVirtualDirect","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userLevel","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"users","outputs":[{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"uint256","name":"team_Id","type":"uint256"},{"internalType":"uint256","name":"totalIncome","type":"uint256"},{"internalType":"uint256","name":"totalVirtualIncome","type":"uint256"},{"internalType":"uint256","name":"transactionCount","type":"uint256"},{"internalType":"uint256","name":"totalDirect","type":"uint256"},{"internalType":"uint256","name":"lastUpdate","type":"uint256"},{"internalType":"uint256","name":"currentUserLevel","type":"uint256"},{"internalType":"uint256","name":"firstActivationDate","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"virtualAddresses","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"virtualDirectsOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"virtualIds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"virtualUplineOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

6080604052600a6006553480156200001657600080fd5b5062000028336200012b60201b60201c565b6001808190555073bbcd14b04924f33c303627578708fd4f51d39383600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550674563918244f400006008600060018152602001908152602001600020819055506000600290505b6006548110156200011457600260086000600184620000cc9190620007c5565b815260200190815260200160002054620000e7919062000764565b600860008381526020019081526020016000208190555080806200010b9062000852565b915050620000ac565b5062000125620001ef60201b60201c565b620008e9565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000620002016200060c60201b60201c565b600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060076000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604051806101200160405280600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001815260200160008152602001600081526020016000815260200160008152602001428152602001600654815260200142815250600f6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e08201518160070155610100820151816008015590505060065460096000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600254600d6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600e6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016002819055507f033adf756bd958e7e4607baacceb41f01f04f86bef905b925c3332140eb8e1d6600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516200060191906200072a565b60405180910390a150565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639c28d9c060016040518263ffffffff1660e01b81526004016200066c919062000747565b60206040518083038186803b1580156200068557600080fd5b505afa1580156200069a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006c09190620006dc565b905090565b600081519050620006d681620008cf565b92915050565b600060208284031215620006ef57600080fd5b6000620006ff84828501620006c5565b91505092915050565b620007138162000800565b82525050565b62000724816200083e565b82525050565b600060208201905062000741600083018462000708565b92915050565b60006020820190506200075e600083018462000719565b92915050565b6000620007718262000834565b91506200077e8362000834565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620007ba57620007b9620008a0565b5b828202905092915050565b6000620007d28262000834565b9150620007df8362000834565b925082821015620007f557620007f4620008a0565b5b828203905092915050565b60006200080d8262000814565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006200084b8262000834565b9050919050565b60006200085f8262000834565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415620008955762000894620008a0565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b620008da8162000800565b8114620008e657600080fd5b50565b613e1b80620008f96000396000f3fe60806040526004361061012a5760003560e01c80637718f4ec116100ab578063aad049b31161006f578063aad049b314610471578063af1db4dd146104ae578063b0b95fa2146104d9578063dc85fecf14610504578063efef39a114610541578063f2fde38b1461055d5761012a565b80637718f4ec146103475780638da5cb5b146103875780639f8a13d7146103b2578063a87430ba146103ef578063a8950aa4146104345761012a565b80635abe9a06116100f25780635abe9a061461023a5780635dd43796146102775780636c04cbfd146102b45780636dfa8d99146102f157806373416fc81461031c5761012a565b80630eb7eb831461012f578063173ef9cb1461015a57806322bbb95714610197578063260f5fe9146101c0578063280e31cc146101fd575b600080fd5b34801561013b57600080fd5b50610144610586565b6040516101519190613a04565b60405180910390f35b34801561016657600080fd5b50610181600480360381019061017c919061309e565b61058c565b60405161018e9190613a04565b60405180910390f35b3480156101a357600080fd5b506101be60048036038101906101b991906130f0565b6105a4565b005b3480156101cc57600080fd5b506101e760048036038101906101e29190613155565b610dbc565b6040516101f491906136e6565b60405180910390f35b34801561020957600080fd5b50610224600480360381019061021f919061309e565b610def565b6040516102319190613a04565b60405180910390f35b34801561024657600080fd5b50610261600480360381019061025c919061309e565b610e07565b60405161026e91906136e6565b60405180910390f35b34801561028357600080fd5b5061029e6004803603810190610299919061309e565b610e3a565b6040516102ab91906137c5565b60405180910390f35b3480156102c057600080fd5b506102db60048036038101906102d6919061309e565b610fd4565b6040516102e89190613a04565b60405180910390f35b3480156102fd57600080fd5b506103066110d6565b6040516103139190613a04565b60405180910390f35b34801561032857600080fd5b506103316110dc565b60405161033e9190613802565b60405180910390f35b34801561035357600080fd5b5061036e600480360381019061036991906130f0565b611102565b60405161037e9493929190613838565b60405180910390f35b34801561039357600080fd5b5061039c6111f7565b6040516103a991906136e6565b60405180910390f35b3480156103be57600080fd5b506103d960048036038101906103d4919061309e565b611220565b6040516103e691906137e7565b60405180910390f35b3480156103fb57600080fd5b506104166004803603810190610411919061309e565b611240565b60405161042b99989796959493929190613738565b60405180910390f35b34801561044057600080fd5b5061045b600480360381019061045691906130f0565b6112ae565b60405161046891906136e6565b60405180910390f35b34801561047d57600080fd5b5061049860048036038101906104939190613155565b6112fc565b6040516104a59190613a04565b60405180910390f35b3480156104ba57600080fd5b506104c3611314565b6040516104d09190613a04565b60405180910390f35b3480156104e557600080fd5b506104ee61131a565b6040516104fb91906136e6565b60405180910390f35b34801561051057600080fd5b5061052b6004803603810190610526919061309e565b611340565b6040516105389190613a04565b60405180910390f35b61055b60048036038101906105569190613155565b611358565b005b34801561056957600080fd5b50610584600480360381019061057f919061309e565b611c48565b005b60065481565b600a6020528060005260406000206000915090505481565b600260015414156105ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105e1906139e4565b60405180910390fd5b60026001819055503373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610680576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610677906139c4565b60405180910390fd5b6000811180156106905750600b81105b6106cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c6906138e4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561073f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610736906138c4565b60405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c3c5a547836040518263ffffffff1660e01b815260040161079a91906136e6565b60206040518083038186803b1580156107b257600080fd5b505afa1580156107c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ea919061312c565b610829576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082090613984565b60405180910390fd5b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639d2c6150846040518263ffffffff1660e01b815260040161088691906136e6565b60206040518083038186803b15801561089e57600080fd5b505afa1580156108b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d691906130c7565b90506000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600073ffffffffffffffffffffffffffffffffffffffff16600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610d1d576040518061012001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020016001836109e89190613a90565b81526020016000815260200160008152602001600081526020016000815260200142815260200184815260200142815250600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e082015181600701556101008201518160080155905050600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190610b4390613c88565b9190505550600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020849080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060026000815480929190610bfb90613c88565b9190505550600254600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555081600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b82600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f9349c399944b26d64495956ed0f260c5f0384c3841350ddec39e90c8fbf9992b84600860008681526020019081526020016000205442604051610da793929190613701565b60405180910390a15050600180819055505050565b600c6020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60096020528060005260406000206000915090505481565b60076020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b82821015610fc95783829060005260206000209060040201604051806080016040529081600082018054610ece90613c56565b80601f0160208091040260200160405190810160405280929190818152602001828054610efa90613c56565b8015610f475780601f10610f1c57610100808354040283529160200191610f47565b820191906000526020600020905b815481529060010190602001808311610f2a57829003601f168201915b50505050508152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160038201548152505081526020019060010190610e9b565b505050509050919050565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c3c5a547836040518263ffffffff1660e01b815260040161103191906136e6565b60206040518083038186803b15801561104957600080fd5b505afa15801561105d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611081919061312c565b6110c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b790613924565b60405180910390fd5b60006110cb83611d52565b905080915050919050565b60035481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6010602052816000526040600020818154811061111e57600080fd5b90600052602060002090600402016000915091505080600001805461114290613c56565b80601f016020809104026020016040519081016040528092919081815260200182805461116e90613c56565b80156111bb5780601f10611190576101008083540402835291602001916111bb565b820191906000526020600020905b81548152906001019060200180831161119e57829003601f168201915b5050505050908060010154908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060030154905084565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600e6020528060005260406000206000915054906101000a900460ff1681565b600f6020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030154908060040154908060050154908060060154908060070154908060080154905089565b600b60205281600052604060002081815481106112ca57600080fd5b906000526020600020016000915091509054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60086020528060005260406000206000915090505481565b60025481565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d6020528060005260406000206000915090505481565b6002600154141561139e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611395906139e4565b60405180910390fd5b60026001819055506000811180156113b65750600b81105b6113f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ec906138e4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415611465576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145c906138c4565b60405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c3c5a547336040518263ffffffff1660e01b81526004016114c091906136e6565b60206040518083038186803b1580156114d857600080fd5b505afa1580156114ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611510919061312c565b61154f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154690613984565b60405180910390fd5b600860008281526020019081526020016000205434146115a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159b90613944565b60405180910390fd5b600181111561163b576001816115ba9190613b71565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461163a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611631906138a4565b60405180910390fd5b5b60018114156116525761164d81611ebb565b61165c565b61165b81612031565b5b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639d2c6150336040518263ffffffff1660e01b81526004016116b991906136e6565b60206040518083038186803b1580156116d157600080fd5b505afa1580156116e5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170991906130c7565b90506000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600073ffffffffffffffffffffffffffffffffffffffff16600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611b50576040518061012001604052803373ffffffffffffffffffffffffffffffffffffffff16815260200160018361181b9190613a90565b81526020016000815260200160008152602001600081526020016000815260200142815260200184815260200142815250600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e082015181600701556101008201518160080155905050600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919061197690613c88565b9190505550600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060026000815480929190611a2e90613c88565b9190505550600254600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555081600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b82600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555033600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503460036000828254611be79190613a90565b925050819055507f9349c399944b26d64495956ed0f260c5f0384c3841350ddec39e90c8fbf9992b33600860008681526020019081526020016000205442604051611c3493929190613701565b60405180910390a150506001808190555050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ccd906139c4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611d46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3d90613904565b60405180910390fd5b611d4f81612169565b50565b600080600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050905060005b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050811015611eb157611e91600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110611e61577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611d52565b82611e9c9190613a90565b91508080611ea990613c88565b915050611d9d565b5080915050919050565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639d2c6150336040518263ffffffff1660e01b8152600401611f1891906136e6565b60206040518083038186803b158015611f3057600080fd5b505afa158015611f44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f6891906130c7565b90506000611f758261222d565b9050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461202c5760006001600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ff99190613a90565b9050600060028261200a9190613cd1565b1461201f576120198483612440565b5061202a565b61202984836125b5565b5b505b505050565b6000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490506000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639d2c6150336040518263ffffffff1660e01b81526004016120d591906136e6565b60206040518083038186803b1580156120ed57600080fd5b505afa158015612101573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061212591906130c7565b905060006121328261222d565b905060006002846121439190613cd1565b14612158576121528482612440565b50612163565b61216284826125b5565b5b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b612235612f85565b61223d612f85565b8281600060048110612278577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000600190505b600481101561243657600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639d2c61508360018461230b9190613b71565b60048110612342577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201516040518263ffffffff1660e01b815260040161236391906136e6565b60206040518083038186803b15801561237b57600080fd5b505afa15801561238f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123b391906130c7565b8282600481106123ec577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050808061242e90613c88565b9150506122b6565b5080915050919050565b6000808260006004811061247d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151905060008061248f612a3e565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156124df578091506124d38683612af1565b600093505050506125af565b60005b600481101561259c5761253287878360048110612528577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151612f38565b1561257c57858160048110612570577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151925061259c565b6003811415612589578192505b808061259490613c88565b9150506124e2565b506125a78683612af1565b600093505050505b92915050565b60006064601960086000868152602001908152602001600020546125d99190613b17565b6125e39190613ae6565b905060006125ef612a3e565b905060005b6004811015612a37576000848260048110612638577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151905060008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148061268257506126808783612f38565b155b1561268f57839050612693565b8190505b60008173ffffffffffffffffffffffffffffffffffffffff16866040516126b9906136d1565b60006040518083038185875af1925050503d80600081146126f6576040519150601f19603f3d011682016040523d82523d6000602084013e6126fb565b606091505b505090508061273f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273690613964565b60405180910390fd5b600060405180608001604052806040518060400160405280600c81526020017f53706f6e736f72204761696e000000000000000000000000000000000000000081525081526020018881526020013373ffffffffffffffffffffffffffffffffffffffff168152602001428152509050601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190806001815401808255809150506001900390600052602060002090600402016000909190919091506000820151816000019080519060200190612834929190612fa7565b506020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160030155505086600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160008282546128e49190613a90565b925050819055506001600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401600082825461293e9190613a90565b9250508190555042600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206006018190555086600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030160008282546129de9190613a90565b925050819055507f0f4335f2702b18df76961ea63280f8e4a2a2c5b6015553addeb2d97ac590d4c0838842604051612a1893929190613701565b60405180910390a1505050508080612a2f90613c88565b9150506125f4565b5050505050565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639c28d9c060016040518263ffffffff1660e01b8152600401612a9c919061381d565b60206040518083038186803b158015612ab457600080fd5b505afa158015612ac8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aec91906130c7565b905090565b600060086000848152602001908152602001600020549050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612e3d5760008273ffffffffffffffffffffffffffffffffffffffff1682604051612b63906136d1565b60006040518083038185875af1925050503d8060008114612ba0576040519150601f19603f3d011682016040523d82523d6000602084013e612ba5565b606091505b5050905080612be9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612be0906139a4565b60405180910390fd5b600060405180608001604052806040518060400160405280600b81526020017f446972656374204761696e00000000000000000000000000000000000000000081525081526020018481526020013373ffffffffffffffffffffffffffffffffffffffff168152602001428152509050601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190806001815401808255809150506001900390600052602060002090600402016000909190919091506000820151816000019080519060200190612cde929190612fa7565b506020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160030155505082600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002016000828254612d8e9190613a90565b925050819055506001600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206004016000828254612de89190613a90565b9250508190555042600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600601819055505050612ef8565b6000612e47612a3e565b905060008173ffffffffffffffffffffffffffffffffffffffff1683604051612e6f906136d1565b60006040518083038185875af1925050503d8060008114612eac576040519150601f19603f3d011682016040523d82523d6000602084013e612eb1565b606091505b5050905080612ef5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eec90613884565b60405180910390fd5b50505b7f0f4335f2702b18df76961ea63280f8e4a2a2c5b6015553addeb2d97ac590d4c0828242604051612f2b93929190613701565b60405180910390a1505050565b600082600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015905092915050565b6040518060800160405280600490602082028036833780820191505090505090565b828054612fb390613c56565b90600052602060002090601f016020900481019282612fd5576000855561301c565b82601f10612fee57805160ff191683800117855561301c565b8280016001018555821561301c579182015b8281111561301b578251825591602001919060010190613000565b5b509050613029919061302d565b5090565b5b8082111561304657600081600090555060010161302e565b5090565b60008135905061305981613da0565b92915050565b60008151905061306e81613da0565b92915050565b60008151905061308381613db7565b92915050565b60008135905061309881613dce565b92915050565b6000602082840312156130b057600080fd5b60006130be8482850161304a565b91505092915050565b6000602082840312156130d957600080fd5b60006130e78482850161305f565b91505092915050565b6000806040838503121561310357600080fd5b60006131118582860161304a565b925050602061312285828601613089565b9150509250929050565b60006020828403121561313e57600080fd5b600061314c84828501613074565b91505092915050565b60006020828403121561316757600080fd5b600061317584828501613089565b91505092915050565b600061318a8383613650565b905092915050565b61319b81613ba5565b82525050565b6131aa81613ba5565b82525050565b60006131bb82613a2f565b6131c58185613a52565b9350836020820285016131d785613a1f565b8060005b8581101561321357848403895281516131f4858261317e565b94506131ff83613a45565b925060208a019950506001810190506131db565b50829750879550505050505092915050565b61322e81613bb7565b82525050565b61323d81613bed565b82525050565b61324c81613c11565b82525050565b600061325d82613a3a565b6132678185613a6e565b9350613277818560208601613c23565b61328081613d8f565b840191505092915050565b600061329682613a3a565b6132a08185613a7f565b93506132b0818560208601613c23565b6132b981613d8f565b840191505092915050565b60006132d1602783613a7f565b91507f416e206572726f72206f63637572656420647572696e6720646972656374207460008301527f72616e73666572000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613337601c83613a7f565b91507f50726576696f7573206c6576656c206e6f7420616374697661746564000000006000830152602082019050919050565b6000613377601b83613a7f565b91507f5a65726f2061646472657373206973206e6f7420616c6c6f77656400000000006000830152602082019050919050565b60006133b7601583613a7f565b91507f4c6576656c206973206f7574206f662072616e676500000000000000000000006000830152602082019050919050565b60006133f7602683613a7f565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061345d601383613a7f565b91507f55736572206e6f742072656769737465726564000000000000000000000000006000830152602082019050919050565b600061349d601183613a7f565b91507f6e6f7420656e6f75677468206f70424e420000000000000000000000000000006000830152602082019050919050565b60006134dd603a83613a7f565b91507f746865207472616e7366657220746f207468652063757272656e742075706c6960008301527f6e6520616d6f756e672034206f66207468656d206661696c65640000000000006020830152604082019050919050565b6000613543601683613a7f565b91507f55736572206973206e6f742072656769737465726564000000000000000000006000830152602082019050919050565b6000613583601b83613a7f565b91507f5472616e7366657220746f207468652075736572206661696c656400000000006000830152602082019050919050565b60006135c3602083613a7f565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000613603600083613a63565b9150600082019050919050565b600061361d601f83613a7f565b91507f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006000830152602082019050919050565b6000608083016000830151848203600086015261366d8282613252565b915050602083015161368260208601826136b3565b5060408301516136956040860182613192565b5060608301516136a860608601826136b3565b508091505092915050565b6136bc81613be3565b82525050565b6136cb81613be3565b82525050565b60006136dc826135f6565b9150819050919050565b60006020820190506136fb60008301846131a1565b92915050565b600060608201905061371660008301866131a1565b61372360208301856136c2565b61373060408301846136c2565b949350505050565b60006101208201905061374e600083018c6131a1565b61375b602083018b6136c2565b613768604083018a6136c2565b61377560608301896136c2565b61378260808301886136c2565b61378f60a08301876136c2565b61379c60c08301866136c2565b6137a960e08301856136c2565b6137b76101008301846136c2565b9a9950505050505050505050565b600060208201905081810360008301526137df81846131b0565b905092915050565b60006020820190506137fc6000830184613225565b92915050565b60006020820190506138176000830184613234565b92915050565b60006020820190506138326000830184613243565b92915050565b60006080820190508181036000830152613852818761328b565b905061386160208301866136c2565b61386e60408301856131a1565b61387b60608301846136c2565b95945050505050565b6000602082019050818103600083015261389d816132c4565b9050919050565b600060208201905081810360008301526138bd8161332a565b9050919050565b600060208201905081810360008301526138dd8161336a565b9050919050565b600060208201905081810360008301526138fd816133aa565b9050919050565b6000602082019050818103600083015261391d816133ea565b9050919050565b6000602082019050818103600083015261393d81613450565b9050919050565b6000602082019050818103600083015261395d81613490565b9050919050565b6000602082019050818103600083015261397d816134d0565b9050919050565b6000602082019050818103600083015261399d81613536565b9050919050565b600060208201905081810360008301526139bd81613576565b9050919050565b600060208201905081810360008301526139dd816135b6565b9050919050565b600060208201905081810360008301526139fd81613610565b9050919050565b6000602082019050613a1960008301846136c2565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613a9b82613be3565b9150613aa683613be3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613adb57613ada613d02565b5b828201905092915050565b6000613af182613be3565b9150613afc83613be3565b925082613b0c57613b0b613d31565b5b828204905092915050565b6000613b2282613be3565b9150613b2d83613be3565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613b6657613b65613d02565b5b828202905092915050565b6000613b7c82613be3565b9150613b8783613be3565b925082821015613b9a57613b99613d02565b5b828203905092915050565b6000613bb082613bc3565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000613bf882613bff565b9050919050565b6000613c0a82613bc3565b9050919050565b6000613c1c82613be3565b9050919050565b60005b83811015613c41578082015181840152602081019050613c26565b83811115613c50576000848401525b50505050565b60006002820490506001821680613c6e57607f821691505b60208210811415613c8257613c81613d60565b5b50919050565b6000613c9382613be3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613cc657613cc5613d02565b5b600182019050919050565b6000613cdc82613be3565b9150613ce783613be3565b925082613cf757613cf6613d31565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b613da981613ba5565b8114613db457600080fd5b50565b613dc081613bb7565b8114613dcb57600080fd5b50565b613dd781613be3565b8114613de257600080fd5b5056fea2646970667358221220608af50c2d7ab6bc3b74577b8ac0a068bf70a811720cd892b461818a73862c8664736f6c63430008000033

Deployed Bytecode

0x60806040526004361061012a5760003560e01c80637718f4ec116100ab578063aad049b31161006f578063aad049b314610471578063af1db4dd146104ae578063b0b95fa2146104d9578063dc85fecf14610504578063efef39a114610541578063f2fde38b1461055d5761012a565b80637718f4ec146103475780638da5cb5b146103875780639f8a13d7146103b2578063a87430ba146103ef578063a8950aa4146104345761012a565b80635abe9a06116100f25780635abe9a061461023a5780635dd43796146102775780636c04cbfd146102b45780636dfa8d99146102f157806373416fc81461031c5761012a565b80630eb7eb831461012f578063173ef9cb1461015a57806322bbb95714610197578063260f5fe9146101c0578063280e31cc146101fd575b600080fd5b34801561013b57600080fd5b50610144610586565b6040516101519190613a04565b60405180910390f35b34801561016657600080fd5b50610181600480360381019061017c919061309e565b61058c565b60405161018e9190613a04565b60405180910390f35b3480156101a357600080fd5b506101be60048036038101906101b991906130f0565b6105a4565b005b3480156101cc57600080fd5b506101e760048036038101906101e29190613155565b610dbc565b6040516101f491906136e6565b60405180910390f35b34801561020957600080fd5b50610224600480360381019061021f919061309e565b610def565b6040516102319190613a04565b60405180910390f35b34801561024657600080fd5b50610261600480360381019061025c919061309e565b610e07565b60405161026e91906136e6565b60405180910390f35b34801561028357600080fd5b5061029e6004803603810190610299919061309e565b610e3a565b6040516102ab91906137c5565b60405180910390f35b3480156102c057600080fd5b506102db60048036038101906102d6919061309e565b610fd4565b6040516102e89190613a04565b60405180910390f35b3480156102fd57600080fd5b506103066110d6565b6040516103139190613a04565b60405180910390f35b34801561032857600080fd5b506103316110dc565b60405161033e9190613802565b60405180910390f35b34801561035357600080fd5b5061036e600480360381019061036991906130f0565b611102565b60405161037e9493929190613838565b60405180910390f35b34801561039357600080fd5b5061039c6111f7565b6040516103a991906136e6565b60405180910390f35b3480156103be57600080fd5b506103d960048036038101906103d4919061309e565b611220565b6040516103e691906137e7565b60405180910390f35b3480156103fb57600080fd5b506104166004803603810190610411919061309e565b611240565b60405161042b99989796959493929190613738565b60405180910390f35b34801561044057600080fd5b5061045b600480360381019061045691906130f0565b6112ae565b60405161046891906136e6565b60405180910390f35b34801561047d57600080fd5b5061049860048036038101906104939190613155565b6112fc565b6040516104a59190613a04565b60405180910390f35b3480156104ba57600080fd5b506104c3611314565b6040516104d09190613a04565b60405180910390f35b3480156104e557600080fd5b506104ee61131a565b6040516104fb91906136e6565b60405180910390f35b34801561051057600080fd5b5061052b6004803603810190610526919061309e565b611340565b6040516105389190613a04565b60405180910390f35b61055b60048036038101906105569190613155565b611358565b005b34801561056957600080fd5b50610584600480360381019061057f919061309e565b611c48565b005b60065481565b600a6020528060005260406000206000915090505481565b600260015414156105ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105e1906139e4565b60405180910390fd5b60026001819055503373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610680576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610677906139c4565b60405180910390fd5b6000811180156106905750600b81105b6106cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c6906138e4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561073f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610736906138c4565b60405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c3c5a547836040518263ffffffff1660e01b815260040161079a91906136e6565b60206040518083038186803b1580156107b257600080fd5b505afa1580156107c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ea919061312c565b610829576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082090613984565b60405180910390fd5b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639d2c6150846040518263ffffffff1660e01b815260040161088691906136e6565b60206040518083038186803b15801561089e57600080fd5b505afa1580156108b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d691906130c7565b90506000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600073ffffffffffffffffffffffffffffffffffffffff16600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610d1d576040518061012001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020016001836109e89190613a90565b81526020016000815260200160008152602001600081526020016000815260200142815260200184815260200142815250600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e082015181600701556101008201518160080155905050600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190610b4390613c88565b9190505550600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020849080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060026000815480929190610bfb90613c88565b9190505550600254600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555081600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b82600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f9349c399944b26d64495956ed0f260c5f0384c3841350ddec39e90c8fbf9992b84600860008681526020019081526020016000205442604051610da793929190613701565b60405180910390a15050600180819055505050565b600c6020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60096020528060005260406000206000915090505481565b60076020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b82821015610fc95783829060005260206000209060040201604051806080016040529081600082018054610ece90613c56565b80601f0160208091040260200160405190810160405280929190818152602001828054610efa90613c56565b8015610f475780601f10610f1c57610100808354040283529160200191610f47565b820191906000526020600020905b815481529060010190602001808311610f2a57829003601f168201915b50505050508152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160038201548152505081526020019060010190610e9b565b505050509050919050565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c3c5a547836040518263ffffffff1660e01b815260040161103191906136e6565b60206040518083038186803b15801561104957600080fd5b505afa15801561105d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611081919061312c565b6110c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b790613924565b60405180910390fd5b60006110cb83611d52565b905080915050919050565b60035481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6010602052816000526040600020818154811061111e57600080fd5b90600052602060002090600402016000915091505080600001805461114290613c56565b80601f016020809104026020016040519081016040528092919081815260200182805461116e90613c56565b80156111bb5780601f10611190576101008083540402835291602001916111bb565b820191906000526020600020905b81548152906001019060200180831161119e57829003601f168201915b5050505050908060010154908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060030154905084565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600e6020528060005260406000206000915054906101000a900460ff1681565b600f6020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030154908060040154908060050154908060060154908060070154908060080154905089565b600b60205281600052604060002081815481106112ca57600080fd5b906000526020600020016000915091509054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60086020528060005260406000206000915090505481565b60025481565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d6020528060005260406000206000915090505481565b6002600154141561139e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611395906139e4565b60405180910390fd5b60026001819055506000811180156113b65750600b81105b6113f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ec906138e4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415611465576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145c906138c4565b60405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c3c5a547336040518263ffffffff1660e01b81526004016114c091906136e6565b60206040518083038186803b1580156114d857600080fd5b505afa1580156114ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611510919061312c565b61154f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154690613984565b60405180910390fd5b600860008281526020019081526020016000205434146115a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159b90613944565b60405180910390fd5b600181111561163b576001816115ba9190613b71565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461163a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611631906138a4565b60405180910390fd5b5b60018114156116525761164d81611ebb565b61165c565b61165b81612031565b5b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639d2c6150336040518263ffffffff1660e01b81526004016116b991906136e6565b60206040518083038186803b1580156116d157600080fd5b505afa1580156116e5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170991906130c7565b90506000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600073ffffffffffffffffffffffffffffffffffffffff16600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611b50576040518061012001604052803373ffffffffffffffffffffffffffffffffffffffff16815260200160018361181b9190613a90565b81526020016000815260200160008152602001600081526020016000815260200142815260200184815260200142815250600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e082015181600701556101008201518160080155905050600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919061197690613c88565b9190505550600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060026000815480929190611a2e90613c88565b9190505550600254600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555081600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b82600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555033600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503460036000828254611be79190613a90565b925050819055507f9349c399944b26d64495956ed0f260c5f0384c3841350ddec39e90c8fbf9992b33600860008681526020019081526020016000205442604051611c3493929190613701565b60405180910390a150506001808190555050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ccd906139c4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611d46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3d90613904565b60405180910390fd5b611d4f81612169565b50565b600080600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050905060005b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050811015611eb157611e91600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110611e61577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611d52565b82611e9c9190613a90565b91508080611ea990613c88565b915050611d9d565b5080915050919050565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639d2c6150336040518263ffffffff1660e01b8152600401611f1891906136e6565b60206040518083038186803b158015611f3057600080fd5b505afa158015611f44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f6891906130c7565b90506000611f758261222d565b9050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461202c5760006001600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ff99190613a90565b9050600060028261200a9190613cd1565b1461201f576120198483612440565b5061202a565b61202984836125b5565b5b505b505050565b6000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490506000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639d2c6150336040518263ffffffff1660e01b81526004016120d591906136e6565b60206040518083038186803b1580156120ed57600080fd5b505afa158015612101573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061212591906130c7565b905060006121328261222d565b905060006002846121439190613cd1565b14612158576121528482612440565b50612163565b61216284826125b5565b5b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b612235612f85565b61223d612f85565b8281600060048110612278577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000600190505b600481101561243657600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639d2c61508360018461230b9190613b71565b60048110612342577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201516040518263ffffffff1660e01b815260040161236391906136e6565b60206040518083038186803b15801561237b57600080fd5b505afa15801561238f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123b391906130c7565b8282600481106123ec577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050808061242e90613c88565b9150506122b6565b5080915050919050565b6000808260006004811061247d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151905060008061248f612a3e565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156124df578091506124d38683612af1565b600093505050506125af565b60005b600481101561259c5761253287878360048110612528577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151612f38565b1561257c57858160048110612570577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151925061259c565b6003811415612589578192505b808061259490613c88565b9150506124e2565b506125a78683612af1565b600093505050505b92915050565b60006064601960086000868152602001908152602001600020546125d99190613b17565b6125e39190613ae6565b905060006125ef612a3e565b905060005b6004811015612a37576000848260048110612638577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151905060008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148061268257506126808783612f38565b155b1561268f57839050612693565b8190505b60008173ffffffffffffffffffffffffffffffffffffffff16866040516126b9906136d1565b60006040518083038185875af1925050503d80600081146126f6576040519150601f19603f3d011682016040523d82523d6000602084013e6126fb565b606091505b505090508061273f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273690613964565b60405180910390fd5b600060405180608001604052806040518060400160405280600c81526020017f53706f6e736f72204761696e000000000000000000000000000000000000000081525081526020018881526020013373ffffffffffffffffffffffffffffffffffffffff168152602001428152509050601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190806001815401808255809150506001900390600052602060002090600402016000909190919091506000820151816000019080519060200190612834929190612fa7565b506020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160030155505086600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160008282546128e49190613a90565b925050819055506001600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401600082825461293e9190613a90565b9250508190555042600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206006018190555086600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030160008282546129de9190613a90565b925050819055507f0f4335f2702b18df76961ea63280f8e4a2a2c5b6015553addeb2d97ac590d4c0838842604051612a1893929190613701565b60405180910390a1505050508080612a2f90613c88565b9150506125f4565b5050505050565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639c28d9c060016040518263ffffffff1660e01b8152600401612a9c919061381d565b60206040518083038186803b158015612ab457600080fd5b505afa158015612ac8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aec91906130c7565b905090565b600060086000848152602001908152602001600020549050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612e3d5760008273ffffffffffffffffffffffffffffffffffffffff1682604051612b63906136d1565b60006040518083038185875af1925050503d8060008114612ba0576040519150601f19603f3d011682016040523d82523d6000602084013e612ba5565b606091505b5050905080612be9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612be0906139a4565b60405180910390fd5b600060405180608001604052806040518060400160405280600b81526020017f446972656374204761696e00000000000000000000000000000000000000000081525081526020018481526020013373ffffffffffffffffffffffffffffffffffffffff168152602001428152509050601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190806001815401808255809150506001900390600052602060002090600402016000909190919091506000820151816000019080519060200190612cde929190612fa7565b506020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160030155505082600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002016000828254612d8e9190613a90565b925050819055506001600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206004016000828254612de89190613a90565b9250508190555042600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600601819055505050612ef8565b6000612e47612a3e565b905060008173ffffffffffffffffffffffffffffffffffffffff1683604051612e6f906136d1565b60006040518083038185875af1925050503d8060008114612eac576040519150601f19603f3d011682016040523d82523d6000602084013e612eb1565b606091505b5050905080612ef5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eec90613884565b60405180910390fd5b50505b7f0f4335f2702b18df76961ea63280f8e4a2a2c5b6015553addeb2d97ac590d4c0828242604051612f2b93929190613701565b60405180910390a1505050565b600082600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015905092915050565b6040518060800160405280600490602082028036833780820191505090505090565b828054612fb390613c56565b90600052602060002090601f016020900481019282612fd5576000855561301c565b82601f10612fee57805160ff191683800117855561301c565b8280016001018555821561301c579182015b8281111561301b578251825591602001919060010190613000565b5b509050613029919061302d565b5090565b5b8082111561304657600081600090555060010161302e565b5090565b60008135905061305981613da0565b92915050565b60008151905061306e81613da0565b92915050565b60008151905061308381613db7565b92915050565b60008135905061309881613dce565b92915050565b6000602082840312156130b057600080fd5b60006130be8482850161304a565b91505092915050565b6000602082840312156130d957600080fd5b60006130e78482850161305f565b91505092915050565b6000806040838503121561310357600080fd5b60006131118582860161304a565b925050602061312285828601613089565b9150509250929050565b60006020828403121561313e57600080fd5b600061314c84828501613074565b91505092915050565b60006020828403121561316757600080fd5b600061317584828501613089565b91505092915050565b600061318a8383613650565b905092915050565b61319b81613ba5565b82525050565b6131aa81613ba5565b82525050565b60006131bb82613a2f565b6131c58185613a52565b9350836020820285016131d785613a1f565b8060005b8581101561321357848403895281516131f4858261317e565b94506131ff83613a45565b925060208a019950506001810190506131db565b50829750879550505050505092915050565b61322e81613bb7565b82525050565b61323d81613bed565b82525050565b61324c81613c11565b82525050565b600061325d82613a3a565b6132678185613a6e565b9350613277818560208601613c23565b61328081613d8f565b840191505092915050565b600061329682613a3a565b6132a08185613a7f565b93506132b0818560208601613c23565b6132b981613d8f565b840191505092915050565b60006132d1602783613a7f565b91507f416e206572726f72206f63637572656420647572696e6720646972656374207460008301527f72616e73666572000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613337601c83613a7f565b91507f50726576696f7573206c6576656c206e6f7420616374697661746564000000006000830152602082019050919050565b6000613377601b83613a7f565b91507f5a65726f2061646472657373206973206e6f7420616c6c6f77656400000000006000830152602082019050919050565b60006133b7601583613a7f565b91507f4c6576656c206973206f7574206f662072616e676500000000000000000000006000830152602082019050919050565b60006133f7602683613a7f565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061345d601383613a7f565b91507f55736572206e6f742072656769737465726564000000000000000000000000006000830152602082019050919050565b600061349d601183613a7f565b91507f6e6f7420656e6f75677468206f70424e420000000000000000000000000000006000830152602082019050919050565b60006134dd603a83613a7f565b91507f746865207472616e7366657220746f207468652063757272656e742075706c6960008301527f6e6520616d6f756e672034206f66207468656d206661696c65640000000000006020830152604082019050919050565b6000613543601683613a7f565b91507f55736572206973206e6f742072656769737465726564000000000000000000006000830152602082019050919050565b6000613583601b83613a7f565b91507f5472616e7366657220746f207468652075736572206661696c656400000000006000830152602082019050919050565b60006135c3602083613a7f565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000613603600083613a63565b9150600082019050919050565b600061361d601f83613a7f565b91507f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006000830152602082019050919050565b6000608083016000830151848203600086015261366d8282613252565b915050602083015161368260208601826136b3565b5060408301516136956040860182613192565b5060608301516136a860608601826136b3565b508091505092915050565b6136bc81613be3565b82525050565b6136cb81613be3565b82525050565b60006136dc826135f6565b9150819050919050565b60006020820190506136fb60008301846131a1565b92915050565b600060608201905061371660008301866131a1565b61372360208301856136c2565b61373060408301846136c2565b949350505050565b60006101208201905061374e600083018c6131a1565b61375b602083018b6136c2565b613768604083018a6136c2565b61377560608301896136c2565b61378260808301886136c2565b61378f60a08301876136c2565b61379c60c08301866136c2565b6137a960e08301856136c2565b6137b76101008301846136c2565b9a9950505050505050505050565b600060208201905081810360008301526137df81846131b0565b905092915050565b60006020820190506137fc6000830184613225565b92915050565b60006020820190506138176000830184613234565b92915050565b60006020820190506138326000830184613243565b92915050565b60006080820190508181036000830152613852818761328b565b905061386160208301866136c2565b61386e60408301856131a1565b61387b60608301846136c2565b95945050505050565b6000602082019050818103600083015261389d816132c4565b9050919050565b600060208201905081810360008301526138bd8161332a565b9050919050565b600060208201905081810360008301526138dd8161336a565b9050919050565b600060208201905081810360008301526138fd816133aa565b9050919050565b6000602082019050818103600083015261391d816133ea565b9050919050565b6000602082019050818103600083015261393d81613450565b9050919050565b6000602082019050818103600083015261395d81613490565b9050919050565b6000602082019050818103600083015261397d816134d0565b9050919050565b6000602082019050818103600083015261399d81613536565b9050919050565b600060208201905081810360008301526139bd81613576565b9050919050565b600060208201905081810360008301526139dd816135b6565b9050919050565b600060208201905081810360008301526139fd81613610565b9050919050565b6000602082019050613a1960008301846136c2565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613a9b82613be3565b9150613aa683613be3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613adb57613ada613d02565b5b828201905092915050565b6000613af182613be3565b9150613afc83613be3565b925082613b0c57613b0b613d31565b5b828204905092915050565b6000613b2282613be3565b9150613b2d83613be3565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613b6657613b65613d02565b5b828202905092915050565b6000613b7c82613be3565b9150613b8783613be3565b925082821015613b9a57613b99613d02565b5b828203905092915050565b6000613bb082613bc3565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000613bf882613bff565b9050919050565b6000613c0a82613bc3565b9050919050565b6000613c1c82613be3565b9050919050565b60005b83811015613c41578082015181840152602081019050613c26565b83811115613c50576000848401525b50505050565b60006002820490506001821680613c6e57607f821691505b60208210811415613c8257613c81613d60565b5b50919050565b6000613c9382613be3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613cc657613cc5613d02565b5b600182019050919050565b6000613cdc82613be3565b9150613ce783613be3565b925082613cf757613cf6613d31565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b613da981613ba5565b8114613db457600080fd5b50565b613dc081613bb7565b8114613dcb57600080fd5b50565b613dd781613be3565b8114613de257600080fd5b5056fea2646970667358221220608af50c2d7ab6bc3b74577b8ac0a068bf70a811720cd892b461818a73862c8664736f6c63430008000033

Deployed Bytecode Sourcemap

1821:12498:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2034:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3438:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7022:1490;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3557:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3389:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3284:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14200:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13595:228;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1939:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1970;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3758:51;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;325:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3663:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3713:39;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;3496:55;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3342:41;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1901:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2000:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3613:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4878:2137;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;537:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2034:29;;;;:::o;3438:52::-;;;;;;;;;;;;;;;;;:::o;7022:1490::-;1133:1;1249:7;;:19;;1241:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;1133:1;1315:7;:18;;;;462:10:::1;452:20;;:6;::::0;::::1;;;;;;;;:20;;;444:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;7183:1:::2;7175:5;:9;:23;;;;;7196:2;7188:5;:10;7175:23;7167:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;7307:1;7291:18;;:4;:18;;;;7283:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;7405:11;;;;;;;;;;;:24;;;7430:4;7405:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7397:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;7531:20;7554:11;;;;;;;;;;;:22;;;7577:4;7554:28;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7531:51;;7591:16;7610:18;:32;7629:12;7610:32;;;;;;;;;;;;;;;;7591:51;;7694:1;7659:37;;:5;:11;7665:4;7659:11;;;;;;;;;;;;;;;:23;;;;;;;;;;;;:37;;;7655:744;;;7782:342;;;;;;;;7814:4;7782:342;;;;;;7854:1;7840:11;:15;;;;:::i;:::-;7782:342;;;;7882:1;7782:342;;;;7917:1;7782:342;;;;7951:1;7782:342;;;;7980:1;7782:342;;;;8008:15;7782:342;;;;8055:5;7782:342;;;;8095:15;7782:342;;::::0;7768:5:::2;:11;7774:4;7768:11;;;;;;;;;;;;;;;:356;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8139:18;:32;8158:12;8139:32;;;;;;;;;;;;;;;;:35;;;;;;;;;:::i;:::-;;;;;;8185:16;:30;8202:12;8185:30;;;;;;;;;;;;;;;8221:4;8185:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8237:19;;:22;;;;;;;;;:::i;:::-;;;;;;8289:19;;8270:10;:16;8281:4;8270:16;;;;;;;;;;;;;;;:38;;;;8335:4;8318:8;:14;8327:4;8318:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;8374:12;8350:15;:21;8366:4;8350:21;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;7655:744;8420:5;8402:9;:15;8412:4;8402:15;;;;;;;;;;;;;;;:23;;;;8436:57;8451:4;8458:10;:17;8469:5;8458:17;;;;;;;;;;;;8477:15;8436:57;;;;;;;;:::i;:::-;;;;;;;;520:1;;1089::::0;1356:7;:22;;;;7022:1490;;:::o;3557:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;3389:43::-;;;;;;;;;;;;;;;;;:::o;3284:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;14200:116::-;14258:20;14294:7;:13;14302:4;14294:13;;;;;;;;;;;;;;;14287:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14200:116;;;:::o;13595:228::-;13658:7;13682:11;;;;;;;;;;;:24;;;13707:4;13682:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13674:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;13745:21;13769:23;13787:4;13769:17;:23::i;:::-;13745:47;;13806:13;13799:20;;;13595:228;;;:::o;1939:23::-;;;;:::o;1970:::-;;;;;;;;;;;;;:::o;3758:51::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;325:79::-;363:7;390:6;;;;;;;;;;;383:13;;325:79;:::o;3663:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;3713:39::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3496:55::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3342:41::-;;;;;;;;;;;;;;;;;:::o;1901:31::-;;;;:::o;2000:23::-;;;;;;;;;;;;;:::o;3613:44::-;;;;;;;;;;;;;;;;;:::o;4878:2137::-;1133:1;1249:7;;:19;;1241:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;1133:1;1315:7;:18;;;;5012:1:::1;5004:5;:9;:23;;;;;5025:2;5017:5;:10;5004:23;4996:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;5142:1;5120:24;;:10;:24;;;;5112:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;5240:11;;;;;;;;;;;:24;;;5265:10;5240:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5232:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5407:10;:17;5418:5;5407:17;;;;;;;;;;;;5394:9;:30;5386:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;5480:1;5471:5;:10;5467:183;;;5604:1;5596:5;:9;;;;:::i;:::-;5571;:21;5581:10;5571:21;;;;;;;;;;;;;;;;:34;5563:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;5467:183;5712:1;5703:5;:10;5699:160;;;5751:21;5766:5;5751:14;:21::i;:::-;5699:160;;;5812:32;5838:5;5812:24;:32::i;:::-;5699:160;5915:20;5938:11;;;;;;;;;;;:22;;;5961:10;5938:34;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5915:57;;5981:16;6000:18;:32;6019:12;6000:32;;;;;;;;;;;;;;;;5981:51;;6090:1;6049:43;;:5;:17;6055:10;6049:17;;;;;;;;;;;;;;;:29;;;;;;;;;;;;:43;;;6045:786;;;6184:348;;;;;;;;6216:10;6184:348;;;;;;6262:1;6248:11;:15;;;;:::i;:::-;6184:348;;;;6290:1;6184:348;;;;6325:1;6184:348;;;;6359:1;6184:348;;;;6388:1;6184:348;;;;6416:15;6184:348;;;;6463:5;6184:348;;;;6503:15;6184:348;;::::0;6164:5:::1;:17;6170:10;6164:17;;;;;;;;;;;;;;;:368;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6547:18;:32;6566:12;6547:32;;;;;;;;;;;;;;;;:35;;;;;;;;;:::i;:::-;;;;;;6593:16;:30;6610:12;6593:30;;;;;;;;;;;;;;;6629:10;6593:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6651:19;;:22;;;;;;;;;:::i;:::-;;;;;;6709:19;;6684:10;:22;6695:10;6684:22;;;;;;;;;;;;;;;:44;;;;6761:4;6738:8;:20;6747:10;6738:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;6806:12;6776:15;:27;6792:10;6776:27;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;6045:786;6861:5;6837:9;:21;6847:10;6837:21;;;;;;;;;;;;;;;:29;;;;6882:10;6870:8;;:22;;;;;;;;;;;;;;;;;;6913:9;6898:11;;:24;;;;;;;:::i;:::-;;;;;;;;6933:63;6948:10;6961;:17;6972:5;6961:17;;;;;;;;;;;;6980:15;6933:63;;;;;;;;:::i;:::-;;;;;;;;1344:1;;1089::::0;1356:7;:22;;;;4878:2137;:::o;537:193::-;462:10;452:20;;:6;;;;;;;;;;:20;;;444:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;638:1:::1;618:22;;:8;:22;;;;610:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;694:28;713:8;694:18;:28::i;:::-;537:193:::0;:::o;13829:367::-;13893:7;13909:16;13928;:22;13945:4;13928:22;;;;;;;;;;;;;;;:29;;;;13909:48;;14039:9;14034:135;14058:16;:22;14075:4;14058:22;;;;;;;;;;;;;;;:29;;;;14054:1;:33;14034:135;;;14117:44;14135:16;:22;14152:4;14135:22;;;;;;;;;;;;;;;14158:1;14135:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14117:17;:44::i;:::-;14105:56;;;;;:::i;:::-;;;14089:3;;;;;:::i;:::-;;;;14034:135;;;;14184:8;14177:15;;;13829:367;;;:::o;8518:890::-;8576:20;8599:11;;;;;;;;;;;:22;;;8622:10;8599:34;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8576:57;;8645:26;8674:29;8690:12;8674:15;:29::i;:::-;8645:58;;8744:1;8720:26;;:12;:26;;;8716:688;;8915:17;8971:1;8936:18;:32;8955:12;8936:32;;;;;;;;;;;;;;;;:36;;;;:::i;:::-;8915:57;;9055:1;9050;9035:12;:16;;;;:::i;:::-;:21;9031:360;;9253:41;9278:5;9286:7;9253:22;:41::i;:::-;;9031:360;;;9337:37;9358:5;9366:7;9337:19;:37::i;:::-;9031:360;8716:688;;8518:890;;;:::o;13194:396::-;13257:18;13278:5;:17;13284:10;13278:17;;;;;;;;;;;;;;;:25;;;13257:46;;13312:20;13335:11;;;;;;;;;;;:22;;;13358:10;13335:34;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13312:57;;13381:26;13410:29;13426:12;13410:15;:29::i;:::-;13381:58;;13471:1;13466;13450:13;:17;;;;:::i;:::-;:22;13446:139;;13481:40;13505:5;13513:7;13481:22;:40::i;:::-;;13446:139;;;13542:36;13562:5;13570:7;13542:19;:36::i;:::-;13446:139;13194:396;;;;:::o;738:183::-;804:16;823:6;;;;;;;;;;;804:25;;849:8;840:6;;:17;;;;;;;;;;;;;;;;;;904:8;873:40;;894:8;873:40;;;;;;;;;;;;738:183;;:::o;9412:365::-;9480:19;;:::i;:::-;9510:26;;:::i;:::-;9557:9;9544:7;9552:1;9544:10;;;;;;;;;;;;;;;;;;:22;;;;;;;;;;;9653:6;9662:1;9653:10;;9648:103;9671:1;9667;:5;9648:103;;;9704:11;;;;;;;;;;;:22;;;9727:7;9739:1;9735;:5;;;;:::i;:::-;9727:14;;;;;;;;;;;;;;;;;;;9704:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9691:7;9699:1;9691:10;;;;;;;;;;;;;;;;;;:51;;;;;;;;;;;9675:3;;;;;:::i;:::-;;;;9648:103;;;;9764:7;9757:14;;;9412:365;;;:::o;9781:634::-;9874:4;9887:19;9909:7;9917:1;9909:10;;;;;;;;;;;;;;;;;;;9887:32;;9925:21;9954:15;9972:12;:10;:12::i;:::-;9954:30;;10017:1;9994:25;;:11;:25;;;9990:134;;;10046:7;10030:23;;10060:38;10076:5;10084:13;10060:15;:38::i;:::-;10113:1;10106:8;;;;;;;9990:134;10137:6;10132:216;10154:14;10150:1;:18;10132:216;;;10189:27;10198:5;10205:7;10213:1;10205:10;;;;;;;;;;;;;;;;;;;10189:8;:27::i;:::-;10185:96;;;10245:7;10253:1;10245:10;;;;;;;;;;;;;;;;;;;10229:26;;10267:5;;10185:96;10296:1;10291;:6;10287:56;;;10328:7;10312:23;;10287:56;10170:4;;;;;:::i;:::-;;;;10132:216;;;;10356:38;10372:5;10380:13;10356:15;:38::i;:::-;10407:1;10400:8;;;;;9781:634;;;;;:::o;11782:1406::-;11871:17;11916:3;11911:2;11891:10;:17;11902:5;11891:17;;;;;;;;;;;;:22;;;;:::i;:::-;:28;;;;:::i;:::-;11871:48;;11926:21;11950:12;:10;:12::i;:::-;11926:36;;11976:6;11971:1214;11993:14;11989:1;:18;11971:1214;;;12039:21;12063:7;12071:1;12063:10;;;;;;;;;;;;;;;;;;;12039:34;;12087:23;12150:1;12125:27;;:13;:27;;;:62;;;;12157:30;12166:5;12173:13;12157:8;:30::i;:::-;12156:31;12125:62;12121:190;;;12220:13;12202:31;;12121:190;;;12283:13;12265:31;;12121:190;12328:12;12347:15;:20;;12375:12;12347:46;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12327:66;;;12412:7;12404:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;12506:29;12538:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12619:12;12538:199;;;;12658:10;12538:199;;;;;;12694:15;12538:199;;;12506:231;;12750:7;:24;12758:15;12750:24;;;;;;;;;;;;;;;12780:10;12750:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12883:12;12845:5;:22;12851:15;12845:22;;;;;;;;;;;;;;;:34;;;:50;;;;;;;:::i;:::-;;;;;;;;12953:1;12910:5;:22;12916:15;12910:22;;;;;;;;;;;;;;;:39;;;:44;;;;;;;:::i;:::-;;;;;;;;13006:15;12970:5;:22;12976:15;12970:22;;;;;;;;;;;;;;;:33;;:51;;;;13082:12;13037:5;:22;13043:15;13037:22;;;;;;;;;;;;;;;:41;;;:57;;;;;;;:::i;:::-;;;;;;;;13113:60;13126:15;13143:12;13157:15;13113:60;;;;;;;;:::i;:::-;;;;;;;;11971:1214;;;;12010:4;;;;;:::i;:::-;;;;11971:1214;;;;11782:1406;;;;:::o;4763:106::-;4808:7;4831:11;;;;;;;;;;;:28;;;4860:1;4831:31;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4824:38;;4763:106;:::o;10652:1024::-;10719:11;10733:10;:17;10744:5;10733:17;;;;;;;;;;;;10719:31;;10780:1;10764:18;;:4;:18;;;10760:838;;10796:12;10815:4;:9;;10833:6;10815:29;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10795:49;;;10864:7;10856:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;10918:29;10950:191;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11030:6;10950:191;;;;11062:10;10950:191;;;;;;11098:15;10950:191;;;10918:223;;11154:7;:13;11162:4;11154:13;;;;;;;;;;;;;;;11173:10;11154:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11266:6;11239:5;:11;11245:4;11239:11;;;;;;;;;;;;;;;:23;;;:33;;;;;;;:::i;:::-;;;;;;;;11320:1;11288:5;:11;11294:4;11288:11;;;;;;;;;;;;;;;:28;;;:33;;;;;;;:::i;:::-;;;;;;;;11362:15;11337:5;:11;11343:4;11337:11;;;;;;;;;;;;;;;:22;;:40;;;;10760:838;;;;;11415:20;11438:12;:10;:12::i;:::-;11415:35;;11462:13;11482:12;:17;;11508:6;11482:37;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11461:58;;;11538:8;11530:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;10760:838;;;11614:43;11627:4;11633:6;11641:15;11614:43;;;;;;;;:::i;:::-;;;;;;;;10652:1024;;;:::o;10425:124::-;10493:4;10534:5;10515:9;:15;10525:4;10515:15;;;;;;;;;;;;;;;;:24;;10508:31;;10425:124;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:139:1:-;;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;301:137::-;;386:6;380:13;371:22;;402:30;426:5;402:30;:::i;:::-;361:77;;;;:::o;444:139::-;;528:6;515:20;506:29;;544:33;571:5;544:33;:::i;:::-;496:87;;;;:::o;589:262::-;;697:2;685:9;676:7;672:23;668:32;665:2;;;713:1;710;703:12;665:2;756:1;781:53;826:7;817:6;806:9;802:22;781:53;:::i;:::-;771:63;;727:117;655:196;;;;:::o;857:284::-;;976:2;964:9;955:7;951:23;947:32;944:2;;;992:1;989;982:12;944:2;1035:1;1060:64;1116:7;1107:6;1096:9;1092:22;1060:64;:::i;:::-;1050:74;;1006:128;934:207;;;;:::o;1147:407::-;;;1272:2;1260:9;1251:7;1247:23;1243:32;1240:2;;;1288:1;1285;1278:12;1240:2;1331:1;1356:53;1401:7;1392:6;1381:9;1377:22;1356:53;:::i;:::-;1346:63;;1302:117;1458:2;1484:53;1529:7;1520:6;1509:9;1505:22;1484:53;:::i;:::-;1474:63;;1429:118;1230:324;;;;;:::o;1560:278::-;;1676:2;1664:9;1655:7;1651:23;1647:32;1644:2;;;1692:1;1689;1682:12;1644:2;1735:1;1760:61;1813:7;1804:6;1793:9;1789:22;1760:61;:::i;:::-;1750:71;;1706:125;1634:204;;;;:::o;1844:262::-;;1952:2;1940:9;1931:7;1927:23;1923:32;1920:2;;;1968:1;1965;1958:12;1920:2;2011:1;2036:53;2081:7;2072:6;2061:9;2057:22;2036:53;:::i;:::-;2026:63;;1982:117;1910:196;;;;:::o;2112:268::-;;2272:102;2370:3;2362:6;2272:102;:::i;:::-;2258:116;;2248:132;;;;:::o;2386:108::-;2463:24;2481:5;2463:24;:::i;:::-;2458:3;2451:37;2441:53;;:::o;2500:118::-;2587:24;2605:5;2587:24;:::i;:::-;2582:3;2575:37;2565:53;;:::o;2694:1135::-;;2898:82;2974:5;2898:82;:::i;:::-;2996:114;3103:6;3098:3;2996:114;:::i;:::-;2989:121;;3136:3;3181:4;3173:6;3169:17;3164:3;3160:27;3211:84;3289:5;3211:84;:::i;:::-;3318:7;3349:1;3334:450;3359:6;3356:1;3353:13;3334:450;;;3430:9;3424:4;3420:20;3415:3;3408:33;3481:6;3475:13;3509:120;3624:4;3609:13;3509:120;:::i;:::-;3501:128;;3652:88;3733:6;3652:88;:::i;:::-;3642:98;;3769:4;3764:3;3760:14;3753:21;;3394:390;3381:1;3378;3374:9;3369:14;;3334:450;;;3338:14;3800:4;3793:11;;3820:3;3813:10;;2874:955;;;;;;;;;:::o;3835:109::-;3916:21;3931:5;3916:21;:::i;:::-;3911:3;3904:34;3894:50;;:::o;3950:155::-;4049:49;4092:5;4049:49;:::i;:::-;4044:3;4037:62;4027:78;;:::o;4111:147::-;4206:45;4245:5;4206:45;:::i;:::-;4201:3;4194:58;4184:74;;:::o;4264:344::-;;4370:39;4403:5;4370:39;:::i;:::-;4425:61;4479:6;4474:3;4425:61;:::i;:::-;4418:68;;4495:52;4540:6;4535:3;4528:4;4521:5;4517:16;4495:52;:::i;:::-;4572:29;4594:6;4572:29;:::i;:::-;4567:3;4563:39;4556:46;;4346:262;;;;;:::o;4614:364::-;;4730:39;4763:5;4730:39;:::i;:::-;4785:71;4849:6;4844:3;4785:71;:::i;:::-;4778:78;;4865:52;4910:6;4905:3;4898:4;4891:5;4887:16;4865:52;:::i;:::-;4942:29;4964:6;4942:29;:::i;:::-;4937:3;4933:39;4926:46;;4706:272;;;;;:::o;4984:371::-;;5147:67;5211:2;5206:3;5147:67;:::i;:::-;5140:74;;5244:34;5240:1;5235:3;5231:11;5224:55;5310:9;5305:2;5300:3;5296:12;5289:31;5346:2;5341:3;5337:12;5330:19;;5130:225;;;:::o;5361:326::-;;5524:67;5588:2;5583:3;5524:67;:::i;:::-;5517:74;;5621:30;5617:1;5612:3;5608:11;5601:51;5678:2;5673:3;5669:12;5662:19;;5507:180;;;:::o;5693:325::-;;5856:67;5920:2;5915:3;5856:67;:::i;:::-;5849:74;;5953:29;5949:1;5944:3;5940:11;5933:50;6009:2;6004:3;6000:12;5993:19;;5839:179;;;:::o;6024:319::-;;6187:67;6251:2;6246:3;6187:67;:::i;:::-;6180:74;;6284:23;6280:1;6275:3;6271:11;6264:44;6334:2;6329:3;6325:12;6318:19;;6170:173;;;:::o;6349:370::-;;6512:67;6576:2;6571:3;6512:67;:::i;:::-;6505:74;;6609:34;6605:1;6600:3;6596:11;6589:55;6675:8;6670:2;6665:3;6661:12;6654:30;6710:2;6705:3;6701:12;6694:19;;6495:224;;;:::o;6725:317::-;;6888:67;6952:2;6947:3;6888:67;:::i;:::-;6881:74;;6985:21;6981:1;6976:3;6972:11;6965:42;7033:2;7028:3;7024:12;7017:19;;6871:171;;;:::o;7048:315::-;;7211:67;7275:2;7270:3;7211:67;:::i;:::-;7204:74;;7308:19;7304:1;7299:3;7295:11;7288:40;7354:2;7349:3;7345:12;7338:19;;7194:169;;;:::o;7369:390::-;;7532:67;7596:2;7591:3;7532:67;:::i;:::-;7525:74;;7629:34;7625:1;7620:3;7616:11;7609:55;7695:28;7690:2;7685:3;7681:12;7674:50;7750:2;7745:3;7741:12;7734:19;;7515:244;;;:::o;7765:320::-;;7928:67;7992:2;7987:3;7928:67;:::i;:::-;7921:74;;8025:24;8021:1;8016:3;8012:11;8005:45;8076:2;8071:3;8067:12;8060:19;;7911:174;;;:::o;8091:325::-;;8254:67;8318:2;8313:3;8254:67;:::i;:::-;8247:74;;8351:29;8347:1;8342:3;8338:11;8331:50;8407:2;8402:3;8398:12;8391:19;;8237:179;;;:::o;8422:330::-;;8585:67;8649:2;8644:3;8585:67;:::i;:::-;8578:74;;8682:34;8678:1;8673:3;8669:11;8662:55;8743:2;8738:3;8734:12;8727:19;;8568:184;;;:::o;8758:297::-;;8938:83;9019:1;9014:3;8938:83;:::i;:::-;8931:90;;9047:1;9042:3;9038:11;9031:18;;8921:134;;;:::o;9061:329::-;;9224:67;9288:2;9283:3;9224:67;:::i;:::-;9217:74;;9321:33;9317:1;9312:3;9308:11;9301:54;9381:2;9376:3;9372:12;9365:19;;9207:183;;;:::o;9462:976::-;;9613:4;9608:3;9604:14;9706:4;9699:5;9695:16;9689:23;9759:3;9753:4;9749:14;9742:4;9737:3;9733:14;9726:38;9785:73;9853:4;9839:12;9785:73;:::i;:::-;9777:81;;9628:241;9959:4;9952:5;9948:16;9942:23;9978:63;10035:4;10030:3;10026:14;10012:12;9978:63;:::i;:::-;9879:172;10139:4;10132:5;10128:16;10122:23;10158:63;10215:4;10210:3;10206:14;10192:12;10158:63;:::i;:::-;10061:170;10319:4;10312:5;10308:16;10302:23;10338:63;10395:4;10390:3;10386:14;10372:12;10338:63;:::i;:::-;10241:170;10428:4;10421:11;;9582:856;;;;;:::o;10444:108::-;10521:24;10539:5;10521:24;:::i;:::-;10516:3;10509:37;10499:53;;:::o;10558:118::-;10645:24;10663:5;10645:24;:::i;:::-;10640:3;10633:37;10623:53;;:::o;10682:379::-;;10888:147;11031:3;10888:147;:::i;:::-;10881:154;;11052:3;11045:10;;10870:191;;;:::o;11067:222::-;;11198:2;11187:9;11183:18;11175:26;;11211:71;11279:1;11268:9;11264:17;11255:6;11211:71;:::i;:::-;11165:124;;;;:::o;11295:442::-;;11482:2;11471:9;11467:18;11459:26;;11495:71;11563:1;11552:9;11548:17;11539:6;11495:71;:::i;:::-;11576:72;11644:2;11633:9;11629:18;11620:6;11576:72;:::i;:::-;11658;11726:2;11715:9;11711:18;11702:6;11658:72;:::i;:::-;11449:288;;;;;;:::o;11743:1108::-;;12098:3;12087:9;12083:19;12075:27;;12112:71;12180:1;12169:9;12165:17;12156:6;12112:71;:::i;:::-;12193:72;12261:2;12250:9;12246:18;12237:6;12193:72;:::i;:::-;12275;12343:2;12332:9;12328:18;12319:6;12275:72;:::i;:::-;12357;12425:2;12414:9;12410:18;12401:6;12357:72;:::i;:::-;12439:73;12507:3;12496:9;12492:19;12483:6;12439:73;:::i;:::-;12522;12590:3;12579:9;12575:19;12566:6;12522:73;:::i;:::-;12605;12673:3;12662:9;12658:19;12649:6;12605:73;:::i;:::-;12688;12756:3;12745:9;12741:19;12732:6;12688:73;:::i;:::-;12771;12839:3;12828:9;12824:19;12815:6;12771:73;:::i;:::-;12065:786;;;;;;;;;;;;:::o;12857:485::-;;13094:2;13083:9;13079:18;13071:26;;13143:9;13137:4;13133:20;13129:1;13118:9;13114:17;13107:47;13171:164;13330:4;13321:6;13171:164;:::i;:::-;13163:172;;13061:281;;;;:::o;13348:210::-;;13473:2;13462:9;13458:18;13450:26;;13486:65;13548:1;13537:9;13533:17;13524:6;13486:65;:::i;:::-;13440:118;;;;:::o;13564:246::-;;13707:2;13696:9;13692:18;13684:26;;13720:83;13800:1;13789:9;13785:17;13776:6;13720:83;:::i;:::-;13674:136;;;;:::o;13816:238::-;;13955:2;13944:9;13940:18;13932:26;;13968:79;14044:1;14033:9;14029:17;14020:6;13968:79;:::i;:::-;13922:132;;;;:::o;14060:644::-;;14295:3;14284:9;14280:19;14272:27;;14345:9;14339:4;14335:20;14331:1;14320:9;14316:17;14309:47;14373:78;14446:4;14437:6;14373:78;:::i;:::-;14365:86;;14461:72;14529:2;14518:9;14514:18;14505:6;14461:72;:::i;:::-;14543;14611:2;14600:9;14596:18;14587:6;14543:72;:::i;:::-;14625;14693:2;14682:9;14678:18;14669:6;14625:72;:::i;:::-;14262:442;;;;;;;:::o;14710:419::-;;14914:2;14903:9;14899:18;14891:26;;14963:9;14957:4;14953:20;14949:1;14938:9;14934:17;14927:47;14991:131;15117:4;14991:131;:::i;:::-;14983:139;;14881:248;;;:::o;15135:419::-;;15339:2;15328:9;15324:18;15316:26;;15388:9;15382:4;15378:20;15374:1;15363:9;15359:17;15352:47;15416:131;15542:4;15416:131;:::i;:::-;15408:139;;15306:248;;;:::o;15560:419::-;;15764:2;15753:9;15749:18;15741:26;;15813:9;15807:4;15803:20;15799:1;15788:9;15784:17;15777:47;15841:131;15967:4;15841:131;:::i;:::-;15833:139;;15731:248;;;:::o;15985:419::-;;16189:2;16178:9;16174:18;16166:26;;16238:9;16232:4;16228:20;16224:1;16213:9;16209:17;16202:47;16266:131;16392:4;16266:131;:::i;:::-;16258:139;;16156:248;;;:::o;16410:419::-;;16614:2;16603:9;16599:18;16591:26;;16663:9;16657:4;16653:20;16649:1;16638:9;16634:17;16627:47;16691:131;16817:4;16691:131;:::i;:::-;16683:139;;16581:248;;;:::o;16835:419::-;;17039:2;17028:9;17024:18;17016:26;;17088:9;17082:4;17078:20;17074:1;17063:9;17059:17;17052:47;17116:131;17242:4;17116:131;:::i;:::-;17108:139;;17006:248;;;:::o;17260:419::-;;17464:2;17453:9;17449:18;17441:26;;17513:9;17507:4;17503:20;17499:1;17488:9;17484:17;17477:47;17541:131;17667:4;17541:131;:::i;:::-;17533:139;;17431:248;;;:::o;17685:419::-;;17889:2;17878:9;17874:18;17866:26;;17938:9;17932:4;17928:20;17924:1;17913:9;17909:17;17902:47;17966:131;18092:4;17966:131;:::i;:::-;17958:139;;17856:248;;;:::o;18110:419::-;;18314:2;18303:9;18299:18;18291:26;;18363:9;18357:4;18353:20;18349:1;18338:9;18334:17;18327:47;18391:131;18517:4;18391:131;:::i;:::-;18383:139;;18281:248;;;:::o;18535:419::-;;18739:2;18728:9;18724:18;18716:26;;18788:9;18782:4;18778:20;18774:1;18763:9;18759:17;18752:47;18816:131;18942:4;18816:131;:::i;:::-;18808:139;;18706:248;;;:::o;18960:419::-;;19164:2;19153:9;19149:18;19141:26;;19213:9;19207:4;19203:20;19199:1;19188:9;19184:17;19177:47;19241:131;19367:4;19241:131;:::i;:::-;19233:139;;19131:248;;;:::o;19385:419::-;;19589:2;19578:9;19574:18;19566:26;;19638:9;19632:4;19628:20;19624:1;19613:9;19609:17;19602:47;19666:131;19792:4;19666:131;:::i;:::-;19658:139;;19556:248;;;:::o;19810:222::-;;19941:2;19930:9;19926:18;19918:26;;19954:71;20022:1;20011:9;20007:17;19998:6;19954:71;:::i;:::-;19908:124;;;;:::o;20038:160::-;;20156:3;20148:11;;20186:4;20181:3;20177:14;20169:22;;20138:60;;;:::o;20204:142::-;;20333:5;20327:12;20317:22;;20306:40;;;:::o;20352:99::-;;20438:5;20432:12;20422:22;;20411:40;;;:::o;20457:141::-;;20587:4;20582:3;20578:14;20570:22;;20560:38;;;:::o;20604:212::-;;20765:6;20760:3;20753:19;20805:4;20800:3;20796:14;20781:29;;20743:73;;;;:::o;20822:147::-;;20960:3;20945:18;;20935:34;;;;:::o;20975:159::-;;21083:6;21078:3;21071:19;21123:4;21118:3;21114:14;21099:29;;21061:73;;;;:::o;21140:169::-;;21258:6;21253:3;21246:19;21298:4;21293:3;21289:14;21274:29;;21236:73;;;;:::o;21315:305::-;;21374:20;21392:1;21374:20;:::i;:::-;21369:25;;21408:20;21426:1;21408:20;:::i;:::-;21403:25;;21562:1;21494:66;21490:74;21487:1;21484:81;21481:2;;;21568:18;;:::i;:::-;21481:2;21612:1;21609;21605:9;21598:16;;21359:261;;;;:::o;21626:185::-;;21683:20;21701:1;21683:20;:::i;:::-;21678:25;;21717:20;21735:1;21717:20;:::i;:::-;21712:25;;21756:1;21746:2;;21761:18;;:::i;:::-;21746:2;21803:1;21800;21796:9;21791:14;;21668:143;;;;:::o;21817:348::-;;21880:20;21898:1;21880:20;:::i;:::-;21875:25;;21914:20;21932:1;21914:20;:::i;:::-;21909:25;;22102:1;22034:66;22030:74;22027:1;22024:81;22019:1;22012:9;22005:17;22001:105;21998:2;;;22109:18;;:::i;:::-;21998:2;22157:1;22154;22150:9;22139:20;;21865:300;;;;:::o;22171:191::-;;22231:20;22249:1;22231:20;:::i;:::-;22226:25;;22265:20;22283:1;22265:20;:::i;:::-;22260:25;;22304:1;22301;22298:8;22295:2;;;22309:18;;:::i;:::-;22295:2;22354:1;22351;22347:9;22339:17;;22216:146;;;;:::o;22368:96::-;;22434:24;22452:5;22434:24;:::i;:::-;22423:35;;22413:51;;;:::o;22470:90::-;;22547:5;22540:13;22533:21;22522:32;;22512:48;;;:::o;22566:126::-;;22643:42;22636:5;22632:54;22621:65;;22611:81;;;:::o;22698:77::-;;22764:5;22753:16;;22743:32;;;:::o;22781:150::-;;22876:49;22919:5;22876:49;:::i;:::-;22863:62;;22853:78;;;:::o;22937:125::-;;23032:24;23050:5;23032:24;:::i;:::-;23019:37;;23009:53;;;:::o;23068:121::-;;23159:24;23177:5;23159:24;:::i;:::-;23146:37;;23136:53;;;:::o;23195:307::-;23263:1;23273:113;23287:6;23284:1;23281:13;23273:113;;;23372:1;23367:3;23363:11;23357:18;23353:1;23348:3;23344:11;23337:39;23309:2;23306:1;23302:10;23297:15;;23273:113;;;23404:6;23401:1;23398:13;23395:2;;;23484:1;23475:6;23470:3;23466:16;23459:27;23395:2;23244:258;;;;:::o;23508:320::-;;23589:1;23583:4;23579:12;23569:22;;23636:1;23630:4;23626:12;23657:18;23647:2;;23713:4;23705:6;23701:17;23691:27;;23647:2;23775;23767:6;23764:14;23744:18;23741:38;23738:2;;;23794:18;;:::i;:::-;23738:2;23559:269;;;;:::o;23834:233::-;;23896:24;23914:5;23896:24;:::i;:::-;23887:33;;23942:66;23935:5;23932:77;23929:2;;;24012:18;;:::i;:::-;23929:2;24059:1;24052:5;24048:13;24041:20;;23877:190;;;:::o;24073:176::-;;24122:20;24140:1;24122:20;:::i;:::-;24117:25;;24156:20;24174:1;24156:20;:::i;:::-;24151:25;;24195:1;24185:2;;24200:18;;:::i;:::-;24185:2;24241:1;24238;24234:9;24229:14;;24107:142;;;;:::o;24255:180::-;24303:77;24300:1;24293:88;24400:4;24397:1;24390:15;24424:4;24421:1;24414:15;24441:180;24489:77;24486:1;24479:88;24586:4;24583:1;24576:15;24610:4;24607:1;24600:15;24627:180;24675:77;24672:1;24665:88;24772:4;24769:1;24762:15;24796:4;24793:1;24786:15;24813:102;;24905:2;24901:7;24896:2;24889:5;24885:14;24881:28;24871:38;;24861:54;;;:::o;24921:122::-;24994:24;25012:5;24994:24;:::i;:::-;24987:5;24984:35;24974:2;;25033:1;25030;25023:12;24974:2;24964:79;:::o;25049:116::-;25119:21;25134:5;25119:21;:::i;:::-;25112:5;25109:32;25099:2;;25155:1;25152;25145:12;25099:2;25089:76;:::o;25171:122::-;25244:24;25262:5;25244:24;:::i;:::-;25237:5;25234:35;25224:2;;25283:1;25280;25273:12;25224:2;25214:79;:::o

Swarm Source

ipfs://608af50c2d7ab6bc3b74577b8ac0a068bf70a811720cd892b461818a73862c86

Block Transaction Gas Used Reward
view all blocks produced

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

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
[ 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.