MATIC Price: $1.07 (+5.50%)
Gas: 71 GWei
 

Overview

MATIC Balance

Polygon PoS Chain LogoPolygon PoS Chain LogoPolygon PoS Chain Logo527.5 MATIC

MATIC Value

$564.95 (@ $1.07/MATIC)

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Make Trade541830172024-03-02 15:55:4721 secs ago1709394947IN
UPVSDOWN: Game V5
10 MATIC0.0261297388.82587977
Make Trade541830162024-03-02 15:55:4523 secs ago1709394945IN
UPVSDOWN: Game V5
10 MATIC0.0183412667.60163017
Make Trade541830162024-03-02 15:55:4523 secs ago1709394945IN
UPVSDOWN: Game V5
10 MATIC0.0234314986.38593017
Make Trade541830162024-03-02 15:55:4523 secs ago1709394945IN
UPVSDOWN: Game V5
10 MATIC0.0254119786.38593017
Make Trade541830162024-03-02 15:55:4523 secs ago1709394945IN
UPVSDOWN: Game V5
10 MATIC0.025409986.38593017
Make Trade541830162024-03-02 15:55:4523 secs ago1709394945IN
UPVSDOWN: Game V5
10 MATIC0.0234335686.38593017
Make Trade541830162024-03-02 15:55:4523 secs ago1709394945IN
UPVSDOWN: Game V5
10 MATIC0.023434686.38593017
Make Trade541830152024-03-02 15:55:4325 secs ago1709394943IN
UPVSDOWN: Game V5
5 MATIC0.0225069682.97374818
Make Trade541830152024-03-02 15:55:4325 secs ago1709394943IN
UPVSDOWN: Game V5
5 MATIC0.0225099482.97374818
Make Trade541830152024-03-02 15:55:4325 secs ago1709394943IN
UPVSDOWN: Game V5
10 MATIC0.025021485.06514818
Make Trade541830152024-03-02 15:55:4325 secs ago1709394943IN
UPVSDOWN: Game V5
25 MATIC0.025021485.06514818
Make Trade541830132024-03-02 15:55:3929 secs ago1709394939IN
UPVSDOWN: Game V5
50 MATIC0.0214836567.73375032
Make Trade541830132024-03-02 15:55:3929 secs ago1709394939IN
UPVSDOWN: Game V5
5 MATIC0.0232556285.73375032
Make Trade541830132024-03-02 15:55:3929 secs ago1709394939IN
UPVSDOWN: Game V5
5 MATIC0.0232566585.73375032
Make Trade541830122024-03-02 15:55:3731 secs ago1709394937IN
UPVSDOWN: Game V5
25 MATIC0.023485886.586154
Make Trade541830112024-03-02 15:55:3533 secs ago1709394935IN
UPVSDOWN: Game V5
10 MATIC0.0236196287.06412357
Make Trade541830112024-03-02 15:55:3533 secs ago1709394935IN
UPVSDOWN: Game V5
10 MATIC0.0236185887.06412357
Make Trade541830112024-03-02 15:55:3533 secs ago1709394935IN
UPVSDOWN: Game V5
10 MATIC0.0256114787.06412357
Make Trade541830102024-03-02 15:55:3335 secs ago1709394933IN
UPVSDOWN: Game V5
5 MATIC0.0206231770.11823913
Make Trade541830102024-03-02 15:55:3335 secs ago1709394933IN
UPVSDOWN: Game V5
5 MATIC0.027817370.11823913
Make Trade541830102024-03-02 15:55:3335 secs ago1709394933IN
UPVSDOWN: Game V5
10 MATIC0.0238350387.86590651
Make Trade541830102024-03-02 15:55:3335 secs ago1709394933IN
UPVSDOWN: Game V5
25 MATIC0.0238371487.86590651
Make Trade541830102024-03-02 15:55:3335 secs ago1709394933IN
UPVSDOWN: Game V5
10 MATIC0.0348623787.86590651
Trigger541830082024-03-02 15:55:2939 secs ago1709394929IN
UPVSDOWN: Game V5
0 MATIC0.70195812340.11823913
Trigger541830002024-03-02 15:55:1157 secs ago1709394911IN
UPVSDOWN: Game V5
0 MATIC0.02057148338.39696103
View all transactions

Latest 25 internal transactions (View All)

Parent Txn Hash Block From To Value
541830082024-03-02 15:55:2939 secs ago1709394929
UPVSDOWN: Game V5
7 wei
541830082024-03-02 15:55:2939 secs ago1709394929
UPVSDOWN: Game V5
2.65 MATIC
541830082024-03-02 15:55:2939 secs ago1709394929
UPVSDOWN: Game V5
23.85 MATIC
541830082024-03-02 15:55:2939 secs ago1709394929
UPVSDOWN: Game V5
20.84090909 MATIC
541830082024-03-02 15:55:2939 secs ago1709394929
UPVSDOWN: Game V5
20.84090909 MATIC
541830082024-03-02 15:55:2939 secs ago1709394929
UPVSDOWN: Game V5
10.42045454 MATIC
541830082024-03-02 15:55:2939 secs ago1709394929
UPVSDOWN: Game V5
20.84090909 MATIC
541830082024-03-02 15:55:2939 secs ago1709394929
UPVSDOWN: Game V5
10.42045454 MATIC
541830082024-03-02 15:55:2939 secs ago1709394929
UPVSDOWN: Game V5
20.84090909 MATIC
541830082024-03-02 15:55:2939 secs ago1709394929
UPVSDOWN: Game V5
20.84090909 MATIC
541830082024-03-02 15:55:2939 secs ago1709394929
UPVSDOWN: Game V5
52.10227272 MATIC
541830082024-03-02 15:55:2939 secs ago1709394929
UPVSDOWN: Game V5
10.42045454 MATIC
541830082024-03-02 15:55:2939 secs ago1709394929
UPVSDOWN: Game V5
10.42045454 MATIC
541830082024-03-02 15:55:2939 secs ago1709394929
UPVSDOWN: Game V5
20.84090909 MATIC
541830082024-03-02 15:55:2939 secs ago1709394929
UPVSDOWN: Game V5
20.84090909 MATIC
541830082024-03-02 15:55:2939 secs ago1709394929
UPVSDOWN: Game V5
20.84090909 MATIC
541830082024-03-02 15:55:2939 secs ago1709394929
UPVSDOWN: Game V5
10.42045454 MATIC
541830082024-03-02 15:55:2939 secs ago1709394929
UPVSDOWN: Game V5
20.84090909 MATIC
541830082024-03-02 15:55:2939 secs ago1709394929
UPVSDOWN: Game V5
10.42045454 MATIC
541830082024-03-02 15:55:2939 secs ago1709394929
UPVSDOWN: Game V5
20.84090909 MATIC
541830082024-03-02 15:55:2939 secs ago1709394929
UPVSDOWN: Game V5
20.84090909 MATIC
541830082024-03-02 15:55:2939 secs ago1709394929
UPVSDOWN: Game V5
52.10227272 MATIC
541830082024-03-02 15:55:2939 secs ago1709394929
UPVSDOWN: Game V5
20.84090909 MATIC
541830082024-03-02 15:55:2939 secs ago1709394929
UPVSDOWN: Game V5
20.84090909 MATIC
541830082024-03-02 15:55:2939 secs ago1709394929
UPVSDOWN: Game V5
10.42045454 MATIC
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
UpVsDownGameV5

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at polygonscan.com on 2024-01-04
*/

// File: @openzeppelin/contracts/utils/Context.sol

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)

pragma solidity ^0.8.20;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }

    function _contextSuffixLength() internal view virtual returns (uint256) {
        return 0;
    }
}

// File: @openzeppelin/contracts/access/Ownable.sol

// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)

pragma solidity ^0.8.20;

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * The initial owner is set to the address provided by the deployer. This can
 * later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

    /**
     * @dev The caller account is not authorized to perform an operation.
     */
    error OwnableUnauthorizedAccount(address account);

    /**
     * @dev The owner is not a valid owner account. (eg. `address(0)`)
     */
    error OwnableInvalidOwner(address owner);

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

    /**
     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.
     */
    constructor(address initialOwner) {
        if (initialOwner == address(0)) {
            revert OwnableInvalidOwner(address(0));
        }
        _transferOwnership(initialOwner);
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        if (owner() != _msgSender()) {
            revert OwnableUnauthorizedAccount(_msgSender());
        }
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby disabling any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        if (newOwner == address(0)) {
            revert OwnableInvalidOwner(address(0));
        }
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

// File: contracts/UpVsDownGameV5.sol

pragma solidity >=0.4.22 <0.9.0;

contract UpVsDownGameV5 is Ownable {

  struct BetGroup {
    uint256[] bets;
    address[] addresses;
    string[] avatars;
    string[] countries;
    string[] whiteLabelIds;
    uint256 total;
    uint256 distributedCount;
    uint256 totalDistributed;
  }

  struct Round {
    bool created;
    int32 startPrice;
    int32 endPrice;
    uint256 minBetAmount;
    uint256 maxBetAmount;
    uint256 poolBetsLimit;
    BetGroup upBetGroup;
    BetGroup downBetGroup;
    int64 roundStartTime;
    uint256 tradesStartTimeMS;
    uint256 tradesEndTimeMS;
  }

  struct Distribution {
    uint256 fee;
    uint256 feeJackpot;
    uint256 totalMinusFee;
    uint256 totalMinusJackpotFee;
    uint256 totalFees;
    uint256 pending;
  }

  address public gameController;
  mapping(bytes => Round) public pools;
  uint8 public feePercentage = 9;
  uint8 public feeJackpotPercentage = 1;
  address public feeAddress = msg.sender; //default fee address
  address public feeJackpotAddress = msg.sender; //default fee jackpot address
  bool public isRunning;
  bytes public notRunningReason;
  mapping(address => bool) private allowedContracts; //allowed contracts to place trades
  address[] private allowedContractsList;

  // Errors

  error PendingDistributions();

  // Events

  event RoundStarted(bytes poolId, int64 timestamp, int32 price, uint256 minTradeAmount, uint256 maxTradeAmount, uint256 poolTradesLimit, bytes indexed indexedPoolId);
  event RoundEnded(bytes poolId, int64 timestamp, int32 startPrice, int32 endPrice, bytes indexed indexedPoolId);
  event TradePlaced(bytes poolId, address sender, uint256 amount, string prediction, uint256 newTotal, bytes indexed indexedPoolId, address indexed indexedSender, string avatarUrl, string countryCode, int64 roundStartTime, string whiteLabelId);
  event TradeReturned(bytes poolId, address sender, uint256 amount, string whiteLabelId);
  event GameStopped(bytes reason);
  event GameStarted();
  event RoundDistributed(bytes poolId, uint totalWinners, uint from, uint to, int64 timestamp);
  event TradeWinningsSent(bytes poolId, address sender, uint256 tradeAmount, uint256 winningsAmount, address indexed indexedSender, string whiteLabelId, uint8 feePercentage, uint8 feeJackpotPercentage);


  // Modifiers

  modifier onlyGameController () {
    require(msg.sender == gameController, 'Only game controller can do this');
    _;
  }

  modifier onlyOpenPool (bytes calldata poolId) {
    require(isPoolOpen(poolId), 'This pool has a round in progress');
    _;
  }

  modifier onlyGameRunning () {
    require(isRunning, 'The game is not running');
    _;
  }

  modifier onlyPoolExists (bytes calldata poolId) {
    require(pools[poolId].created, 'Pool does not exist');
    _;
  }

  constructor(address newGameController) Ownable(newGameController) {
    gameController = newGameController;
  }

  // Methods

  function changeGameControllerAddress(address newGameControllerAddress) public onlyOwner {
    require(newGameControllerAddress != address(0x0) , "Address cannot be zero address");

    gameController = newGameControllerAddress;
  }

  function changeGameFeePercentage(uint8 newFeePercentage) public onlyOwner {
    require (newFeePercentage <=100 , "Wrong fee percentage value");

    feePercentage = newFeePercentage;
  }

  function changeGameFeeJackpotPercentage(uint8 newFeeJackpotPercentage) public onlyOwner {
    require (newFeeJackpotPercentage <=100 , "Wrong jackpot fee percentage value");

    feeJackpotPercentage = newFeeJackpotPercentage;
  }

  function changeGameFeeAddress(address newFeeAddress) public onlyOwner {
    require(newFeeAddress != address(0x0) , "Address cannot be zero address");

    feeAddress = newFeeAddress;
  }

  function changeGameFeeJackpotAddress(address newFeeJackpotAddress) public onlyOwner {
    require(newFeeJackpotAddress != address(0x0) , "Address cannot be zero address");

    feeJackpotAddress = newFeeJackpotAddress;
  }

  function stopGame(bytes calldata reason) public onlyOwner {
    isRunning = false;
    notRunningReason = reason;
    emit GameStopped(reason);
  }

  function startGame() public onlyOwner {
    isRunning = true;
    notRunningReason = '';
    emit GameStarted();
  }

  function createPool(bytes calldata poolId, uint256 minBetAmount , uint256 maxBetAmount, uint256 poolBetsLimit) public onlyGameController {
    pools[poolId].created = true;
    pools[poolId].minBetAmount = minBetAmount;
    pools[poolId].maxBetAmount = maxBetAmount;
    pools[poolId].poolBetsLimit = poolBetsLimit;
  }

  function trigger(
    bytes calldata poolId,
    int64 timeMS,
    uint256 tradesStartTimeMS,
    uint256 tradesEndTimeMS,
    int32 price,
    uint32 batchSize
  ) public onlyGameController onlyPoolExists(poolId) {
    Round storage currentRound = pools[poolId];

    if(isPoolOpen(poolId)) {
      require(isRunning, 'The game is not running, rounds can only be ended at this point');
      currentRound.startPrice = price;
      currentRound.roundStartTime = timeMS;
      currentRound.tradesStartTimeMS = tradesStartTimeMS;
      currentRound.tradesEndTimeMS = tradesEndTimeMS;
      
      emit RoundStarted(poolId, timeMS, currentRound.startPrice, currentRound.minBetAmount, currentRound.maxBetAmount, currentRound.poolBetsLimit, poolId);
    } else if (currentRound.endPrice == 0) {
      currentRound.endPrice = price;

      emit RoundEnded(poolId, timeMS, currentRound.startPrice, currentRound.endPrice, poolId);

      distribute(poolId, batchSize, timeMS);
    } else {
      revert PendingDistributions();
    }
  }

  function getContractBalance() public view returns (uint256) {
    return address(this).balance;
  }

  function returnBets (
    bytes calldata poolId,
    BetGroup storage group,
    uint32 batchSize
  ) private {
    uint256 pending = group.bets.length - group.distributedCount;
    uint256 limit = pending > batchSize ? batchSize : pending;
    uint256 to = group.distributedCount + limit;

    for (uint i = group.distributedCount; i < to; i ++) {
      sendEther(group.addresses[i], group.bets[i]);
      emit TradeReturned(poolId, group.addresses[i], group.bets[i], group.whiteLabelIds[i]);
    }

    group.distributedCount = to;
  }

  function distribute (
    bytes calldata poolId,
    uint32 batchSize,
    int64 timeMS
  ) public onlyGameController onlyPoolExists(poolId) {
    Round storage round = pools[poolId];

    if (round.upBetGroup.bets.length == 0 || round.downBetGroup.bets.length == 0 || (round.startPrice == round.endPrice)) {
      if (round.startPrice == round.endPrice){ //In case of TIE return the investments to both sides
        BetGroup storage returnGroupUp = round.upBetGroup;
        BetGroup storage returnGroupDown = round.downBetGroup;

        uint fromReturnUp = returnGroupUp.distributedCount;
        uint fromReturnDown = returnGroupDown.distributedCount;

        returnBets(poolId, returnGroupUp, batchSize);
        returnBets(poolId, returnGroupDown, batchSize);

        emit RoundDistributed(poolId, returnGroupUp.bets.length, fromReturnUp, returnGroupUp.distributedCount,timeMS);
        emit RoundDistributed(poolId, returnGroupDown.bets.length, fromReturnDown, returnGroupDown.distributedCount,timeMS);

        if (returnGroupUp.distributedCount == returnGroupUp.bets.length && returnGroupDown.distributedCount == returnGroupDown.bets.length) {
          clearPool(poolId);
        }

      }else{
        BetGroup storage returnGroup = round.downBetGroup.bets.length == 0 ? round.upBetGroup : round.downBetGroup;

        uint fromReturn = returnGroup.distributedCount;
        returnBets(poolId, returnGroup, batchSize);
        emit RoundDistributed(poolId, returnGroup.bets.length, fromReturn, returnGroup.distributedCount,timeMS);

        if (returnGroup.distributedCount == returnGroup.bets.length) {
          clearPool(poolId);
        }
      }

      
      return;
    }


    BetGroup storage winners = round.downBetGroup;
    BetGroup storage losers = round.upBetGroup;

    if (round.startPrice < round.endPrice) {
      winners = round.upBetGroup;
      losers = round.downBetGroup;
    }

    Distribution memory dist = calculateDistribution(winners, losers);
    uint256 limit = dist.pending > batchSize ? batchSize : dist.pending;
    uint256 to = winners.distributedCount + limit;

    for (uint i = winners.distributedCount; i < to; i++) {
      uint256 winnings = (winners.bets[i] * dist.totalFees * 100 / winners.total  / 100);

      sendEther(winners.addresses[i], winnings + winners.bets[i]);
      emit TradeWinningsSent(poolId, winners.addresses[i], winners.bets[i], winnings, winners.addresses[i], winners.whiteLabelIds[i],feePercentage,feeJackpotPercentage);
      winners.totalDistributed = winners.totalDistributed + winnings;
    }

    emit RoundDistributed(poolId, winners.bets.length, winners.distributedCount, to, timeMS);

    winners.distributedCount = to;
    if (winners.distributedCount == winners.bets.length) {
      sendEther(feeAddress, (dist.fee + dist.totalMinusFee)*feePercentage / 100);
      sendEther(feeJackpotAddress, (dist.feeJackpot + dist.totalMinusJackpotFee)*feeJackpotPercentage / 100);
      //Send leftovers to fee address
      sendEther(feeAddress,getContractBalance());

      clearPool(poolId);
    }
  }

   function calculateDistribution (
    BetGroup storage winners,
    BetGroup storage losers
  ) private view returns (Distribution memory) {
    uint256 fee = feePercentage * losers.total / 100;
    uint256 jackpotFee = feeJackpotPercentage * losers.total / 100;
    uint256 totalFee = fee + jackpotFee;
    uint256 pending = winners.bets.length - winners.distributedCount;
    uint256 totalFees = losers.total - totalFee;
    uint256 totalMinusFee = losers.total - fee;
    uint256 totalMinusJackpotFee = losers.total - jackpotFee;

    return Distribution({
      fee: fee,
      feeJackpot: jackpotFee,
      totalMinusFee: totalMinusFee,
      totalMinusJackpotFee: totalMinusJackpotFee,
      totalFees: totalFees,
      pending: pending
    });
  }

  function clearPool (
    bytes calldata poolId
  ) private {
    delete pools[poolId].upBetGroup;
    delete pools[poolId].downBetGroup;
    delete pools[poolId].startPrice;
    delete pools[poolId].endPrice;
  }

  function hasPendingDistributions(
    bytes calldata poolId
  ) public view returns (bool) {
    return (pools[poolId].upBetGroup.bets.length + pools[poolId].downBetGroup.bets.length) > 0;
  }

  function isPoolOpen(
    bytes calldata poolId
  ) public view returns (bool) {
    return pools[poolId].startPrice == 0;
  }

  function addBet (
    BetGroup storage betGroup,
    uint256 amount,
    string calldata avatar,
    string calldata countryCode,
    string calldata whiteLabelId
  ) private returns (uint256) {
    betGroup.bets.push(amount);
    betGroup.addresses.push(msg.sender);
    betGroup.avatars.push(avatar);
    betGroup.countries.push(countryCode);
    betGroup.whiteLabelIds.push(whiteLabelId);
    betGroup.total += amount;
    return betGroup.total;
  }

  struct makeTradeStruct{
    bytes poolId;
    string avatarUrl;
    string countryCode;
    bool upOrDown;
    string whiteLabelId;
  }

  struct userDataStruct{
      string avatar;
      string countryCode;
      string whiteLabelId;
      int64 roundStartTime;
    }

  function makeTrade(
    makeTradeStruct calldata userTrade
  ) public payable onlyOpenPool(userTrade.poolId) onlyGameRunning onlyPoolExists(userTrade.poolId) {
    require(isEOA(msg.sender) || allowedContracts[msg.sender], "Caller must be EOA or allowed contract");
    require(msg.value > 0, "Needs to send Matic to trade");
    require(msg.value >= pools[userTrade.poolId].minBetAmount, "Trade amount should be higher than the minimum");
    require(msg.value <= pools[userTrade.poolId].maxBetAmount, "Trade amount should be lower than the maximum");
    
    //Prevent making trade while end round transaction being confirmed on blockchain
    require(block.timestamp <= pools[userTrade.poolId].tradesEndTimeMS , "Round is closing");

    //Prevent making trade while round starts
    require(block.timestamp >= pools[userTrade.poolId].tradesStartTimeMS , "Round not started yet");

    uint256 newTotal;

    if (userTrade.upOrDown) {
      require(pools[userTrade.poolId].upBetGroup.bets.length <= pools[userTrade.poolId].poolBetsLimit-1,"Pool is full, wait for next round");
      newTotal = addBet(pools[userTrade.poolId].upBetGroup, msg.value, userTrade.avatarUrl, userTrade.countryCode, userTrade.whiteLabelId);
    } else {
      require(pools[userTrade.poolId].downBetGroup.bets.length <= pools[userTrade.poolId].poolBetsLimit-1,"Pool is full, wait for next round");
      newTotal = addBet(pools[userTrade.poolId].downBetGroup, msg.value, userTrade.avatarUrl, userTrade.countryCode, userTrade.whiteLabelId);
    }

    userDataStruct memory userTradeData;
    userTradeData.avatar = userTrade.avatarUrl;
    userTradeData.countryCode = userTrade.countryCode;
    userTradeData.whiteLabelId = userTrade.whiteLabelId;
    userTradeData.roundStartTime = pools[userTrade.poolId].roundStartTime;
    
    emit TradePlaced(userTrade.poolId, msg.sender, msg.value, (userTrade.upOrDown) ? "UP":"DOWN", newTotal, 
    userTrade.poolId, msg.sender, userTradeData.avatar, userTradeData.countryCode, 
    userTradeData.roundStartTime, userTradeData.whiteLabelId);
  }

  function allowContract(address _contract) public onlyOwner {
      if (!allowedContracts[_contract]) {
          allowedContracts[_contract] = true;
          allowedContractsList.push(_contract);
      }
  }

  function removeContract(address _contract) public onlyOwner {
      if (allowedContracts[_contract]) {
          allowedContracts[_contract] = false;
          // Remove the contract from the allowedContractsList
          for (uint i = 0; i < allowedContractsList.length; i++) {
              if (allowedContractsList[i] == _contract) {
                  allowedContractsList[i] = allowedContractsList[allowedContractsList.length - 1];
                  allowedContractsList.pop();
                  break;
              }
          }
      }
  }

  function getAllowedContracts() public view returns (address[] memory) {
      return allowedContractsList;
  }

  function isEOA(address _addr) private view returns (bool) {
      // Checks if the caller is an EOA
      return _addr == tx.origin;
  }

  function sendEther (
    address to, 
    uint256 amount
  ) private {
    (bool sent, bytes memory data) = payable(to).call{gas: 0, value: amount}("");
    require(sent, "Couldn't send ether");
  } 
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"newGameController","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[],"name":"PendingDistributions","type":"error"},{"anonymous":false,"inputs":[],"name":"GameStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"reason","type":"bytes"}],"name":"GameStopped","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"poolId","type":"bytes"},{"indexed":false,"internalType":"uint256","name":"totalWinners","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"from","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"to","type":"uint256"},{"indexed":false,"internalType":"int64","name":"timestamp","type":"int64"}],"name":"RoundDistributed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"poolId","type":"bytes"},{"indexed":false,"internalType":"int64","name":"timestamp","type":"int64"},{"indexed":false,"internalType":"int32","name":"startPrice","type":"int32"},{"indexed":false,"internalType":"int32","name":"endPrice","type":"int32"},{"indexed":true,"internalType":"bytes","name":"indexedPoolId","type":"bytes"}],"name":"RoundEnded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"poolId","type":"bytes"},{"indexed":false,"internalType":"int64","name":"timestamp","type":"int64"},{"indexed":false,"internalType":"int32","name":"price","type":"int32"},{"indexed":false,"internalType":"uint256","name":"minTradeAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxTradeAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"poolTradesLimit","type":"uint256"},{"indexed":true,"internalType":"bytes","name":"indexedPoolId","type":"bytes"}],"name":"RoundStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"poolId","type":"bytes"},{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"string","name":"prediction","type":"string"},{"indexed":false,"internalType":"uint256","name":"newTotal","type":"uint256"},{"indexed":true,"internalType":"bytes","name":"indexedPoolId","type":"bytes"},{"indexed":true,"internalType":"address","name":"indexedSender","type":"address"},{"indexed":false,"internalType":"string","name":"avatarUrl","type":"string"},{"indexed":false,"internalType":"string","name":"countryCode","type":"string"},{"indexed":false,"internalType":"int64","name":"roundStartTime","type":"int64"},{"indexed":false,"internalType":"string","name":"whiteLabelId","type":"string"}],"name":"TradePlaced","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"poolId","type":"bytes"},{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"string","name":"whiteLabelId","type":"string"}],"name":"TradeReturned","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"poolId","type":"bytes"},{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"tradeAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"winningsAmount","type":"uint256"},{"indexed":true,"internalType":"address","name":"indexedSender","type":"address"},{"indexed":false,"internalType":"string","name":"whiteLabelId","type":"string"},{"indexed":false,"internalType":"uint8","name":"feePercentage","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"feeJackpotPercentage","type":"uint8"}],"name":"TradeWinningsSent","type":"event"},{"inputs":[{"internalType":"address","name":"_contract","type":"address"}],"name":"allowContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newGameControllerAddress","type":"address"}],"name":"changeGameControllerAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newFeeAddress","type":"address"}],"name":"changeGameFeeAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newFeeJackpotAddress","type":"address"}],"name":"changeGameFeeJackpotAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"newFeeJackpotPercentage","type":"uint8"}],"name":"changeGameFeeJackpotPercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"newFeePercentage","type":"uint8"}],"name":"changeGameFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"poolId","type":"bytes"},{"internalType":"uint256","name":"minBetAmount","type":"uint256"},{"internalType":"uint256","name":"maxBetAmount","type":"uint256"},{"internalType":"uint256","name":"poolBetsLimit","type":"uint256"}],"name":"createPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"poolId","type":"bytes"},{"internalType":"uint32","name":"batchSize","type":"uint32"},{"internalType":"int64","name":"timeMS","type":"int64"}],"name":"distribute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeJackpotAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeJackpotPercentage","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feePercentage","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"gameController","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAllowedContracts","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getContractBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"poolId","type":"bytes"}],"name":"hasPendingDistributions","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"poolId","type":"bytes"}],"name":"isPoolOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isRunning","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"bytes","name":"poolId","type":"bytes"},{"internalType":"string","name":"avatarUrl","type":"string"},{"internalType":"string","name":"countryCode","type":"string"},{"internalType":"bool","name":"upOrDown","type":"bool"},{"internalType":"string","name":"whiteLabelId","type":"string"}],"internalType":"struct UpVsDownGameV5.makeTradeStruct","name":"userTrade","type":"tuple"}],"name":"makeTrade","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"notRunningReason","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"","type":"bytes"}],"name":"pools","outputs":[{"internalType":"bool","name":"created","type":"bool"},{"internalType":"int32","name":"startPrice","type":"int32"},{"internalType":"int32","name":"endPrice","type":"int32"},{"internalType":"uint256","name":"minBetAmount","type":"uint256"},{"internalType":"uint256","name":"maxBetAmount","type":"uint256"},{"internalType":"uint256","name":"poolBetsLimit","type":"uint256"},{"components":[{"internalType":"uint256[]","name":"bets","type":"uint256[]"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"string[]","name":"avatars","type":"string[]"},{"internalType":"string[]","name":"countries","type":"string[]"},{"internalType":"string[]","name":"whiteLabelIds","type":"string[]"},{"internalType":"uint256","name":"total","type":"uint256"},{"internalType":"uint256","name":"distributedCount","type":"uint256"},{"internalType":"uint256","name":"totalDistributed","type":"uint256"}],"internalType":"struct UpVsDownGameV5.BetGroup","name":"upBetGroup","type":"tuple"},{"components":[{"internalType":"uint256[]","name":"bets","type":"uint256[]"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"string[]","name":"avatars","type":"string[]"},{"internalType":"string[]","name":"countries","type":"string[]"},{"internalType":"string[]","name":"whiteLabelIds","type":"string[]"},{"internalType":"uint256","name":"total","type":"uint256"},{"internalType":"uint256","name":"distributedCount","type":"uint256"},{"internalType":"uint256","name":"totalDistributed","type":"uint256"}],"internalType":"struct UpVsDownGameV5.BetGroup","name":"downBetGroup","type":"tuple"},{"internalType":"int64","name":"roundStartTime","type":"int64"},{"internalType":"uint256","name":"tradesStartTimeMS","type":"uint256"},{"internalType":"uint256","name":"tradesEndTimeMS","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_contract","type":"address"}],"name":"removeContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startGame","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"reason","type":"bytes"}],"name":"stopGame","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"poolId","type":"bytes"},{"internalType":"int64","name":"timeMS","type":"int64"},{"internalType":"uint256","name":"tradesStartTimeMS","type":"uint256"},{"internalType":"uint256","name":"tradesEndTimeMS","type":"uint256"},{"internalType":"int32","name":"price","type":"int32"},{"internalType":"uint32","name":"batchSize","type":"uint32"}],"name":"trigger","outputs":[],"stateMutability":"nonpayable","type":"function"}]

