ETH Price: $3,202.16 (-2.63%)

Contract

0x2Bd9817FdD354C368bd4ee52c8442dD06b29843C
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Reg User104552542020-07-14 3:26:201583 days ago1594697180IN
0x2Bd9817F...06b29843C
0.1 ETH0.0006310628
Buy Pool1104551032020-07-14 2:52:301583 days ago1594695150IN
0x2Bd9817F...06b29843C
0.1 ETH0.0035070229
Reg User104550912020-07-14 2:50:361583 days ago1594695036IN
0x2Bd9817F...06b29843C
0.1 ETH0.0049270127
Reg User104509342020-07-13 11:31:341584 days ago1594639894IN
0x2Bd9817F...06b29843C
0.1 ETH0.009124150
Reg User104509032020-07-13 11:25:051584 days ago1594639505IN
0x2Bd9817F...06b29843C
0.1 ETH0.0093065851
Reg User104507932020-07-13 10:58:541584 days ago1594637934IN
0x2Bd9817F...06b29843C
0.1 ETH0.0071167939
Reg User104507772020-07-13 10:54:511584 days ago1594637691IN
0x2Bd9817F...06b29843C
0.1 ETH0.0064963535.6
Reg User104485622020-07-13 2:38:521584 days ago1594607932IN
0x2Bd9817F...06b29843C
0.1 ETH0.0048777426.73
Reg User104457952020-07-12 16:24:271584 days ago1594571067IN
0x2Bd9817F...06b29843C
0.1 ETH0.0067518337
Reg User104423472020-07-12 3:44:571585 days ago1594525497IN
0x2Bd9817F...06b29843C
0.1 ETH0.0036496420
Reg User104423352020-07-12 3:41:381585 days ago1594525298IN
0x2Bd9817F...06b29843C
0.1 ETH0.0032664217.9
Reg User104423102020-07-12 3:36:421585 days ago1594525002IN
0x2Bd9817F...06b29843C
0.1 ETH0.0032801317.97510001
Reg User104375252020-07-11 9:54:261586 days ago1594461266IN
0x2Bd9817F...06b29843C
0.1 ETH0.0067518337.00000145
Buy Pool1104325342020-07-10 15:13:401586 days ago1594394020IN
0x2Bd9817F...06b29843C
0.1 ETH0.0042932633
Reg User104323952020-07-10 14:44:021586 days ago1594392242IN
0x2Bd9817F...06b29843C
0.1 ETH0.0056569431
Reg User104262822020-07-09 16:13:021587 days ago1594311182IN
0x2Bd9817F...06b29843C
0.1 ETH0.0113138862
Buy Pool1104243252020-07-09 8:43:371588 days ago1594284217IN
0x2Bd9817F...06b29843C
0.1 ETH0.0039907533
Buy Pool1104186452020-07-08 11:39:251589 days ago1594208365IN
0x2Bd9817F...06b29843C
0.1 ETH0.0084564365.00000134
Buy Pool1104183162020-07-08 10:19:481589 days ago1594203588IN
0x2Bd9817F...06b29843C
0.1 ETH0.0071349859
Reg User104182142020-07-08 9:56:311589 days ago1594202191IN
0x2Bd9817F...06b29843C
0.1 ETH0.0100365155
Buy Pool1104181022020-07-08 9:27:181589 days ago1594200438IN
0x2Bd9817F...06b29843C
0.1 ETH0.0053340541
Buy Pool2104180992020-07-08 9:26:561589 days ago1594200416IN
0x2Bd9817F...06b29843C
0.2 ETH0.0049590341
Reg User104180552020-07-08 9:18:481589 days ago1594199928IN
0x2Bd9817F...06b29843C
0.1 ETH0.009124150
Reg User104178972020-07-08 8:45:081589 days ago1594197908IN
0x2Bd9817F...06b29843C
0.1 ETH0.009124150
Buy Pool1104172392020-07-08 6:28:101589 days ago1594189690IN
0x2Bd9817F...06b29843C
0.1 ETH0.0052000743.00000123
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
104551032020-07-14 2:52:301583 days ago1594695150
0x2Bd9817F...06b29843C
0.1 ETH
104550912020-07-14 2:50:361583 days ago1594695036
0x2Bd9817F...06b29843C
0.05 ETH
104550912020-07-14 2:50:361583 days ago1594695036
0x2Bd9817F...06b29843C
0.05 ETH
104509342020-07-13 11:31:341584 days ago1594639894
0x2Bd9817F...06b29843C
0.05 ETH
104509342020-07-13 11:31:341584 days ago1594639894
0x2Bd9817F...06b29843C
0.05 ETH
104509032020-07-13 11:25:051584 days ago1594639505
0x2Bd9817F...06b29843C
0.05 ETH
104509032020-07-13 11:25:051584 days ago1594639505
0x2Bd9817F...06b29843C
0.05 ETH
104507932020-07-13 10:58:541584 days ago1594637934
0x2Bd9817F...06b29843C
0.05 ETH
104507932020-07-13 10:58:541584 days ago1594637934
0x2Bd9817F...06b29843C
0.05 ETH
104507772020-07-13 10:54:511584 days ago1594637691
0x2Bd9817F...06b29843C
0.05 ETH
104507772020-07-13 10:54:511584 days ago1594637691
0x2Bd9817F...06b29843C
0.05 ETH
104485622020-07-13 2:38:521584 days ago1594607932
0x2Bd9817F...06b29843C
0.05 ETH
104485622020-07-13 2:38:521584 days ago1594607932
0x2Bd9817F...06b29843C
0.05 ETH
104457952020-07-12 16:24:271584 days ago1594571067
0x2Bd9817F...06b29843C
0.05 ETH
104457952020-07-12 16:24:271584 days ago1594571067
0x2Bd9817F...06b29843C
0.05 ETH
104423472020-07-12 3:44:571585 days ago1594525497
0x2Bd9817F...06b29843C
0.05 ETH
104423472020-07-12 3:44:571585 days ago1594525497
0x2Bd9817F...06b29843C
0.05 ETH
104423352020-07-12 3:41:381585 days ago1594525298
0x2Bd9817F...06b29843C
0.05 ETH
104423352020-07-12 3:41:381585 days ago1594525298
0x2Bd9817F...06b29843C
0.05 ETH
104423102020-07-12 3:36:421585 days ago1594525002
0x2Bd9817F...06b29843C
0.05 ETH
104423102020-07-12 3:36:421585 days ago1594525002
0x2Bd9817F...06b29843C
0.05 ETH
104375252020-07-11 9:54:261586 days ago1594461266
0x2Bd9817F...06b29843C
0.05 ETH
104375252020-07-11 9:54:261586 days ago1594461266
0x2Bd9817F...06b29843C
0.05 ETH
104325342020-07-10 15:13:401586 days ago1594394020
0x2Bd9817F...06b29843C
0.1 ETH
104323952020-07-10 14:44:021586 days ago1594392242
0x2Bd9817F...06b29843C
0.05 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Autopool

Compiler Version
v0.6.4+commit.1dca32f3

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2020-07-07
*/

pragma solidity 0.5.11 - 0.6.4;

library SafeMath {
  function add(uint256 a, uint256 b) internal pure returns (uint256) {
    uint256 c = a + b;
    require(c >= a, "SafeMath: addition overflow");

    return c;
  }
    
  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    return sub(a, b, "SafeMath: subtraction overflow");
  }

  function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
    require(b <= a, errorMessage);
    uint256 c = a - b;
    return c;
  }

  function mul(uint256 a, uint256 b) internal pure returns (uint256) {
    if (a == 0) {
      return 0;
    }

    uint256 c = a * b;
    require(c / a == b, "SafeMath: multiplication overflow");
      return c;
  }

  function div(uint256 a, uint256 b) internal pure returns (uint256) {
    return div(a, b, "SafeMath: division by zero");
  }

  function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
    require(b > 0, errorMessage);
    uint256 c = a / b;
    return c;
  }

  function mod(uint256 a, uint256 b) internal pure returns (uint256) {
    return mod(a, b, "SafeMath: modulo by zero");
  }

  function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
    require(b != 0, errorMessage);
    return a % b;
  }
}