6080604052600960035f6101000a81548160ff021916908360ff1602179055506001600360016101000a81548160ff021916908360ff16021790555033600360026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503360045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015620000c8575f80fd5b50604051620058a5380380620058a58339818101604052810190620000ee9190620002e1565b805f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000162575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040162000159919062000322565b60405180910390fd5b6200017381620001bb60201b60201c565b508060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506200033d565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620002ab8262000280565b9050919050565b620002bd816200029f565b8114620002c8575f80fd5b50565b5f81519050620002db81620002b2565b92915050565b5f60208284031215620002f957620002f86200027c565b5b5f6200030884828501620002cb565b91505092915050565b6200031c816200029f565b82525050565b5f602082019050620003375f83018462000311565b92915050565b61555a806200034b5f395ff3fe6080604052600436106101b6575f3560e01c80637b064240116100eb578063d4c770cf11610089578063eab79b7d11610063578063eab79b7d146105a2578063f2fde38b146105ca578063f68256a8146105f2578063f6bd02fa1461061c576101b6565b8063d4c770cf1461053c578063d65ab5f214610564578063e47099691461057a576101b6565b8063900b7b3f116100c5578063900b7b3f1461049a578063a001ecdd146104c2578063a7c3324d146104ec578063c375c2ef14610514576101b6565b80637b0642401461042c57806381196ae2146104545780638da5cb5b14610470576101b6565b80633fafac9211610158578063595dc89711610132578063595dc8971461039a5780636518a0a9146103c25780636f9fb98a146103ec578063715018a614610416576101b6565b80633fafac92146103005780634127535814610346578063538741c514610370576101b6565b80631d0d625b116101945780631d0d625b146102485780632014e5d11461027057806330efabd41461029a5780633b9fe1ee146102d6576101b6565b80630c2f915e146101ba578063159dc634146101f65780631c2db19214610220575b5f80fd5b3480156101c5575f80fd5b506101e060048036038101906101db919061367f565b610644565b6040516101ed91906136e4565b60405180910390f35b348015610201575f80fd5b5061020a6106ab565b6040516102179190613718565b60405180910390f35b34801561022b575f80fd5b506102466004803603810190610241919061378b565b6106be565b005b348015610253575f80fd5b5061026e6004803603810190610269919061378b565b610777565b005b34801561027b575f80fd5b50610284610830565b60405161029191906136e4565b60405180910390f35b3480156102a5575f80fd5b506102c060048036038101906102bb919061367f565b610843565b6040516102cd91906136e4565b60405180910390f35b3480156102e1575f80fd5b506102ea610881565b6040516102f791906137c5565b60405180910390f35b34801561030b575f80fd5b5061032660048036038101906103219190613916565b6108a6565b60405161033d9b9a99989796959493929190613d17565b60405180910390f35b348015610351575f80fd5b5061035a61104e565b60405161036791906137c5565b60405180910390f35b34801561037b575f80fd5b50610384611074565b6040516103919190613e3a565b60405180910390f35b3480156103a5575f80fd5b506103c060048036038101906103bb919061378b565b6110ff565b005b3480156103cd575f80fd5b506103d66111b9565b6040516103e39190613eac565b60405180910390f35b3480156103f7575f80fd5b50610400611245565b60405161040d9190613ecc565b60405180910390f35b348015610421575f80fd5b5061042a61124c565b005b348015610437575f80fd5b50610452600480360381019061044d9190613f9c565b61125f565b005b61046e60048036038101906104699190614068565b6115c5565b005b34801561047b575f80fd5b50610484611e82565b60405161049191906137c5565b60405180910390f35b3480156104a5575f80fd5b506104c060048036038101906104bb91906140d9565b611ea9565b005b3480156104cd575f80fd5b506104d6611f16565b6040516104e39190613718565b60405180910390f35b3480156104f7575f80fd5b50610512600480360381019061050d9190614104565b611f28565b005b34801561051f575f80fd5b5061053a6004803603810190610535919061378b565b6126b0565b005b348015610547575f80fd5b50610562600480360381019061055d91906140d9565b6128d9565b005b34801561056f575f80fd5b50610578612945565b005b348015610585575f80fd5b506105a0600480360381019061059b9190614175565b6129b4565b005b3480156105ad575f80fd5b506105c860048036038101906105c3919061367f565b612afc565b005b3480156105d5575f80fd5b506105f060048036038101906105eb919061378b565b612b6d565b005b3480156105fd575f80fd5b50610606612bf1565b60405161061391906137c5565b60405180910390f35b348015610627575f80fd5b50610642600480360381019061063d919061378b565b612c16565b005b5f8060028484604051610658929190614227565b9081526020016040518091039020600c015f018054905060028585604051610681929190614227565b90815260200160405180910390206004015f01805490506106a2919061426c565b11905092915050565b600360019054906101000a900460ff1681565b6106c6612d25565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610734576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072b906142f9565b60405180910390fd5b8060045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61077f612d25565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036107ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e4906142f9565b60405180910390fd5b8060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600460149054906101000a900460ff1681565b5f8060028484604051610857929190614227565b90815260200160405180910390205f0160019054906101000a900460030b60030b14905092915050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6002818051602081018201805184825260208301602085012081835280955050505050505f91509050805f015f9054906101000a900460ff1690805f0160019054906101000a900460030b90805f0160059054906101000a900460030b9080600101549080600201549080600301549080600401604051806101000160405290815f820180548060200260200160405190810160405280929190818152602001828054801561097257602002820191905f5260205f20905b81548152602001906001019080831161095e575b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156109fd57602002820191905f5260205f20905b815f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116109b4575b5050505050815260200160028201805480602002602001604051908101604052809291908181526020015f905b82821015610ad2578382905f5260205f20018054610a4790614344565b80601f0160208091040260200160405190810160405280929190818152602001828054610a7390614344565b8015610abe5780601f10610a9557610100808354040283529160200191610abe565b820191905f5260205f20905b815481529060010190602001808311610aa157829003601f168201915b505050505081526020019060010190610a2a565b50505050815260200160038201805480602002602001604051908101604052809291908181526020015f905b82821015610ba6578382905f5260205f20018054610b1b90614344565b80601f0160208091040260200160405190810160405280929190818152602001828054610b4790614344565b8015610b925780601f10610b6957610100808354040283529160200191610b92565b820191905f5260205f20905b815481529060010190602001808311610b7557829003601f168201915b505050505081526020019060010190610afe565b50505050815260200160048201805480602002602001604051908101604052809291908181526020015f905b82821015610c7a578382905f5260205f20018054610bef90614344565b80601f0160208091040260200160405190810160405280929190818152602001828054610c1b90614344565b8015610c665780601f10610c3d57610100808354040283529160200191610c66565b820191905f5260205f20905b815481529060010190602001808311610c4957829003601f168201915b505050505081526020019060010190610bd2565b50505050815260200160058201548152602001600682015481526020016007820154815250509080600c01604051806101000160405290815f8201805480602002602001604051908101604052809291908181526020018280548015610cfd57602002820191905f5260205f20905b815481526020019060010190808311610ce9575b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015610d8857602002820191905f5260205f20905b815f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610d3f575b5050505050815260200160028201805480602002602001604051908101604052809291908181526020015f905b82821015610e5d578382905f5260205f20018054610dd290614344565b80601f0160208091040260200160405190810160405280929190818152602001828054610dfe90614344565b8015610e495780601f10610e2057610100808354040283529160200191610e49565b820191905f5260205f20905b815481529060010190602001808311610e2c57829003601f168201915b505050505081526020019060010190610db5565b50505050815260200160038201805480602002602001604051908101604052809291908181526020015f905b82821015610f31578382905f5260205f20018054610ea690614344565b80601f0160208091040260200160405190810160405280929190818152602001828054610ed290614344565b8015610f1d5780601f10610ef457610100808354040283529160200191610f1d565b820191905f5260205f20905b815481529060010190602001808311610f0057829003601f168201915b505050505081526020019060010190610e89565b50505050815260200160048201805480602002602001604051908101604052809291908181526020015f905b82821015611005578382905f5260205f20018054610f7a90614344565b80601f0160208091040260200160405190810160405280929190818152602001828054610fa690614344565b8015610ff15780601f10610fc857610100808354040283529160200191610ff1565b820191905f5260205f20905b815481529060010190602001808311610fd457829003601f168201915b505050505081526020019060010190610f5d565b505050508152602001600582015481526020016006820154815260200160078201548152505090806014015f9054906101000a900460070b90806015015490806016015490508b565b600360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060078054806020026020016040519081016040528092919081815260200182805480156110f557602002820191905f5260205f20905b815f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116110ac575b5050505050905090565b611107612d25565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611175576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116c906142f9565b60405180910390fd5b80600360026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600580546111c690614344565b80601f01602080910402602001604051908101604052809291908181526020018280546111f290614344565b801561123d5780601f106112145761010080835404028352916020019161123d565b820191905f5260205f20905b81548152906001019060200180831161122057829003601f168201915b505050505081565b5f47905090565b611254612d25565b61125d5f612dac565b565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e5906143be565b60405180910390fd5b868660028282604051611302929190614227565b90815260200160405180910390205f015f9054906101000a900460ff1661135e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135590614426565b60405180910390fd5b5f60028a8a604051611371929190614227565b9081526020016040518091039020905061138b8a8a610843565b156114bf57600460149054906101000a900460ff166113df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d6906144b4565b60405180910390fd5b84815f0160016101000a81548163ffffffff021916908360030b63ffffffff16021790555087816014015f6101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055508681601501819055508581601601819055508989604051611453929190614227565b60405180910390207f977f157300bb4d69d09b3e083fb55a17a0c02f978e5b220c08173c63de9665aa8b8b8b855f0160019054906101000a900460030b8660010154876002015488600301546040516114b297969594939291906144fe565b60405180910390a26115b9565b5f815f0160059054906101000a900460030b60030b036115865784815f0160056101000a81548163ffffffff021916908360030b63ffffffff160217905550898960405161150e929190614227565b60405180910390207fe097bf610f5827ffcdd36eb07b790e6ee02dd498f911ab45664208cfad9323b08b8b8b855f0160019054906101000a900460030b865f0160059054906101000a900460030b60405161156d959493929190614566565b60405180910390a26115818a8a868b611f28565b6115b8565b6040517fd56be5db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b50505050505050505050565b80805f01906115d491906145be565b6115de8282610843565b61161d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161490614690565b60405180910390fd5b600460149054906101000a900460ff1661166c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611663906146f8565b60405180910390fd5b82805f019061167b91906145be565b6002828260405161168d929190614227565b90815260200160405180910390205f015f9054906101000a900460ff166116e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e090614426565b60405180910390fd5b6116f233612e6d565b80611743575060065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611782576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177990614786565b60405180910390fd5b5f34116117c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117bb906147ee565b60405180910390fd5b600285805f01906117d591906145be565b6040516117e3929190614227565b908152602001604051809103902060010154341015611837576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182e9061487c565b60405180910390fd5b600285805f019061184891906145be565b604051611856929190614227565b9081526020016040518091039020600201543411156118aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a19061490a565b60405180910390fd5b600285805f01906118bb91906145be565b6040516118c9929190614227565b90815260200160405180910390206016015442111561191d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191490614972565b60405180910390fd5b600285805f019061192e91906145be565b60405161193c929190614227565b908152602001604051809103902060150154421015611990576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611987906149da565b60405180910390fd5b5f8560600160208101906119a49190614a22565b15611acd576001600287805f01906119bc91906145be565b6040516119ca929190614227565b9081526020016040518091039020600301546119e69190614a4d565b600287805f01906119f791906145be565b604051611a05929190614227565b90815260200160405180910390206004015f01805490501115611a5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5490614af0565b60405180910390fd5b611ac6600287805f0190611a7191906145be565b604051611a7f929190614227565b908152602001604051809103902060040134888060200190611aa19190614b0e565b8a8060400190611ab19190614b0e565b8c8060800190611ac19190614b0e565b612ea4565b9050611bed565b6001600287805f0190611ae091906145be565b604051611aee929190614227565b908152602001604051809103902060030154611b0a9190614a4d565b600287805f0190611b1b91906145be565b604051611b29929190614227565b9081526020016040518091039020600c015f01805490501115611b81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7890614af0565b60405180910390fd5b611bea600287805f0190611b9591906145be565b604051611ba3929190614227565b9081526020016040518091039020600c0134888060200190611bc59190614b0e565b8a8060400190611bd59190614b0e565b8c8060800190611be59190614b0e565b612ea4565b90505b611bf56134de565b868060200190611c059190614b0e565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050815f0181905250868060400190611c5e9190614b0e565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f820116905080830192505050505050508160200181905250868060800190611cb89190614b0e565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f820116905080830192505050505050508160400181905250600287805f0190611d1391906145be565b604051611d21929190614227565b90815260200160405180910390206014015f9054906101000a900460070b816060019060070b908160070b815250503373ffffffffffffffffffffffffffffffffffffffff1687805f0190611d7691906145be565b604051611d84929190614227565b60405180910390207f68f6fc9b4292a4019c38f766d951dada112bf514a9fa2245e113dd0d72f2861589805f0190611dbc91906145be565b33348d6060016020810190611dd19190614a22565b611e10576040518060400160405280600481526020017f444f574e00000000000000000000000000000000000000000000000000000000815250611e47565b6040518060400160405280600281526020017f55500000000000000000000000000000000000000000000000000000000000008152505b89895f01518a602001518b606001518c60400151604051611e719a99989796959493929190614ba8565b60405180910390a350505050505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611eb1612d25565b60648160ff161115611ef8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eef90614cc8565b60405180910390fd5b80600360016101000a81548160ff021916908360ff16021790555050565b60035f9054906101000a900460ff1681565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611fb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fae906143be565b60405180910390fd5b838360028282604051611fcb929190614227565b90815260200160405180910390205f015f9054906101000a900460ff16612027576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201e90614426565b60405180910390fd5b5f6002878760405161203a929190614227565b908152602001604051809103902090505f816004015f0180549050148061206957505f81600c015f0180549050145b806120995750805f0160059054906101000a900460030b60030b815f0160019054906101000a900460030b60030b145b1561227757805f0160059054906101000a900460030b60030b815f0160019054906101000a900460030b60030b036121d2575f8160040190505f82600c0190505f826006015490505f826006015490506120f58b8b868c613012565b6121018b8b858c613012565b7fd86802201c3bf5d79ef71027c49cdfdee99fa298848917618ba148d098f15f748b8b865f01805490508588600601548d60405161214496959493929190614ce6565b60405180910390a17fd86802201c3bf5d79ef71027c49cdfdee99fa298848917618ba148d098f15f748b8b855f01805490508487600601548d60405161218f96959493929190614ce6565b60405180910390a1835f018054905084600601541480156121b95750825f01805490508360060154145b156121c9576121c88b8b6131a7565b5b50505050612271565b5f8082600c015f0180549050146121ec5781600c016121f1565b816004015b90505f816006015490506122078989848a613012565b7fd86802201c3bf5d79ef71027c49cdfdee99fa298848917618ba148d098f15f748989845f01805490508486600601548b60405161224a96959493929190614ce6565b60405180910390a1815f018054905082600601540361226e5761226d89896131a7565b5b50505b506126a8565b5f81600c0190505f826004019050825f0160059054906101000a900460030b60030b835f0160019054906101000a900460030b60030b12156122c05782600401915082600c0190505b5f6122cb838361331f565b90505f8863ffffffff168260a00151116122e9578160a001516122f1565b8863ffffffff165b90505f818560060154612304919061426c565b90505f856006015490505b81811015612530575f60648760050154606487608001518a5f01868154811061233b5761233a614d40565b5b905f5260205f20015461234e9190614d6d565b6123589190614d6d565b6123629190614ddb565b61236c9190614ddb565b90506123dd87600101838154811061238757612386614d40565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16885f0184815481106123c4576123c3614d40565b5b905f5260205f200154836123d8919061426c565b613425565b8660010182815481106123f3576123f2614d40565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fc6f8d1369ef8a4d7d8373cd5079d27245ff35d49aba7ff57de55fbaf8d53813b8f8f8a600101868154811061246a57612469614d40565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168b5f0187815481106124a7576124a6614d40565b5b905f5260205f200154868d60040189815481106124c7576124c6614d40565b5b905f5260205f200160035f9054906101000a900460ff16600360019054906101000a900460ff16604051612502989796959493929190614e9e565b60405180910390a280876007015461251a919061426c565b876007018190555050808060010191505061230f565b507fd86802201c3bf5d79ef71027c49cdfdee99fa298848917618ba148d098f15f748c8c875f01805490508860060154858e60405161257496959493929190614ce6565b60405180910390a1808560060181905550845f01805490508560060154036126a1576125fc600360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16606460035f9054906101000a900460ff1660ff168660400151875f01516125e3919061426c565b6125ed9190614d6d565b6125f79190614ddb565b613425565b61266360045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166064600360019054906101000a900460ff1660ff168660600151876020015161264a919061426c565b6126549190614d6d565b61265e9190614ddb565b613425565b612696600360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612691611245565b613425565b6126a08c8c6131a7565b5b5050505050505b505050505050565b6126b8612d25565b60065f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156128d6575f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f5b6007805490508110156128d4578173ffffffffffffffffffffffffffffffffffffffff166007828154811061279557612794614d40565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036128c757600760016007805490506127ec9190614a4d565b815481106127fd576127fc614d40565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166007828154811061283957612838614d40565b5b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060078054806128905761288f614f1b565b5b600190038181905f5260205f20015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556128d4565b808060010191505061275d565b505b50565b6128e1612d25565b60648160ff161115612928576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291f90614f92565b60405180910390fd5b8060035f6101000a81548160ff021916908360ff16021790555050565b61294d612d25565b6001600460146101000a81548160ff02191690831515021790555060405180602001604052805f81525060059081612985919061514d565b507f762f260439bb4be3ef6e4dc2786e2e7bd187d3d80b79057d7a424fe98563e33560405160405180910390a1565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612a43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3a906143be565b60405180910390fd5b600160028686604051612a57929190614227565b90815260200160405180910390205f015f6101000a81548160ff0219169083151502179055508260028686604051612a90929190614227565b9081526020016040518091039020600101819055508160028686604051612ab8929190614227565b9081526020016040518091039020600201819055508060028686604051612ae0929190614227565b9081526020016040518091039020600301819055505050505050565b612b04612d25565b5f600460146101000a81548160ff021916908315150217905550818160059182612b2f929190615226565b507fbbed56c796999ec9481de9169e54d6f193c57a335189c8b82053d80e263fdbd68282604051612b619291906152f3565b60405180910390a15050565b612b75612d25565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612be5575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401612bdc91906137c5565b60405180910390fd5b612bee81612dac565b50565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612c1e612d25565b60065f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612d2257600160065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600781908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b612d2d6134d7565b73ffffffffffffffffffffffffffffffffffffffff16612d4b611e82565b73ffffffffffffffffffffffffffffffffffffffff1614612daa57612d6e6134d7565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401612da191906137c5565b60405180910390fd5b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f3273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b5f885f0188908060018154018082558091505060019003905f5260205f20015f90919091909150558860010133908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555088600201878790918060018154018082558091505060019003905f5260205f20015f909192909192909192909192509182612f6a929190615365565b5088600301858590918060018154018082558091505060019003905f5260205f20015f909192909192909192909192509182612fa7929190615365565b5088600401838390918060018154018082558091505060019003905f5260205f20015f909192909192909192909192509182612fe4929190615365565b5087896005015f828254612ff8919061426c565b925050819055508860050154905098975050505050505050565b5f8260060154835f01805490506130299190614a4d565b90505f8263ffffffff16821161303f5781613047565b8263ffffffff165b90505f81856006015461305a919061426c565b90505f856006015490505b81811015613194576130d186600101828154811061308657613085614d40565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16875f0183815481106130c3576130c2614d40565b5b905f5260205f200154613425565b7fb9b3cf88e16ddd6b941ffa04b763047af17bafd3cdecef4d26d46f43e64c1205888888600101848154811061310a57613109614d40565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16895f01858154811061314757613146614d40565b5b905f5260205f2001548a600401868154811061316657613165614d40565b5b905f5260205f200160405161317f959493929190615432565b60405180910390a18080600101915050613065565b5080856006018190555050505050505050565b600282826040516131b9929190614227565b90815260200160405180910390206004015f8082015f6131d99190613508565b600182015f6131e89190613526565b600282015f6131f79190613544565b600382015f6132069190613544565b600482015f6132159190613544565b600582015f9055600682015f9055600782015f905550506002828260405161323e929190614227565b9081526020016040518091039020600c015f8082015f61325e9190613508565b600182015f61326d9190613526565b600282015f61327c9190613544565b600382015f61328b9190613544565b600482015f61329a9190613544565b600582015f9055600682015f9055600782015f90555050600282826040516132c3929190614227565b90815260200160405180910390205f0160016101000a81549063ffffffff0219169055600282826040516132f8929190614227565b90815260200160405180910390205f0160056101000a81549063ffffffff02191690555050565b613327613562565b5f6064836005015460035f9054906101000a900460ff1660ff1661334b9190614d6d565b6133559190614ddb565b90505f60648460050154600360019054906101000a900460ff1660ff1661337c9190614d6d565b6133869190614ddb565b90505f8183613395919061426c565b90505f8660060154875f01805490506133ae9190614a4d565b90505f8287600501546133c19190614a4d565b90505f8588600501546133d49190614a4d565b90505f8589600501546133e79190614a4d565b90506040518060c001604052808881526020018781526020018381526020018281526020018481526020018581525097505050505050505092915050565b5f808373ffffffffffffffffffffffffffffffffffffffff165f8460405161344c906154a8565b5f60405180830381858888f193505050503d805f8114613487576040519150601f19603f3d011682016040523d82523d5f602084013e61348c565b606091505b5091509150816134d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134c890615506565b60405180910390fd5b50505050565b5f33905090565b60405180608001604052806060815260200160608152602001606081526020015f60070b81525090565b5080545f8255905f5260205f20908101906135239190613592565b50565b5080545f8255905f5260205f20908101906135419190613592565b50565b5080545f8255905f5260205f209081019061355f91906135ad565b50565b6040518060c001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b5b808211156135a9575f815f905550600101613593565b5090565b5b808211156135cc575f81816135c391906135d0565b506001016135ae565b5090565b5080546135dc90614344565b5f825580601f106135ed575061360a565b601f0160209004905f5260205f20908101906136099190613592565b5b50565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261363f5761363e61361e565b5b8235905067ffffffffffffffff81111561365c5761365b613622565b5b60208301915083600182028301111561367857613677613626565b5b9250929050565b5f806020838503121561369557613694613616565b5b5f83013567ffffffffffffffff8111156136b2576136b161361a565b5b6136be8582860161362a565b92509250509250929050565b5f8115159050919050565b6136de816136ca565b82525050565b5f6020820190506136f75f8301846136d5565b92915050565b5f60ff82169050919050565b613712816136fd565b82525050565b5f60208201905061372b5f830184613709565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61375a82613731565b9050919050565b61376a81613750565b8114613774575f80fd5b50565b5f8135905061378581613761565b92915050565b5f602082840312156137a05761379f613616565b5b5f6137ad84828501613777565b91505092915050565b6137bf81613750565b82525050565b5f6020820190506137d85f8301846137b6565b92915050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b613828826137e2565b810181811067ffffffffffffffff82111715613847576138466137f2565b5b80604052505050565b5f61385961360d565b9050613865828261381f565b919050565b5f67ffffffffffffffff821115613884576138836137f2565b5b61388d826137e2565b9050602081019050919050565b828183375f83830152505050565b5f6138ba6138b58461386a565b613850565b9050828152602081018484840111156138d6576138d56137de565b5b6138e184828561389a565b509392505050565b5f82601f8301126138fd576138fc61361e565b5b813561390d8482602086016138a8565b91505092915050565b5f6020828403121561392b5761392a613616565b5b5f82013567ffffffffffffffff8111156139485761394761361a565b5b613954848285016138e9565b91505092915050565b5f8160030b9050919050565b6139728161395d565b82525050565b5f819050919050565b61398a81613978565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6139c281613978565b82525050565b5f6139d383836139b9565b60208301905092915050565b5f602082019050919050565b5f6139f582613990565b6139ff818561399a565b9350613a0a836139aa565b805f5b83811015613a3a578151613a2188826139c8565b9750613a2c836139df565b925050600181019050613a0d565b5085935050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613a7981613750565b82525050565b5f613a8a8383613a70565b60208301905092915050565b5f602082019050919050565b5f613aac82613a47565b613ab68185613a51565b9350613ac183613a61565b805f5b83811015613af1578151613ad88882613a7f565b9750613ae383613a96565b925050600181019050613ac4565b5085935050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015613b5e578082015181840152602081019050613b43565b5f8484015250505050565b5f613b7382613b27565b613b7d8185613b31565b9350613b8d818560208601613b41565b613b96816137e2565b840191505092915050565b5f613bac8383613b69565b905092915050565b5f602082019050919050565b5f613bca82613afe565b613bd48185613b08565b935083602082028501613be685613b18565b805f5b85811015613c215784840389528151613c028582613ba1565b9450613c0d83613bb4565b925060208a01995050600181019050613be9565b50829750879550505050505092915050565b5f61010083015f8301518482035f860152613c4e82826139eb565b91505060208301518482036020860152613c688282613aa2565b91505060408301518482036040860152613c828282613bc0565b91505060608301518482036060860152613c9c8282613bc0565b91505060808301518482036080860152613cb68282613bc0565b91505060a0830151613ccb60a08601826139b9565b5060c0830151613cde60c08601826139b9565b5060e0830151613cf160e08601826139b9565b508091505092915050565b5f8160070b9050919050565b613d1181613cfc565b82525050565b5f61016082019050613d2b5f83018e6136d5565b613d38602083018d613969565b613d45604083018c613969565b613d52606083018b613981565b613d5f608083018a613981565b613d6c60a0830189613981565b81810360c0830152613d7e8188613c33565b905081810360e0830152613d928187613c33565b9050613da2610100830186613d08565b613db0610120830185613981565b613dbe610140830184613981565b9c9b505050505050505050505050565b5f82825260208201905092915050565b5f613de882613a47565b613df28185613dce565b9350613dfd83613a61565b805f5b83811015613e2d578151613e148882613a7f565b9750613e1f83613a96565b925050600181019050613e00565b5085935050505092915050565b5f6020820190508181035f830152613e528184613dde565b905092915050565b5f81519050919050565b5f82825260208201905092915050565b5f613e7e82613e5a565b613e888185613e64565b9350613e98818560208601613b41565b613ea1816137e2565b840191505092915050565b5f6020820190508181035f830152613ec48184613e74565b905092915050565b5f602082019050613edf5f830184613981565b92915050565b613eee81613cfc565b8114613ef8575f80fd5b50565b5f81359050613f0981613ee5565b92915050565b613f1881613978565b8114613f22575f80fd5b50565b5f81359050613f3381613f0f565b92915050565b613f428161395d565b8114613f4c575f80fd5b50565b5f81359050613f5d81613f39565b92915050565b5f63ffffffff82169050919050565b613f7b81613f63565b8114613f85575f80fd5b50565b5f81359050613f9681613f72565b92915050565b5f805f805f805f60c0888a031215613fb757613fb6613616565b5b5f88013567ffffffffffffffff811115613fd457613fd361361a565b5b613fe08a828b0161362a565b97509750506020613ff38a828b01613efb565b95505060406140048a828b01613f25565b94505060606140158a828b01613f25565b93505060806140268a828b01613f4f565b92505060a06140378a828b01613f88565b91505092959891949750929550565b5f80fd5b5f60a0828403121561405f5761405e614046565b5b81905092915050565b5f6020828403121561407d5761407c613616565b5b5f82013567ffffffffffffffff81111561409a5761409961361a565b5b6140a68482850161404a565b91505092915050565b6140b8816136fd565b81146140c2575f80fd5b50565b5f813590506140d3816140af565b92915050565b5f602082840312156140ee576140ed613616565b5b5f6140fb848285016140c5565b91505092915050565b5f805f806060858703121561411c5761411b613616565b5b5f85013567ffffffffffffffff8111156141395761413861361a565b5b6141458782880161362a565b9450945050602061415887828801613f88565b925050604061416987828801613efb565b91505092959194509250565b5f805f805f6080868803121561418e5761418d613616565b5b5f86013567ffffffffffffffff8111156141ab576141aa61361a565b5b6141b78882890161362a565b955095505060206141ca88828901613f25565b93505060406141db88828901613f25565b92505060606141ec88828901613f25565b9150509295509295909350565b5f81905092915050565b5f61420e83856141f9565b935061421b83858461389a565b82840190509392505050565b5f614233828486614203565b91508190509392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61427682613978565b915061428183613978565b92508282019050808211156142995761429861423f565b5b92915050565b5f82825260208201905092915050565b7f416464726573732063616e6e6f74206265207a65726f206164647265737300005f82015250565b5f6142e3601e8361429f565b91506142ee826142af565b602082019050919050565b5f6020820190508181035f830152614310816142d7565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061435b57607f821691505b60208210810361436e5761436d614317565b5b50919050565b7f4f6e6c792067616d6520636f6e74726f6c6c65722063616e20646f20746869735f82015250565b5f6143a860208361429f565b91506143b382614374565b602082019050919050565b5f6020820190508181035f8301526143d58161439c565b9050919050565b7f506f6f6c20646f6573206e6f74206578697374000000000000000000000000005f82015250565b5f61441060138361429f565b915061441b826143dc565b602082019050919050565b5f6020820190508181035f83015261443d81614404565b9050919050565b7f5468652067616d65206973206e6f742072756e6e696e672c20726f756e6473205f8201527f63616e206f6e6c7920626520656e646564206174207468697320706f696e7400602082015250565b5f61449e603f8361429f565b91506144a982614444565b604082019050919050565b5f6020820190508181035f8301526144cb81614492565b9050919050565b5f6144dd8385613e64565b93506144ea83858461389a565b6144f3836137e2565b840190509392505050565b5f60c0820190508181035f83015261451781898b6144d2565b90506145266020830188613d08565b6145336040830187613969565b6145406060830186613981565b61454d6080830185613981565b61455a60a0830184613981565b98975050505050505050565b5f6080820190508181035f83015261457f8187896144d2565b905061458e6020830186613d08565b61459b6040830185613969565b6145a86060830184613969565b9695505050505050565b5f80fd5b5f80fd5b5f80fd5b5f80833560016020038436030381126145da576145d96145b2565b5b80840192508235915067ffffffffffffffff8211156145fc576145fb6145b6565b5b602083019250600182023603831315614618576146176145ba565b5b509250929050565b7f5468697320706f6f6c20686173206120726f756e6420696e2070726f677265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f61467a60218361429f565b915061468582614620565b604082019050919050565b5f6020820190508181035f8301526146a78161466e565b9050919050565b7f5468652067616d65206973206e6f742072756e6e696e670000000000000000005f82015250565b5f6146e260178361429f565b91506146ed826146ae565b602082019050919050565b5f6020820190508181035f83015261470f816146d6565b9050919050565b7f43616c6c6572206d75737420626520454f41206f7220616c6c6f77656420636f5f8201527f6e74726163740000000000000000000000000000000000000000000000000000602082015250565b5f61477060268361429f565b915061477b82614716565b604082019050919050565b5f6020820190508181035f83015261479d81614764565b9050919050565b7f4e6565647320746f2073656e64204d6174696320746f207472616465000000005f82015250565b5f6147d8601c8361429f565b91506147e3826147a4565b602082019050919050565b5f6020820190508181035f830152614805816147cc565b9050919050565b7f547261646520616d6f756e742073686f756c64206265206869676865722074685f8201527f616e20746865206d696e696d756d000000000000000000000000000000000000602082015250565b5f614866602e8361429f565b91506148718261480c565b604082019050919050565b5f6020820190508181035f8301526148938161485a565b9050919050565b7f547261646520616d6f756e742073686f756c64206265206c6f776572207468615f8201527f6e20746865206d6178696d756d00000000000000000000000000000000000000602082015250565b5f6148f4602d8361429f565b91506148ff8261489a565b604082019050919050565b5f6020820190508181035f830152614921816148e8565b9050919050565b7f526f756e6420697320636c6f73696e67000000000000000000000000000000005f82015250565b5f61495c60108361429f565b915061496782614928565b602082019050919050565b5f6020820190508181035f83015261498981614950565b9050919050565b7f526f756e64206e6f7420737461727465642079657400000000000000000000005f82015250565b5f6149c460158361429f565b91506149cf82614990565b602082019050919050565b5f6020820190508181035f8301526149f1816149b8565b9050919050565b614a01816136ca565b8114614a0b575f80fd5b50565b5f81359050614a1c816149f8565b92915050565b5f60208284031215614a3757614a36613616565b5b5f614a4484828501614a0e565b91505092915050565b5f614a5782613978565b9150614a6283613978565b9250828203905081811115614a7a57614a7961423f565b5b92915050565b7f506f6f6c2069732066756c6c2c207761697420666f72206e65787420726f756e5f8201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b5f614ada60218361429f565b9150614ae582614a80565b604082019050919050565b5f6020820190508181035f830152614b0781614ace565b9050919050565b5f8083356001602003843603038112614b2a57614b296145b2565b5b80840192508235915067ffffffffffffffff821115614b4c57614b4b6145b6565b5b602083019250600182023603831315614b6857614b676145ba565b5b509250929050565b5f614b7a82613b27565b614b84818561429f565b9350614b94818560208601613b41565b614b9d816137e2565b840191505092915050565b5f610120820190508181035f830152614bc2818c8e6144d2565b9050614bd1602083018b6137b6565b614bde604083018a613981565b8181036060830152614bf08189614b70565b9050614bff6080830188613981565b81810360a0830152614c118187614b70565b905081810360c0830152614c258186614b70565b9050614c3460e0830185613d08565b818103610100830152614c478184614b70565b90509b9a5050505050505050505050565b7f57726f6e67206a61636b706f74206665652070657263656e746167652076616c5f8201527f7565000000000000000000000000000000000000000000000000000000000000602082015250565b5f614cb260228361429f565b9150614cbd82614c58565b604082019050919050565b5f6020820190508181035f830152614cdf81614ca6565b9050919050565b5f60a0820190508181035f830152614cff81888a6144d2565b9050614d0e6020830187613981565b614d1b6040830186613981565b614d286060830185613981565b614d356080830184613d08565b979650505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f614d7782613978565b9150614d8283613978565b9250828202614d9081613978565b91508282048414831517614da757614da661423f565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f614de582613978565b9150614df083613978565b925082614e0057614dff614dae565b5b828204905092915050565b5f819050815f5260205f209050919050565b5f8154614e2981614344565b614e33818661429f565b9450600182165f8114614e4d5760018114614e6357614e95565b60ff198316865281151560200286019350614e95565b614e6c85614e0b565b5f5b83811015614e8d57815481890152600182019150602081019050614e6e565b808801955050505b50505092915050565b5f60e0820190508181035f830152614eb7818a8c6144d2565b9050614ec660208301896137b6565b614ed36040830188613981565b614ee06060830187613981565b8181036080830152614ef28186614e1d565b9050614f0160a0830185613709565b614f0e60c0830184613709565b9998505050505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b7f57726f6e67206665652070657263656e746167652076616c75650000000000005f82015250565b5f614f7c601a8361429f565b9150614f8782614f48565b602082019050919050565b5f6020820190508181035f830152614fa981614f70565b9050919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830261500c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82614fd1565b6150168683614fd1565b95508019841693508086168417925050509392505050565b5f819050919050565b5f61505161504c61504784613978565b61502e565b613978565b9050919050565b5f819050919050565b61506a83615037565b61507e61507682615058565b848454614fdd565b825550505050565b5f90565b615092615086565b61509d818484615061565b505050565b5b818110156150c0576150b55f8261508a565b6001810190506150a3565b5050565b601f821115615105576150d681614fb0565b6150df84614fc2565b810160208510156150ee578190505b6151026150fa85614fc2565b8301826150a2565b50505b505050565b5f82821c905092915050565b5f6151255f198460080261510a565b1980831691505092915050565b5f61513d8383615116565b9150826002028217905092915050565b61515682613b27565b67ffffffffffffffff81111561516f5761516e6137f2565b5b6151798254614344565b6151848282856150c4565b5f60209050601f8311600181146151b5575f84156151a3578287015190505b6151ad8582615132565b865550615214565b601f1984166151c386614fb0565b5f5b828110156151ea578489015182556001820191506020850194506020810190506151c5565b868310156152075784890151615203601f891682615116565b8355505b6001600288020188555050505b505050505050565b5f82905092915050565b615230838361521c565b67ffffffffffffffff811115615249576152486137f2565b5b6152538254614344565b61525e8282856150c4565b5f601f83116001811461528b575f8415615279578287013590505b6152838582615132565b8655506152ea565b601f19841661529986614fb0565b5f5b828110156152c05784890135825560018201915060208501945060208101905061529b565b868310156152dd57848901356152d9601f891682615116565b8355505b6001600288020188555050505b50505050505050565b5f6020820190508181035f83015261530c8184866144d2565b90509392505050565b5f82905092915050565b601f8211156153605761533181614e0b565b61533a84614fc2565b81016020851015615349578190505b61535d61535585614fc2565b8301826150a2565b50505b505050565b61536f8383615315565b67ffffffffffffffff811115615388576153876137f2565b5b6153928254614344565b61539d82828561531f565b5f601f8311600181146153ca575f84156153b8578287013590505b6153c28582615132565b865550615429565b601f1984166153d886614e0b565b5f5b828110156153ff578489013582556001820191506020850194506020810190506153da565b8683101561541c5784890135615418601f891682615116565b8355505b6001600288020188555050505b50505050505050565b5f6080820190508181035f83015261544b8187896144d2565b905061545a60208301866137b6565b6154676040830185613981565b81810360608301526154798184614e1d565b90509695505050505050565b50565b5f6154935f836141f9565b915061549e82615485565b5f82019050919050565b5f6154b282615488565b9150819050919050565b7f436f756c646e27742073656e64206574686572000000000000000000000000005f82015250565b5f6154f060138361429f565b91506154fb826154bc565b602082019050919050565b5f6020820190508181035f83015261551d816154e4565b905091905056fea2646970667358221220697364a3f4d22fc3102bd583f624480c4c1431a8fe5634d6d7940454c341966764736f6c63430008170033000000000000000000000000d6043e1ab748b30db50bbaf34608daf2b82c1638

Deployed Bytecode

0x6080604052600436106101b6575f3560e01c80637b064240116100eb578063d4c770cf11610089578063eab79b7d11610063578063eab79b7d146105a2578063f2fde38b146105ca578063f68256a8146105f2578063f6bd02fa1461061c576101b6565b8063d4c770cf1461053c578063d65ab5f214610564578063e47099691461057a576101b6565b8063900b7b3f116100c5578063900b7b3f1461049a578063a001ecdd146104c2578063a7c3324d146104ec578063c375c2ef14610514576101b6565b80637b0642401461042c57806381196ae2146104545780638da5cb5b14610470576101b6565b80633fafac9211610158578063595dc89711610132578063595dc8971461039a5780636518a0a9146103c25780636f9fb98a146103ec578063715018a614610416576101b6565b80633fafac92146103005780634127535814610346578063538741c514610370576101b6565b80631d0d625b116101945780631d0d625b146102485780632014e5d11461027057806330efabd41461029a5780633b9fe1ee146102d6576101b6565b80630c2f915e146101ba578063159dc634146101f65780631c2db19214610220575b5f80fd5b3480156101c5575f80fd5b506101e060048036038101906101db919061367f565b610644565b6040516101ed91906136e4565b60405180910390f35b348015610201575f80fd5b5061020a6106ab565b6040516102179190613718565b60405180910390f35b34801561022b575f80fd5b506102466004803603810190610241919061378b565b6106be565b005b348015610253575f80fd5b5061026e6004803603810190610269919061378b565b610777565b005b34801561027b575f80fd5b50610284610830565b60405161029191906136e4565b60405180910390f35b3480156102a5575f80fd5b506102c060048036038101906102bb919061367f565b610843565b6040516102cd91906136e4565b60405180910390f35b3480156102e1575f80fd5b506102ea610881565b6040516102f791906137c5565b60405180910390f35b34801561030b575f80fd5b5061032660048036038101906103219190613916565b6108a6565b60405161033d9b9a99989796959493929190613d17565b60405180910390f35b348015610351575f80fd5b5061035a61104e565b60405161036791906137c5565b60405180910390f35b34801561037b575f80fd5b50610384611074565b6040516103919190613e3a565b60405180910390f35b3480156103a5575f80fd5b506103c060048036038101906103bb919061378b565b6110ff565b005b3480156103cd575f80fd5b506103d66111b9565b6040516103e39190613eac565b60405180910390f35b3480156103f7575f80fd5b50610400611245565b60405161040d9190613ecc565b60405180910390f35b348015610421575f80fd5b5061042a61124c565b005b348015610437575f80fd5b50610452600480360381019061044d9190613f9c565b61125f565b005b61046e60048036038101906104699190614068565b6115c5565b005b34801561047b575f80fd5b50610484611e82565b60405161049191906137c5565b60405180910390f35b3480156104a5575f80fd5b506104c060048036038101906104bb91906140d9565b611ea9565b005b3480156104cd575f80fd5b506104d6611f16565b6040516104e39190613718565b60405180910390f35b3480156104f7575f80fd5b50610512600480360381019061050d9190614104565b611f28565b005b34801561051f575f80fd5b5061053a6004803603810190610535919061378b565b6126b0565b005b348015610547575f80fd5b50610562600480360381019061055d91906140d9565b6128d9565b005b34801561056f575f80fd5b50610578612945565b005b348015610585575f80fd5b506105a0600480360381019061059b9190614175565b6129b4565b005b3480156105ad575f80fd5b506105c860048036038101906105c3919061367f565b612afc565b005b3480156105d5575f80fd5b506105f060048036038101906105eb919061378b565b612b6d565b005b3480156105fd575f80fd5b50610606612bf1565b60405161061391906137c5565b60405180910390f35b348015610627575f80fd5b50610642600480360381019061063d919061378b565b612c16565b005b5f8060028484604051610658929190614227565b9081526020016040518091039020600c015f018054905060028585604051610681929190614227565b90815260200160405180910390206004015f01805490506106a2919061426c565b11905092915050565b600360019054906101000a900460ff1681565b6106c6612d25565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610734576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072b906142f9565b60405180910390fd5b8060045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61077f612d25565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036107ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e4906142f9565b60405180910390fd5b8060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600460149054906101000a900460ff1681565b5f8060028484604051610857929190614227565b90815260200160405180910390205f0160019054906101000a900460030b60030b14905092915050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6002818051602081018201805184825260208301602085012081835280955050505050505f91509050805f015f9054906101000a900460ff1690805f0160019054906101000a900460030b90805f0160059054906101000a900460030b9080600101549080600201549080600301549080600401604051806101000160405290815f820180548060200260200160405190810160405280929190818152602001828054801561097257602002820191905f5260205f20905b81548152602001906001019080831161095e575b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156109fd57602002820191905f5260205f20905b815f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116109b4575b5050505050815260200160028201805480602002602001604051908101604052809291908181526020015f905b82821015610ad2578382905f5260205f20018054610a4790614344565b80601f0160208091040260200160405190810160405280929190818152602001828054610a7390614344565b8015610abe5780601f10610a9557610100808354040283529160200191610abe565b820191905f5260205f20905b815481529060010190602001808311610aa157829003601f168201915b505050505081526020019060010190610a2a565b50505050815260200160038201805480602002602001604051908101604052809291908181526020015f905b82821015610ba6578382905f5260205f20018054610b1b90614344565b80601f0160208091040260200160405190810160405280929190818152602001828054610b4790614344565b8015610b925780601f10610b6957610100808354040283529160200191610b92565b820191905f5260205f20905b815481529060010190602001808311610b7557829003601f168201915b505050505081526020019060010190610afe565b50505050815260200160048201805480602002602001604051908101604052809291908181526020015f905b82821015610c7a578382905f5260205f20018054610bef90614344565b80601f0160208091040260200160405190810160405280929190818152602001828054610c1b90614344565b8015610c665780601f10610c3d57610100808354040283529160200191610c66565b820191905f5260205f20905b815481529060010190602001808311610c4957829003601f168201915b505050505081526020019060010190610bd2565b50505050815260200160058201548152602001600682015481526020016007820154815250509080600c01604051806101000160405290815f8201805480602002602001604051908101604052809291908181526020018280548015610cfd57602002820191905f5260205f20905b815481526020019060010190808311610ce9575b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015610d8857602002820191905f5260205f20905b815f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610d3f575b5050505050815260200160028201805480602002602001604051908101604052809291908181526020015f905b82821015610e5d578382905f5260205f20018054610dd290614344565b80601f0160208091040260200160405190810160405280929190818152602001828054610dfe90614344565b8015610e495780601f10610e2057610100808354040283529160200191610e49565b820191905f5260205f20905b815481529060010190602001808311610e2c57829003601f168201915b505050505081526020019060010190610db5565b50505050815260200160038201805480602002602001604051908101604052809291908181526020015f905b82821015610f31578382905f5260205f20018054610ea690614344565b80601f0160208091040260200160405190810160405280929190818152602001828054610ed290614344565b8015610f1d5780601f10610ef457610100808354040283529160200191610f1d565b820191905f5260205f20905b815481529060010190602001808311610f0057829003601f168201915b505050505081526020019060010190610e89565b50505050815260200160048201805480602002602001604051908101604052809291908181526020015f905b82821015611005578382905f5260205f20018054610f7a90614344565b80601f0160208091040260200160405190810160405280929190818152602001828054610fa690614344565b8015610ff15780601f10610fc857610100808354040283529160200191610ff1565b820191905f5260205f20905b815481529060010190602001808311610fd457829003601f168201915b505050505081526020019060010190610f5d565b505050508152602001600582015481526020016006820154815260200160078201548152505090806014015f9054906101000a900460070b90806015015490806016015490508b565b600360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060078054806020026020016040519081016040528092919081815260200182805480156110f557602002820191905f5260205f20905b815f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116110ac575b5050505050905090565b611107612d25565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611175576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116c906142f9565b60405180910390fd5b80600360026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600580546111c690614344565b80601f01602080910402602001604051908101604052809291908181526020018280546111f290614344565b801561123d5780601f106112145761010080835404028352916020019161123d565b820191905f5260205f20905b81548152906001019060200180831161122057829003601f168201915b505050505081565b5f47905090565b611254612d25565b61125d5f612dac565b565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e5906143be565b60405180910390fd5b868660028282604051611302929190614227565b90815260200160405180910390205f015f9054906101000a900460ff1661135e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135590614426565b60405180910390fd5b5f60028a8a604051611371929190614227565b9081526020016040518091039020905061138b8a8a610843565b156114bf57600460149054906101000a900460ff166113df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d6906144b4565b60405180910390fd5b84815f0160016101000a81548163ffffffff021916908360030b63ffffffff16021790555087816014015f6101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055508681601501819055508581601601819055508989604051611453929190614227565b60405180910390207f977f157300bb4d69d09b3e083fb55a17a0c02f978e5b220c08173c63de9665aa8b8b8b855f0160019054906101000a900460030b8660010154876002015488600301546040516114b297969594939291906144fe565b60405180910390a26115b9565b5f815f0160059054906101000a900460030b60030b036115865784815f0160056101000a81548163ffffffff021916908360030b63ffffffff160217905550898960405161150e929190614227565b60405180910390207fe097bf610f5827ffcdd36eb07b790e6ee02dd498f911ab45664208cfad9323b08b8b8b855f0160019054906101000a900460030b865f0160059054906101000a900460030b60405161156d959493929190614566565b60405180910390a26115818a8a868b611f28565b6115b8565b6040517fd56be5db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b50505050505050505050565b80805f01906115d491906145be565b6115de8282610843565b61161d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161490614690565b60405180910390fd5b600460149054906101000a900460ff1661166c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611663906146f8565b60405180910390fd5b82805f019061167b91906145be565b6002828260405161168d929190614227565b90815260200160405180910390205f015f9054906101000a900460ff166116e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e090614426565b60405180910390fd5b6116f233612e6d565b80611743575060065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611782576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177990614786565b60405180910390fd5b5f34116117c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117bb906147ee565b60405180910390fd5b600285805f01906117d591906145be565b6040516117e3929190614227565b908152602001604051809103902060010154341015611837576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182e9061487c565b60405180910390fd5b600285805f019061184891906145be565b604051611856929190614227565b9081526020016040518091039020600201543411156118aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a19061490a565b60405180910390fd5b600285805f01906118bb91906145be565b6040516118c9929190614227565b90815260200160405180910390206016015442111561191d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191490614972565b60405180910390fd5b600285805f019061192e91906145be565b60405161193c929190614227565b908152602001604051809103902060150154421015611990576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611987906149da565b60405180910390fd5b5f8560600160208101906119a49190614a22565b15611acd576001600287805f01906119bc91906145be565b6040516119ca929190614227565b9081526020016040518091039020600301546119e69190614a4d565b600287805f01906119f791906145be565b604051611a05929190614227565b90815260200160405180910390206004015f01805490501115611a5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5490614af0565b60405180910390fd5b611ac6600287805f0190611a7191906145be565b604051611a7f929190614227565b908152602001604051809103902060040134888060200190611aa19190614b0e565b8a8060400190611ab19190614b0e565b8c8060800190611ac19190614b0e565b612ea4565b9050611bed565b6001600287805f0190611ae091906145be565b604051611aee929190614227565b908152602001604051809103902060030154611b0a9190614a4d565b600287805f0190611b1b91906145be565b604051611b29929190614227565b9081526020016040518091039020600c015f01805490501115611b81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7890614af0565b60405180910390fd5b611bea600287805f0190611b9591906145be565b604051611ba3929190614227565b9081526020016040518091039020600c0134888060200190611bc59190614b0e565b8a8060400190611bd59190614b0e565b8c8060800190611be59190614b0e565b612ea4565b90505b611bf56134de565b868060200190611c059190614b0e565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050815f0181905250868060400190611c5e9190614b0e565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f820116905080830192505050505050508160200181905250868060800190611cb89190614b0e565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f820116905080830192505050505050508160400181905250600287805f0190611d1391906145be565b604051611d21929190614227565b90815260200160405180910390206014015f9054906101000a900460070b816060019060070b908160070b815250503373ffffffffffffffffffffffffffffffffffffffff1687805f0190611d7691906145be565b604051611d84929190614227565b60405180910390207f68f6fc9b4292a4019c38f766d951dada112bf514a9fa2245e113dd0d72f2861589805f0190611dbc91906145be565b33348d6060016020810190611dd19190614a22565b611e10576040518060400160405280600481526020017f444f574e00000000000000000000000000000000000000000000000000000000815250611e47565b6040518060400160405280600281526020017f55500000000000000000000000000000000000000000000000000000000000008152505b89895f01518a602001518b606001518c60400151604051611e719a99989796959493929190614ba8565b60405180910390a350505050505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611eb1612d25565b60648160ff161115611ef8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eef90614cc8565b60405180910390fd5b80600360016101000a81548160ff021916908360ff16021790555050565b60035f9054906101000a900460ff1681565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611fb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fae906143be565b60405180910390fd5b838360028282604051611fcb929190614227565b90815260200160405180910390205f015f9054906101000a900460ff16612027576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201e90614426565b60405180910390fd5b5f6002878760405161203a929190614227565b908152602001604051809103902090505f816004015f0180549050148061206957505f81600c015f0180549050145b806120995750805f0160059054906101000a900460030b60030b815f0160019054906101000a900460030b60030b145b1561227757805f0160059054906101000a900460030b60030b815f0160019054906101000a900460030b60030b036121d2575f8160040190505f82600c0190505f826006015490505f826006015490506120f58b8b868c613012565b6121018b8b858c613012565b7fd86802201c3bf5d79ef71027c49cdfdee99fa298848917618ba148d098f15f748b8b865f01805490508588600601548d60405161214496959493929190614ce6565b60405180910390a17fd86802201c3bf5d79ef71027c49cdfdee99fa298848917618ba148d098f15f748b8b855f01805490508487600601548d60405161218f96959493929190614ce6565b60405180910390a1835f018054905084600601541480156121b95750825f01805490508360060154145b156121c9576121c88b8b6131a7565b5b50505050612271565b5f8082600c015f0180549050146121ec5781600c016121f1565b816004015b90505f816006015490506122078989848a613012565b7fd86802201c3bf5d79ef71027c49cdfdee99fa298848917618ba148d098f15f748989845f01805490508486600601548b60405161224a96959493929190614ce6565b60405180910390a1815f018054905082600601540361226e5761226d89896131a7565b5b50505b506126a8565b5f81600c0190505f826004019050825f0160059054906101000a900460030b60030b835f0160019054906101000a900460030b60030b12156122c05782600401915082600c0190505b5f6122cb838361331f565b90505f8863ffffffff168260a00151116122e9578160a001516122f1565b8863ffffffff165b90505f818560060154612304919061426c565b90505f856006015490505b81811015612530575f60648760050154606487608001518a5f01868154811061233b5761233a614d40565b5b905f5260205f20015461234e9190614d6d565b6123589190614d6d565b6123629190614ddb565b61236c9190614ddb565b90506123dd87600101838154811061238757612386614d40565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16885f0184815481106123c4576123c3614d40565b5b905f5260205f200154836123d8919061426c565b613425565b8660010182815481106123f3576123f2614d40565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fc6f8d1369ef8a4d7d8373cd5079d27245ff35d49aba7ff57de55fbaf8d53813b8f8f8a600101868154811061246a57612469614d40565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168b5f0187815481106124a7576124a6614d40565b5b905f5260205f200154868d60040189815481106124c7576124c6614d40565b5b905f5260205f200160035f9054906101000a900460ff16600360019054906101000a900460ff16604051612502989796959493929190614e9e565b60405180910390a280876007015461251a919061426c565b876007018190555050808060010191505061230f565b507fd86802201c3bf5d79ef71027c49cdfdee99fa298848917618ba148d098f15f748c8c875f01805490508860060154858e60405161257496959493929190614ce6565b60405180910390a1808560060181905550845f01805490508560060154036126a1576125fc600360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16606460035f9054906101000a900460ff1660ff168660400151875f01516125e3919061426c565b6125ed9190614d6d565b6125f79190614ddb565b613425565b61266360045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166064600360019054906101000a900460ff1660ff168660600151876020015161264a919061426c565b6126549190614d6d565b61265e9190614ddb565b613425565b612696600360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612691611245565b613425565b6126a08c8c6131a7565b5b5050505050505b505050505050565b6126b8612d25565b60065f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156128d6575f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f5b6007805490508110156128d4578173ffffffffffffffffffffffffffffffffffffffff166007828154811061279557612794614d40565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036128c757600760016007805490506127ec9190614a4d565b815481106127fd576127fc614d40565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166007828154811061283957612838614d40565b5b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060078054806128905761288f614f1b565b5b600190038181905f5260205f20015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556128d4565b808060010191505061275d565b505b50565b6128e1612d25565b60648160ff161115612928576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291f90614f92565b60405180910390fd5b8060035f6101000a81548160ff021916908360ff16021790555050565b61294d612d25565b6001600460146101000a81548160ff02191690831515021790555060405180602001604052805f81525060059081612985919061514d565b507f762f260439bb4be3ef6e4dc2786e2e7bd187d3d80b79057d7a424fe98563e33560405160405180910390a1565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612a43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3a906143be565b60405180910390fd5b600160028686604051612a57929190614227565b90815260200160405180910390205f015f6101000a81548160ff0219169083151502179055508260028686604051612a90929190614227565b9081526020016040518091039020600101819055508160028686604051612ab8929190614227565b9081526020016040518091039020600201819055508060028686604051612ae0929190614227565b9081526020016040518091039020600301819055505050505050565b612b04612d25565b5f600460146101000a81548160ff021916908315150217905550818160059182612b2f929190615226565b507fbbed56c796999ec9481de9169e54d6f193c57a335189c8b82053d80e263fdbd68282604051612b619291906152f3565b60405180910390a15050565b612b75612d25565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612be5575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401612bdc91906137c5565b60405180910390fd5b612bee81612dac565b50565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612c1e612d25565b60065f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612d2257600160065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600781908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b612d2d6134d7565b73ffffffffffffffffffffffffffffffffffffffff16612d4b611e82565b73ffffffffffffffffffffffffffffffffffffffff1614612daa57612d6e6134d7565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401612da191906137c5565b60405180910390fd5b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f3273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b5f885f0188908060018154018082558091505060019003905f5260205f20015f90919091909150558860010133908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555088600201878790918060018154018082558091505060019003905f5260205f20015f909192909192909192909192509182612f6a929190615365565b5088600301858590918060018154018082558091505060019003905f5260205f20015f909192909192909192909192509182612fa7929190615365565b5088600401838390918060018154018082558091505060019003905f5260205f20015f909192909192909192909192509182612fe4929190615365565b5087896005015f828254612ff8919061426c565b925050819055508860050154905098975050505050505050565b5f8260060154835f01805490506130299190614a4d565b90505f8263ffffffff16821161303f5781613047565b8263ffffffff165b90505f81856006015461305a919061426c565b90505f856006015490505b81811015613194576130d186600101828154811061308657613085614d40565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16875f0183815481106130c3576130c2614d40565b5b905f5260205f200154613425565b7fb9b3cf88e16ddd6b941ffa04b763047af17bafd3cdecef4d26d46f43e64c1205888888600101848154811061310a57613109614d40565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16895f01858154811061314757613146614d40565b5b905f5260205f2001548a600401868154811061316657613165614d40565b5b905f5260205f200160405161317f959493929190615432565b60405180910390a18080600101915050613065565b5080856006018190555050505050505050565b600282826040516131b9929190614227565b90815260200160405180910390206004015f8082015f6131d99190613508565b600182015f6131e89190613526565b600282015f6131f79190613544565b600382015f6132069190613544565b600482015f6132159190613544565b600582015f9055600682015f9055600782015f905550506002828260405161323e929190614227565b9081526020016040518091039020600c015f8082015f61325e9190613508565b600182015f61326d9190613526565b600282015f61327c9190613544565b600382015f61328b9190613544565b600482015f61329a9190613544565b600582015f9055600682015f9055600782015f90555050600282826040516132c3929190614227565b90815260200160405180910390205f0160016101000a81549063ffffffff0219169055600282826040516132f8929190614227565b90815260200160405180910390205f0160056101000a81549063ffffffff02191690555050565b613327613562565b5f6064836005015460035f9054906101000a900460ff1660ff1661334b9190614d6d565b6133559190614ddb565b90505f60648460050154600360019054906101000a900460ff1660ff1661337c9190614d6d565b6133869190614ddb565b90505f8183613395919061426c565b90505f8660060154875f01805490506133ae9190614a4d565b90505f8287600501546133c19190614a4d565b90505f8588600501546133d49190614a4d565b90505f8589600501546133e79190614a4d565b90506040518060c001604052808881526020018781526020018381526020018281526020018481526020018581525097505050505050505092915050565b5f808373ffffffffffffffffffffffffffffffffffffffff165f8460405161344c906154a8565b5f60405180830381858888f193505050503d805f8114613487576040519150601f19603f3d011682016040523d82523d5f602084013e61348c565b606091505b5091509150816134d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134c890615506565b60405180910390fd5b50505050565b5f33905090565b60405180608001604052806060815260200160608152602001606081526020015f60070b81525090565b5080545f8255905f5260205f20908101906135239190613592565b50565b5080545f8255905f5260205f20908101906135419190613592565b50565b5080545f8255905f5260205f209081019061355f91906135ad565b50565b6040518060c001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b5b808211156135a9575f815f905550600101613593565b5090565b5b808211156135cc575f81816135c391906135d0565b506001016135ae565b5090565b5080546135dc90614344565b5f825580601f106135ed575061360a565b601f0160209004905f5260205f20908101906136099190613592565b5b50565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261363f5761363e61361e565b5b8235905067ffffffffffffffff81111561365c5761365b613622565b5b60208301915083600182028301111561367857613677613626565b5b9250929050565b5f806020838503121561369557613694613616565b5b5f83013567ffffffffffffffff8111156136b2576136b161361a565b5b6136be8582860161362a565b92509250509250929050565b5f8115159050919050565b6136de816136ca565b82525050565b5f6020820190506136f75f8301846136d5565b92915050565b5f60ff82169050919050565b613712816136fd565b82525050565b5f60208201905061372b5f830184613709565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61375a82613731565b9050919050565b61376a81613750565b8114613774575f80fd5b50565b5f8135905061378581613761565b92915050565b5f602082840312156137a05761379f613616565b5b5f6137ad84828501613777565b91505092915050565b6137bf81613750565b82525050565b5f6020820190506137d85f8301846137b6565b92915050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b613828826137e2565b810181811067ffffffffffffffff82111715613847576138466137f2565b5b80604052505050565b5f61385961360d565b9050613865828261381f565b919050565b5f67ffffffffffffffff821115613884576138836137f2565b5b61388d826137e2565b9050602081019050919050565b828183375f83830152505050565b5f6138ba6138b58461386a565b613850565b9050828152602081018484840111156138d6576138d56137de565b5b6138e184828561389a565b509392505050565b5f82601f8301126138fd576138fc61361e565b5b813561390d8482602086016138a8565b91505092915050565b5f6020828403121561392b5761392a613616565b5b5f82013567ffffffffffffffff8111156139485761394761361a565b5b613954848285016138e9565b91505092915050565b5f8160030b9050919050565b6139728161395d565b82525050565b5f819050919050565b61398a81613978565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6139c281613978565b82525050565b5f6139d383836139b9565b60208301905092915050565b5f602082019050919050565b5f6139f582613990565b6139ff818561399a565b9350613a0a836139aa565b805f5b83811015613a3a578151613a2188826139c8565b9750613a2c836139df565b925050600181019050613a0d565b5085935050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613a7981613750565b82525050565b5f613a8a8383613a70565b60208301905092915050565b5f602082019050919050565b5f613aac82613a47565b613ab68185613a51565b9350613ac183613a61565b805f5b83811015613af1578151613ad88882613a7f565b9750613ae383613a96565b925050600181019050613ac4565b5085935050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015613b5e578082015181840152602081019050613b43565b5f8484015250505050565b5f613b7382613b27565b613b7d8185613b31565b9350613b8d818560208601613b41565b613b96816137e2565b840191505092915050565b5f613bac8383613b69565b905092915050565b5f602082019050919050565b5f613bca82613afe565b613bd48185613b08565b935083602082028501613be685613b18565b805f5b85811015613c215784840389528151613c028582613ba1565b9450613c0d83613bb4565b925060208a01995050600181019050613be9565b50829750879550505050505092915050565b5f61010083015f8301518482035f860152613c4e82826139eb565b91505060208301518482036020860152613c688282613aa2565b91505060408301518482036040860152613c828282613bc0565b91505060608301518482036060860152613c9c8282613bc0565b91505060808301518482036080860152613cb68282613bc0565b91505060a0830151613ccb60a08601826139b9565b5060c0830151613cde60c08601826139b9565b5060e0830151613cf160e08601826139b9565b508091505092915050565b5f8160070b9050919050565b613d1181613cfc565b82525050565b5f61016082019050613d2b5f83018e6136d5565b613d38602083018d613969565b613d45604083018c613969565b613d52606083018b613981565b613d5f608083018a613981565b613d6c60a0830189613981565b81810360c0830152613d7e8188613c33565b905081810360e0830152613d928187613c33565b9050613da2610100830186613d08565b613db0610120830185613981565b613dbe610140830184613981565b9c9b505050505050505050505050565b5f82825260208201905092915050565b5f613de882613a47565b613df28185613dce565b9350613dfd83613a61565b805f5b83811015613e2d578151613e148882613a7f565b9750613e1f83613a96565b925050600181019050613e00565b5085935050505092915050565b5f6020820190508181035f830152613e528184613dde565b905092915050565b5f81519050919050565b5f82825260208201905092915050565b5f613e7e82613e5a565b613e888185613e64565b9350613e98818560208601613b41565b613ea1816137e2565b840191505092915050565b5f6020820190508181035f830152613ec48184613e74565b905092915050565b5f602082019050613edf5f830184613981565b92915050565b613eee81613cfc565b8114613ef8575f80fd5b50565b5f81359050613f0981613ee5565b92915050565b613f1881613978565b8114613f22575f80fd5b50565b5f81359050613f3381613f0f565b92915050565b613f428161395d565b8114613f4c575f80fd5b50565b5f81359050613f5d81613f39565b92915050565b5f63ffffffff82169050919050565b613f7b81613f63565b8114613f85575f80fd5b50565b5f81359050613f9681613f72565b92915050565b5f805f805f805f60c0888a031215613fb757613fb6613616565b5b5f88013567ffffffffffffffff811115613fd457613fd361361a565b5b613fe08a828b0161362a565b97509750506020613ff38a828b01613efb565b95505060406140048a828b01613f25565b94505060606140158a828b01613f25565b93505060806140268a828b01613f4f565b92505060a06140378a828b01613f88565b91505092959891949750929550565b5f80fd5b5f60a0828403121561405f5761405e614046565b5b81905092915050565b5f6020828403121561407d5761407c613616565b5b5f82013567ffffffffffffffff81111561409a5761409961361a565b5b6140a68482850161404a565b91505092915050565b6140b8816136fd565b81146140c2575f80fd5b50565b5f813590506140d3816140af565b92915050565b5f602082840312156140ee576140ed613616565b5b5f6140fb848285016140c5565b91505092915050565b5f805f806060858703121561411c5761411b613616565b5b5f85013567ffffffffffffffff8111156141395761413861361a565b5b6141458782880161362a565b9450945050602061415887828801613f88565b925050604061416987828801613efb565b91505092959194509250565b5f805f805f6080868803121561418e5761418d613616565b5b5f86013567ffffffffffffffff8111156141ab576141aa61361a565b5b6141b78882890161362a565b955095505060206141ca88828901613f25565b93505060406141db88828901613f25565b92505060606141ec88828901613f25565b9150509295509295909350565b5f81905092915050565b5f61420e83856141f9565b935061421b83858461389a565b82840190509392505050565b5f614233828486614203565b91508190509392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61427682613978565b915061428183613978565b92508282019050808211156142995761429861423f565b5b92915050565b5f82825260208201905092915050565b7f416464726573732063616e6e6f74206265207a65726f206164647265737300005f82015250565b5f6142e3601e8361429f565b91506142ee826142af565b602082019050919050565b5f6020820190508181035f830152614310816142d7565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061435b57607f821691505b60208210810361436e5761436d614317565b5b50919050565b7f4f6e6c792067616d6520636f6e74726f6c6c65722063616e20646f20746869735f82015250565b5f6143a860208361429f565b91506143b382614374565b602082019050919050565b5f6020820190508181035f8301526143d58161439c565b9050919050565b7f506f6f6c20646f6573206e6f74206578697374000000000000000000000000005f82015250565b5f61441060138361429f565b915061441b826143dc565b602082019050919050565b5f6020820190508181035f83015261443d81614404565b9050919050565b7f5468652067616d65206973206e6f742072756e6e696e672c20726f756e6473205f8201527f63616e206f6e6c7920626520656e646564206174207468697320706f696e7400602082015250565b5f61449e603f8361429f565b91506144a982614444565b604082019050919050565b5f6020820190508181035f8301526144cb81614492565b9050919050565b5f6144dd8385613e64565b93506144ea83858461389a565b6144f3836137e2565b840190509392505050565b5f60c0820190508181035f83015261451781898b6144d2565b90506145266020830188613d08565b6145336040830187613969565b6145406060830186613981565b61454d6080830185613981565b61455a60a0830184613981565b98975050505050505050565b5f6080820190508181035f83015261457f8187896144d2565b905061458e6020830186613d08565b61459b6040830185613969565b6145a86060830184613969565b9695505050505050565b5f80fd5b5f80fd5b5f80fd5b5f80833560016020038436030381126145da576145d96145b2565b5b80840192508235915067ffffffffffffffff8211156145fc576145fb6145b6565b5b602083019250600182023603831315614618576146176145ba565b5b509250929050565b7f5468697320706f6f6c20686173206120726f756e6420696e2070726f677265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f61467a60218361429f565b915061468582614620565b604082019050919050565b5f6020820190508181035f8301526146a78161466e565b9050919050565b7f5468652067616d65206973206e6f742072756e6e696e670000000000000000005f82015250565b5f6146e260178361429f565b91506146ed826146ae565b602082019050919050565b5f6020820190508181035f83015261470f816146d6565b9050919050565b7f43616c6c6572206d75737420626520454f41206f7220616c6c6f77656420636f5f8201527f6e74726163740000000000000000000000000000000000000000000000000000602082015250565b5f61477060268361429f565b915061477b82614716565b604082019050919050565b5f6020820190508181035f83015261479d81614764565b9050919050565b7f4e6565647320746f2073656e64204d6174696320746f207472616465000000005f82015250565b5f6147d8601c8361429f565b91506147e3826147a4565b602082019050919050565b5f6020820190508181035f830152614805816147cc565b9050919050565b7f547261646520616d6f756e742073686f756c64206265206869676865722074685f8201527f616e20746865206d696e696d756d000000000000000000000000000000000000602082015250565b5f614866602e8361429f565b91506148718261480c565b604082019050919050565b5f6020820190508181035f8301526148938161485a565b9050919050565b7f547261646520616d6f756e742073686f756c64206265206c6f776572207468615f8201527f6e20746865206d6178696d756d00000000000000000000000000000000000000602082015250565b5f6148f4602d8361429f565b91506148ff8261489a565b604082019050919050565b5f6020820190508181035f830152614921816148e8565b9050919050565b7f526f756e6420697320636c6f73696e67000000000000000000000000000000005f82015250565b5f61495c60108361429f565b915061496782614928565b602082019050919050565b5f6020820190508181035f83015261498981614950565b9050919050565b7f526f756e64206e6f7420737461727465642079657400000000000000000000005f82015250565b5f6149c460158361429f565b91506149cf82614990565b602082019050919050565b5f6020820190508181035f8301526149f1816149b8565b9050919050565b614a01816136ca565b8114614a0b575f80fd5b50565b5f81359050614a1c816149f8565b92915050565b5f60208284031215614a3757614a36613616565b5b5f614a4484828501614a0e565b91505092915050565b5f614a5782613978565b9150614a6283613978565b9250828203905081811115614a7a57614a7961423f565b5b92915050565b7f506f6f6c2069732066756c6c2c207761697420666f72206e65787420726f756e5f8201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b5f614ada60218361429f565b9150614ae582614a80565b604082019050919050565b5f6020820190508181035f830152614b0781614ace565b9050919050565b5f8083356001602003843603038112614b2a57614b296145b2565b5b80840192508235915067ffffffffffffffff821115614b4c57614b4b6145b6565b5b602083019250600182023603831315614b6857614b676145ba565b5b509250929050565b5f614b7a82613b27565b614b84818561429f565b9350614b94818560208601613b41565b614b9d816137e2565b840191505092915050565b5f610120820190508181035f830152614bc2818c8e6144d2565b9050614bd1602083018b6137b6565b614bde604083018a613981565b8181036060830152614bf08189614b70565b9050614bff6080830188613981565b81810360a0830152614c118187614b70565b905081810360c0830152614c258186614b70565b9050614c3460e0830185613d08565b818103610100830152614c478184614b70565b90509b9a5050505050505050505050565b7f57726f6e67206a61636b706f74206665652070657263656e746167652076616c5f8201527f7565000000000000000000000000000000000000000000000000000000000000602082015250565b5f614cb260228361429f565b9150614cbd82614c58565b604082019050919050565b5f6020820190508181035f830152614cdf81614ca6565b9050919050565b5f60a0820190508181035f830152614cff81888a6144d2565b9050614d0e6020830187613981565b614d1b6040830186613981565b614d286060830185613981565b614d356080830184613d08565b979650505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f614d7782613978565b9150614d8283613978565b9250828202614d9081613978565b91508282048414831517614da757614da661423f565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f614de582613978565b9150614df083613978565b925082614e0057614dff614dae565b5b828204905092915050565b5f819050815f5260205f209050919050565b5f8154614e2981614344565b614e33818661429f565b9450600182165f8114614e4d5760018114614e6357614e95565b60ff198316865281151560200286019350614e95565b614e6c85614e0b565b5f5b83811015614e8d57815481890152600182019150602081019050614e6e565b808801955050505b50505092915050565b5f60e0820190508181035f830152614eb7818a8c6144d2565b9050614ec660208301896137b6565b614ed36040830188613981565b614ee06060830187613981565b8181036080830152614ef28186614e1d565b9050614f0160a0830185613709565b614f0e60c0830184613709565b9998505050505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b7f57726f6e67206665652070657263656e746167652076616c75650000000000005f82015250565b5f614f7c601a8361429f565b9150614f8782614f48565b602082019050919050565b5f6020820190508181035f830152614fa981614f70565b9050919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830261500c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82614fd1565b6150168683614fd1565b95508019841693508086168417925050509392505050565b5f819050919050565b5f61505161504c61504784613978565b61502e565b613978565b9050919050565b5f819050919050565b61506a83615037565b61507e61507682615058565b848454614fdd565b825550505050565b5f90565b615092615086565b61509d818484615061565b505050565b5b818110156150c0576150b55f8261508a565b6001810190506150a3565b5050565b601f821115615105576150d681614fb0565b6150df84614fc2565b810160208510156150ee578190505b6151026150fa85614fc2565b8301826150a2565b50505b505050565b5f82821c905092915050565b5f6151255f198460080261510a565b1980831691505092915050565b5f61513d8383615116565b9150826002028217905092915050565b61515682613b27565b67ffffffffffffffff81111561516f5761516e6137f2565b5b6151798254614344565b6151848282856150c4565b5f60209050601f8311600181146151b5575f84156151a3578287015190505b6151ad8582615132565b865550615214565b601f1984166151c386614fb0565b5f5b828110156151ea578489015182556001820191506020850194506020810190506151c5565b868310156152075784890151615203601f891682615116565b8355505b6001600288020188555050505b505050505050565b5f82905092915050565b615230838361521c565b67ffffffffffffffff811115615249576152486137f2565b5b6152538254614344565b61525e8282856150c4565b5f601f83116001811461528b575f8415615279578287013590505b6152838582615132565b8655506152ea565b601f19841661529986614fb0565b5f5b828110156152c05784890135825560018201915060208501945060208101905061529b565b868310156152dd57848901356152d9601f891682615116565b8355505b6001600288020188555050505b50505050505050565b5f6020820190508181035f83015261530c8184866144d2565b90509392505050565b5f82905092915050565b601f8211156153605761533181614e0b565b61533a84614fc2565b81016020851015615349578190505b61535d61535585614fc2565b8301826150a2565b50505b505050565b61536f8383615315565b67ffffffffffffffff811115615388576153876137f2565b5b6153928254614344565b61539d82828561531f565b5f601f8311600181146153ca575f84156153b8578287013590505b6153c28582615132565b865550615429565b601f1984166153d886614e0b565b5f5b828110156153ff578489013582556001820191506020850194506020810190506153da565b8683101561541c5784890135615418601f891682615116565b8355505b6001600288020188555050505b50505050505050565b5f6080820190508181035f83015261544b8187896144d2565b905061545a60208301866137b6565b6154676040830185613981565b81810360608301526154798184614e1d565b90509695505050505050565b50565b5f6154935f836141f9565b915061549e82615485565b5f82019050919050565b5f6154b282615488565b9150819050919050565b7f436f756c646e27742073656e64206574686572000000000000000000000000005f82015250565b5f6154f060138361429f565b91506154fb826154bc565b602082019050919050565b5f6020820190508181035f83015261551d816154e4565b905091905056fea2646970667358221220697364a3f4d22fc3102bd583f624480c4c1431a8fe5634d6d7940454c341966764736f6c63430008170033

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