contract Autopool {
  using SafeMath for *;
  address public ownerWallet;
  uint public currUserID = 0;
  uint public pool1currUserID = 0;
  uint public pool2currUserID = 0;
  uint public pool3currUserID = 0;
  uint public pool4currUserID = 0;
  uint public pool5currUserID = 0;
  uint public pool6currUserID = 0;
  uint public pool7currUserID = 0;
  uint public pool8currUserID = 0;
  uint public pool9currUserID = 0;
  uint public pool10currUserID = 0;
           
  uint public pool1activeUserID = 0;
  uint public pool2activeUserID = 0;
  uint public pool3activeUserID = 0;
  uint public pool4activeUserID = 0;
  uint public pool5activeUserID = 0;
  uint public pool6activeUserID = 0;
  uint public pool7activeUserID = 0;
  uint public pool8activeUserID = 0;
  uint public pool9activeUserID = 0;
  uint public pool10activeUserID = 0;
      
  struct Account {
    address referrer;
    uint256 joinCount;
    uint256 referredCount;
    uint256 depositTotal;
    uint256 joinDate;
    uint256 withdrawHis;
    uint256 currentCReward;
    uint256 currentCUpdatetime;
    uint256 championReward;
    uint256 cWithdrawTime;
    uint256 isAdminAccount;
  }
    
  struct DailyRound {
    uint256 startTime;
    uint256 endTime;
    address player; 
    uint256 referredCount; //Number of referrals
    uint256 pool; //amount in the pool;
  }
      
  mapping (address => Account) public accounts;

  struct PlayerDailyRounds {
    uint256 referredCount; // total referrals user has in a particular round
  }
  uint public unlimited_level_price=0;
     
  struct UserStruct {
    bool isExist;
    uint id;
    uint referrerID;
    uint referredUsers;
    mapping(uint => uint) levelExpired;
  }
    
  struct PoolUserStruct {
    bool isExist;
    uint id;
    uint payment_received; 
  }
    
  mapping (address => UserStruct) public users;
  mapping (uint => address) public userList;
     
  mapping (address => PoolUserStruct) public pool1users;
  mapping (uint => address) public pool1userList;

  mapping (address => PoolUserStruct) public pool2users;
  mapping (uint => address) public pool2userList;

  mapping (address => PoolUserStruct) public pool3users;
  mapping (uint => address) public pool3userList;

  mapping (address => PoolUserStruct) public pool4users;
  mapping (uint => address) public pool4userList;

  mapping (address => PoolUserStruct) public pool5users;
  mapping (uint => address) public pool5userList;

  mapping (address => PoolUserStruct) public pool6users;
  mapping (uint => address) public pool6userList;

  mapping (address => PoolUserStruct) public pool7users;
  mapping (uint => address) public pool7userList;

  mapping (address => PoolUserStruct) public pool8users;
  mapping (uint => address) public pool8userList;

  mapping (address => PoolUserStruct) public pool9users;
  mapping (uint => address) public pool9userList;

  mapping (address => PoolUserStruct) public pool10users;
  mapping (uint => address) public pool10userList;



  mapping(uint => uint) public LEVEL_PRICE;

  uint REGESTRATION_FESS=0.1 ether;
  uint pool1_price=0.1 ether;
  uint pool2_price=0.2 ether ;
  uint pool3_price=0.3 ether;
  uint pool4_price=0.5 ether;
  uint pool5_price=0.65 ether;
  uint pool6_price=1 ether;
  uint pool7_price=2 ether ;
  uint pool8_price=3 ether;
  uint pool9_price=5 ether;
  uint pool10_price=10 ether;
   
   
  event regLevelEvent(address indexed _user, address indexed _referrer, uint _time);
  event getMoneyForLevelEvent(address indexed _user, address indexed _referral, uint _level, uint _time);
  event regPoolEntry(address indexed _user,uint _level,   uint _time);
  event getPoolPayment(address indexed _user,address indexed _receiver, uint _level, uint _time);
   
  UserStruct[] public requests;
     
  constructor() public {
    ownerWallet = msg.sender;
    LEVEL_PRICE[1] = 0.05 ether;
/*        
    unlimited_level_price=0 ether;
*/
    UserStruct memory userStruct;
    currUserID++;

    userStruct = UserStruct({
      isExist: true,
      id: currUserID,
      referrerID: 0,
      referredUsers:0 
    });
        
    users[ownerWallet] = userStruct;
    userList[currUserID] = ownerWallet;
          
    PoolUserStruct memory pooluserStruct;
        
    pool1currUserID++;

    pooluserStruct = PoolUserStruct({
      isExist:true,
      id:pool1currUserID,
      payment_received:0
    });

    pool1activeUserID=pool1currUserID;
    pool1users[msg.sender] = pooluserStruct;
    pool1userList[pool1currUserID]=msg.sender;
          
    pool2currUserID++;
    pooluserStruct = PoolUserStruct({
      isExist:true,
      id:pool2currUserID,
      payment_received:0
    });
    pool2activeUserID=pool2currUserID;
    pool2users[msg.sender] = pooluserStruct;
    pool2userList[pool2currUserID]=msg.sender;
       
       
    pool3currUserID++;
    pooluserStruct = PoolUserStruct({
      isExist:true,
      id:pool3currUserID,
      payment_received:0
    });
    pool3activeUserID=pool3currUserID;
    pool3users[msg.sender] = pooluserStruct;
    pool3userList[pool3currUserID]=msg.sender;
       
       
    pool4currUserID++;
    pooluserStruct = PoolUserStruct({
      isExist:true,
      id:pool4currUserID,
      payment_received:0
    });
    pool4activeUserID=pool4currUserID;
    pool4users[msg.sender] = pooluserStruct;
    pool4userList[pool4currUserID]=msg.sender;

        
    pool5currUserID++;
    pooluserStruct = PoolUserStruct({
      isExist:true,
      id:pool5currUserID,
      payment_received:0
    });

    pool5activeUserID=pool5currUserID;
    pool5users[msg.sender] = pooluserStruct;
    pool5userList[pool5currUserID]=msg.sender;
       
 
    pool6currUserID++;
    pooluserStruct = PoolUserStruct({
      isExist:true,
      id:pool6currUserID,
      payment_received:0
    });
    pool6activeUserID=pool6currUserID;
    pool6users[msg.sender] = pooluserStruct;
    pool6userList[pool6currUserID]=msg.sender;
       
    pool7currUserID++;
    pooluserStruct = PoolUserStruct({
        isExist:true,
        id:pool7currUserID,
        payment_received:0
    });
    pool7activeUserID=pool7currUserID;
    pool7users[msg.sender] = pooluserStruct;
    pool7userList[pool7currUserID]=msg.sender;
       
    pool8currUserID++;
    pooluserStruct = PoolUserStruct({
      isExist:true,
      id:pool8currUserID,
      payment_received:0
    });
    pool8activeUserID=pool8currUserID;
    pool8users[msg.sender] = pooluserStruct;
    pool8userList[pool8currUserID]=msg.sender;
       
    pool9currUserID++;
    pooluserStruct = PoolUserStruct({
      isExist:true,
      id:pool9currUserID,
      payment_received:0
    });
    pool9activeUserID=pool9currUserID;
    pool9users[msg.sender] = pooluserStruct;
    pool9userList[pool9currUserID]=msg.sender;
       
       
    pool10currUserID++;
    pooluserStruct = PoolUserStruct({
      isExist:true,
      id:pool10currUserID,
      payment_received:0
    });
    pool10activeUserID=pool10currUserID;
    pool10users[msg.sender] = pooluserStruct;
    pool10userList[pool10currUserID]=msg.sender;       
  }
     
  function regUser(uint _referrerID) public payable {
    require(!users[msg.sender].isExist, "User Exists");
    require(_referrerID > 0 && _referrerID <= currUserID, 'Incorrect referral ID');
    require(msg.value == REGESTRATION_FESS, 'Incorrect Value');
       
    UserStruct memory userStruct;
    currUserID++;
    userAddresses.push(msg.sender);

    userStruct = UserStruct({
      isExist: true,
      id: currUserID,
      referrerID: _referrerID,
      referredUsers:0
    });
   
    
    users[msg.sender] = userStruct;
    userList[currUserID]=msg.sender;

    users[userList[users[msg.sender].referrerID]].referredUsers=users[userList[users[msg.sender].referrerID]].referredUsers+1;
           
    accounts[userList[users[msg.sender].referrerID]].referredCount=accounts[userList[users[msg.sender].referrerID]].referredCount.add(1);

         

    payReferral(1,msg.sender);
    emit regLevelEvent(msg.sender, userList[_referrerID], now);
  }
   
   
  function payReferral(uint _level, address _user) internal {
    address referer;       
    referer = 0x4E4595CC259b075941c7f9D0D05e87f8D133804b;
    bool sent = false;
    uint level_price_local = 0;

    if(_level > 1){
      level_price_local=unlimited_level_price;
    }
    else {
      level_price_local = LEVEL_PRICE[_level];
    }
    
    sent = address(uint160(referer)).send(level_price_local);

    if (sent) {
      emit getMoneyForLevelEvent(referer, msg.sender, _level, now);
      if(_level < 1 && users[referer].referrerID >= 1){
        payReferral(_level+1, referer);
      } else{
        sendBalance();
      }
    } else {
      //  emit lostMoneyForLevelEvent(referer, msg.sender, _level, now);
        payReferral(_level, referer);
    }
  }
   
   
   
  function buyPool1() public payable {
    require(users[msg.sender].isExist, "User Not Registered");
    require(!pool1users[msg.sender].isExist, "Already in AutoPool");
    require(msg.value == pool1_price, 'Incorrect Value');
    PoolUserStruct memory userStruct;
    address pool1Currentuser=pool1userList[pool1activeUserID];
    pool1currUserID++;

    userStruct = PoolUserStruct({
      isExist:true,
      id:pool1currUserID,
      payment_received:0
    });
   
    pool1users[msg.sender] = userStruct;
    pool1userList[pool1currUserID]=msg.sender;
    bool sent = false;
    sent = address(uint160(pool1Currentuser)).send(pool1_price);

    if (sent) {
      pool1users[pool1Currentuser].payment_received+=1;
      if(pool1users[pool1Currentuser].payment_received>=2){
        pool1activeUserID+=1;
      }
      emit getPoolPayment(msg.sender,pool1Currentuser, 1, now);
    }
    emit regPoolEntry(msg.sender, 1, now);
  }
    
    
  function buyPool2() public payable {
    require(users[msg.sender].isExist, "User Not Registered");
    require(!pool2users[msg.sender].isExist, "Already in AutoPool");
    require(msg.value == pool2_price, 'Incorrect Value');

    PoolUserStruct memory userStruct;
    address pool2Currentuser=pool2userList[pool2activeUserID];
        
    pool2currUserID++;
    userStruct = PoolUserStruct({
      isExist:true,
      id:pool2currUserID,
      payment_received:0
    });
    pool2users[msg.sender] = userStruct;
    pool2userList[pool2currUserID]=msg.sender;
  
    bool sent = false;
    sent = address(uint160(pool2Currentuser)).send(pool2_price);
            
    if (sent) {
      pool2users[pool2Currentuser].payment_received+=1;
      if(pool2users[pool2Currentuser].payment_received>=3){
          pool2activeUserID+=1;
      }
      emit getPoolPayment(msg.sender,pool2Currentuser, 2, now);
    }
    emit regPoolEntry(msg.sender,2,  now);
  }
    
    
  function buyPool3() public payable {
    require(users[msg.sender].isExist, "User Not Registered");
    require(!pool3users[msg.sender].isExist, "Already in AutoPool");
    require(msg.value == pool3_price, 'Incorrect Value');

    PoolUserStruct memory userStruct;
    address pool3Currentuser=pool3userList[pool3activeUserID];

    pool3currUserID++;
    userStruct = PoolUserStruct({
      isExist:true,
      id:pool3currUserID,
      payment_received:0
    });
    pool3users[msg.sender] = userStruct;
    pool3userList[pool3currUserID]=msg.sender;
    bool sent = false;
    sent = address(uint160(pool3Currentuser)).send(pool3_price);

    if (sent) {
      pool3users[pool3Currentuser].payment_received+=1;
      if(pool3users[pool3Currentuser].payment_received>=3){
          pool3activeUserID+=1;
      }
      emit getPoolPayment(msg.sender,pool3Currentuser, 3, now);
    }
    emit regPoolEntry(msg.sender,3,  now);
  }
    
    
  function buyPool4() public payable {
    require(users[msg.sender].isExist, "User Not Registered");
    require(!pool4users[msg.sender].isExist, "Already in AutoPool");
    require(msg.value == pool4_price, 'Incorrect Value');
    
    PoolUserStruct memory userStruct;
    address pool4Currentuser=pool4userList[pool4activeUserID];
    pool4currUserID++;
    userStruct = PoolUserStruct({
        isExist:true,
        id:pool4currUserID,
        payment_received:0
    });
    pool4users[msg.sender] = userStruct;
    pool4userList[pool4currUserID]=msg.sender;
    bool sent = false;
    sent = address(uint160(pool4Currentuser)).send(pool4_price);

    if (sent) {
      pool4users[pool4Currentuser].payment_received+=1;
      if(pool4users[pool4Currentuser].payment_received>=3){
        pool4activeUserID+=1;
      }
      emit getPoolPayment(msg.sender,pool4Currentuser, 4, now);
    }
    emit regPoolEntry(msg.sender,4, now);
  }
    
    
    
  function buyPool5() public payable {
    require(users[msg.sender].isExist, "User Not Registered");
    require(!pool5users[msg.sender].isExist, "Already in AutoPool");
    require(msg.value == pool5_price, 'Incorrect Value');
    
      
    PoolUserStruct memory userStruct;
    address pool5Currentuser=pool5userList[pool5activeUserID];  
    pool5currUserID++;
    userStruct = PoolUserStruct({
      isExist:true,
      id:pool5currUserID,
      payment_received:0
    });
    pool5users[msg.sender] = userStruct;
    pool5userList[pool5currUserID]=msg.sender;
    bool sent = false;
    sent = address(uint160(pool5Currentuser)).send(pool5_price);

    if (sent) {
      pool5users[pool5Currentuser].payment_received+=1;
      if(pool5users[pool5Currentuser].payment_received>=3){
        pool5activeUserID+=1;
      }
      emit getPoolPayment(msg.sender,pool5Currentuser, 5, now);
    }
    emit regPoolEntry(msg.sender,5,  now);
  }
    
  function buyPool6() public payable {
    require(!pool6users[msg.sender].isExist, "Already in AutoPool");
    require(msg.value == pool6_price, 'Incorrect Value');

    PoolUserStruct memory userStruct;
    address pool6Currentuser=pool6userList[pool6activeUserID];

    pool6currUserID++;
    userStruct = PoolUserStruct({
      isExist:true,
      id:pool6currUserID,
      payment_received:0
    });
    pool6users[msg.sender] = userStruct;
    pool6userList[pool6currUserID]=msg.sender;
    bool sent = false;
    sent = address(uint160(pool6Currentuser)).send(pool6_price);

    if (sent) {
      pool6users[pool6Currentuser].payment_received+=1;
      if(pool6users[pool6Currentuser].payment_received>=3) {
        pool6activeUserID+=1;
      }
      emit getPoolPayment(msg.sender,pool6Currentuser, 6, now);
    }
    emit regPoolEntry(msg.sender,6,  now);
  }
    
  function buyPool7() public payable {
    require(users[msg.sender].isExist, "User Not Registered");
    require(!pool7users[msg.sender].isExist, "Already in AutoPool");
    require(msg.value == pool7_price, 'Incorrect Value');

    PoolUserStruct memory userStruct;
    address pool7Currentuser=pool7userList[pool7activeUserID];

    pool7currUserID++;
    userStruct = PoolUserStruct({
      isExist:true,
      id:pool7currUserID,
      payment_received:0
    });
    pool7users[msg.sender] = userStruct;
    pool7userList[pool7currUserID]=msg.sender;
    bool sent = false;
    sent = address(uint160(pool7Currentuser)).send(pool7_price);

    if (sent) {
      pool7users[pool7Currentuser].payment_received += 1;
      if(pool7users[pool7Currentuser].payment_received >= 3) {
          pool7activeUserID += 1;
      }
      emit getPoolPayment(msg.sender,pool7Currentuser, 7, now);
    }
    emit regPoolEntry(msg.sender,7,  now);
  }
    
    
  function buyPool8() public payable {
    require(users[msg.sender].isExist, "User Not Registered");
    require(!pool8users[msg.sender].isExist, "Already in AutoPool");
    require(msg.value == pool8_price, 'Incorrect Value');

    PoolUserStruct memory userStruct;
    address pool8Currentuser=pool8userList[pool8activeUserID];

    pool8currUserID++;
    userStruct = PoolUserStruct({
      isExist:true,
      id:pool8currUserID,
      payment_received:0
    });
    pool8users[msg.sender] = userStruct;
    pool8userList[pool8currUserID]=msg.sender;
    bool sent = false;
    sent = address(uint160(pool8Currentuser)).send(pool8_price);

    if (sent) {
      pool8users[pool8Currentuser].payment_received += 1;
      if(pool8users[pool8Currentuser].payment_received >= 3) {
        pool8activeUserID +=1 ;
      }
      emit getPoolPayment(msg.sender,pool8Currentuser, 8, now);
    }
    emit regPoolEntry(msg.sender,8,  now);
  }
    
  function buyPool9() public payable {
    require(users[msg.sender].isExist, "User Not Registered");
    require(!pool9users[msg.sender].isExist, "Already in AutoPool");
    require(msg.value == pool9_price, 'Incorrect Value');

    PoolUserStruct memory userStruct;
    address pool9Currentuser=pool9userList[pool9activeUserID];

    pool9currUserID++;
    userStruct = PoolUserStruct({
        isExist:true,
        id:pool9currUserID,
        payment_received:0
    });
    pool9users[msg.sender] = userStruct;
    pool9userList[pool9currUserID]=msg.sender;
    bool sent = false;
    sent = address(uint160(pool9Currentuser)).send(pool9_price);

    if (sent) {
      pool9users[pool9Currentuser].payment_received +=1 ;
      if(pool9users[pool9Currentuser].payment_received >=3 ){
        pool9activeUserID += 1;
      }
       emit getPoolPayment(msg.sender,pool9Currentuser, 9, now);
    }
    emit regPoolEntry(msg.sender,9,  now);
  }
    
    
  function buyPool10() public payable {
    require(users[msg.sender].isExist, "User Not Registered");
    require(!pool10users[msg.sender].isExist, "Already in AutoPool");
    require(msg.value == pool10_price, 'Incorrect Value');

    PoolUserStruct memory userStruct;
    address pool10Currentuser=pool10userList[pool10activeUserID];

    pool10currUserID++;
    userStruct = PoolUserStruct({
      isExist:true,
      id:pool10currUserID,
      payment_received:0
    });
    pool10users[msg.sender] = userStruct;
    pool10userList[pool10currUserID]=msg.sender;
    bool sent = false;
    sent = address(uint160(pool10Currentuser)).send(pool10_price);
    if (sent) {
      pool10users[pool10Currentuser].payment_received += 1;
      if(pool10users[pool10Currentuser].payment_received >= 3) {
        pool10activeUserID += 1;
      }
       emit getPoolPayment(msg.sender,pool10Currentuser, 10, now);
    }
    emit regPoolEntry(msg.sender, 10, now);
  }
    
    
    
  function getEthBalance() public view returns(uint) {
    return address(this).balance;
  }
    
  function sendBalance() private {
    if (!address(uint160(ownerWallet)).send(getEthBalance())) { }
  }
    
  address [] public userAddresses;
    
  function getTopReferralAddress() public view returns (address){
    uint maxReferredUsers = 0;
    address theAddress = ownerWallet;
    
    for(uint i = 0; i < userAddresses.length; i++){
      address thisAddress = userAddresses[i];
      uint thisReferredUsers = users[thisAddress].referredUsers;
      if(thisReferredUsers > maxReferredUsers){
        maxReferredUsers = thisReferredUsers;
        theAddress = thisAddress;
      }
    }
    return theAddress;
  }
   
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_user","type":"address"},{"indexed":true,"internalType":"address","name":"_referral","type":"address"},{"indexed":false,"internalType":"uint256","name":"_level","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_time","type":"uint256"}],"name":"getMoneyForLevelEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_user","type":"address"},{"indexed":true,"internalType":"address","name":"_receiver","type":"address"},{"indexed":false,"internalType":"uint256","name":"_level","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_time","type":"uint256"}],"name":"getPoolPayment","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_user","type":"address"},{"indexed":true,"internalType":"address","name":"_referrer","type":"address"},{"indexed":false,"internalType":"uint256","name":"_time","type":"uint256"}],"name":"regLevelEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_user","type":"address"},{"indexed":false,"internalType":"uint256","name":"_level","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_time","type":"uint256"}],"name":"regPoolEntry","type":"event"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"LEVEL_PRICE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"accounts","outputs":[{"internalType":"address","name":"referrer","type":"address"},{"internalType":"uint256","name":"joinCount","type":"uint256"},{"internalType":"uint256","name":"referredCount","type":"uint256"},{"internalType":"uint256","name":"depositTotal","type":"uint256"},{"internalType":"uint256","name":"joinDate","type":"uint256"},{"internalType":"uint256","name":"withdrawHis","type":"uint256"},{"internalType":"uint256","name":"currentCReward","type":"uint256"},{"internalType":"uint256","name":"currentCUpdatetime","type":"uint256"},{"internalType":"uint256","name":"championReward","type":"uint256"},{"internalType":"uint256","name":"cWithdrawTime","type":"uint256"},{"internalType":"uint256","name":"isAdminAccount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyPool1","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"buyPool10","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"buyPool2","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"buyPool3","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"buyPool4","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"buyPool5","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"buyPool6","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"buyPool7","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"buyPool8","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"buyPool9","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"currUserID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getEthBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTopReferralAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ownerWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pool10activeUserID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pool10currUserID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"pool10userList","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"pool10users","outputs":[{"internalType":"bool","name":"isExist","type":"bool"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"payment_received","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pool1activeUserID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pool1currUserID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"pool1userList","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"pool1users","outputs":[{"internalType":"bool","name":"isExist","type":"bool"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"payment_received","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pool2activeUserID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pool2currUserID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"pool2userList","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"pool2users","outputs":[{"internalType":"bool","name":"isExist","type":"bool"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"payment_received","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pool3activeUserID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pool3currUserID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"pool3userList","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"pool3users","outputs":[{"internalType":"bool","name":"isExist","type":"bool"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"payment_received","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pool4activeUserID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pool4currUserID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"pool4userList","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"pool4users","outputs":[{"internalType":"bool","name":"isExist","type":"bool"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"payment_received","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pool5activeUserID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pool5currUserID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"pool5userList","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"pool5users","outputs":[{"internalType":"bool","name":"isExist","type":"bool"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"payment_received","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pool6activeUserID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pool6currUserID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"pool6userList","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"pool6users","outputs":[{"internalType":"bool","name":"isExist","type":"bool"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"payment_received","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pool7activeUserID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pool7currUserID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"pool7userList","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"pool7users","outputs":[{"internalType":"bool","name":"isExist","type":"bool"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"payment_received","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pool8activeUserID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pool8currUserID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"pool8userList","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"pool8users","outputs":[{"internalType":"bool","name":"isExist","type":"bool"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"payment_received","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pool9activeUserID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pool9currUserID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"pool9userList","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"pool9users","outputs":[{"internalType":"bool","name":"isExist","type":"bool"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"payment_received","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_referrerID","type":"uint256"}],"name":"regUser","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"requests","outputs":[{"internalType":"bool","name":"isExist","type":"bool"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"referrerID","type":"uint256"},{"internalType":"uint256","name":"referredUsers","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlimited_level_price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"userAddresses","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"userList","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"users","outputs":[{"internalType":"bool","name":"isExist","type":"bool"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"referrerID","type":"uint256"},{"internalType":"uint256","name":"referredUsers","type":"uint256"}],"stateMutability":"view","type":"function"}]

60806040526000600155600060025560006003556000600455600060055560006006556000600755600060085560006009556000600a556000600b556000600c556000600d556000600e556000600f55600060105560006011556000601255600060135560006014556000601555600060175567016345785d8a0000602f5567016345785d8a00006030556702c68af0bb140000603155670429d069189e00006032556706f05b59d3b20000603355670905438e60010000603455670de0b6b3a7640000603555671bc16d674ec800006036556729a2241af62c0000603755674563918244f40000603855678ac7230489e800006039553480156200010357600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555066b1a2bc2ec50000602e600060018152602001908152602001600020819055506200016e62000d2d565b60016000815480929190600101919050555060405180608001604052806001151581526020016001548152602001600081526020016000815250905080601860008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff0219169083151502179055506020820151816001015560408201518160020155606082015181600301559050506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660196000600154815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620002cb62000d57565b6002600081548092919060010191905055506040518060600160405280600115158152602001600254815260200160008152509050600254600c8190555080601a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff021916908315150217905550602082015181600101556040820151816002015590505033601b6000600254815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003600081548092919060010191905055506040518060600160405280600115158152602001600354815260200160008152509050600354600d8190555080601c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff021916908315150217905550602082015181600101556040820151816002015590505033601d6000600354815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506004600081548092919060010191905055506040518060600160405280600115158152602001600454815260200160008152509050600454600e8190555080601e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff021916908315150217905550602082015181600101556040820151816002015590505033601f6000600454815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506005600081548092919060010191905055506040518060600160405280600115158152602001600554815260200160008152509050600554600f8190555080602060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160010155604082015181600201559050503360216000600554815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660008154809291906001019190505550604051806060016040528060011515815260200160065481526020016000815250905060065460108190555080602260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160010155604082015181600201559050503360236000600654815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600760008154809291906001019190505550604051806060016040528060011515815260200160075481526020016000815250905060075460118190555080602460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160010155604082015181600201559050503360256000600754815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600860008154809291906001019190505550604051806060016040528060011515815260200160085481526020016000815250905060085460128190555080602660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160010155604082015181600201559050503360276000600854815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600960008154809291906001019190505550604051806060016040528060011515815260200160095481526020016000815250905060095460138190555080602860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160010155604082015181600201559050503360296000600954815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a600081548092919060010191905055506040518060600160405280600115158152602001600a54815260200160008152509050600a5460148190555080602a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff021916908315150217905550602082015181600101556040820151816002015590505033602b6000600a54815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600b600081548092919060010191905055506040518060600160405280600115158152602001600b54815260200160008152509050600b5460158190555080602c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff021916908315150217905550602082015181600101556040820151816002015590505033602d6000600b54815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505062000d7a565b60405180608001604052806000151581526020016000815260200160008152602001600081525090565b604051806060016040528060001515815260200160008152602001600081525090565b6157558062000d8a6000396000f3fe6080604052600436106103ad5760003560e01c806380085ec4116101e7578063a565a5b61161010d578063db7242bd116100a0578063e592ac561161006f578063e592ac561461146e578063e687ecac14611499578063ed3bb9fa14611510578063eecbdd941461151a576103ad565b8063db7242bd14611343578063dd5d3e30146113be578063dea9095a14611439578063e35fc7e214611464576103ad565b8063c3285de6116100dc578063c3285de61461123c578063c5d8444d14611246578063c6d79e9d14611271578063dac258f9146112ec576103ad565b8063a565a5b61461117f578063a87430ba14611189578063ae01d26414611207578063bdbefbf614611211576103ad565b80638853b53e116101855780639f01c016116101545780639f01c016146110375780639f4216e8146110625780639f9a2b0e146110dd578063a4bb170d14611154576103ad565b80638853b53e14610f5c5780639335dcb714610f8a5780639561302a14610fe1578063956c9ebf1461100c576103ad565b806384abfa37116101c157806384abfa3714610e1857806384d82db814610e8f578063851f31c614610eba578063878b255d14610f31576103ad565b806380085ec414610cbe578063805b495414610d3557806381d12c5814610db0576103ad565b8063502c9bd5116102d75780636e2fb91d1161026a57806379378e301161023957806379378e3014610b9e5780637aa6e6dc14610bed5780637ff135cd14610c185780637ff5c45014610c93576103ad565b80636e2fb91d14610a7b57806370047eeb14610af257806370ed0ada14610afc57806378dffea714610b27576103ad565b806360fbf122116102a657806360fbf122146109a45780636254a0ef14610a1b578063673f554b14610a25578063699ad07e14610a50576103ad565b8063502c9bd5146107fc5780635761a7ae146108775780635a1cb2cd146108a25780635e5c06e2146108cd576103ad565b806338f2f4461161034f578063435ea1301161031e578063435ea130146106d1578063460c3c071461074c578063461aa4781461077757806350264b5514610781576103ad565b806338f2f446146105fa57806338fc99bd146106715780633bddc9511461067b5780634147cde8146106a6576103ad565b806309fd01ba1161038b57806309fd01ba1461045e5780630c851e3c146104d9578063282e06761461055457806336509f77146105cf576103ad565b806301073bf5146103b2578063080f775f146103bc57806309ea330a146103e7575b600080fd5b6103ba611545565b005b3480156103c857600080fd5b506103d1611a3f565b6040518082815260200191505060405180910390f35b3480156103f357600080fd5b506104366004803603602081101561040a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a45565b6040518084151515158152602001838152602001828152602001935050505060405180910390f35b34801561046a57600080fd5b506104976004803603602081101561048157600080fd5b8101908080359060200190929190505050611a7c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156104e557600080fd5b50610512600480360360208110156104fc57600080fd5b8101908080359060200190929190505050611aaf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561056057600080fd5b5061058d6004803603602081101561057757600080fd5b8101908080359060200190929190505050611ae2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156105db57600080fd5b506105e4611b15565b6040518082815260200191505060405180910390f35b34801561060657600080fd5b506106496004803603602081101561061d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b1b565b6040518084151515158152602001838152602001828152602001935050505060405180910390f35b610679611b52565b005b34801561068757600080fd5b5061069061204c565b6040518082815260200191505060405180910390f35b3480156106b257600080fd5b506106bb612052565b6040518082815260200191505060405180910390f35b3480156106dd57600080fd5b5061070a600480360360208110156106f457600080fd5b8101908080359060200190929190505050612058565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561075857600080fd5b5061076161208b565b6040518082815260200191505060405180910390f35b61077f612091565b005b34801561078d57600080fd5b506107ba600480360360208110156107a457600080fd5b810190808035906020019092919050505061258b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561080857600080fd5b506108356004803603602081101561081f57600080fd5b81019080803590602001909291905050506125be565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561088357600080fd5b5061088c6125fa565b6040518082815260200191505060405180910390f35b3480156108ae57600080fd5b506108b7612600565b6040518082815260200191505060405180910390f35b3480156108d957600080fd5b5061091c600480360360208110156108f057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612606565b604051808c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018b81526020018a81526020018981526020018881526020018781526020018681526020018581526020018481526020018381526020018281526020019b50505050505050505050505060405180910390f35b3480156109b057600080fd5b506109f3600480360360208110156109c757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612680565b6040518084151515158152602001838152602001828152602001935050505060405180910390f35b610a236126b7565b005b348015610a3157600080fd5b50610a3a612bb1565b6040518082815260200191505060405180910390f35b348015610a5c57600080fd5b50610a65612bb7565b6040518082815260200191505060405180910390f35b348015610a8757600080fd5b50610aca60048036036020811015610a9e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612bbd565b6040518084151515158152602001838152602001828152602001935050505060405180910390f35b610afa612bf4565b005b348015610b0857600080fd5b50610b116130ee565b6040518082815260200191505060405180910390f35b348015610b3357600080fd5b50610b7660048036036020811015610b4a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506130f6565b6040518084151515158152602001838152602001828152602001935050505060405180910390f35b348015610baa57600080fd5b50610bd760048036036020811015610bc157600080fd5b810190808035906020019092919050505061312d565b6040518082815260200191505060405180910390f35b348015610bf957600080fd5b50610c02613145565b6040518082815260200191505060405180910390f35b348015610c2457600080fd5b50610c5160048036036020811015610c3b57600080fd5b810190808035906020019092919050505061314b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610c9f57600080fd5b50610ca861317e565b6040518082815260200191505060405180910390f35b348015610cca57600080fd5b50610d0d60048036036020811015610ce157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613184565b6040518084151515158152602001838152602001828152602001935050505060405180910390f35b348015610d4157600080fd5b50610d6e60048036036020811015610d5857600080fd5b81019080803590602001909291905050506131ba565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610dbc57600080fd5b50610de960048036036020811015610dd357600080fd5b81019080803590602001909291905050506131ed565b604051808515151515815260200184815260200183815260200182815260200194505050505060405180910390f35b348015610e2457600080fd5b50610e6760048036036020811015610e3b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613237565b6040518084151515158152602001838152602001828152602001935050505060405180910390f35b348015610e9b57600080fd5b50610ea461326e565b6040518082815260200191505060405180910390f35b348015610ec657600080fd5b50610f0960048036036020811015610edd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613274565b6040518084151515158152602001838152602001828152602001935050505060405180910390f35b348015610f3d57600080fd5b50610f466132ab565b6040518082815260200191505060405180910390f35b610f8860048036036020811015610f7257600080fd5b81019080803590602001909291905050506132b1565b005b348015610f9657600080fd5b50610f9f61398d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610fed57600080fd5b50610ff66139b2565b6040518082815260200191505060405180910390f35b34801561101857600080fd5b506110216139b8565b6040518082815260200191505060405180910390f35b34801561104357600080fd5b5061104c6139be565b6040518082815260200191505060405180910390f35b34801561106e57600080fd5b5061109b6004803603602081101561108557600080fd5b81019080803590602001909291905050506139c4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156110e957600080fd5b5061112c6004803603602081101561110057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506139f7565b6040518084151515158152602001838152602001828152602001935050505060405180910390f35b34801561116057600080fd5b50611169613a2e565b6040518082815260200191505060405180910390f35b611187613a34565b005b34801561119557600080fd5b506111d8600480360360208110156111ac57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613f2e565b604051808515151515815260200184815260200183815260200182815260200194505050505060405180910390f35b61120f613f6b565b005b34801561121d57600080fd5b506112266143a3565b6040518082815260200191505060405180910390f35b6112446143a9565b005b34801561125257600080fd5b5061125b6148a3565b6040518082815260200191505060405180910390f35b34801561127d57600080fd5b506112aa6004803603602081101561129457600080fd5b81019080803590602001909291905050506148a9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156112f857600080fd5b506113016148dc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561134f57600080fd5b5061137c6004803603602081101561136657600080fd5b81019080803590602001909291905050506149c6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156113ca57600080fd5b506113f7600480360360208110156113e157600080fd5b81019080803590602001909291905050506149f9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561144557600080fd5b5061144e614a2c565b6040518082815260200191505060405180910390f35b61146c614a32565b005b34801561147a57600080fd5b50611483614f2c565b6040518082815260200191505060405180910390f35b3480156114a557600080fd5b506114e8600480360360208110156114bc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614f32565b6040518084151515158152602001838152602001828152602001935050505060405180910390f35b611518614f69565b005b34801561152657600080fd5b5061152f615463565b6040518082815260200191505060405180910390f35b601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16611607576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f55736572204e6f7420526567697374657265640000000000000000000000000081525060200191505060405180910390fd5b601a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16156116ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f416c726561647920696e204175746f506f6f6c0000000000000000000000000081525060200191505060405180910390fd5b6030543414611741576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f496e636f72726563742056616c7565000000000000000000000000000000000081525060200191505060405180910390fd5b6117496156d2565b6000601b6000600c54815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600260008154809291906001019190505550604051806060016040528060011515815260200160025481526020016000815250915081601a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff021916908315150217905550602082015181600101556040820151816002015590505033601b6000600254815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008090508173ffffffffffffffffffffffffffffffffffffffff166108fc6030549081150290604051600060405180830381858888f19350505050905080156119e3576001601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201600082825401925050819055506002601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015410611974576001600c600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8481618b66a5bdb9dafcf5399da7af45bcb127ca77a372a11bcc23dc52ce2033600142604051808381526020018281526020019250505060405180910390a35b3373ffffffffffffffffffffffffffffffffffffffff167fcb07244260cf1d494c557a355f7b7dd3663a109c736b84fdef66b8d839cfa216600142604051808381526020018281526020019250505060405180910390a2505050565b60065481565b60226020528060005260406000206000915090508060000160009054906101000a900460ff16908060010154908060020154905083565b601f6020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601b6020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60296020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c5481565b601a6020528060005260406000206000915090508060000160009054906101000a900460ff16908060010154908060020154905083565b601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16611c14576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f55736572204e6f7420526567697374657265640000000000000000000000000081525060200191505060405180910390fd5b602060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1615611cd7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f416c726561647920696e204175746f506f6f6c0000000000000000000000000081525060200191505060405180910390fd5b6033543414611d4e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f496e636f72726563742056616c7565000000000000000000000000000000000081525060200191505060405180910390fd5b611d566156d2565b600060216000600f54815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600560008154809291906001019190505550604051806060016040528060011515815260200160055481526020016000815250915081602060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160010155604082015181600201559050503360216000600554815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008090508173ffffffffffffffffffffffffffffffffffffffff166108fc6033549081150290604051600060405180830381858888f1935050505090508015611ff0576001602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201600082825401925050819055506003602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015410611f81576001600f600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8481618b66a5bdb9dafcf5399da7af45bcb127ca77a372a11bcc23dc52ce2033600442604051808381526020018281526020019250505060405180910390a35b3373ffffffffffffffffffffffffffffffffffffffff167fcb07244260cf1d494c557a355f7b7dd3663a109c736b84fdef66b8d839cfa216600442604051808381526020018281526020019250505060405180910390a2505050565b60105481565b600a5481565b60216020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5481565b601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16612153576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f55736572204e6f7420526567697374657265640000000000000000000000000081525060200191505060405180910390fd5b602660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1615612216576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f416c726561647920696e204175746f506f6f6c0000000000000000000000000081525060200191505060405180910390fd5b603654341461228d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f496e636f72726563742056616c7565000000000000000000000000000000000081525060200191505060405180910390fd5b6122956156d2565b600060276000601254815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600860008154809291906001019190505550604051806060016040528060011515815260200160085481526020016000815250915081602660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160010155604082015181600201559050503360276000600854815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008090508173ffffffffffffffffffffffffffffffffffffffff166108fc6036549081150290604051600060405180830381858888f193505050509050801561252f576001602660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201600082825401925050819055506003602660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154106124c05760016012600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8481618b66a5bdb9dafcf5399da7af45bcb127ca77a372a11bcc23dc52ce2033600742604051808381526020018281526020019250505060405180910390a35b3373ffffffffffffffffffffffffffffffffffffffff167fcb07244260cf1d494c557a355f7b7dd3663a109c736b84fdef66b8d839cfa216600742604051808381526020018281526020019250505060405180910390a2505050565b602b6020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b603b81815481106125cb57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60025481565b600f5481565b60166020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600101549080600201549080600301549080600401549080600501549080600601549080600701549080600801549080600901549080600a015490508b565b602a6020528060005260406000206000915090508060000160009054906101000a900460ff16908060010154908060020154905083565b601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16612779576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f55736572204e6f7420526567697374657265640000000000000000000000000081525060200191505060405180910390fd5b601c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff161561283c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f416c726561647920696e204175746f506f6f6c0000000000000000000000000081525060200191505060405180910390fd5b60315434146128b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f496e636f72726563742056616c7565000000000000000000000000000000000081525060200191505060405180910390fd5b6128bb6156d2565b6000601d6000600d54815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600360008154809291906001019190505550604051806060016040528060011515815260200160035481526020016000815250915081601c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff021916908315150217905550602082015181600101556040820151816002015590505033601d6000600354815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008090508173ffffffffffffffffffffffffffffffffffffffff166108fc6031549081150290604051600060405180830381858888f1935050505090508015612b55576001601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201600082825401925050819055506003601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015410612ae6576001600d600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8481618b66a5bdb9dafcf5399da7af45bcb127ca77a372a11bcc23dc52ce2033600242604051808381526020018281526020019250505060405180910390a35b3373ffffffffffffffffffffffffffffffffffffffff167fcb07244260cf1d494c557a355f7b7dd3663a109c736b84fdef66b8d839cfa216600242604051808381526020018281526020019250505060405180910390a2505050565b60085481565b600b5481565b60246020528060005260406000206000915090508060000160009054906101000a900460ff16908060010154908060020154905083565b601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16612cb6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f55736572204e6f7420526567697374657265640000000000000000000000000081525060200191505060405180910390fd5b602860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1615612d79576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f416c726561647920696e204175746f506f6f6c0000000000000000000000000081525060200191505060405180910390fd5b6037543414612df0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f496e636f72726563742056616c7565000000000000000000000000000000000081525060200191505060405180910390fd5b612df86156d2565b600060296000601354815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600960008154809291906001019190505550604051806060016040528060011515815260200160095481526020016000815250915081602860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160010155604082015181600201559050503360296000600954815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008090508173ffffffffffffffffffffffffffffffffffffffff166108fc6037549081150290604051600060405180830381858888f1935050505090508015613092576001602860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201600082825401925050819055506003602860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154106130235760016013600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8481618b66a5bdb9dafcf5399da7af45bcb127ca77a372a11bcc23dc52ce2033600842604051808381526020018281526020019250505060405180910390a35b3373ffffffffffffffffffffffffffffffffffffffff167fcb07244260cf1d494c557a355f7b7dd3663a109c736b84fdef66b8d839cfa216600842604051808381526020018281526020019250505060405180910390a2505050565b600047905090565b601e6020528060005260406000206000915090508060000160009054906101000a900460ff16908060010154908060020154905083565b602e6020528060005260406000206000915090505481565b60175481565b601d6020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60135481565b602080528060005260406000206000915090508060000160009054906101000a900460ff16908060010154908060020154905083565b60256020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b603a81815481106131fa57fe5b90600052602060002090600502016000915090508060000160009054906101000a900460ff16908060010154908060020154908060030154905084565b601c6020528060005260406000206000915090508060000160009054906101000a900460ff16908060010154908060020154905083565b60095481565b60266020528060005260406000206000915090508060000160009054906101000a900460ff16908060010154908060020154905083565b60145481565b601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1615613374576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f557365722045786973747300000000000000000000000000000000000000000081525060200191505060405180910390fd5b60008111801561338657506001548111155b6133f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f496e636f727265637420726566657272616c204944000000000000000000000081525060200191505060405180910390fd5b602f54341461346f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f496e636f72726563742056616c7565000000000000000000000000000000000081525060200191505060405180910390fd5b6134776156f5565b600160008154809291906001019190505550603b339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604051806080016040528060011515815260200160015481526020018381526020016000815250905080601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff0219169083151502179055506020820151816001015560408201518160020155606082015181600301559050503360196000600154815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016018600060196000601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030154016018600060196000601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206003018190555061382b60016016600060196000601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015461546990919063ffffffff16565b6016600060196000601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055506138f16001336154f1565b6019600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f788c06d2405ae89dd3f0528d38be7691289474d72176408bc2c2406dc5e342f1426040518082815260200191505060405180910390a35050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60125481565b60155481565b60055481565b60196020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60286020528060005260406000206000915090508060000160009054906101000a900460ff16908060010154908060020154905083565b60015481565b601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16613af6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f55736572204e6f7420526567697374657265640000000000000000000000000081525060200191505060405180910390fd5b602a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1615613bb9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f416c726561647920696e204175746f506f6f6c0000000000000000000000000081525060200191505060405180910390fd5b6038543414613c30576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f496e636f72726563742056616c7565000000000000000000000000000000000081525060200191505060405180910390fd5b613c386156d2565b6000602b6000601454815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600a600081548092919060010191905055506040518060600160405280600115158152602001600a5481526020016000815250915081602a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff021916908315150217905550602082015181600101556040820151816002015590505033602b6000600a54815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008090508173ffffffffffffffffffffffffffffffffffffffff166108fc6038549081150290604051600060405180830381858888f1935050505090508015613ed2576001602a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201600082825401925050819055506003602a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015410613e635760016014600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8481618b66a5bdb9dafcf5399da7af45bcb127ca77a372a11bcc23dc52ce2033600942604051808381526020018281526020019250505060405180910390a35b3373ffffffffffffffffffffffffffffffffffffffff167fcb07244260cf1d494c557a355f7b7dd3663a109c736b84fdef66b8d839cfa216600942604051808381526020018281526020019250505060405180910390a2505050565b60186020528060005260406000206000915090508060000160009054906101000a900460ff16908060010154908060020154908060030154905084565b602460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff161561402e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f416c726561647920696e204175746f506f6f6c0000000000000000000000000081525060200191505060405180910390fd5b60355434146140a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f496e636f72726563742056616c7565000000000000000000000000000000000081525060200191505060405180910390fd5b6140ad6156d2565b600060256000601154815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600760008154809291906001019190505550604051806060016040528060011515815260200160075481526020016000815250915081602460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160010155604082015181600201559050503360256000600754815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008090508173ffffffffffffffffffffffffffffffffffffffff166108fc6035549081150290604051600060405180830381858888f1935050505090508015614347576001602460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201600082825401925050819055506003602460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154106142d85760016011600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8481618b66a5bdb9dafcf5399da7af45bcb127ca77a372a11bcc23dc52ce2033600642604051808381526020018281526020019250505060405180910390a35b3373ffffffffffffffffffffffffffffffffffffffff167fcb07244260cf1d494c557a355f7b7dd3663a109c736b84fdef66b8d839cfa216600642604051808381526020018281526020019250505060405180910390a2505050565b60035481565b601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1661446b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f55736572204e6f7420526567697374657265640000000000000000000000000081525060200191505060405180910390fd5b601e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff161561452e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f416c726561647920696e204175746f506f6f6c0000000000000000000000000081525060200191505060405180910390fd5b60325434146145a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f496e636f72726563742056616c7565000000000000000000000000000000000081525060200191505060405180910390fd5b6145ad6156d2565b6000601f6000600e54815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600460008154809291906001019190505550604051806060016040528060011515815260200160045481526020016000815250915081601e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff021916908315150217905550602082015181600101556040820151816002015590505033601f6000600454815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008090508173ffffffffffffffffffffffffffffffffffffffff166108fc6032549081150290604051600060405180830381858888f1935050505090508015614847576001601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201600082825401925050819055506003601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154106147d8576001600e600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8481618b66a5bdb9dafcf5399da7af45bcb127ca77a372a11bcc23dc52ce2033600342604051808381526020018281526020019250505060405180910390a35b3373ffffffffffffffffffffffffffffffffffffffff167fcb07244260cf1d494c557a355f7b7dd3663a109c736b84fdef66b8d839cfa216600342604051808381526020018281526020019250505060405180910390a2505050565b60045481565b60236020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000905060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008090505b603b805490508110156149bd576000603b828154811061492b57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301549050848111156149ae578094508193505b5050808060010191505061490f565b50809250505090565b60276020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b602d6020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16614af4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f55736572204e6f7420526567697374657265640000000000000000000000000081525060200191505060405180910390fd5b602c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1615614bb7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f416c726561647920696e204175746f506f6f6c0000000000000000000000000081525060200191505060405180910390fd5b6039543414614c2e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f496e636f72726563742056616c7565000000000000000000000000000000000081525060200191505060405180910390fd5b614c366156d2565b6000602d6000601554815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600b600081548092919060010191905055506040518060600160405280600115158152602001600b5481526020016000815250915081602c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff021916908315150217905550602082015181600101556040820151816002015590505033602d6000600b54815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008090508173ffffffffffffffffffffffffffffffffffffffff166108fc6039549081150290604051600060405180830381858888f1935050505090508015614ed0576001602c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201600082825401925050819055506003602c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015410614e615760016015600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8481618b66a5bdb9dafcf5399da7af45bcb127ca77a372a11bcc23dc52ce2033600a42604051808381526020018281526020019250505060405180910390a35b3373ffffffffffffffffffffffffffffffffffffffff167fcb07244260cf1d494c557a355f7b7dd3663a109c736b84fdef66b8d839cfa216600a42604051808381526020018281526020019250505060405180910390a2505050565b60075481565b602c6020528060005260406000206000915090508060000160009054906101000a900460ff16908060010154908060020154905083565b601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1661502b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f55736572204e6f7420526567697374657265640000000000000000000000000081525060200191505060405180910390fd5b602260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16156150ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f416c726561647920696e204175746f506f6f6c0000000000000000000000000081525060200191505060405180910390fd5b6034543414615165576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f496e636f72726563742056616c7565000000000000000000000000000000000081525060200191505060405180910390fd5b61516d6156d2565b600060236000601054815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600660008154809291906001019190505550604051806060016040528060011515815260200160065481526020016000815250915081602260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160010155604082015181600201559050503360236000600654815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008090508173ffffffffffffffffffffffffffffffffffffffff166108fc6034549081150290604051600060405180830381858888f1935050505090508015615407576001602260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201600082825401925050819055506003602260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154106153985760016010600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8481618b66a5bdb9dafcf5399da7af45bcb127ca77a372a11bcc23dc52ce2033600542604051808381526020018281526020019250505060405180910390a35b3373ffffffffffffffffffffffffffffffffffffffff167fcb07244260cf1d494c557a355f7b7dd3663a109c736b84fdef66b8d839cfa216600542604051808381526020018281526020019250505060405180910390a2505050565b60115481565b6000808284019050838110156154e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000734e4595cc259b075941c7f9d0d05e87f8d133804b905060008090506000809050600185111561552757601754905061553e565b602e60008681526020019081526020016000205490505b8273ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505091508115615660573373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fce7dc747411ac40191c5335943fcc79d8c2d8c01ca5ae83d9fed160409fa61208742604051808381526020018281526020019250505060405180910390a360018510801561563b57506001601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015410155b156156525761564d60018601846154f1565b61565b565b61565a615672565b5b61566b565b61566a85846154f1565b5b5050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6156b56130ee565b9081150290604051600060405180830381858888f1935050505050565b604051806060016040528060001515815260200160008152602001600081525090565b6040518060800160405280600015158152602001600081526020016000815260200160008152509056fea264697066735822122030a624bb4d5963c29765ed4e323411e0a7fa7ac20be0bde884fa11e913814a0564736f6c63430006040033

Deployed Bytecode

0x6080604052600436106103ad5760003560e01c806380085ec4116101e7578063a565a5b61161010d578063db7242bd116100a0578063e592ac561161006f578063e592ac561461146e578063e687ecac14611499578063ed3bb9fa14611510578063eecbdd941461151a576103ad565b8063db7242bd14611343578063dd5d3e30146113be578063dea9095a14611439578063e35fc7e214611464576103ad565b8063c3285de6116100dc578063c3285de61461123c578063c5d8444d14611246578063c6d79e9d14611271578063dac258f9146112ec576103ad565b8063a565a5b61461117f578063a87430ba14611189578063ae01d26414611207578063bdbefbf614611211576103ad565b80638853b53e116101855780639f01c016116101545780639f01c016146110375780639f4216e8146110625780639f9a2b0e146110dd578063a4bb170d14611154576103ad565b80638853b53e14610f5c5780639335dcb714610f8a5780639561302a14610fe1578063956c9ebf1461100c576103ad565b806384abfa37116101c157806384abfa3714610e1857806384d82db814610e8f578063851f31c614610eba578063878b255d14610f31576103ad565b806380085ec414610cbe578063805b495414610d3557806381d12c5814610db0576103ad565b8063502c9bd5116102d75780636e2fb91d1161026a57806379378e301161023957806379378e3014610b9e5780637aa6e6dc14610bed5780637ff135cd14610c185780637ff5c45014610c93576103ad565b80636e2fb91d14610a7b57806370047eeb14610af257806370ed0ada14610afc57806378dffea714610b27576103ad565b806360fbf122116102a657806360fbf122146109a45780636254a0ef14610a1b578063673f554b14610a25578063699ad07e14610a50576103ad565b8063502c9bd5146107fc5780635761a7ae146108775780635a1cb2cd146108a25780635e5c06e2146108cd576103ad565b806338f2f4461161034f578063435ea1301161031e578063435ea130146106d1578063460c3c071461074c578063461aa4781461077757806350264b5514610781576103ad565b806338f2f446146105fa57806338fc99bd146106715780633bddc9511461067b5780634147cde8146106a6576103ad565b806309fd01ba1161038b57806309fd01ba1461045e5780630c851e3c146104d9578063282e06761461055457806336509f77146105cf576103ad565b806301073bf5146103b2578063080f775f146103bc57806309ea330a146103e7575b600080fd5b6103ba611545565b005b3480156103c857600080fd5b506103d1611a3f565b6040518082815260200191505060405180910390f35b3480156103f357600080fd5b506104366004803603602081101561040a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a45565b6040518084151515158152602001838152602001828152602001935050505060405180910390f35b34801561046a57600080fd5b506104976004803603602081101561048157600080fd5b8101908080359060200190929190505050611a7c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156104e557600080fd5b50610512600480360360208110156104fc57600080fd5b8101908080359060200190929190505050611aaf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561056057600080fd5b5061058d6004803603602081101561057757600080fd5b8101908080359060200190929190505050611ae2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156105db57600080fd5b506105e4611b15565b6040518082815260200191505060405180910390f35b34801561060657600080fd5b506106496004803603602081101561061d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b1b565b6040518084151515158152602001838152602001828152602001935050505060405180910390f35b610679611b52565b005b34801561068757600080fd5b5061069061204c565b6040518082815260200191505060405180910390f35b3480156106b257600080fd5b506106bb612052565b6040518082815260200191505060405180910390f35b3480156106dd57600080fd5b5061070a600480360360208110156106f457600080fd5b8101908080359060200190929190505050612058565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561075857600080fd5b5061076161208b565b6040518082815260200191505060405180910390f35b61077f612091565b005b34801561078d57600080fd5b506107ba600480360360208110156107a457600080fd5b810190808035906020019092919050505061258b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561080857600080fd5b506108356004803603602081101561081f57600080fd5b81019080803590602001909291905050506125be565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561088357600080fd5b5061088c6125fa565b6040518082815260200191505060405180910390f35b3480156108ae57600080fd5b506108b7612600565b6040518082815260200191505060405180910390f35b3480156108d957600080fd5b5061091c600480360360208110156108f057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612606565b604051808c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018b81526020018a81526020018981526020018881526020018781526020018681526020018581526020018481526020018381526020018281526020019b50505050505050505050505060405180910390f35b3480156109b057600080fd5b506109f3600480360360208110156109c757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612680565b6040518084151515158152602001838152602001828152602001935050505060405180910390f35b610a236126b7565b005b348015610a3157600080fd5b50610a3a612bb1565b6040518082815260200191505060405180910390f35b348015610a5c57600080fd5b50610a65612bb7565b6040518082815260200191505060405180910390f35b348015610a8757600080fd5b50610aca60048036036020811015610a9e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612bbd565b6040518084151515158152602001838152602001828152602001935050505060405180910390f35b610afa612bf4565b005b348015610b0857600080fd5b50610b116130ee565b6040518082815260200191505060405180910390f35b348015610b3357600080fd5b50610b7660048036036020811015610b4a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506130f6565b6040518084151515158152602001838152602001828152602001935050505060405180910390f35b348015610baa57600080fd5b50610bd760048036036020811015610bc157600080fd5b810190808035906020019092919050505061312d565b6040518082815260200191505060405180910390f35b348015610bf957600080fd5b50610c02613145565b6040518082815260200191505060405180910390f35b348015610c2457600080fd5b50610c5160048036036020811015610c3b57600080fd5b810190808035906020019092919050505061314b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610c9f57600080fd5b50610ca861317e565b6040518082815260200191505060405180910390f35b348015610cca57600080fd5b50610d0d60048036036020811015610ce157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613184565b6040518084151515158152602001838152602001828152602001935050505060405180910390f35b348015610d4157600080fd5b50610d6e60048036036020811015610d5857600080fd5b81019080803590602001909291905050506131ba565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610dbc57600080fd5b50610de960048036036020811015610dd357600080fd5b81019080803590602001909291905050506131ed565b604051808515151515815260200184815260200183815260200182815260200194505050505060405180910390f35b348015610e2457600080fd5b50610e6760048036036020811015610e3b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613237565b6040518084151515158152602001838152602001828152602001935050505060405180910390f35b348015610e9b57600080fd5b50610ea461326e565b6040518082815260200191505060405180910390f35b348015610ec657600080fd5b50610f0960048036036020811015610edd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613274565b6040518084151515158152602001838152602001828152602001935050505060405180910390f35b348015610f3d57600080fd5b50610f466132ab565b6040518082815260200191505060405180910390f35b610f8860048036036020811015610f7257600080fd5b81019080803590602001909291905050506132b1565b005b348015610f9657600080fd5b50610f9f61398d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610fed57600080fd5b50610ff66139b2565b6040518082815260200191505060405180910390f35b34801561101857600080fd5b506110216139b8565b6040518082815260200191505060405180910390f35b34801561104357600080fd5b5061104c6139be565b6040518082815260200191505060405180910390f35b34801561106e57600080fd5b5061109b6004803603602081101561108557600080fd5b81019080803590602001909291905050506139c4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156110e957600080fd5b5061112c6004803603602081101561110057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506139f7565b6040518084151515158152602001838152602001828152602001935050505060405180910390f35b34801561116057600080fd5b50611169613a2e565b6040518082815260200191505060405180910390f35b611187613a34565b005b34801561119557600080fd5b506111d8600480360360208110156111ac57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613f2e565b604051808515151515815260200184815260200183815260200182815260200194505050505060405180910390f35b61120f613f6b565b005b34801561121d57600080fd5b506112266143a3565b6040518082815260200191505060405180910390f35b6112446143a9565b005b34801561125257600080fd5b5061125b6148a3565b6040518082815260200191505060405180910390f35b34801561127d57600080fd5b506112aa6004803603602081101561129457600080fd5b81019080803590602001909291905050506148a9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156112f857600080fd5b506113016148dc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561134f57600080fd5b5061137c6004803603602081101561136657600080fd5b81019080803590602001909291905050506149c6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156113ca57600080fd5b506113f7600480360360208110156113e157600080fd5b81019080803590602001909291905050506149f9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561144557600080fd5b5061144e614a2c565b6040518082815260200191505060405180910390f35b61146c614a32565b005b34801561147a57600080fd5b50611483614f2c565b6040518082815260200191505060405180910390f35b3480156114a557600080fd5b506114e8600480360360208110156114bc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614f32565b6040518084151515158152602001838152602001828152602001935050505060405180910390f35b611518614f69565b005b34801561152657600080fd5b5061152f615463565b6040518082815260200191505060405180910390f35b601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16611607576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f55736572204e6f7420526567697374657265640000000000000000000000000081525060200191505060405180910390fd5b601a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16156116ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f416c726561647920696e204175746f506f6f6c0000000000000000000000000081525060200191505060405180910390fd5b6030543414611741576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f496e636f72726563742056616c7565000000000000000000000000000000000081525060200191505060405180910390fd5b6117496156d2565b6000601b6000600c54815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600260008154809291906001019190505550604051806060016040528060011515815260200160025481526020016000815250915081601a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff021916908315150217905550602082015181600101556040820151816002015590505033601b6000600254815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008090508173ffffffffffffffffffffffffffffffffffffffff166108fc6030549081150290604051600060405180830381858888f19350505050905080156119e3576001601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201600082825401925050819055506002601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015410611974576001600c600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8481618b66a5bdb9dafcf5399da7af45bcb127ca77a372a11bcc23dc52ce2033600142604051808381526020018281526020019250505060405180910390a35b3373ffffffffffffffffffffffffffffffffffffffff167fcb07244260cf1d494c557a355f7b7dd3663a109c736b84fdef66b8d839cfa216600142604051808381526020018281526020019250505060405180910390a2505050565b60065481565b60226020528060005260406000206000915090508060000160009054906101000a900460ff16908060010154908060020154905083565b601f6020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601b6020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60296020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c5481565b601a6020528060005260406000206000915090508060000160009054906101000a900460ff16908060010154908060020154905083565b601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16611c14576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f55736572204e6f7420526567697374657265640000000000000000000000000081525060200191505060405180910390fd5b602060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1615611cd7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f416c726561647920696e204175746f506f6f6c0000000000000000000000000081525060200191505060405180910390fd5b6033543414611d4e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f496e636f72726563742056616c7565000000000000000000000000000000000081525060200191505060405180910390fd5b611d566156d2565b600060216000600f54815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600560008154809291906001019190505550604051806060016040528060011515815260200160055481526020016000815250915081602060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160010155604082015181600201559050503360216000600554815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008090508173ffffffffffffffffffffffffffffffffffffffff166108fc6033549081150290604051600060405180830381858888f1935050505090508015611ff0576001602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201600082825401925050819055506003602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015410611f81576001600f600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8481618b66a5bdb9dafcf5399da7af45bcb127ca77a372a11bcc23dc52ce2033600442604051808381526020018281526020019250505060405180910390a35b3373ffffffffffffffffffffffffffffffffffffffff167fcb07244260cf1d494c557a355f7b7dd3663a109c736b84fdef66b8d839cfa216600442604051808381526020018281526020019250505060405180910390a2505050565b60105481565b600a5481565b60216020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5481565b601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16612153576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f55736572204e6f7420526567697374657265640000000000000000000000000081525060200191505060405180910390fd5b602660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1615612216576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f416c726561647920696e204175746f506f6f6c0000000000000000000000000081525060200191505060405180910390fd5b603654341461228d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f496e636f72726563742056616c7565000000000000000000000000000000000081525060200191505060405180910390fd5b6122956156d2565b600060276000601254815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600860008154809291906001019190505550604051806060016040528060011515815260200160085481526020016000815250915081602660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160010155604082015181600201559050503360276000600854815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008090508173ffffffffffffffffffffffffffffffffffffffff166108fc6036549081150290604051600060405180830381858888f193505050509050801561252f576001602660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201600082825401925050819055506003602660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154106124c05760016012600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8481618b66a5bdb9dafcf5399da7af45bcb127ca77a372a11bcc23dc52ce2033600742604051808381526020018281526020019250505060405180910390a35b3373ffffffffffffffffffffffffffffffffffffffff167fcb07244260cf1d494c557a355f7b7dd3663a109c736b84fdef66b8d839cfa216600742604051808381526020018281526020019250505060405180910390a2505050565b602b6020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b603b81815481106125cb57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60025481565b600f5481565b60166020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600101549080600201549080600301549080600401549080600501549080600601549080600701549080600801549080600901549080600a015490508b565b602a6020528060005260406000206000915090508060000160009054906101000a900460ff16908060010154908060020154905083565b601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16612779576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f55736572204e6f7420526567697374657265640000000000000000000000000081525060200191505060405180910390fd5b601c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff161561283c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f416c726561647920696e204175746f506f6f6c0000000000000000000000000081525060200191505060405180910390fd5b60315434146128b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f496e636f72726563742056616c7565000000000000000000000000000000000081525060200191505060405180910390fd5b6128bb6156d2565b6000601d6000600d54815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600360008154809291906001019190505550604051806060016040528060011515815260200160035481526020016000815250915081601c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff021916908315150217905550602082015181600101556040820151816002015590505033601d6000600354815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008090508173ffffffffffffffffffffffffffffffffffffffff166108fc6031549081150290604051600060405180830381858888f1935050505090508015612b55576001601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201600082825401925050819055506003601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015410612ae6576001600d600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8481618b66a5bdb9dafcf5399da7af45bcb127ca77a372a11bcc23dc52ce2033600242604051808381526020018281526020019250505060405180910390a35b3373ffffffffffffffffffffffffffffffffffffffff167fcb07244260cf1d494c557a355f7b7dd3663a109c736b84fdef66b8d839cfa216600242604051808381526020018281526020019250505060405180910390a2505050565b60085481565b600b5481565b60246020528060005260406000206000915090508060000160009054906101000a900460ff16908060010154908060020154905083565b601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16612cb6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f55736572204e6f7420526567697374657265640000000000000000000000000081525060200191505060405180910390fd5b602860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1615612d79576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f416c726561647920696e204175746f506f6f6c0000000000000000000000000081525060200191505060405180910390fd5b6037543414612df0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f496e636f72726563742056616c7565000000000000000000000000000000000081525060200191505060405180910390fd5b612df86156d2565b600060296000601354815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600960008154809291906001019190505550604051806060016040528060011515815260200160095481526020016000815250915081602860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160010155604082015181600201559050503360296000600954815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008090508173ffffffffffffffffffffffffffffffffffffffff166108fc6037549081150290604051600060405180830381858888f1935050505090508015613092576001602860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201600082825401925050819055506003602860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154106130235760016013600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8481618b66a5bdb9dafcf5399da7af45bcb127ca77a372a11bcc23dc52ce2033600842604051808381526020018281526020019250505060405180910390a35b3373ffffffffffffffffffffffffffffffffffffffff167fcb07244260cf1d494c557a355f7b7dd3663a109c736b84fdef66b8d839cfa216600842604051808381526020018281526020019250505060405180910390a2505050565b600047905090565b601e6020528060005260406000206000915090508060000160009054906101000a900460ff16908060010154908060020154905083565b602e6020528060005260406000206000915090505481565b60175481565b601d6020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60135481565b602080528060005260406000206000915090508060000160009054906101000a900460ff16908060010154908060020154905083565b60256020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b603a81815481106131fa57fe5b90600052602060002090600502016000915090508060000160009054906101000a900460ff16908060010154908060020154908060030154905084565b601c6020528060005260406000206000915090508060000160009054906101000a900460ff16908060010154908060020154905083565b60095481565b60266020528060005260406000206000915090508060000160009054906101000a900460ff16908060010154908060020154905083565b60145481565b601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1615613374576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f557365722045786973747300000000000000000000000000000000000000000081525060200191505060405180910390fd5b60008111801561338657506001548111155b6133f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f496e636f727265637420726566657272616c204944000000000000000000000081525060200191505060405180910390fd5b602f54341461346f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f496e636f72726563742056616c7565000000000000000000000000000000000081525060200191505060405180910390fd5b6134776156f5565b600160008154809291906001019190505550603b339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604051806080016040528060011515815260200160015481526020018381526020016000815250905080601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff0219169083151502179055506020820151816001015560408201518160020155606082015181600301559050503360196000600154815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016018600060196000601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030154016018600060196000601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206003018190555061382b60016016600060196000601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015461546990919063ffffffff16565b6016600060196000601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055506138f16001336154f1565b6019600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f788c06d2405ae89dd3f0528d38be7691289474d72176408bc2c2406dc5e342f1426040518082815260200191505060405180910390a35050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60125481565b60155481565b60055481565b60196020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60286020528060005260406000206000915090508060000160009054906101000a900460ff16908060010154908060020154905083565b60015481565b601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16613af6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f55736572204e6f7420526567697374657265640000000000000000000000000081525060200191505060405180910390fd5b602a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1615613bb9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f416c726561647920696e204175746f506f6f6c0000000000000000000000000081525060200191505060405180910390fd5b6038543414613c30576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f496e636f72726563742056616c7565000000000000000000000000000000000081525060200191505060405180910390fd5b613c386156d2565b6000602b6000601454815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600a600081548092919060010191905055506040518060600160405280600115158152602001600a5481526020016000815250915081602a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff021916908315150217905550602082015181600101556040820151816002015590505033602b6000600a54815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008090508173ffffffffffffffffffffffffffffffffffffffff166108fc6038549081150290604051600060405180830381858888f1935050505090508015613ed2576001602a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201600082825401925050819055506003602a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015410613e635760016014600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8481618b66a5bdb9dafcf5399da7af45bcb127ca77a372a11bcc23dc52ce2033600942604051808381526020018281526020019250505060405180910390a35b3373ffffffffffffffffffffffffffffffffffffffff167fcb07244260cf1d494c557a355f7b7dd3663a109c736b84fdef66b8d839cfa216600942604051808381526020018281526020019250505060405180910390a2505050565b60186020528060005260406000206000915090508060000160009054906101000a900460ff16908060010154908060020154908060030154905084565b602460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff161561402e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f416c726561647920696e204175746f506f6f6c0000000000000000000000000081525060200191505060405180910390fd5b60355434146140a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f496e636f72726563742056616c7565000000000000000000000000000000000081525060200191505060405180910390fd5b6140ad6156d2565b600060256000601154815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600760008154809291906001019190505550604051806060016040528060011515815260200160075481526020016000815250915081602460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160010155604082015181600201559050503360256000600754815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008090508173ffffffffffffffffffffffffffffffffffffffff166108fc6035549081150290604051600060405180830381858888f1935050505090508015614347576001602460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201600082825401925050819055506003602460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154106142d85760016011600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8481618b66a5bdb9dafcf5399da7af45bcb127ca77a372a11bcc23dc52ce2033600642604051808381526020018281526020019250505060405180910390a35b3373ffffffffffffffffffffffffffffffffffffffff167fcb07244260cf1d494c557a355f7b7dd3663a109c736b84fdef66b8d839cfa216600642604051808381526020018281526020019250505060405180910390a2505050565b60035481565b601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1661446b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f55736572204e6f7420526567697374657265640000000000000000000000000081525060200191505060405180910390fd5b601e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff161561452e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f416c726561647920696e204175746f506f6f6c0000000000000000000000000081525060200191505060405180910390fd5b60325434146145a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f496e636f72726563742056616c7565000000000000000000000000000000000081525060200191505060405180910390fd5b6145ad6156d2565b6000601f6000600e54815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600460008154809291906001019190505550604051806060016040528060011515815260200160045481526020016000815250915081601e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff021916908315150217905550602082015181600101556040820151816002015590505033601f6000600454815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008090508173ffffffffffffffffffffffffffffffffffffffff166108fc6032549081150290604051600060405180830381858888f1935050505090508015614847576001601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201600082825401925050819055506003601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154106147d8576001600e600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8481618b66a5bdb9dafcf5399da7af45bcb127ca77a372a11bcc23dc52ce2033600342604051808381526020018281526020019250505060405180910390a35b3373ffffffffffffffffffffffffffffffffffffffff167fcb07244260cf1d494c557a355f7b7dd3663a109c736b84fdef66b8d839cfa216600342604051808381526020018281526020019250505060405180910390a2505050565b60045481565b60236020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000905060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008090505b603b805490508110156149bd576000603b828154811061492b57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301549050848111156149ae578094508193505b5050808060010191505061490f565b50809250505090565b60276020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b602d6020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16614af4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f55736572204e6f7420526567697374657265640000000000000000000000000081525060200191505060405180910390fd5b602c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1615614bb7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f416c726561647920696e204175746f506f6f6c0000000000000000000000000081525060200191505060405180910390fd5b6039543414614c2e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f496e636f72726563742056616c7565000000000000000000000000000000000081525060200191505060405180910390fd5b614c366156d2565b6000602d6000601554815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600b600081548092919060010191905055506040518060600160405280600115158152602001600b5481526020016000815250915081602c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff021916908315150217905550602082015181600101556040820151816002015590505033602d6000600b54815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008090508173ffffffffffffffffffffffffffffffffffffffff166108fc6039549081150290604051600060405180830381858888f1935050505090508015614ed0576001602c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201600082825401925050819055506003602c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015410614e615760016015600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8481618b66a5bdb9dafcf5399da7af45bcb127ca77a372a11bcc23dc52ce2033600a42604051808381526020018281526020019250505060405180910390a35b3373ffffffffffffffffffffffffffffffffffffffff167fcb07244260cf1d494c557a355f7b7dd3663a109c736b84fdef66b8d839cfa216600a42604051808381526020018281526020019250505060405180910390a2505050565b60075481565b602c6020528060005260406000206000915090508060000160009054906101000a900460ff16908060010154908060020154905083565b601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1661502b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f55736572204e6f7420526567697374657265640000000000000000000000000081525060200191505060405180910390fd5b602260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16156150ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f416c726561647920696e204175746f506f6f6c0000000000000000000000000081525060200191505060405180910390fd5b6034543414615165576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f496e636f72726563742056616c7565000000000000000000000000000000000081525060200191505060405180910390fd5b61516d6156d2565b600060236000601054815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600660008154809291906001019190505550604051806060016040528060011515815260200160065481526020016000815250915081602260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160010155604082015181600201559050503360236000600654815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008090508173ffffffffffffffffffffffffffffffffffffffff166108fc6034549081150290604051600060405180830381858888f1935050505090508015615407576001602260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201600082825401925050819055506003602260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154106153985760016010600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8481618b66a5bdb9dafcf5399da7af45bcb127ca77a372a11bcc23dc52ce2033600542604051808381526020018281526020019250505060405180910390a35b3373ffffffffffffffffffffffffffffffffffffffff167fcb07244260cf1d494c557a355f7b7dd3663a109c736b84fdef66b8d839cfa216600542604051808381526020018281526020019250505060405180910390a2505050565b60115481565b6000808284019050838110156154e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000734e4595cc259b075941c7f9d0d05e87f8d133804b905060008090506000809050600185111561552757601754905061553e565b602e60008681526020019081526020016000205490505b8273ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505091508115615660573373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fce7dc747411ac40191c5335943fcc79d8c2d8c01ca5ae83d9fed160409fa61208742604051808381526020018281526020019250505060405180910390a360018510801561563b57506001601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015410155b156156525761564d60018601846154f1565b61565b565b61565a615672565b5b61566b565b61566a85846154f1565b5b5050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6156b56130ee565b9081150290604051600060405180830381858888f1935050505050565b604051806060016040528060001515815260200160008152602001600081525090565b6040518060800160405280600015158152602001600081526020016000815260200160008152509056fea264697066735822122030a624bb4d5963c29765ed4e323411e0a7fa7ac20be0bde884fa11e913814a0564736f6c63430006040033

Deployed Bytecode Sourcemap

1388:19643:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;10526:959:0;;;:::i;:::-;;1642:31;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1642:31:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3798:53;;5:9:-1;2:2;;;27:1;24;17:12;2:2;3798:53:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;3798:53:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3634:46;;5:9:-1;2:2;;;27:1;24;17:12;2:2;3634:46:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;3634:46:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3412;;5:9:-1;2:2;;;27:1;24;17:12;2:2;3412:46:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;3412:46:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4189;;5:9:-1;2:2;;;27:1;24;17:12;2:2;4189:46:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;4189:46:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1872:33;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1872:33:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3354:53;;5:9:-1;2:2;;;27:1;24;17:12;2:2;3354:53:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;3354:53:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13473:963;;;:::i;:::-;;2024:33;;5:9:-1;2:2;;;27:1;24;17:12;2:2;2024:33:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1786:31;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1786:31:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3745:46;;5:9:-1;2:2;;;27:1;24;17:12;2:2;3745:46:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;3745:46:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1910:33;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1910:33:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16339:965;;;:::i;:::-;;4300:46;;5:9:-1;2:2;;;27:1;24;17:12;2:2;4300:46:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;4300:46:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;20499:31;;5:9:-1;2:2;;;27:1;24;17:12;2:2;20499:31:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;20499:31:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1498;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1498:31:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1986:33;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1986:33:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2786:44;;5:9:-1;2:2;;;27:1;24;17:12;2:2;2786:44:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;2786:44:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4242:53;;5:9:-1;2:2;;;27:1;24;17:12;2:2;4242:53:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;4242:53:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11501:982;;;:::i;:::-;;1714:31;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1714:31:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1822:32;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1822:32:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3909:53;;5:9:-1;2:2;;;27:1;24;17:12;2:2;3909:53:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;3909:53:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17320:963;;;:::i;:::-;;20283:92;;5:9:-1;2:2;;;27:1;24;17:12;2:2;20283:92:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3576:53;;5:9:-1;2:2;;;27:1;24;17:12;2:2;3576:53:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;3576:53:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4470:40;;5:9:-1;2:2;;;27:1;24;17:12;2:2;4470:40:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;4470:40:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2950:35;;5:9:-1;2:2;;;27:1;24;17:12;2:2;2950:35:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3523:46;;5:9:-1;2:2;;;27:1;24;17:12;2:2;3523:46:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;3523:46:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2138:33;;5:9:-1;2:2;;;27:1;24;17:12;2:2;2138:33:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3687:53;;5:9:-1;2:2;;;27:1;24;17:12;2:2;3687:53:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;3687:53:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3967:46;;5:9:-1;2:2;;;27:1;24;17:12;2:2;3967:46:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;3967:46:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5238:28;;5:9:-1;2:2;;;27:1;24;17:12;2:2;5238:28:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;5238:28:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3465:53;;5:9:-1;2:2;;;27:1;24;17:12;2:2;3465:53:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;3465:53:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1750:31;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1750:31:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4020:53;;5:9:-1;2:2;;;27:1;24;17:12;2:2;4020:53:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;4020:53:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2176:33;;5:9:-1;2:2;;;27:1;24;17:12;2:2;2176:33:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8717:985;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;8717:985:0;;;;;;;;;;;;;;;;;:::i;:::-;;1436:26;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1436:26:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2100:33;;5:9:-1;2:2;;;27:1;24;17:12;2:2;2100:33:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2214:34;;5:9:-1;2:2;;;27:1;24;17:12;2:2;2214:34:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1606:31;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1606:31:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3301:41;;5:9:-1;2:2;;;27:1;24;17:12;2:2;3301:41:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;3301:41:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4131:53;;5:9:-1;2:2;;;27:1;24;17:12;2:2;4131:53:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;4131:53:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1467:26;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1467:26:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18293:969;;;:::i;:::-;;3252:44;;5:9:-1;2:2;;;27:1;24;17:12;2:2;3252:44:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;3252:44:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15436:893;;;:::i;:::-;;1534:31;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1534:31:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12499:958;;;:::i;:::-;;1570:31;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1570:31:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3856:46;;5:9:-1;2:2;;;27:1;24;17:12;2:2;3856:46:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;3856:46:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;20541:482;;5:9:-1;2:2;;;27:1;24;17:12;2:2;20541:482:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4078:46;;5:9:-1;2:2;;;27:1;24;17:12;2:2;4078:46:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;4078:46:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4412:47;;5:9:-1;2:2;;;27:1;24;17:12;2:2;4412:47:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;4412:47:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1948:33;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1948:33:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19278:983;;;:::i;:::-;;1678:31;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1678:31:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4353:54;;5:9:-1;2:2;;;27:1;24;17:12;2:2;4353:54:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;4353:54:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14458:968;;;:::i;:::-;;2062:33;;5:9:-1;2:2;;;27:1;24;17:12;2:2;2062:33:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10526:959;10576:5;:17;10582:10;10576:17;;;;;;;;;;;;;;;:25;;;;;;;;;;;;10568:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10641:10;:22;10652:10;10641:22;;;;;;;;;;;;;;;:30;;;;;;;;;;;;10640:31;10632:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10723:11;;10710:9;:24;10702:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10761:32;;:::i;:::-;10800:24;10825:13;:32;10839:17;;10825:32;;;;;;;;;;;;;;;;;;;;;10800:57;;10864:15;;:17;;;;;;;;;;;;;10903:98;;;;;;;;10935:4;10903:98;;;;;;10951:15;;10903:98;;;;10992:1;10903:98;;;10890:111;;11038:10;11013;:22;11024:10;11013:22;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11086:10;11055:13;:30;11069:15;;11055:30;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;11103:9;11115:5;11103:17;;11150:16;11134:39;;:52;11174:11;;11134:52;;;;;;;;;;;;;;;;;;;;;;;11127:59;;11199:4;11195:241;;;11261:1;11214:10;:28;11225:16;11214:28;;;;;;;;;;;;;;;:45;;;:48;;;;;;;;;;;11321:1;11274:10;:28;11285:16;11274:28;;;;;;;;;;;;;;;:45;;;:48;11271:93;;11353:1;11334:17;;:20;;;;;;;;;;;11271:93;11403:16;11377:51;;11392:10;11377:51;;;11421:1;11424:3;11377:51;;;;;;;;;;;;;;;;;;;;;;;;11195:241;11460:10;11447:32;;;11472:1;11475:3;11447:32;;;;;;;;;;;;;;;;;;;;;;;;10526:959;;;:::o;1642:31::-;;;;:::o;3798:53::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3634:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;3412:::-;;;;;;;;;;;;;;;;;;;;;;:::o;4189:::-;;;;;;;;;;;;;;;;;;;;;;:::o;1872:33::-;;;;:::o;3354:53::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;13473:963::-;13523:5;:17;13529:10;13523:17;;;;;;;;;;;;;;;:25;;;;;;;;;;;;13515:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13588:10;:22;13599:10;13588:22;;;;;;;;;;;;;;;:30;;;;;;;;;;;;13587:31;13579:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13670:11;;13657:9;:24;13649:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13714:32;;:::i;:::-;13753:24;13778:13;:32;13792:17;;13778:32;;;;;;;;;;;;;;;;;;;;;13753:57;;13817:15;;:17;;;;;;;;;;;;;13854:104;;;;;;;;13888:4;13854:104;;;;;;13906:15;;13854:104;;;;13949:1;13854:104;;;13841:117;;13990:10;13965;:22;13976:10;13965:22;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14038:10;14007:13;:30;14021:15;;14007:30;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;14055:9;14067:5;14055:17;;14102:16;14086:39;;:52;14126:11;;14086:52;;;;;;;;;;;;;;;;;;;;;;;14079:59;;14151:4;14147:241;;;14213:1;14166:10;:28;14177:16;14166:28;;;;;;;;;;;;;;;:45;;;:48;;;;;;;;;;;14273:1;14226:10;:28;14237:16;14226:28;;;;;;;;;;;;;;;:45;;;:48;14223:93;;14305:1;14286:17;;:20;;;;;;;;;;;14223:93;14355:16;14329:51;;14344:10;14329:51;;;14373:1;14376:3;14329:51;;;;;;;;;;;;;;;;;;;;;;;;14147:241;14412:10;14399:31;;;14423:1;14426:3;14399:31;;;;;;;;;;;;;;;;;;;;;;;;13473:963;;;:::o;2024:33::-;;;;:::o;1786:31::-;;;;:::o;3745:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;1910:33::-;;;;:::o;16339:965::-;16389:5;:17;16395:10;16389:17;;;;;;;;;;;;;;;:25;;;;;;;;;;;;16381:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16454:10;:22;16465:10;16454:22;;;;;;;;;;;;;;;:30;;;;;;;;;;;;16453:31;16445:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16536:11;;16523:9;:24;16515:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16576:32;;:::i;:::-;16615:24;16640:13;:32;16654:17;;16640:32;;;;;;;;;;;;;;;;;;;;;16615:57;;16681:15;;:17;;;;;;;;;;;;;16718:98;;;;;;;;16750:4;16718:98;;;;;;16766:15;;16718:98;;;;16807:1;16718:98;;;16705:111;;16848:10;16823;:22;16834:10;16823:22;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16896:10;16865:13;:30;16879:15;;16865:30;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;16913:9;16925:5;16913:17;;16960:16;16944:39;;:52;16984:11;;16944:52;;;;;;;;;;;;;;;;;;;;;;;16937:59;;17009:4;17005:250;;;17073:1;17024:10;:28;17035:16;17024:28;;;;;;;;;;;;;;;:45;;;:50;;;;;;;;;;;17135:1;17086:10;:28;17097:16;17086:28;;;;;;;;;;;;;;;:45;;;:50;17083:100;;17172:1;17151:17;;:22;;;;;;;;;;;17083:100;17222:16;17196:51;;17211:10;17196:51;;;17240:1;17243:3;17196:51;;;;;;;;;;;;;;;;;;;;;;;;17005:250;17279:10;17266:32;;;17290:1;17294:3;17266:32;;;;;;;;;;;;;;;;;;;;;;;;16339:965;;;:::o;4300:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;20499:31::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1498:::-;;;;:::o;1986:33::-;;;;:::o;2786:44::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4242:53::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;11501:982::-;11551:5;:17;11557:10;11551:17;;;;;;;;;;;;;;;:25;;;;;;;;;;;;11543:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11616:10;:22;11627:10;11616:22;;;;;;;;;;;;;;;:30;;;;;;;;;;;;11615:31;11607:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11698:11;;11685:9;:24;11677:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11738:32;;:::i;:::-;11777:24;11802:13;:32;11816:17;;11802:32;;;;;;;;;;;;;;;;;;;;;11777:57;;11851:15;;:17;;;;;;;;;;;;;11888:98;;;;;;;;11920:4;11888:98;;;;;;11936:15;;11888:98;;;;11977:1;11888:98;;;11875:111;;12018:10;11993;:22;12004:10;11993:22;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12066:10;12035:13;:30;12049:15;;12035:30;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;12087:9;12099:5;12087:17;;12134:16;12118:39;;:52;12158:11;;12118:52;;;;;;;;;;;;;;;;;;;;;;;12111:59;;12195:4;12191:243;;;12257:1;12210:10;:28;12221:16;12210:28;;;;;;;;;;;;;;;:45;;;:48;;;;;;;;;;;12317:1;12270:10;:28;12281:16;12270:28;;;;;;;;;;;;;;;:45;;;:48;12267:95;;12351:1;12332:17;;:20;;;;;;;;;;;12267:95;12401:16;12375:51;;12390:10;12375:51;;;12419:1;12422:3;12375:51;;;;;;;;;;;;;;;;;;;;;;;;12191:243;12458:10;12445:32;;;12469:1;12473:3;12445:32;;;;;;;;;;;;;;;;;;;;;;;;11501:982;;;:::o;1714:31::-;;;;:::o;1822:32::-;;;;:::o;3909:53::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;17320:963::-;17370:5;:17;17376:10;17370:17;;;;;;;;;;;;;;;:25;;;;;;;;;;;;17362:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17435:10;:22;17446:10;17435:22;;;;;;;;;;;;;;;:30;;;;;;;;;;;;17434:31;17426:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17517:11;;17504:9;:24;17496:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17557:32;;:::i;:::-;17596:24;17621:13;:32;17635:17;;17621:32;;;;;;;;;;;;;;;;;;;;;17596:57;;17662:15;;:17;;;;;;;;;;;;;17699:98;;;;;;;;17731:4;17699:98;;;;;;17747:15;;17699:98;;;;17788:1;17699:98;;;17686:111;;17829:10;17804;:22;17815:10;17804:22;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17877:10;17846:13;:30;17860:15;;17846:30;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;17894:9;17906:5;17894:17;;17941:16;17925:39;;:52;17965:11;;17925:52;;;;;;;;;;;;;;;;;;;;;;;17918:59;;17990:4;17986:248;;;18054:1;18005:10;:28;18016:16;18005:28;;;;;;;;;;;;;;;:45;;;:50;;;;;;;;;;;18116:1;18067:10;:28;18078:16;18067:28;;;;;;;;;;;;;;;:45;;;:50;18064:98;;18150:1;18130:17;;:21;;;;;;;;;;;18064:98;18201:16;18175:51;;18190:10;18175:51;;;18219:1;18222:3;18175:51;;;;;;;;;;;;;;;;;;;;;;;;17986:248;18258:10;18245:32;;;18269:1;18273:3;18245:32;;;;;;;;;;;;;;;;;;;;;;;;17320:963;;;:::o;20283:92::-;20328:4;20348:21;20341:28;;20283:92;:::o;3576:53::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4470:40::-;;;;;;;;;;;;;;;;;:::o;2950:35::-;;;;:::o;3523:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;2138:33::-;;;;:::o;3687:53::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3967:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;5238:28::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3465:53::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1750:31::-;;;;:::o;4020:53::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2176:33::-;;;;:::o;8717:985::-;8783:5;:17;8789:10;8783:17;;;;;;;;;;;;;;;:25;;;;;;;;;;;;8782:26;8774:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8853:1;8839:11;:15;:44;;;;;8873:10;;8858:11;:25;;8839:44;8831:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8937:17;;8924:9;:30;8916:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8990:28;;:::i;:::-;9025:10;;:12;;;;;;;;;;;;;9044:13;9063:10;9044:30;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;9044:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9096:120;;;;;;;;9125:4;9096:120;;;;;;9142:10;;9096:120;;;;9173:11;9096:120;;;;9207:1;9096:120;;;9083:133;;9254:10;9234:5;:17;9240:10;9234:17;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9292:10;9271:8;:20;9280:10;;9271:20;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;9431:1;9371:5;:45;9377:8;:38;9386:5;:17;9392:10;9386:17;;;;;;;;;;;;;;;:28;;;9377:38;;;;;;;;;;;;;;;;;;;;;9371:45;;;;;;;;;;;;;;;:59;;;:61;9311:5;:45;9317:8;:38;9326:5;:17;9332:10;9326:17;;;;;;;;;;;;;;;:28;;;9317:38;;;;;;;;;;;;;;;;;;;;;9311:45;;;;;;;;;;;;;;;:59;;:121;;;;9515:69;9582:1;9515:8;:48;9524:8;:38;9533:5;:17;9539:10;9533:17;;;;;;;;;;;;;;;:28;;;9524:38;;;;;;;;;;;;;;;;;;;;;9515:48;;;;;;;;;;;;;;;:62;;;:66;;:69;;;;:::i;:::-;9452:8;:48;9461:8;:38;9470:5;:17;9476:10;9470:17;;;;;;;;;;;;;;;:28;;;9461:38;;;;;;;;;;;;;;;;;;;;;9452:48;;;;;;;;;;;;;;;:62;;:132;;;;9606:25;9618:1;9620:10;9606:11;:25::i;:::-;9669:8;:21;9678:11;9669:21;;;;;;;;;;;;;;;;;;;;;9643:53;;9657:10;9643:53;;;9692:3;9643:53;;;;;;;;;;;;;;;;;;8717:985;;:::o;1436:26::-;;;;;;;;;;;;;:::o;2100:33::-;;;;:::o;2214:34::-;;;;:::o;1606:31::-;;;;:::o;3301:41::-;;;;;;;;;;;;;;;;;;;;;;:::o;4131:53::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1467:26::-;;;;:::o;18293:969::-;18343:5;:17;18349:10;18343:17;;;;;;;;;;;;;;;:25;;;;;;;;;;;;18335:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18408:10;:22;18419:10;18408:22;;;;;;;;;;;;;;;:30;;;;;;;;;;;;18407:31;18399:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18490:11;;18477:9;:24;18469:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18530:32;;:::i;:::-;18569:24;18594:13;:32;18608:17;;18594:32;;;;;;;;;;;;;;;;;;;;;18569:57;;18635:15;;:17;;;;;;;;;;;;;18672:104;;;;;;;;18706:4;18672:104;;;;;;18724:15;;18672:104;;;;18767:1;18672:104;;;18659:117;;18808:10;18783;:22;18794:10;18783:22;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18856:10;18825:13;:30;18839:15;;18825:30;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;18873:9;18885:5;18873:17;;18920:16;18904:39;;:52;18944:11;;18904:52;;;;;;;;;;;;;;;;;;;;;;;18897:59;;18969:4;18965:248;;;19032:1;18984:10;:28;18995:16;18984:28;;;;;;;;;;;;;;;:45;;;:49;;;;;;;;;;;19094:1;19046:10;:28;19057:16;19046:28;;;;;;;;;;;;;;;:45;;;:49;19043:97;;19129:1;19108:17;;:22;;;;;;;;;;;19043:97;19180:16;19154:51;;19169:10;19154:51;;;19198:1;19201:3;19154:51;;;;;;;;;;;;;;;;;;;;;;;;18965:248;19237:10;19224:32;;;19248:1;19252:3;19224:32;;;;;;;;;;;;;;;;;;;;;;;;18293:969;;;:::o;3252:44::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;15436:893::-;15487:10;:22;15498:10;15487:22;;;;;;;;;;;;;;;:30;;;;;;;;;;;;15486:31;15478:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15569:11;;15556:9;:24;15548:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15609:32;;:::i;:::-;15648:24;15673:13;:32;15687:17;;15673:32;;;;;;;;;;;;;;;;;;;;;15648:57;;15714:15;;:17;;;;;;;;;;;;;15751:98;;;;;;;;15783:4;15751:98;;;;;;15799:15;;15751:98;;;;15840:1;15751:98;;;15738:111;;15881:10;15856;:22;15867:10;15856:22;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15929:10;15898:13;:30;15912:15;;15898:30;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;15946:9;15958:5;15946:17;;15993:16;15977:39;;:52;16017:11;;15977:52;;;;;;;;;;;;;;;;;;;;;;;15970:59;;16042:4;16038:242;;;16104:1;16057:10;:28;16068:16;16057:28;;;;;;;;;;;;;;;:45;;;:48;;;;;;;;;;;16164:1;16117:10;:28;16128:16;16117:28;;;;;;;;;;;;;;;:45;;;:48;16114:94;;16197:1;16178:17;;:20;;;;;;;;;;;16114:94;16247:16;16221:51;;16236:10;16221:51;;;16265:1;16268:3;16221:51;;;;;;;;;;;;;;;;;;;;;;;;16038:242;16304:10;16291:32;;;16315:1;16319:3;16291:32;;;;;;;;;;;;;;;;;;;;;;;;15436:893;;;:::o;1534:31::-;;;;:::o;12499:958::-;12549:5;:17;12555:10;12549:17;;;;;;;;;;;;;;;:25;;;;;;;;;;;;12541:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12614:10;:22;12625:10;12614:22;;;;;;;;;;;;;;;:30;;;;;;;;;;;;12613:31;12605:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12696:11;;12683:9;:24;12675:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12736:32;;:::i;:::-;12775:24;12800:13;:32;12814:17;;12800:32;;;;;;;;;;;;;;;;;;;;;12775:57;;12841:15;;:17;;;;;;;;;;;;;12878:98;;;;;;;;12910:4;12878:98;;;;;;12926:15;;12878:98;;;;12967:1;12878:98;;;12865:111;;13008:10;12983;:22;12994:10;12983:22;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13056:10;13025:13;:30;13039:15;;13025:30;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;13073:9;13085:5;13073:17;;13120:16;13104:39;;:52;13144:11;;13104:52;;;;;;;;;;;;;;;;;;;;;;;13097:59;;13169:4;13165:243;;;13231:1;13184:10;:28;13195:16;13184:28;;;;;;;;;;;;;;;:45;;;:48;;;;;;;;;;;13291:1;13244:10;:28;13255:16;13244:28;;;;;;;;;;;;;;;:45;;;:48;13241:95;;13325:1;13306:17;;:20;;;;;;;;;;;13241:95;13375:16;13349:51;;13364:10;13349:51;;;13393:1;13396:3;13349:51;;;;;;;;;;;;;;;;;;;;;;;;13165:243;13432:10;13419:32;;;13443:1;13447:3;13419:32;;;;;;;;;;;;;;;;;;;;;;;;12499:958;;;:::o;1570:31::-;;;;:::o;3856:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;20541:482::-;20595:7;20610:21;20634:1;20610:25;;20642:18;20663:11;;;;;;;;;;;20642:32;;20691:6;20700:1;20691:10;;20687:307;20707:13;:20;;;;20703:1;:24;20687:307;;;20742:19;20764:13;20778:1;20764:16;;;;;;;;;;;;;;;;;;;;;;;;;20742:38;;20789:22;20814:5;:18;20820:11;20814:18;;;;;;;;;;;;;;;:32;;;20789:57;;20878:16;20858:17;:36;20855:132;;;20925:17;20906:36;;20966:11;20953:24;;20855:132;20687:307;;20729:3;;;;;;;20687:307;;;;21007:10;21000:17;;;;20541:482;:::o;4078:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;4412:47::-;;;;;;;;;;;;;;;;;;;;;;:::o;1948:33::-;;;;:::o;19278:983::-;19329:5;:17;19335:10;19329:17;;;;;;;;;;;;;;;:25;;;;;;;;;;;;19321:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19394:11;:23;19406:10;19394:23;;;;;;;;;;;;;;;:31;;;;;;;;;;;;19393:32;19385:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19477:12;;19464:9;:25;19456:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19518:32;;:::i;:::-;19557:25;19583:14;:34;19598:18;;19583:34;;;;;;;;;;;;;;;;;;;;;19557:60;;19626:16;;:18;;;;;;;;;;;;;19664:99;;;;;;;;19696:4;19664:99;;;;;;19712:16;;19664:99;;;;19754:1;19664:99;;;19651:112;;19796:10;19770:11;:23;19782:10;19770:23;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19846:10;19813:14;:32;19828:16;;19813:32;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;19863:9;19875:5;19863:17;;19910;19894:40;;:54;19935:12;;19894:54;;;;;;;;;;;;;;;;;;;;;;;19887:61;;19959:4;19955:256;;;20025:1;19974:11;:30;19986:17;19974:30;;;;;;;;;;;;;;;:47;;;:52;;;;;;;;;;;20089:1;20038:11;:30;20050:17;20038:30;;;;;;;;;;;;;;;:47;;;:52;20035:101;;20125:1;20103:18;;:23;;;;;;;;;;;20035:101;20176:17;20150:53;;20165:10;20150:53;;;20195:2;20199:3;20150:53;;;;;;;;;;;;;;;;;;;;;;;;19955:256;20235:10;20222:33;;;20247:2;20251:3;20222:33;;;;;;;;;;;;;;;;;;;;;;;;19278:983;;;:::o;1678:31::-;;;;:::o;4353:54::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14458:968::-;14508:5;:17;14514:10;14508:17;;;;;;;;;;;;;;;:25;;;;;;;;;;;;14500:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14573:10;:22;14584:10;14573:22;;;;;;;;;;;;;;;:30;;;;;;;;;;;;14572:31;14564:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14655:11;;14642:9;:24;14634:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14707:32;;:::i;:::-;14746:24;14771:13;:32;14785:17;;14771:32;;;;;;;;;;;;;;;;;;;;;14746:57;;14812:15;;:17;;;;;;;;;;;;;14849:98;;;;;;;;14881:4;14849:98;;;;;;14897:15;;14849:98;;;;14938:1;14849:98;;;14836:111;;14979:10;14954;:22;14965:10;14954:22;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15027:10;14996:13;:30;15010:15;;14996:30;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;15044:9;15056:5;15044:17;;15091:16;15075:39;;:52;15115:11;;15075:52;;;;;;;;;;;;;;;;;;;;;;;15068:59;;15140:4;15136:241;;;15202:1;15155:10;:28;15166:16;15155:28;;;;;;;;;;;;;;;:45;;;:48;;;;;;;;;;;15262:1;15215:10;:28;15226:16;15215:28;;;;;;;;;;;;;;;:45;;;:48;15212:93;;15294:1;15275:17;;:20;;;;;;;;;;;15212:93;15344:16;15318:51;;15333:10;15318:51;;;15362:1;15365:3;15318:51;;;;;;;;;;;;;;;;;;;;;;;;15136:241;15401:10;15388:32;;;15412:1;15416:3;15388:32;;;;;;;;;;;;;;;;;;;;;;;;14458:968;;;:::o;2062:33::-;;;;:::o;57:167::-;115:7;131:9;147:1;143;:5;131:17;;168:1;163;:6;;155:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;217:1;210:8;;;57:167;;;;:::o;9716:791::-;9781:15;9820:42;9810:52;;9869:9;9881:5;9869:17;;9893:22;9918:1;9893:26;;9940:1;9931:6;:10;9928:137;;;9969:21;;9951:39;;9928:137;;;10038:11;:19;10050:6;10038:19;;;;;;;;;;;;10018:39;;9928:137;10100:7;10084:30;;:49;10115:17;10084:49;;;;;;;;;;;;;;;;;;;;;;;10077:56;;10146:4;10142:360;;;10197:10;10166:55;;10188:7;10166:55;;;10209:6;10217:3;10166:55;;;;;;;;;;;;;;;;;;;;;;;;10242:1;10233:6;:10;:44;;;;;10276:1;10247:5;:14;10253:7;10247:14;;;;;;;;;;;;;;;:25;;;:30;;10233:44;10230:138;;;10289:30;10308:1;10301:6;:8;10311:7;10289:11;:30::i;:::-;10230:138;;;10345:13;:11;:13::i;:::-;10230:138;10142:360;;;10466:28;10478:6;10486:7;10466:11;:28::i;:::-;10142:360;9716:791;;;;;:::o;20385:104::-;20444:11;;;;;;;;;;;20428:34;;:51;20463:15;:13;:15::i;:::-;20428:51;;;;;;;;;;;;;;;;;;;;;;;20423:61;20385:104::o;1388:19643::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

ipfs://30a624bb4d5963c29765ed4e323411e0a7fa7ac20be0bde884fa11e913814a05

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ 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.