000000000000000000000000d6043e1ab748b30db50bbaf34608daf2b82c1638

-----Decoded View---------------
Arg [0] : newGameController (address): 0xd6043E1aB748B30DB50bbaF34608DAF2b82c1638

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000d6043e1ab748b30db50bbaf34608daf2b82c1638


Deployed Bytecode Sourcemap

4301:15034:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14877:196;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5184:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8141:226;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7266:235;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5371:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15079:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5291:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5108:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;5226:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18864:112;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7944:191;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5397:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10047:101;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3388:103;;;;;;;;;;;;;:::i;:::-;;8986:1055;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15974:2100;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2713:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7704:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5149:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10712:3154;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18299:559;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7507:191;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8530:120;;;;;;;;;;;;;:::i;:::-;;8656:324;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8373:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3646:220;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5074:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18080:213;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14877:196;14964:4;15066:1;15024:5;15030:6;;15024:13;;;;;;;:::i;:::-;;;;;;;;;;;;;:26;;:31;;:38;;;;14985:5;14991:6;;14985:13;;;;;;;:::i;:::-;;;;;;;;;;;;;:24;;:29;;:36;;;;:77;;;;:::i;:::-;14984:83;14977:90;;14877:196;;;;:::o;5184:37::-;;;;;;;;;;;;;:::o;8141:226::-;2599:13;:11;:13::i;:::-;8272:3:::1;8240:36;;:20;:36;;::::0;8232:80:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;8341:20;8321:17;;:40;;;;;;;;;;;;;;;;;;8141:226:::0;:::o;7266:235::-;2599:13;:11;:13::i;:::-;7405:3:::1;7369:40;;:24;:40;;::::0;7361:84:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;7471:24;7454:14;;:41;;;;;;;;;;;;;;;;;;7266:235:::0;:::o;5371:21::-;;;;;;;;;;;;;:::o;15079:129::-;15153:4;15201:1;15173:5;15179:6;;15173:13;;;;;;;:::i;:::-;;;;;;;;;;;;;:24;;;;;;;;;;;;:29;;;15166:36;;15079:129;;;;:::o;5291:45::-;;;;;;;;;;;;;:::o;5108:36::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5226:38::-;;;;;;;;;;;;;:::o;18864:112::-;18916:16;18950:20;18943:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18864:112;:::o;7944:191::-;2599:13;:11;:13::i;:::-;8054:3:::1;8029:29;;:13;:29;;::::0;8021:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;8116:13;8103:10;;:26;;;;;;;;;;;;;;;;;;7944:191:::0;:::o;5397:29::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;10047:101::-;10098:7;10121:21;10114:28;;10047:101;:::o;3388:103::-;2599:13;:11;:13::i;:::-;3453:30:::1;3480:1;3453:18;:30::i;:::-;3388:103::o:0;8986:1055::-;6695:14;;;;;;;;;;;6681:28;;:10;:28;;;6673:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;9199:6:::1;;7066:5;7072:6;;7066:13;;;;;;;:::i;:::-;;;;;;;;;;;;;:21;;;;;;;;;;;;7058:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;9214:26:::2;9243:5;9249:6;;9243:13;;;;;;;:::i;:::-;;;;;;;;;;;;;9214:42;;9268:18;9279:6;;9268:10;:18::i;:::-;9265:771;;;9305:9;;;;;;;;;;;9297:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;9417:5;9391:12;:23;;;:31;;;;;;;;;;;;;;;;;;;;9461:6;9431:12;:27;;;:36;;;;;;;;;;;;;;;;;;;;9509:17;9476:12;:30;;:50;;;;9566:15;9535:12;:28;;:46;;;;9739:6;;9603:143;;;;;;;:::i;:::-;;;;;;;;;9616:6;;9624;9632:12;:23;;;;;;;;;;;;9657:12;:25;;;9684:12;:25;;;9711:12;:26;;;9603:143;;;;;;;;;;;;:::i;:::-;;;;;;;;9265:771;;;9789:1;9764:12;:21;;;;;;;;;;;;:26;;::::0;9760:276:::2;;9825:5;9801:12;:21;;;:29;;;;;;;;;;;;;;;;;;;;9921:6;;9846:82;;;;;;;:::i;:::-;;;;;;;;;9857:6;;9865;9873:12;:23;;;;;;;;;;;;9898:12;:21;;;;;;;;;;;;9846:82;;;;;;;;;;:::i;:::-;;;;;;;;9939:37;9950:6;;9958:9;9969:6;9939:10;:37::i;:::-;9760:276;;;10006:22;;;;;;;;;;;;;;9760:276;9265:771;9207:834;6753:1:::1;;8986:1055:::0;;;;;;;:::o;15974:2100::-;16067:9;:16;;;;;;;;:::i;:::-;6827:18;6838:6;;6827:10;:18::i;:::-;6819:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;6946:9:::1;;;;;;;;;;;6938:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;16116:9:::2;:16;;;;;;;;:::i;:::-;7066:5;7072:6;;7066:13;;;;;;;:::i;:::-;;;;;;;;;;;;;:21;;;;;;;;;;;;7058:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;16149:17:::3;16155:10;16149:5;:17::i;:::-;:49;;;;16170:16;:28;16187:10;16170:28;;;;;;;;;;;;;;;;;;;;;;;;;16149:49;16141:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;16268:1;16256:9;:13;16248:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;16330:5;16336:9;:16;;;;;;;;:::i;:::-;16330:23;;;;;;;:::i;:::-;;;;;;;;;;;;;:36;;;16317:9;:49;;16309:108;;;;;;;;;;;;:::i;:::-;;;;;;;;;16445:5;16451:9;:16;;;;;;;;:::i;:::-;16445:23;;;;;;;:::i;:::-;;;;;;;;;;;;;:36;;;16432:9;:49;;16424:107;;;;;;;;;;;;:::i;:::-;;;;;;;;;16657:5;16663:9;:16;;;;;;;;:::i;:::-;16657:23;;;;;;;:::i;:::-;;;;;;;;;;;;;:39;;;16638:15;:58;;16630:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;16801:5;16807:9;:16;;;;;;;;:::i;:::-;16801:23;;;;;;;:::i;:::-;;;;;;;;;;;;;:41;;;16782:15;:60;;16774:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;16878:16;16907:9;:18;;;;;;;;;;:::i;:::-;16903:618;;;17032:1;16994:5;17000:9;:16;;;;;;;;:::i;:::-;16994:23;;;;;;;:::i;:::-;;;;;;;;;;;;;:37;;;:39;;;;:::i;:::-;16944:5;16950:9;:16;;;;;;;;:::i;:::-;16944:23;;;;;;;:::i;:::-;;;;;;;;;;;;;:34;;:39;;:46;;;;:89;;16936:134;;;;;;;;;;;;:::i;:::-;;;;;;;;;17090:121;17097:5;17103:9;:16;;;;;;;;:::i;:::-;17097:23;;;;;;;:::i;:::-;;;;;;;;;;;;;:34;;17133:9;17144;:19;;;;;;;;:::i;:::-;17165:9;:21;;;;;;;;:::i;:::-;17188:9;:22;;;;;;;;:::i;:::-;17090:6;:121::i;:::-;17079:132;;16903:618;;;17332:1;17294:5;17300:9;:16;;;;;;;;:::i;:::-;17294:23;;;;;;;:::i;:::-;;;;;;;;;;;;;:37;;;:39;;;;:::i;:::-;17242:5;17248:9;:16;;;;;;;;:::i;:::-;17242:23;;;;;;;:::i;:::-;;;;;;;;;;;;;:36;;:41;;:48;;;;:91;;17234:136;;;;;;;;;;;;:::i;:::-;;;;;;;;;17390:123;17397:5;17403:9;:16;;;;;;;;:::i;:::-;17397:23;;;;;;;:::i;:::-;;;;;;;;;;;;;:36;;17435:9;17446;:19;;;;;;;;:::i;:::-;17467:9;:21;;;;;;;;:::i;:::-;17490:9;:22;;;;;;;;:::i;:::-;17390:6;:123::i;:::-;17379:134;;16903:618;17529:35;;:::i;:::-;17594:9;:19;;;;;;;;:::i;:::-;17571:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:13;:20;;:42;;;;17648:9;:21;;;;;;;;:::i;:::-;17620:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:13;:25;;:49;;;;17705:9;:22;;;;;;;;:::i;:::-;17676:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:13;:26;;:51;;;;17765:5;17771:9;:16;;;;;;;;:::i;:::-;17765:23;;;;;;;:::i;:::-;;;;;;;;;;;;;:38;;;;;;;;;;;;17734:13;:28;;:69;;;;;;;;;::::0;::::3;17944:10;17821:247;;17926:9;:16;;;;;;;;:::i;:::-;17821:247;;;;;;;:::i;:::-;;;;;;;;;17833:9;:16;;;;;;;;:::i;:::-;17851:10;17863:9;17875;:18;;;;;;;;;;:::i;:::-;17874:34;;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;;;::::0;::::3;17910:8;17956:13;:20;;;17978:13;:25;;;18011:13;:28;;;18041:13;:26;;;17821:247;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;16134:1940;;6990:1:::2;;15974:2100:::0;;;:::o;2713:87::-;2759:7;2786:6;;;;;;;;;;;2779:13;;2713:87;:::o;7704:234::-;2599:13;:11;:13::i;:::-;7834:3:::1;7808:23;:29;;;;7799:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;7909:23;7886:20;;:46;;;;;;;;;;;;;;;;;;7704:234:::0;:::o;5149:30::-;;;;;;;;;;;;;:::o;10712:3154::-;6695:14;;;;;;;;;;;6681:28;;:10;:28;;;6673:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;10849:6:::1;;7066:5;7072:6;;7066:13;;;;;;;:::i;:::-;;;;;;;;;;;;;:21;;;;;;;;;;;;7058:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;10864:19:::2;10886:5;10892:6;;10886:13;;;;;;;:::i;:::-;;;;;;;;;;;;;10864:35;;10944:1;10912:5;:16;;:21;;:28;;;;:33;:72;;;;10983:1;10949:5;:18;;:23;;:30;;;;:35;10912:72;:112;;;;11009:5;:14;;;;;;;;;;;;10989:34;;:5;:16;;;;;;;;;;;;:34;;;10912:112;10908:1536;;;11059:5;:14;;;;;;;;;;;;11039:34;;:5;:16;;;;;;;;;;;;:34;;::::0;11035:1377:::2;;11139:30;11172:5;:16;;11139:49;;11199:32;11234:5;:18;;11199:53;;11265:17;11285:13;:30;;;11265:50;;11326:19;11348:15;:32;;;11326:54;;11393:44;11404:6;;11412:13;11427:9;11393:10;:44::i;:::-;11448:46;11459:6;;11467:15;11484:9;11448:10;:46::i;:::-;11512:104;11529:6;;11537:13;:18;;:25;;;;11564:12;11578:13;:30;;;11609:6;11512:104;;;;;;;;;;;:::i;:::-;;;;;;;;11632:110;11649:6;;11657:15;:20;;:27;;;;11686:14;11702:15;:32;;;11735:6;11632:110;;;;;;;;;;;:::i;:::-;;;;;;;;11793:13;:18;;:25;;;;11759:13;:30;;;:59;:126;;;;;11858:15;:20;;:27;;;;11822:15;:32;;;:63;11759:126;11755:174;;;11900:17;11910:6;;11900:9;:17::i;:::-;11755:174;11074:866;;;;11035:1377;;;11955:28;12020:1:::0;11986:5:::2;:18;;:23;;:30;;;;:35;:75;;12043:5;:18;;11986:75;;;12024:5;:16;;11986:75;11955:106;;12074:15;12092:11;:28;;;12074:46;;12131:42;12142:6;;12150:11;12163:9;12131:10;:42::i;:::-;12189:98;12206:6;;12214:11;:16;;:23;;;;12239:10;12251:11;:28;;;12280:6;12189:98;;;;;;;;;;;:::i;:::-;;;;;;;;12336:11;:16;;:23;;;;12304:11;:28;;;:55:::0;12300:103:::2;;12374:17;12384:6;;12374:9;:17::i;:::-;12300:103;11944:468;;11035:1377;12430:7;;;10908:1536;12454:24;12481:5;:18;;12454:45;;12506:23;12532:5;:16;;12506:42;;12580:5;:14;;;;;;;;;;;;12561:33;;:5;:16;;;;;;;;;;;;:33;;;12557:118;;;12615:5;:16;;12605:26;;12649:5;:18;;12640:27;;12557:118;12683:24;12710:38;12732:7;12741:6;12710:21;:38::i;:::-;12683:65;;12755:13;12786:9;12771:24;;:4;:12;;;:24;:51;;12810:4;:12;;;12771:51;;;12798:9;12771:51;;;12755:67;;12829:10;12869:5;12842:7;:24;;;:32;;;;:::i;:::-;12829:45;;12888:6;12897:7;:24;;;12888:33;;12883:464;12927:2;12923:1;:6;12883:464;;;12945:16;13023:3;13006:7;:13;;;13000:3;12983:4;:14;;;12965:7;:12;;12978:1;12965:15;;;;;;;;:::i;:::-;;;;;;;;;;:32;;;;:::i;:::-;:38;;;;:::i;:::-;:54;;;;:::i;:::-;:61;;;;:::i;:::-;12945:82;;13038:59;13048:7;:17;;13066:1;13048:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13081:7;:12;;13094:1;13081:15;;;;;;;;:::i;:::-;;;;;;;;;;13070:8;:26;;;;:::i;:::-;13038:9;:59::i;:::-;13186:7;:17;;13204:1;13186:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13111:157;;;13129:6;;13137:7;:17;;13155:1;13137:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13159:7;:12;;13172:1;13159:15;;;;;;;;:::i;:::-;;;;;;;;;;13176:8;13208:7;:21;;13230:1;13208:24;;;;;;;;:::i;:::-;;;;;;;;;13233:13;;;;;;;;;;;13247:20;;;;;;;;;;;13111:157;;;;;;;;;;;;;:::i;:::-;;;;;;;;13331:8;13304:7;:24;;;:35;;;;:::i;:::-;13277:7;:24;;:62;;;;12936:411;12931:3;;;;;;;12883:464;;;;13360:83;13377:6;;13385:7;:12;;:19;;;;13406:7;:24;;;13432:2;13436:6;13360:83;;;;;;;;;;;:::i;:::-;;;;;;;;13479:2;13452:7;:24;;:29;;;;13520:7;:12;;:19;;;;13492:7;:24;;;:47:::0;13488:373:::2;;13550:74;13560:10;;;;;;;;;;;13620:3;13604:13;;;;;;;;;;;13572:45;;13584:4;:18;;;13573:4;:8;;;:29;;;;:::i;:::-;13572:45;;;;:::i;:::-;:51;;;;:::i;:::-;13550:9;:74::i;:::-;13633:102;13643:17;;;;;;;;;;;13731:3;13708:20;;;;;;;;;;;13662:66;;13681:4;:25;;;13663:4;:15;;;:43;;;;:::i;:::-;13662:66;;;;:::i;:::-;:72;;;;:::i;:::-;13633:9;:102::i;:::-;13783:42;13793:10;;;;;;;;;;;13804:20;:18;:20::i;:::-;13783:9;:42::i;:::-;13836:17;13846:6;;13836:9;:17::i;:::-;13488:373;10857:3009;;;;;;7118:1;6753::::1;;10712:3154:::0;;;;:::o;18299:559::-;2599:13;:11;:13::i;:::-;18372:16:::1;:27;18389:9;18372:27;;;;;;;;;;;;;;;;;;;;;;;;;18368:485;;;18444:5;18414:16;:27;18431:9;18414:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;18531:6;18526:318;18547:20;:27;;;;18543:1;:31;18526:318;;;18629:9;18602:36;;:20;18623:1;18602:23;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:36;;::::0;18598:233:::1;;18687:20;18738:1;18708:20;:27;;;;:31;;;;:::i;:::-;18687:53;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18661:20;18682:1;18661:23;;;;;;;;:::i;:::-;;;;;;;;;;:79;;;;;;;;;;;;;;;;;;18761:20;:26;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;18808:5;;18598:233;18576:3;;;;;;;18526:318;;;;18368:485;18299:559:::0;:::o;7507:191::-;2599:13;:11;:13::i;:::-;7616:3:::1;7597:16;:22;;;;7588:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;7676:16;7660:13;;:32;;;;;;;;;;;;;;;;;;7507:191:::0;:::o;8530:120::-;2599:13;:11;:13::i;:::-;8587:4:::1;8575:9;;:16;;;;;;;;;;;;;;;;;;8598:21;;;;;;;;;;;::::0;:16:::1;:21;;;;;;:::i;:::-;;8631:13;;;;;;;;;;8530:120::o:0;8656:324::-;6695:14;;;;;;;;;;;6681:28;;:10;:28;;;6673:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;8824:4:::1;8800:5;8806:6;;8800:13;;;;;;;:::i;:::-;;;;;;;;;;;;;:21;;;:28;;;;;;;;;;;;;;;;;;8864:12;8835:5;8841:6;;8835:13;;;;;;;:::i;:::-;;;;;;;;;;;;;:26;;:41;;;;8912:12;8883:5;8889:6;;8883:13;;;;;;;:::i;:::-;;;;;;;;;;;;;:26;;:41;;;;8961:13;8931:5;8937:6;;8931:13;;;;;;;:::i;:::-;;;;;;;;;;;;;:27;;:43;;;;8656:324:::0;;;;;:::o;8373:151::-;2599:13;:11;:13::i;:::-;8450:5:::1;8438:9;;:17;;;;;;;;;;;;;;;;;;8481:6;;8462:16;:25;;;;;;;:::i;:::-;;8499:19;8511:6;;8499:19;;;;;;;:::i;:::-;;;;;;;;8373:151:::0;;:::o;3646:220::-;2599:13;:11;:13::i;:::-;3751:1:::1;3731:22;;:8;:22;;::::0;3727:93:::1;;3805:1;3777:31;;;;;;;;;;;:::i;:::-;;;;;;;;3727:93;3830:28;3849:8;3830:18;:28::i;:::-;3646:220:::0;:::o;5074:29::-;;;;;;;;;;;;;:::o;18080:213::-;2599:13;:11;:13::i;:::-;18153:16:::1;:27;18170:9;18153:27;;;;;;;;;;;;;;;;;;;;;;;;;18148:140;;18225:4;18195:16;:27;18212:9;18195:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;18242:20;18268:9;18242:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18148:140;18080:213:::0;:::o;2878:166::-;2949:12;:10;:12::i;:::-;2938:23;;:7;:5;:7::i;:::-;:23;;;2934:103;;3012:12;:10;:12::i;:::-;2985:40;;;;;;;;;;;:::i;:::-;;;;;;;;2934:103;2878:166::o;4026:191::-;4100:16;4119:6;;;;;;;;;;;4100:25;;4145:8;4136:6;;:17;;;;;;;;;;;;;;;;;;4200:8;4169:40;;4190:8;4169:40;;;;;;;;;;;;4089:128;4026:191;:::o;18982:139::-;19034:4;19106:9;19097:18;;:5;:18;;;19090:25;;18982:139;;;:::o;15214:466::-;15404:7;15420:8;:13;;15439:6;15420:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15453:8;:18;;15477:10;15453:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15495:8;:16;;15517:6;;15495:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15531:8;:18;;15555:11;;15531:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15574:8;:22;;15602:12;;15574:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15640:6;15622:8;:14;;;:24;;;;;;;:::i;:::-;;;;;;;;15660:8;:14;;;15653:21;;15214:466;;;;;;;;;;:::o;10154:552::-;10275:15;10313:5;:22;;;10293:5;:10;;:17;;;;:42;;;;:::i;:::-;10275:60;;10342:13;10368:9;10358:19;;:7;:19;:41;;10392:7;10358:41;;;10380:9;10358:41;;;10342:57;;10406:10;10444:5;10419;:22;;;:30;;;;:::i;:::-;10406:43;;10463:6;10472:5;:22;;;10463:31;;10458:207;10500:2;10496:1;:6;10458:207;;;10519:44;10529:5;:15;;10545:1;10529:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10549:5;:10;;10560:1;10549:13;;;;;;;;:::i;:::-;;;;;;;;;;10519:9;:44::i;:::-;10577:80;10591:6;;10599:5;:15;;10615:1;10599:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10619:5;:10;;10630:1;10619:13;;;;;;;;:::i;:::-;;;;;;;;;;10634:5;:19;;10654:1;10634:22;;;;;;;;:::i;:::-;;;;;;;;;10577:80;;;;;;;;;;:::i;:::-;;;;;;;;10504:4;;;;;;;10458:207;;;;10698:2;10673:5;:22;;:27;;;;10268:438;;;10154:552;;;;:::o;14652:219::-;14727:5;14733:6;;14727:13;;;;;;;:::i;:::-;;;;;;;;;;;;;:24;;;14720:31;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14765:5;14771:6;;14765:13;;;;;;;:::i;:::-;;;;;;;;;;;;;:26;;;14758:33;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14805:5;14811:6;;14805:13;;;;;;;:::i;:::-;;;;;;;;;;;;;:24;;;14798:31;;;;;;;;;;;14843:5;14849:6;;14843:13;;;;;;;:::i;:::-;;;;;;;;;;;;;:22;;;14836:29;;;;;;;;;;;14652:219;;:::o;13873:773::-;13993:19;;:::i;:::-;14021:11;14066:3;14051:6;:12;;;14035:13;;;;;;;;;;;:28;;;;;;:::i;:::-;:34;;;;:::i;:::-;14021:48;;14076:18;14135:3;14120:6;:12;;;14097:20;;;;;;;;;;;:35;;;;;;:::i;:::-;:41;;;;:::i;:::-;14076:62;;14145:16;14170:10;14164:3;:16;;;;:::i;:::-;14145:35;;14187:15;14227:7;:24;;;14205:7;:12;;:19;;;;:46;;;;:::i;:::-;14187:64;;14258:17;14293:8;14278:6;:12;;;:23;;;;:::i;:::-;14258:43;;14308:21;14347:3;14332:6;:12;;;:18;;;;:::i;:::-;14308:42;;14357:28;14403:10;14388:6;:12;;;:25;;;;:::i;:::-;14357:56;;14429:211;;;;;;;;14456:3;14429:211;;;;14480:10;14429:211;;;;14514:13;14429:211;;;;14558:20;14429:211;;;;14598:9;14429:211;;;;14625:7;14429:211;;;14422:218;;;;;;;;;13873:773;;;;:::o;19127:204::-;19207:9;19218:17;19247:2;19239:16;;19261:1;19271:6;19239:43;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19206:76;;;;19297:4;19289:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;19199:132;;19127:204;;:::o;726:98::-;779:7;806:10;799:17;;726:98;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:117;566:1;563;556:12;580:117;689:1;686;679:12;716:552;773:8;783:6;833:3;826:4;818:6;814:17;810:27;800:122;;841:79;;:::i;:::-;800:122;954:6;941:20;931:30;;984:18;976:6;973:30;970:117;;;1006:79;;:::i;:::-;970:117;1120:4;1112:6;1108:17;1096:29;;1174:3;1166:4;1158:6;1154:17;1144:8;1140:32;1137:41;1134:128;;;1181:79;;:::i;:::-;1134:128;716:552;;;;;:::o;1274:527::-;1344:6;1352;1401:2;1389:9;1380:7;1376:23;1372:32;1369:119;;;1407:79;;:::i;:::-;1369:119;1555:1;1544:9;1540:17;1527:31;1585:18;1577:6;1574:30;1571:117;;;1607:79;;:::i;:::-;1571:117;1720:64;1776:7;1767:6;1756:9;1752:22;1720:64;:::i;:::-;1702:82;;;;1498:296;1274:527;;;;;:::o;1807:90::-;1841:7;1884:5;1877:13;1870:21;1859:32;;1807:90;;;:::o;1903:109::-;1984:21;1999:5;1984:21;:::i;:::-;1979:3;1972:34;1903:109;;:::o;2018:210::-;2105:4;2143:2;2132:9;2128:18;2120:26;;2156:65;2218:1;2207:9;2203:17;2194:6;2156:65;:::i;:::-;2018:210;;;;:::o;2234:86::-;2269:7;2309:4;2302:5;2298:16;2287:27;;2234:86;;;:::o;2326:112::-;2409:22;2425:5;2409:22;:::i;:::-;2404:3;2397:35;2326:112;;:::o;2444:214::-;2533:4;2571:2;2560:9;2556:18;2548:26;;2584:67;2648:1;2637:9;2633:17;2624:6;2584:67;:::i;:::-;2444:214;;;;:::o;2664:126::-;2701:7;2741:42;2734:5;2730:54;2719:65;;2664:126;;;:::o;2796:96::-;2833:7;2862:24;2880:5;2862:24;:::i;:::-;2851:35;;2796:96;;;:::o;2898:122::-;2971:24;2989:5;2971:24;:::i;:::-;2964:5;2961:35;2951:63;;3010:1;3007;3000:12;2951:63;2898:122;:::o;3026:139::-;3072:5;3110:6;3097:20;3088:29;;3126:33;3153:5;3126:33;:::i;:::-;3026:139;;;;:::o;3171:329::-;3230:6;3279:2;3267:9;3258:7;3254:23;3250:32;3247:119;;;3285:79;;:::i;:::-;3247:119;3405:1;3430:53;3475:7;3466:6;3455:9;3451:22;3430:53;:::i;:::-;3420:63;;3376:117;3171:329;;;;:::o;3506:118::-;3593:24;3611:5;3593:24;:::i;:::-;3588:3;3581:37;3506:118;;:::o;3630:222::-;3723:4;3761:2;3750:9;3746:18;3738:26;;3774:71;3842:1;3831:9;3827:17;3818:6;3774:71;:::i;:::-;3630:222;;;;:::o;3858:117::-;3967:1;3964;3957:12;3981:102;4022:6;4073:2;4069:7;4064:2;4057:5;4053:14;4049:28;4039:38;;3981:102;;;:::o;4089:180::-;4137:77;4134:1;4127:88;4234:4;4231:1;4224:15;4258:4;4255:1;4248:15;4275:281;4358:27;4380:4;4358:27;:::i;:::-;4350:6;4346:40;4488:6;4476:10;4473:22;4452:18;4440:10;4437:34;4434:62;4431:88;;;4499:18;;:::i;:::-;4431:88;4539:10;4535:2;4528:22;4318:238;4275:281;;:::o;4562:129::-;4596:6;4623:20;;:::i;:::-;4613:30;;4652:33;4680:4;4672:6;4652:33;:::i;:::-;4562:129;;;:::o;4697:307::-;4758:4;4848:18;4840:6;4837:30;4834:56;;;4870:18;;:::i;:::-;4834:56;4908:29;4930:6;4908:29;:::i;:::-;4900:37;;4992:4;4986;4982:15;4974:23;;4697:307;;;:::o;5010:146::-;5107:6;5102:3;5097;5084:30;5148:1;5139:6;5134:3;5130:16;5123:27;5010:146;;;:::o;5162:423::-;5239:5;5264:65;5280:48;5321:6;5280:48;:::i;:::-;5264:65;:::i;:::-;5255:74;;5352:6;5345:5;5338:21;5390:4;5383:5;5379:16;5428:3;5419:6;5414:3;5410:16;5407:25;5404:112;;;5435:79;;:::i;:::-;5404:112;5525:54;5572:6;5567:3;5562;5525:54;:::i;:::-;5245:340;5162:423;;;;;:::o;5604:338::-;5659:5;5708:3;5701:4;5693:6;5689:17;5685:27;5675:122;;5716:79;;:::i;:::-;5675:122;5833:6;5820:20;5858:78;5932:3;5924:6;5917:4;5909:6;5905:17;5858:78;:::i;:::-;5849:87;;5665:277;5604:338;;;;:::o;5948:507::-;6016:6;6065:2;6053:9;6044:7;6040:23;6036:32;6033:119;;;6071:79;;:::i;:::-;6033:119;6219:1;6208:9;6204:17;6191:31;6249:18;6241:6;6238:30;6235:117;;;6271:79;;:::i;:::-;6235:117;6376:62;6430:7;6421:6;6410:9;6406:22;6376:62;:::i;:::-;6366:72;;6162:286;5948:507;;;;:::o;6461:90::-;6496:7;6539:5;6536:1;6525:20;6514:31;;6461:90;;;:::o;6557:112::-;6640:22;6656:5;6640:22;:::i;:::-;6635:3;6628:35;6557:112;;:::o;6675:77::-;6712:7;6741:5;6730:16;;6675:77;;;:::o;6758:118::-;6845:24;6863:5;6845:24;:::i;:::-;6840:3;6833:37;6758:118;;:::o;6882:114::-;6949:6;6983:5;6977:12;6967:22;;6882:114;;;:::o;7002:174::-;7091:11;7125:6;7120:3;7113:19;7165:4;7160:3;7156:14;7141:29;;7002:174;;;;:::o;7182:132::-;7249:4;7272:3;7264:11;;7302:4;7297:3;7293:14;7285:22;;7182:132;;;:::o;7320:108::-;7397:24;7415:5;7397:24;:::i;:::-;7392:3;7385:37;7320:108;;:::o;7434:179::-;7503:10;7524:46;7566:3;7558:6;7524:46;:::i;:::-;7602:4;7597:3;7593:14;7579:28;;7434:179;;;;:::o;7619:113::-;7689:4;7721;7716:3;7712:14;7704:22;;7619:113;;;:::o;7768:712::-;7877:3;7906:54;7954:5;7906:54;:::i;:::-;7976:76;8045:6;8040:3;7976:76;:::i;:::-;7969:83;;8076:56;8126:5;8076:56;:::i;:::-;8155:7;8186:1;8171:284;8196:6;8193:1;8190:13;8171:284;;;8272:6;8266:13;8299:63;8358:3;8343:13;8299:63;:::i;:::-;8292:70;;8385:60;8438:6;8385:60;:::i;:::-;8375:70;;8231:224;8218:1;8215;8211:9;8206:14;;8171:284;;;8175:14;8471:3;8464:10;;7882:598;;;7768:712;;;;:::o;8486:114::-;8553:6;8587:5;8581:12;8571:22;;8486:114;;;:::o;8606:174::-;8695:11;8729:6;8724:3;8717:19;8769:4;8764:3;8760:14;8745:29;;8606:174;;;;:::o;8786:132::-;8853:4;8876:3;8868:11;;8906:4;8901:3;8897:14;8889:22;;8786:132;;;:::o;8924:108::-;9001:24;9019:5;9001:24;:::i;:::-;8996:3;8989:37;8924:108;;:::o;9038:179::-;9107:10;9128:46;9170:3;9162:6;9128:46;:::i;:::-;9206:4;9201:3;9197:14;9183:28;;9038:179;;;;:::o;9223:113::-;9293:4;9325;9320:3;9316:14;9308:22;;9223:113;;;:::o;9372:712::-;9481:3;9510:54;9558:5;9510:54;:::i;:::-;9580:76;9649:6;9644:3;9580:76;:::i;:::-;9573:83;;9680:56;9730:5;9680:56;:::i;:::-;9759:7;9790:1;9775:284;9800:6;9797:1;9794:13;9775:284;;;9876:6;9870:13;9903:63;9962:3;9947:13;9903:63;:::i;:::-;9896:70;;9989:60;10042:6;9989:60;:::i;:::-;9979:70;;9835:224;9822:1;9819;9815:9;9810:14;;9775:284;;;9779:14;10075:3;10068:10;;9486:598;;;9372:712;;;;:::o;10090:124::-;10167:6;10201:5;10195:12;10185:22;;10090:124;;;:::o;10220:184::-;10319:11;10353:6;10348:3;10341:19;10393:4;10388:3;10384:14;10369:29;;10220:184;;;;:::o;10410:142::-;10487:4;10510:3;10502:11;;10540:4;10535:3;10531:14;10523:22;;10410:142;;;:::o;10558:99::-;10610:6;10644:5;10638:12;10628:22;;10558:99;;;:::o;10663:159::-;10737:11;10771:6;10766:3;10759:19;10811:4;10806:3;10802:14;10787:29;;10663:159;;;;:::o;10828:246::-;10909:1;10919:113;10933:6;10930:1;10927:13;10919:113;;;11018:1;11013:3;11009:11;11003:18;10999:1;10994:3;10990:11;10983:39;10955:2;10952:1;10948:10;10943:15;;10919:113;;;11066:1;11057:6;11052:3;11048:16;11041:27;10890:184;10828:246;;;:::o;11080:357::-;11158:3;11186:39;11219:5;11186:39;:::i;:::-;11241:61;11295:6;11290:3;11241:61;:::i;:::-;11234:68;;11311:65;11369:6;11364:3;11357:4;11350:5;11346:16;11311:65;:::i;:::-;11401:29;11423:6;11401:29;:::i;:::-;11396:3;11392:39;11385:46;;11162:275;11080:357;;;;:::o;11443:196::-;11532:10;11567:66;11629:3;11621:6;11567:66;:::i;:::-;11553:80;;11443:196;;;;:::o;11645:123::-;11725:4;11757;11752:3;11748:14;11740:22;;11645:123;;;:::o;11802:971::-;11931:3;11960:64;12018:5;11960:64;:::i;:::-;12040:86;12119:6;12114:3;12040:86;:::i;:::-;12033:93;;12152:3;12197:4;12189:6;12185:17;12180:3;12176:27;12227:66;12287:5;12227:66;:::i;:::-;12316:7;12347:1;12332:396;12357:6;12354:1;12351:13;12332:396;;;12428:9;12422:4;12418:20;12413:3;12406:33;12479:6;12473:13;12507:84;12586:4;12571:13;12507:84;:::i;:::-;12499:92;;12614:70;12677:6;12614:70;:::i;:::-;12604:80;;12713:4;12708:3;12704:14;12697:21;;12392:336;12379:1;12376;12372:9;12367:14;;12332:396;;;12336:14;12744:4;12737:11;;12764:3;12757:10;;11936:837;;;;;11802:971;;;;:::o;12851:2193::-;12970:3;13006:6;13001:3;12997:16;13095:4;13088:5;13084:16;13078:23;13148:3;13142:4;13138:14;13131:4;13126:3;13122:14;13115:38;13174:103;13272:4;13258:12;13174:103;:::i;:::-;13166:111;;13023:265;13375:4;13368:5;13364:16;13358:23;13428:3;13422:4;13418:14;13411:4;13406:3;13402:14;13395:38;13454:103;13552:4;13538:12;13454:103;:::i;:::-;13446:111;;13298:270;13653:4;13646:5;13642:16;13636:23;13706:3;13700:4;13696:14;13689:4;13684:3;13680:14;13673:38;13732:123;13850:4;13836:12;13732:123;:::i;:::-;13724:131;;13578:288;13953:4;13946:5;13942:16;13936:23;14006:3;14000:4;13996:14;13989:4;13984:3;13980:14;13973:38;14032:123;14150:4;14136:12;14032:123;:::i;:::-;14024:131;;13876:290;14257:4;14250:5;14246:16;14240:23;14310:3;14304:4;14300:14;14293:4;14288:3;14284:14;14277:38;14336:123;14454:4;14440:12;14336:123;:::i;:::-;14328:131;;14176:294;14553:4;14546:5;14542:16;14536:23;14572:63;14629:4;14624:3;14620:14;14606:12;14572:63;:::i;:::-;14480:165;14739:4;14732:5;14728:16;14722:23;14758:63;14815:4;14810:3;14806:14;14792:12;14758:63;:::i;:::-;14655:176;14925:4;14918:5;14914:16;14908:23;14944:63;15001:4;14996:3;14992:14;14978:12;14944:63;:::i;:::-;14841:176;15034:4;15027:11;;12975:2069;12851:2193;;;;:::o;15050:90::-;15085:7;15128:5;15125:1;15114:20;15103:31;;15050:90;;;:::o;15146:112::-;15229:22;15245:5;15229:22;:::i;:::-;15224:3;15217:35;15146:112;;:::o;15264:1598::-;15720:4;15758:3;15747:9;15743:19;15735:27;;15772:65;15834:1;15823:9;15819:17;15810:6;15772:65;:::i;:::-;15847:68;15911:2;15900:9;15896:18;15887:6;15847:68;:::i;:::-;15925;15989:2;15978:9;15974:18;15965:6;15925:68;:::i;:::-;16003:72;16071:2;16060:9;16056:18;16047:6;16003:72;:::i;:::-;16085:73;16153:3;16142:9;16138:19;16129:6;16085:73;:::i;:::-;16168;16236:3;16225:9;16221:19;16212:6;16168:73;:::i;:::-;16289:9;16283:4;16279:20;16273:3;16262:9;16258:19;16251:49;16317:108;16420:4;16411:6;16317:108;:::i;:::-;16309:116;;16473:9;16467:4;16463:20;16457:3;16446:9;16442:19;16435:49;16501:108;16604:4;16595:6;16501:108;:::i;:::-;16493:116;;16619:69;16683:3;16672:9;16668:19;16659:6;16619:69;:::i;:::-;16698:73;16766:3;16755:9;16751:19;16742:6;16698:73;:::i;:::-;16781:74;16850:3;16839:9;16835:19;16825:7;16781:74;:::i;:::-;15264:1598;;;;;;;;;;;;;;:::o;16868:184::-;16967:11;17001:6;16996:3;16989:19;17041:4;17036:3;17032:14;17017:29;;16868:184;;;;:::o;17088:732::-;17207:3;17236:54;17284:5;17236:54;:::i;:::-;17306:86;17385:6;17380:3;17306:86;:::i;:::-;17299:93;;17416:56;17466:5;17416:56;:::i;:::-;17495:7;17526:1;17511:284;17536:6;17533:1;17530:13;17511:284;;;17612:6;17606:13;17639:63;17698:3;17683:13;17639:63;:::i;:::-;17632:70;;17725:60;17778:6;17725:60;:::i;:::-;17715:70;;17571:224;17558:1;17555;17551:9;17546:14;;17511:284;;;17515:14;17811:3;17804:10;;17212:608;;;17088:732;;;;:::o;17826:373::-;17969:4;18007:2;17996:9;17992:18;17984:26;;18056:9;18050:4;18046:20;18042:1;18031:9;18027:17;18020:47;18084:108;18187:4;18178:6;18084:108;:::i;:::-;18076:116;;17826:373;;;;:::o;18205:98::-;18256:6;18290:5;18284:12;18274:22;;18205:98;;;:::o;18309:168::-;18392:11;18426:6;18421:3;18414:19;18466:4;18461:3;18457:14;18442:29;;18309:168;;;;:::o;18483:373::-;18569:3;18597:38;18629:5;18597:38;:::i;:::-;18651:70;18714:6;18709:3;18651:70;:::i;:::-;18644:77;;18730:65;18788:6;18783:3;18776:4;18769:5;18765:16;18730:65;:::i;:::-;18820:29;18842:6;18820:29;:::i;:::-;18815:3;18811:39;18804:46;;18573:283;18483:373;;;;:::o;18862:309::-;18973:4;19011:2;19000:9;18996:18;18988:26;;19060:9;19054:4;19050:20;19046:1;19035:9;19031:17;19024:47;19088:76;19159:4;19150:6;19088:76;:::i;:::-;19080:84;;18862:309;;;;:::o;19177:222::-;19270:4;19308:2;19297:9;19293:18;19285:26;;19321:71;19389:1;19378:9;19374:17;19365:6;19321:71;:::i;:::-;19177:222;;;;:::o;19405:118::-;19476:22;19492:5;19476:22;:::i;:::-;19469:5;19466:33;19456:61;;19513:1;19510;19503:12;19456:61;19405:118;:::o;19529:135::-;19573:5;19611:6;19598:20;19589:29;;19627:31;19652:5;19627:31;:::i;:::-;19529:135;;;;:::o;19670:122::-;19743:24;19761:5;19743:24;:::i;:::-;19736:5;19733:35;19723:63;;19782:1;19779;19772:12;19723:63;19670:122;:::o;19798:139::-;19844:5;19882:6;19869:20;19860:29;;19898:33;19925:5;19898:33;:::i;:::-;19798:139;;;;:::o;19943:118::-;20014:22;20030:5;20014:22;:::i;:::-;20007:5;20004:33;19994:61;;20051:1;20048;20041:12;19994:61;19943:118;:::o;20067:135::-;20111:5;20149:6;20136:20;20127:29;;20165:31;20190:5;20165:31;:::i;:::-;20067:135;;;;:::o;20208:93::-;20244:7;20284:10;20277:5;20273:22;20262:33;;20208:93;;;:::o;20307:120::-;20379:23;20396:5;20379:23;:::i;:::-;20372:5;20369:34;20359:62;;20417:1;20414;20407:12;20359:62;20307:120;:::o;20433:137::-;20478:5;20516:6;20503:20;20494:29;;20532:32;20558:5;20532:32;:::i;:::-;20433:137;;;;:::o;20576:1245::-;20686:6;20694;20702;20710;20718;20726;20734;20783:3;20771:9;20762:7;20758:23;20754:33;20751:120;;;20790:79;;:::i;:::-;20751:120;20938:1;20927:9;20923:17;20910:31;20968:18;20960:6;20957:30;20954:117;;;20990:79;;:::i;:::-;20954:117;21103:64;21159:7;21150:6;21139:9;21135:22;21103:64;:::i;:::-;21085:82;;;;20881:296;21216:2;21242:51;21285:7;21276:6;21265:9;21261:22;21242:51;:::i;:::-;21232:61;;21187:116;21342:2;21368:53;21413:7;21404:6;21393:9;21389:22;21368:53;:::i;:::-;21358:63;;21313:118;21470:2;21496:53;21541:7;21532:6;21521:9;21517:22;21496:53;:::i;:::-;21486:63;;21441:118;21598:3;21625:51;21668:7;21659:6;21648:9;21644:22;21625:51;:::i;:::-;21615:61;;21569:117;21725:3;21752:52;21796:7;21787:6;21776:9;21772:22;21752:52;:::i;:::-;21742:62;;21696:118;20576:1245;;;;;;;;;;:::o;21827:117::-;21936:1;21933;21926:12;21995:240;22076:5;22117:3;22108:6;22103:3;22099:16;22095:26;22092:113;;;22124:79;;:::i;:::-;22092:113;22223:6;22214:15;;21995:240;;;;:::o;22241:559::-;22335:6;22384:2;22372:9;22363:7;22359:23;22355:32;22352:119;;;22390:79;;:::i;:::-;22352:119;22538:1;22527:9;22523:17;22510:31;22568:18;22560:6;22557:30;22554:117;;;22590:79;;:::i;:::-;22554:117;22695:88;22775:7;22766:6;22755:9;22751:22;22695:88;:::i;:::-;22685:98;;22481:312;22241:559;;;;:::o;22806:118::-;22877:22;22893:5;22877:22;:::i;:::-;22870:5;22867:33;22857:61;;22914:1;22911;22904:12;22857:61;22806:118;:::o;22930:135::-;22974:5;23012:6;22999:20;22990:29;;23028:31;23053:5;23028:31;:::i;:::-;22930:135;;;;:::o;23071:325::-;23128:6;23177:2;23165:9;23156:7;23152:23;23148:32;23145:119;;;23183:79;;:::i;:::-;23145:119;23303:1;23328:51;23371:7;23362:6;23351:9;23347:22;23328:51;:::i;:::-;23318:61;;23274:115;23071:325;;;;:::o;23402:811::-;23487:6;23495;23503;23511;23560:2;23548:9;23539:7;23535:23;23531:32;23528:119;;;23566:79;;:::i;:::-;23528:119;23714:1;23703:9;23699:17;23686:31;23744:18;23736:6;23733:30;23730:117;;;23766:79;;:::i;:::-;23730:117;23879:64;23935:7;23926:6;23915:9;23911:22;23879:64;:::i;:::-;23861:82;;;;23657:296;23992:2;24018:52;24062:7;24053:6;24042:9;24038:22;24018:52;:::i;:::-;24008:62;;23963:117;24119:2;24145:51;24188:7;24179:6;24168:9;24164:22;24145:51;:::i;:::-;24135:61;;24090:116;23402:811;;;;;;;:::o;24219:963::-;24316:6;24324;24332;24340;24348;24397:3;24385:9;24376:7;24372:23;24368:33;24365:120;;;24404:79;;:::i;:::-;24365:120;24552:1;24541:9;24537:17;24524:31;24582:18;24574:6;24571:30;24568:117;;;24604:79;;:::i;:::-;24568:117;24717:64;24773:7;24764:6;24753:9;24749:22;24717:64;:::i;:::-;24699:82;;;;24495:296;24830:2;24856:53;24901:7;24892:6;24881:9;24877:22;24856:53;:::i;:::-;24846:63;;24801:118;24958:2;24984:53;25029:7;25020:6;25009:9;25005:22;24984:53;:::i;:::-;24974:63;;24929:118;25086:2;25112:53;25157:7;25148:6;25137:9;25133:22;25112:53;:::i;:::-;25102:63;;25057:118;24219:963;;;;;;;;:::o;25188:147::-;25289:11;25326:3;25311:18;;25188:147;;;;:::o;25363:327::-;25477:3;25498:88;25579:6;25574:3;25498:88;:::i;:::-;25491:95;;25596:56;25645:6;25640:3;25633:5;25596:56;:::i;:::-;25677:6;25672:3;25668:16;25661:23;;25363:327;;;;;:::o;25696:291::-;25836:3;25858:103;25957:3;25948:6;25940;25858:103;:::i;:::-;25851:110;;25978:3;25971:10;;25696:291;;;;;:::o;25993:180::-;26041:77;26038:1;26031:88;26138:4;26135:1;26128:15;26162:4;26159:1;26152:15;26179:191;26219:3;26238:20;26256:1;26238:20;:::i;:::-;26233:25;;26272:20;26290:1;26272:20;:::i;:::-;26267:25;;26315:1;26312;26308:9;26301:16;;26336:3;26333:1;26330:10;26327:36;;;26343:18;;:::i;:::-;26327:36;26179:191;;;;:::o;26376:169::-;26460:11;26494:6;26489:3;26482:19;26534:4;26529:3;26525:14;26510:29;;26376:169;;;;:::o;26551:180::-;26691:32;26687:1;26679:6;26675:14;26668:56;26551:180;:::o;26737:366::-;26879:3;26900:67;26964:2;26959:3;26900:67;:::i;:::-;26893:74;;26976:93;27065:3;26976:93;:::i;:::-;27094:2;27089:3;27085:12;27078:19;;26737:366;;;:::o;27109:419::-;27275:4;27313:2;27302:9;27298:18;27290:26;;27362:9;27356:4;27352:20;27348:1;27337:9;27333:17;27326:47;27390:131;27516:4;27390:131;:::i;:::-;27382:139;;27109:419;;;:::o;27534:180::-;27582:77;27579:1;27572:88;27679:4;27676:1;27669:15;27703:4;27700:1;27693:15;27720:320;27764:6;27801:1;27795:4;27791:12;27781:22;;27848:1;27842:4;27838:12;27869:18;27859:81;;27925:4;27917:6;27913:17;27903:27;;27859:81;27987:2;27979:6;27976:14;27956:18;27953:38;27950:84;;28006:18;;:::i;:::-;27950:84;27771:269;27720:320;;;:::o;28046:182::-;28186:34;28182:1;28174:6;28170:14;28163:58;28046:182;:::o;28234:366::-;28376:3;28397:67;28461:2;28456:3;28397:67;:::i;:::-;28390:74;;28473:93;28562:3;28473:93;:::i;:::-;28591:2;28586:3;28582:12;28575:19;;28234:366;;;:::o;28606:419::-;28772:4;28810:2;28799:9;28795:18;28787:26;;28859:9;28853:4;28849:20;28845:1;28834:9;28830:17;28823:47;28887:131;29013:4;28887:131;:::i;:::-;28879:139;;28606:419;;;:::o;29031:169::-;29171:21;29167:1;29159:6;29155:14;29148:45;29031:169;:::o;29206:366::-;29348:3;29369:67;29433:2;29428:3;29369:67;:::i;:::-;29362:74;;29445:93;29534:3;29445:93;:::i;:::-;29563:2;29558:3;29554:12;29547:19;;29206:366;;;:::o;29578:419::-;29744:4;29782:2;29771:9;29767:18;29759:26;;29831:9;29825:4;29821:20;29817:1;29806:9;29802:17;29795:47;29859:131;29985:4;29859:131;:::i;:::-;29851:139;;29578:419;;;:::o;30003:250::-;30143:34;30139:1;30131:6;30127:14;30120:58;30212:33;30207:2;30199:6;30195:15;30188:58;30003:250;:::o;30259:366::-;30401:3;30422:67;30486:2;30481:3;30422:67;:::i;:::-;30415:74;;30498:93;30587:3;30498:93;:::i;:::-;30616:2;30611:3;30607:12;30600:19;;30259:366;;;:::o;30631:419::-;30797:4;30835:2;30824:9;30820:18;30812:26;;30884:9;30878:4;30874:20;30870:1;30859:9;30855:17;30848:47;30912:131;31038:4;30912:131;:::i;:::-;30904:139;;30631:419;;;:::o;31078:314::-;31174:3;31195:70;31258:6;31253:3;31195:70;:::i;:::-;31188:77;;31275:56;31324:6;31319:3;31312:5;31275:56;:::i;:::-;31356:29;31378:6;31356:29;:::i;:::-;31351:3;31347:39;31340:46;;31078:314;;;;;:::o;31398:866::-;31651:4;31689:3;31678:9;31674:19;31666:27;;31739:9;31733:4;31729:20;31725:1;31714:9;31710:17;31703:47;31767:86;31848:4;31839:6;31831;31767:86;:::i;:::-;31759:94;;31863:68;31927:2;31916:9;31912:18;31903:6;31863:68;:::i;:::-;31941;32005:2;31994:9;31990:18;31981:6;31941:68;:::i;:::-;32019:72;32087:2;32076:9;32072:18;32063:6;32019:72;:::i;:::-;32101:73;32169:3;32158:9;32154:19;32145:6;32101:73;:::i;:::-;32184;32252:3;32241:9;32237:19;32228:6;32184:73;:::i;:::-;31398:866;;;;;;;;;;:::o;32270:636::-;32463:4;32501:3;32490:9;32486:19;32478:27;;32551:9;32545:4;32541:20;32537:1;32526:9;32522:17;32515:47;32579:86;32660:4;32651:6;32643;32579:86;:::i;:::-;32571:94;;32675:68;32739:2;32728:9;32724:18;32715:6;32675:68;:::i;:::-;32753;32817:2;32806:9;32802:18;32793:6;32753:68;:::i;:::-;32831;32895:2;32884:9;32880:18;32871:6;32831:68;:::i;:::-;32270:636;;;;;;;;:::o;32912:117::-;33021:1;33018;33011:12;33035:117;33144:1;33141;33134:12;33158:117;33267:1;33264;33257:12;33281:724;33358:4;33364:6;33420:11;33407:25;33520:1;33514:4;33510:12;33499:8;33483:14;33479:29;33475:48;33455:18;33451:73;33441:168;;33528:79;;:::i;:::-;33441:168;33640:18;33630:8;33626:33;33618:41;;33692:4;33679:18;33669:28;;33720:18;33712:6;33709:30;33706:117;;;33742:79;;:::i;:::-;33706:117;33850:2;33844:4;33840:13;33832:21;;33907:4;33899:6;33895:17;33879:14;33875:38;33869:4;33865:49;33862:136;;;33917:79;;:::i;:::-;33862:136;33371:634;33281:724;;;;;:::o;34011:220::-;34151:34;34147:1;34139:6;34135:14;34128:58;34220:3;34215:2;34207:6;34203:15;34196:28;34011:220;:::o;34237:366::-;34379:3;34400:67;34464:2;34459:3;34400:67;:::i;:::-;34393:74;;34476:93;34565:3;34476:93;:::i;:::-;34594:2;34589:3;34585:12;34578:19;;34237:366;;;:::o;34609:419::-;34775:4;34813:2;34802:9;34798:18;34790:26;;34862:9;34856:4;34852:20;34848:1;34837:9;34833:17;34826:47;34890:131;35016:4;34890:131;:::i;:::-;34882:139;;34609:419;;;:::o;35034:173::-;35174:25;35170:1;35162:6;35158:14;35151:49;35034:173;:::o;35213:366::-;35355:3;35376:67;35440:2;35435:3;35376:67;:::i;:::-;35369:74;;35452:93;35541:3;35452:93;:::i;:::-;35570:2;35565:3;35561:12;35554:19;;35213:366;;;:::o;35585:419::-;35751:4;35789:2;35778:9;35774:18;35766:26;;35838:9;35832:4;35828:20;35824:1;35813:9;35809:17;35802:47;35866:131;35992:4;35866:131;:::i;:::-;35858:139;;35585:419;;;:::o;36010:225::-;36150:34;36146:1;36138:6;36134:14;36127:58;36219:8;36214:2;36206:6;36202:15;36195:33;36010:225;:::o;36241:366::-;36383:3;36404:67;36468:2;36463:3;36404:67;:::i;:::-;36397:74;;36480:93;36569:3;36480:93;:::i;:::-;36598:2;36593:3;36589:12;36582:19;;36241:366;;;:::o;36613:419::-;36779:4;36817:2;36806:9;36802:18;36794:26;;36866:9;36860:4;36856:20;36852:1;36841:9;36837:17;36830:47;36894:131;37020:4;36894:131;:::i;:::-;36886:139;;36613:419;;;:::o;37038:178::-;37178:30;37174:1;37166:6;37162:14;37155:54;37038:178;:::o;37222:366::-;37364:3;37385:67;37449:2;37444:3;37385:67;:::i;:::-;37378:74;;37461:93;37550:3;37461:93;:::i;:::-;37579:2;37574:3;37570:12;37563:19;;37222:366;;;:::o;37594:419::-;37760:4;37798:2;37787:9;37783:18;37775:26;;37847:9;37841:4;37837:20;37833:1;37822:9;37818:17;37811:47;37875:131;38001:4;37875:131;:::i;:::-;37867:139;;37594:419;;;:::o;38019:233::-;38159:34;38155:1;38147:6;38143:14;38136:58;38228:16;38223:2;38215:6;38211:15;38204:41;38019:233;:::o;38258:366::-;38400:3;38421:67;38485:2;38480:3;38421:67;:::i;:::-;38414:74;;38497:93;38586:3;38497:93;:::i;:::-;38615:2;38610:3;38606:12;38599:19;;38258:366;;;:::o;38630:419::-;38796:4;38834:2;38823:9;38819:18;38811:26;;38883:9;38877:4;38873:20;38869:1;38858:9;38854:17;38847:47;38911:131;39037:4;38911:131;:::i;:::-;38903:139;;38630:419;;;:::o;39055:232::-;39195:34;39191:1;39183:6;39179:14;39172:58;39264:15;39259:2;39251:6;39247:15;39240:40;39055:232;:::o;39293:366::-;39435:3;39456:67;39520:2;39515:3;39456:67;:::i;:::-;39449:74;;39532:93;39621:3;39532:93;:::i;:::-;39650:2;39645:3;39641:12;39634:19;;39293:366;;;:::o;39665:419::-;39831:4;39869:2;39858:9;39854:18;39846:26;;39918:9;39912:4;39908:20;39904:1;39893:9;39889:17;39882:47;39946:131;40072:4;39946:131;:::i;:::-;39938:139;;39665:419;;;:::o;40090:166::-;40230:18;40226:1;40218:6;40214:14;40207:42;40090:166;:::o;40262:366::-;40404:3;40425:67;40489:2;40484:3;40425:67;:::i;:::-;40418:74;;40501:93;40590:3;40501:93;:::i;:::-;40619:2;40614:3;40610:12;40603:19;;40262:366;;;:::o;40634:419::-;40800:4;40838:2;40827:9;40823:18;40815:26;;40887:9;40881:4;40877:20;40873:1;40862:9;40858:17;40851:47;40915:131;41041:4;40915:131;:::i;:::-;40907:139;;40634:419;;;:::o;41059:171::-;41199:23;41195:1;41187:6;41183:14;41176:47;41059:171;:::o;41236:366::-;41378:3;41399:67;41463:2;41458:3;41399:67;:::i;:::-;41392:74;;41475:93;41564:3;41475:93;:::i;:::-;41593:2;41588:3;41584:12;41577:19;;41236:366;;;:::o;41608:419::-;41774:4;41812:2;41801:9;41797:18;41789:26;;41861:9;41855:4;41851:20;41847:1;41836:9;41832:17;41825:47;41889:131;42015:4;41889:131;:::i;:::-;41881:139;;41608:419;;;:::o;42033:116::-;42103:21;42118:5;42103:21;:::i;:::-;42096:5;42093:32;42083:60;;42139:1;42136;42129:12;42083:60;42033:116;:::o;42155:133::-;42198:5;42236:6;42223:20;42214:29;;42252:30;42276:5;42252:30;:::i;:::-;42155:133;;;;:::o;42294:323::-;42350:6;42399:2;42387:9;42378:7;42374:23;42370:32;42367:119;;;42405:79;;:::i;:::-;42367:119;42525:1;42550:50;42592:7;42583:6;42572:9;42568:22;42550:50;:::i;:::-;42540:60;;42496:114;42294:323;;;;:::o;42623:194::-;42663:4;42683:20;42701:1;42683:20;:::i;:::-;42678:25;;42717:20;42735:1;42717:20;:::i;:::-;42712:25;;42761:1;42758;42754:9;42746:17;;42785:1;42779:4;42776:11;42773:37;;;42790:18;;:::i;:::-;42773:37;42623:194;;;;:::o;42823:220::-;42963:34;42959:1;42951:6;42947:14;42940:58;43032:3;43027:2;43019:6;43015:15;43008:28;42823:220;:::o;43049:366::-;43191:3;43212:67;43276:2;43271:3;43212:67;:::i;:::-;43205:74;;43288:93;43377:3;43288:93;:::i;:::-;43406:2;43401:3;43397:12;43390:19;;43049:366;;;:::o;43421:419::-;43587:4;43625:2;43614:9;43610:18;43602:26;;43674:9;43668:4;43664:20;43660:1;43649:9;43645:17;43638:47;43702:131;43828:4;43702:131;:::i;:::-;43694:139;;43421:419;;;:::o;43846:725::-;43924:4;43930:6;43986:11;43973:25;44086:1;44080:4;44076:12;44065:8;44049:14;44045:29;44041:48;44021:18;44017:73;44007:168;;44094:79;;:::i;:::-;44007:168;44206:18;44196:8;44192:33;44184:41;;44258:4;44245:18;44235:28;;44286:18;44278:6;44275:30;44272:117;;;44308:79;;:::i;:::-;44272:117;44416:2;44410:4;44406:13;44398:21;;44473:4;44465:6;44461:17;44445:14;44441:38;44435:4;44431:49;44428:136;;;44483:79;;:::i;:::-;44428:136;43937:634;43846:725;;;;;:::o;44577:377::-;44665:3;44693:39;44726:5;44693:39;:::i;:::-;44748:71;44812:6;44807:3;44748:71;:::i;:::-;44741:78;;44828:65;44886:6;44881:3;44874:4;44867:5;44863:16;44828:65;:::i;:::-;44918:29;44940:6;44918:29;:::i;:::-;44913:3;44909:39;44902:46;;44669:285;44577:377;;;;:::o;44960:1571::-;45381:4;45419:3;45408:9;45404:19;45396:27;;45469:9;45463:4;45459:20;45455:1;45444:9;45440:17;45433:47;45497:86;45578:4;45569:6;45561;45497:86;:::i;:::-;45489:94;;45593:72;45661:2;45650:9;45646:18;45637:6;45593:72;:::i;:::-;45675;45743:2;45732:9;45728:18;45719:6;45675:72;:::i;:::-;45794:9;45788:4;45784:20;45779:2;45768:9;45764:18;45757:48;45822:78;45895:4;45886:6;45822:78;:::i;:::-;45814:86;;45910:73;45978:3;45967:9;45963:19;45954:6;45910:73;:::i;:::-;46031:9;46025:4;46021:20;46015:3;46004:9;46000:19;45993:49;46059:78;46132:4;46123:6;46059:78;:::i;:::-;46051:86;;46185:9;46179:4;46175:20;46169:3;46158:9;46154:19;46147:49;46213:78;46286:4;46277:6;46213:78;:::i;:::-;46205:86;;46301:69;46365:3;46354:9;46350:19;46341:6;46301:69;:::i;:::-;46418:9;46412:4;46408:20;46402:3;46391:9;46387:19;46380:49;46446:78;46519:4;46510:6;46446:78;:::i;:::-;46438:86;;44960:1571;;;;;;;;;;;;;:::o;46537:221::-;46677:34;46673:1;46665:6;46661:14;46654:58;46746:4;46741:2;46733:6;46729:15;46722:29;46537:221;:::o;46764:366::-;46906:3;46927:67;46991:2;46986:3;46927:67;:::i;:::-;46920:74;;47003:93;47092:3;47003:93;:::i;:::-;47121:2;47116:3;47112:12;47105:19;;46764:366;;;:::o;47136:419::-;47302:4;47340:2;47329:9;47325:18;47317:26;;47389:9;47383:4;47379:20;47375:1;47364:9;47360:17;47353:47;47417:131;47543:4;47417:131;:::i;:::-;47409:139;;47136:419;;;:::o;47561:763::-;47790:4;47828:3;47817:9;47813:19;47805:27;;47878:9;47872:4;47868:20;47864:1;47853:9;47849:17;47842:47;47906:86;47987:4;47978:6;47970;47906:86;:::i;:::-;47898:94;;48002:72;48070:2;48059:9;48055:18;48046:6;48002:72;:::i;:::-;48084;48152:2;48141:9;48137:18;48128:6;48084:72;:::i;:::-;48166;48234:2;48223:9;48219:18;48210:6;48166:72;:::i;:::-;48248:69;48312:3;48301:9;48297:19;48288:6;48248:69;:::i;:::-;47561:763;;;;;;;;;:::o;48330:180::-;48378:77;48375:1;48368:88;48475:4;48472:1;48465:15;48499:4;48496:1;48489:15;48516:410;48556:7;48579:20;48597:1;48579:20;:::i;:::-;48574:25;;48613:20;48631:1;48613:20;:::i;:::-;48608:25;;48668:1;48665;48661:9;48690:30;48708:11;48690:30;:::i;:::-;48679:41;;48869:1;48860:7;48856:15;48853:1;48850:22;48830:1;48823:9;48803:83;48780:139;;48899:18;;:::i;:::-;48780:139;48564:362;48516:410;;;;:::o;48932:180::-;48980:77;48977:1;48970:88;49077:4;49074:1;49067:15;49101:4;49098:1;49091:15;49118:185;49158:1;49175:20;49193:1;49175:20;:::i;:::-;49170:25;;49209:20;49227:1;49209:20;:::i;:::-;49204:25;;49248:1;49238:35;;49253:18;;:::i;:::-;49238:35;49295:1;49292;49288:9;49283:14;;49118:185;;;;:::o;49309:141::-;49358:4;49381:3;49373:11;;49404:3;49401:1;49394:14;49438:4;49435:1;49425:18;49417:26;;49309:141;;;:::o;49480:831::-;49565:3;49602:5;49596:12;49631:36;49657:9;49631:36;:::i;:::-;49683:71;49747:6;49742:3;49683:71;:::i;:::-;49676:78;;49785:1;49774:9;49770:17;49801:1;49796:164;;;;49974:1;49969:336;;;;49763:542;;49796:164;49880:4;49876:9;49865;49861:25;49856:3;49849:38;49940:6;49933:14;49926:22;49920:4;49916:33;49911:3;49907:43;49900:50;;49796:164;;49969:336;50036:38;50068:5;50036:38;:::i;:::-;50096:1;50110:154;50124:6;50121:1;50118:13;50110:154;;;50198:7;50192:14;50188:1;50183:3;50179:11;50172:35;50248:1;50239:7;50235:15;50224:26;;50146:4;50143:1;50139:12;50134:17;;50110:154;;;50293:1;50288:3;50284:11;50277:18;;49976:329;;49763:542;;49569:742;;49480:831;;;;:::o;50317:1062::-;50615:4;50653:3;50642:9;50638:19;50630:27;;50703:9;50697:4;50693:20;50689:1;50678:9;50674:17;50667:47;50731:86;50812:4;50803:6;50795;50731:86;:::i;:::-;50723:94;;50827:72;50895:2;50884:9;50880:18;50871:6;50827:72;:::i;:::-;50909;50977:2;50966:9;50962:18;50953:6;50909:72;:::i;:::-;50991;51059:2;51048:9;51044:18;51035:6;50991:72;:::i;:::-;51111:9;51105:4;51101:20;51095:3;51084:9;51080:19;51073:49;51139:75;51209:4;51200:6;51139:75;:::i;:::-;51131:83;;51224:69;51288:3;51277:9;51273:19;51264:6;51224:69;:::i;:::-;51303;51367:3;51356:9;51352:19;51343:6;51303:69;:::i;:::-;50317:1062;;;;;;;;;;;:::o;51385:180::-;51433:77;51430:1;51423:88;51530:4;51527:1;51520:15;51554:4;51551:1;51544:15;51571:176;51711:28;51707:1;51699:6;51695:14;51688:52;51571:176;:::o;51753:366::-;51895:3;51916:67;51980:2;51975:3;51916:67;:::i;:::-;51909:74;;51992:93;52081:3;51992:93;:::i;:::-;52110:2;52105:3;52101:12;52094:19;;51753:366;;;:::o;52125:419::-;52291:4;52329:2;52318:9;52314:18;52306:26;;52378:9;52372:4;52368:20;52364:1;52353:9;52349:17;52342:47;52406:131;52532:4;52406:131;:::i;:::-;52398:139;;52125:419;;;:::o;52550:140::-;52598:4;52621:3;52613:11;;52644:3;52641:1;52634:14;52678:4;52675:1;52665:18;52657:26;;52550:140;;;:::o;52696:93::-;52733:6;52780:2;52775;52768:5;52764:14;52760:23;52750:33;;52696:93;;;:::o;52795:107::-;52839:8;52889:5;52883:4;52879:16;52858:37;;52795:107;;;;:::o;52908:393::-;52977:6;53027:1;53015:10;53011:18;53050:97;53080:66;53069:9;53050:97;:::i;:::-;53168:39;53198:8;53187:9;53168:39;:::i;:::-;53156:51;;53240:4;53236:9;53229:5;53225:21;53216:30;;53289:4;53279:8;53275:19;53268:5;53265:30;53255:40;;52984:317;;52908:393;;;;;:::o;53307:60::-;53335:3;53356:5;53349:12;;53307:60;;;:::o;53373:142::-;53423:9;53456:53;53474:34;53483:24;53501:5;53483:24;:::i;:::-;53474:34;:::i;:::-;53456:53;:::i;:::-;53443:66;;53373:142;;;:::o;53521:75::-;53564:3;53585:5;53578:12;;53521:75;;;:::o;53602:269::-;53712:39;53743:7;53712:39;:::i;:::-;53773:91;53822:41;53846:16;53822:41;:::i;:::-;53814:6;53807:4;53801:11;53773:91;:::i;:::-;53767:4;53760:105;53678:193;53602:269;;;:::o;53877:73::-;53922:3;53877:73;:::o;53956:189::-;54033:32;;:::i;:::-;54074:65;54132:6;54124;54118:4;54074:65;:::i;:::-;54009:136;53956:189;;:::o;54151:186::-;54211:120;54228:3;54221:5;54218:14;54211:120;;;54282:39;54319:1;54312:5;54282:39;:::i;:::-;54255:1;54248:5;54244:13;54235:22;;54211:120;;;54151:186;;:::o;54343:541::-;54443:2;54438:3;54435:11;54432:445;;;54477:37;54508:5;54477:37;:::i;:::-;54560:29;54578:10;54560:29;:::i;:::-;54550:8;54546:44;54743:2;54731:10;54728:18;54725:49;;;54764:8;54749:23;;54725:49;54787:80;54843:22;54861:3;54843:22;:::i;:::-;54833:8;54829:37;54816:11;54787:80;:::i;:::-;54447:430;;54432:445;54343:541;;;:::o;54890:117::-;54944:8;54994:5;54988:4;54984:16;54963:37;;54890:117;;;;:::o;55013:169::-;55057:6;55090:51;55138:1;55134:6;55126:5;55123:1;55119:13;55090:51;:::i;:::-;55086:56;55171:4;55165;55161:15;55151:25;;55064:118;55013:169;;;;:::o;55187:295::-;55263:4;55409:29;55434:3;55428:4;55409:29;:::i;:::-;55401:37;;55471:3;55468:1;55464:11;55458:4;55455:21;55447:29;;55187:295;;;;:::o;55487:1392::-;55603:37;55636:3;55603:37;:::i;:::-;55705:18;55697:6;55694:30;55691:56;;;55727:18;;:::i;:::-;55691:56;55771:38;55803:4;55797:11;55771:38;:::i;:::-;55856:66;55915:6;55907;55901:4;55856:66;:::i;:::-;55949:1;55973:4;55960:17;;56005:2;55997:6;55994:14;56022:1;56017:617;;;;56678:1;56695:6;56692:77;;;56744:9;56739:3;56735:19;56729:26;56720:35;;56692:77;56795:67;56855:6;56848:5;56795:67;:::i;:::-;56789:4;56782:81;56651:222;55987:886;;56017:617;56069:4;56065:9;56057:6;56053:22;56103:36;56134:4;56103:36;:::i;:::-;56161:1;56175:208;56189:7;56186:1;56183:14;56175:208;;;56268:9;56263:3;56259:19;56253:26;56245:6;56238:42;56319:1;56311:6;56307:14;56297:24;;56366:2;56355:9;56351:18;56338:31;;56212:4;56209:1;56205:12;56200:17;;56175:208;;;56411:6;56402:7;56399:19;56396:179;;;56469:9;56464:3;56460:19;56454:26;56512:48;56554:4;56546:6;56542:17;56531:9;56512:48;:::i;:::-;56504:6;56497:64;56419:156;56396:179;56621:1;56617;56609:6;56605:14;56601:22;56595:4;56588:36;56024:610;;;55987:886;;55578:1301;;;55487:1392;;:::o;56885:96::-;56943:6;56971:3;56961:13;;56885:96;;;;:::o;56987:1398::-;57109:43;57148:3;57143;57109:43;:::i;:::-;57217:18;57209:6;57206:30;57203:56;;;57239:18;;:::i;:::-;57203:56;57283:38;57315:4;57309:11;57283:38;:::i;:::-;57368:66;57427:6;57419;57413:4;57368:66;:::i;:::-;57461:1;57490:2;57482:6;57479:14;57507:1;57502:631;;;;58177:1;58194:6;58191:84;;;58250:9;58245:3;58241:19;58228:33;58219:42;;58191:84;58301:67;58361:6;58354:5;58301:67;:::i;:::-;58295:4;58288:81;58150:229;57472:907;;57502:631;57554:4;57550:9;57542:6;57538:22;57588:36;57619:4;57588:36;:::i;:::-;57646:1;57660:215;57674:7;57671:1;57668:14;57660:215;;;57760:9;57755:3;57751:19;57738:33;57730:6;57723:49;57811:1;57803:6;57799:14;57789:24;;57858:2;57847:9;57843:18;57830:31;;57697:4;57694:1;57690:12;57685:17;;57660:215;;;57903:6;57894:7;57891:19;57888:186;;;57968:9;57963:3;57959:19;57946:33;58011:48;58053:4;58045:6;58041:17;58030:9;58011:48;:::i;:::-;58003:6;57996:64;57911:163;57888:186;58120:1;58116;58108:6;58104:14;58100:22;58094:4;58087:36;57509:624;;;57472:907;;57084:1301;;;56987:1398;;;:::o;58391:329::-;58512:4;58550:2;58539:9;58535:18;58527:26;;58599:9;58593:4;58589:20;58585:1;58574:9;58570:17;58563:47;58627:86;58708:4;58699:6;58691;58627:86;:::i;:::-;58619:94;;58391:329;;;;;:::o;58726:97::-;58785:6;58813:3;58803:13;;58726:97;;;;:::o;58829:543::-;58930:2;58925:3;58922:11;58919:446;;;58964:38;58996:5;58964:38;:::i;:::-;59048:29;59066:10;59048:29;:::i;:::-;59038:8;59034:44;59231:2;59219:10;59216:18;59213:49;;;59252:8;59237:23;;59213:49;59275:80;59331:22;59349:3;59331:22;:::i;:::-;59321:8;59317:37;59304:11;59275:80;:::i;:::-;58934:431;;58919:446;58829:543;;;:::o;59378:1403::-;59502:44;59542:3;59537;59502:44;:::i;:::-;59611:18;59603:6;59600:30;59597:56;;;59633:18;;:::i;:::-;59597:56;59677:38;59709:4;59703:11;59677:38;:::i;:::-;59762:67;59822:6;59814;59808:4;59762:67;:::i;:::-;59856:1;59885:2;59877:6;59874:14;59902:1;59897:632;;;;60573:1;60590:6;60587:84;;;60646:9;60641:3;60637:19;60624:33;60615:42;;60587:84;60697:67;60757:6;60750:5;60697:67;:::i;:::-;60691:4;60684:81;60546:229;59867:908;;59897:632;59949:4;59945:9;59937:6;59933:22;59983:37;60015:4;59983:37;:::i;:::-;60042:1;60056:215;60070:7;60067:1;60064:14;60056:215;;;60156:9;60151:3;60147:19;60134:33;60126:6;60119:49;60207:1;60199:6;60195:14;60185:24;;60254:2;60243:9;60239:18;60226:31;;60093:4;60090:1;60086:12;60081:17;;60056:215;;;60299:6;60290:7;60287:19;60284:186;;;60364:9;60359:3;60355:19;60342:33;60407:48;60449:4;60441:6;60437:17;60426:9;60407:48;:::i;:::-;60399:6;60392:64;60307:163;60284:186;60516:1;60512;60504:6;60500:14;60496:22;60490:4;60483:36;59904:625;;;59867:908;;59477:1304;;;59378:1403;;;:::o;60787:745::-;61009:4;61047:3;61036:9;61032:19;61024:27;;61097:9;61091:4;61087:20;61083:1;61072:9;61068:17;61061:47;61125:86;61206:4;61197:6;61189;61125:86;:::i;:::-;61117:94;;61221:72;61289:2;61278:9;61274:18;61265:6;61221:72;:::i;:::-;61303;61371:2;61360:9;61356:18;61347:6;61303:72;:::i;:::-;61422:9;61416:4;61412:20;61407:2;61396:9;61392:18;61385:48;61450:75;61520:4;61511:6;61450:75;:::i;:::-;61442:83;;60787:745;;;;;;;;:::o;61538:114::-;;:::o;61658:398::-;61817:3;61838:83;61919:1;61914:3;61838:83;:::i;:::-;61831:90;;61930:93;62019:3;61930:93;:::i;:::-;62048:1;62043:3;62039:11;62032:18;;61658:398;;;:::o;62062:379::-;62246:3;62268:147;62411:3;62268:147;:::i;:::-;62261:154;;62432:3;62425:10;;62062:379;;;:::o;62447:169::-;62587:21;62583:1;62575:6;62571:14;62564:45;62447:169;:::o;62622:366::-;62764:3;62785:67;62849:2;62844:3;62785:67;:::i;:::-;62778:74;;62861:93;62950:3;62861:93;:::i;:::-;62979:2;62974:3;62970:12;62963:19;;62622:366;;;:::o;62994:419::-;63160:4;63198:2;63187:9;63183:18;63175:26;;63247:9;63241:4;63237:20;63233:1;63222:9;63218:17;63211:47;63275:131;63401:4;63275:131;:::i;:::-;63267:139;;62994:419;;;:::o

Swarm Source

ipfs://697364a3f4d22fc3102bd583f624480c4c1431a8fe5634d6d7940454c3419667

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

OVERVIEW

This game is a Play2Earn game that allows players to engage in exciting competitions against each other. Players can win $MATIC every 45 seconds using their gaming skills and strategies.

Validator Index Block Amount
View All Withdrawals

Txn Hash Block Value Eth2 PubKey Valid
View All Deposits
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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