Mumbai Testnet

Contract

0x56927Bc69Cfe8757C900a90f70281e0Bdc9ab3a1

Overview

MATIC Balance

Polygon PoS Chain LogoPolygon PoS Chain LogoPolygon PoS Chain Logo0 MATIC

Token Holdings

Multichain Info

N/A
Transaction Hash
Method
Block
From
To
Value
Trigger313448462023-01-24 10:21:42430 days ago1674555702IN
0x56927Bc6...Bdc9ab3a1
0 MATIC0.000125362.50000001
Trigger313448392023-01-24 10:21:28430 days ago1674555688IN
0x56927Bc6...Bdc9ab3a1
0 MATIC0.000125362.50000001
Trigger313448382023-01-24 10:21:26430 days ago1674555686IN
0x56927Bc6...Bdc9ab3a1
0 MATIC0.000193022.50000001
Trigger313448312023-01-24 10:21:10430 days ago1674555670IN
0x56927Bc6...Bdc9ab3a1
0 MATIC0.000125362.50000001
Trigger313448252023-01-24 10:20:58430 days ago1674555658IN
0x56927Bc6...Bdc9ab3a1
0 MATIC0.000193022.50000001
Trigger313448252023-01-24 10:20:58430 days ago1674555658IN
0x56927Bc6...Bdc9ab3a1
0 MATIC0.000125392.50000001
Trigger313448242023-01-24 10:20:56430 days ago1674555656IN
0x56927Bc6...Bdc9ab3a1
0 MATIC0.000192982.50000001
Trigger313448172023-01-24 10:20:42430 days ago1674555642IN
0x56927Bc6...Bdc9ab3a1
0 MATIC0.000125362.50000001
Trigger313448112023-01-24 10:20:28430 days ago1674555628IN
0x56927Bc6...Bdc9ab3a1
0 MATIC0.000125362.50000001
Trigger313448102023-01-24 10:20:26430 days ago1674555626IN
0x56927Bc6...Bdc9ab3a1
0 MATIC0.000125362.50000001
Trigger313448102023-01-24 10:20:26430 days ago1674555626IN
0x56927Bc6...Bdc9ab3a1
0 MATIC0.000192952.50000001
Trigger313448022023-01-24 10:20:10430 days ago1674555610IN
0x56927Bc6...Bdc9ab3a1
0 MATIC0.000125362.50000001
Trigger313447972023-01-24 10:19:58430 days ago1674555598IN
0x56927Bc6...Bdc9ab3a1
0 MATIC0.000192952.50000001
Trigger313447972023-01-24 10:19:58430 days ago1674555598IN
0x56927Bc6...Bdc9ab3a1
0 MATIC0.000193072.50000001
Trigger313447972023-01-24 10:19:58430 days ago1674555598IN
0x56927Bc6...Bdc9ab3a1
0 MATIC0.000193012.50000001
Trigger313447972023-01-24 10:19:58430 days ago1674555598IN
0x56927Bc6...Bdc9ab3a1
0 MATIC0.000125362.50000001
Trigger313447962023-01-24 10:19:56430 days ago1674555596IN
0x56927Bc6...Bdc9ab3a1
0 MATIC0.000193042.50000001
Trigger313447962023-01-24 10:19:56430 days ago1674555596IN
0x56927Bc6...Bdc9ab3a1
0 MATIC0.000192952.50000001
Trigger313447962023-01-24 10:19:56430 days ago1674555596IN
0x56927Bc6...Bdc9ab3a1
0 MATIC0.000192982.50000001
Create Pool313447952023-01-24 10:19:54430 days ago1674555594IN
0x56927Bc6...Bdc9ab3a1
0 MATIC0.00008892.50000001
Create Pool313447952023-01-24 10:19:54430 days ago1674555594IN
0x56927Bc6...Bdc9ab3a1
0 MATIC0.000088842.50000001
Create Pool313447952023-01-24 10:19:54430 days ago1674555594IN
0x56927Bc6...Bdc9ab3a1
0 MATIC0.000088842.50000001
Create Pool313447952023-01-24 10:19:54430 days ago1674555594IN
0x56927Bc6...Bdc9ab3a1
0 MATIC0.000088812.50000001
Create Pool313447942023-01-24 10:19:52430 days ago1674555592IN
0x56927Bc6...Bdc9ab3a1
0 MATIC0.00008892.50000001
Create Pool313447942023-01-24 10:19:52430 days ago1674555592IN
0x56927Bc6...Bdc9ab3a1
0 MATIC0.000088812.50000001
View all transactions

Latest 25 internal transactions (View All)

Parent Txn Hash Block From To Value
313446332023-01-24 10:14:10430 days ago1674555250
0x56927Bc6...Bdc9ab3a1
0.00023868 MATIC
313446332023-01-24 10:14:10430 days ago1674555250
0x56927Bc6...Bdc9ab3a1
0.00036307 MATIC
313446332023-01-24 10:14:10430 days ago1674555250
0x56927Bc6...Bdc9ab3a1
0.00036787 MATIC
313446332023-01-24 10:14:10430 days ago1674555250
0x56927Bc6...Bdc9ab3a1
0.00026575 MATIC
313446332023-01-24 10:14:10430 days ago1674555250
0x56927Bc6...Bdc9ab3a1
0.00045889 MATIC
313446332023-01-24 10:14:10430 days ago1674555250
0x56927Bc6...Bdc9ab3a1
0.00059451 MATIC
313446332023-01-24 10:14:10430 days ago1674555250
0x56927Bc6...Bdc9ab3a1
0.00032656 MATIC
313446332023-01-24 10:14:10430 days ago1674555250
0x56927Bc6...Bdc9ab3a1
0.00077985 MATIC
313446322023-01-24 10:14:08430 days ago1674555248
0x56927Bc6...Bdc9ab3a1
0.0001159 MATIC
313446322023-01-24 10:14:08430 days ago1674555248
0x56927Bc6...Bdc9ab3a1
0.00019364 MATIC
313446322023-01-24 10:14:08430 days ago1674555248
0x56927Bc6...Bdc9ab3a1
0.00029506 MATIC
313446322023-01-24 10:14:08430 days ago1674555248
0x56927Bc6...Bdc9ab3a1
0.0004808 MATIC
313446322023-01-24 10:14:08430 days ago1674555248
0x56927Bc6...Bdc9ab3a1
0.00020234 MATIC
313446322023-01-24 10:14:08430 days ago1674555248
0x56927Bc6...Bdc9ab3a1
0.00021699 MATIC
313446322023-01-24 10:14:08430 days ago1674555248
0x56927Bc6...Bdc9ab3a1
0.00022489 MATIC
313446322023-01-24 10:14:08430 days ago1674555248
0x56927Bc6...Bdc9ab3a1
0.00025275 MATIC
313446322023-01-24 10:14:08430 days ago1674555248
0x56927Bc6...Bdc9ab3a1
0.00019294 MATIC
313446322023-01-24 10:14:08430 days ago1674555248
0x56927Bc6...Bdc9ab3a1
0.00029926 MATIC
313446052023-01-24 10:13:10430 days ago1674555190
0x56927Bc6...Bdc9ab3a1
0.00008925 MATIC
313446052023-01-24 10:13:10430 days ago1674555190
0x56927Bc6...Bdc9ab3a1
0.00044301 MATIC
313446052023-01-24 10:13:10430 days ago1674555190
0x56927Bc6...Bdc9ab3a1
0.00032082 MATIC
313446052023-01-24 10:13:10430 days ago1674555190
0x56927Bc6...Bdc9ab3a1
0.00017595 MATIC
313446052023-01-24 10:13:10430 days ago1674555190
0x56927Bc6...Bdc9ab3a1
0.00016995 MATIC
313446052023-01-24 10:13:10430 days ago1674555190
0x56927Bc6...Bdc9ab3a1
0.0003431 MATIC
313446052023-01-24 10:13:10430 days ago1674555190
0x56927Bc6...Bdc9ab3a1
0.00022 MATIC
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
UpVsDownGameV1

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
No with 200 runs

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

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

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/**
 * @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;
    }
}
// File: @openzeppelin/contracts/access/Ownable.sol


pragma solidity ^0.8.0;

/**
 * @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.
 *
 * By default, the owner account will be the one that deploys the contract. 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;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _setOwner(_msgSender());
    }

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

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _setOwner(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 {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

// File: contracts/UpVsDownGameV1.sol

pragma solidity >=0.4.22 <0.9.0;

contract UpVsDownGameV1 is Ownable {

  struct BetGroup {
    uint256[] bets;
    address[] addresses;
    string[] avatars;
    string[] countries;
    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;
  }

  struct Distribution {
    uint256 fee;
    uint256 totalMinusFee;
    uint256 pending;
  }

  address public gameController;
  mapping(bytes => Round) public pools;
  uint8 public feePercentage = 5;
  address public feeAddress = msg.sender;
  bool public isRunning;
  bytes public notRunningReason;

  // 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);
  event TradeReturned(bytes poolId, address sender, uint256 amount);
  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);

  // 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 == true, 'Pool does not exist');
    _;
  }

  constructor(address newGameController) {
    gameController = newGameController;
  }

  // Methods

  function changeGameControllerAddress(address newGameController) public onlyOwner {
    gameController = newGameController;
  }

  function changeGameFeePercentage(uint8 newFeePercentage) public onlyOwner {
    feePercentage = newFeePercentage;
  }

  function changeGameFeeAddress(address newFeeAddress) public onlyOwner {
    feeAddress = newFeeAddress;
  }

  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,
    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;
    
      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 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.distributedCount = to;
  }

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

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

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

    if (winners.bets.length == 0) {
      returnBets(poolId, losers, batchSize);
      emit RoundDistributed(poolId, losers.bets.length, losers.distributedCount, losers.distributedCount,timeMS);

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

    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] * 100 / winners.total) * dist.totalMinusFee / 100);
      sendEther(winners.addresses[i], winnings + winners.bets[i]);
      emit TradeWinningsSent(poolId, winners.addresses[i], winners.bets[i], winnings, winners.addresses[i]);
      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 - winners.totalDistributed);
      clearPool(poolId);
    }
  }

  function calculateDistribution (
    BetGroup storage winners,
    BetGroup storage losers
  ) private view returns (Distribution memory) {
    uint256 fee = feePercentage * losers.total / 100;
    uint256 pending = winners.bets.length - winners.distributedCount;
    return Distribution({
      fee: fee,
      totalMinusFee: losers.total - fee,
      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
  ) private returns (uint256) {
    betGroup.bets.push(amount);
    betGroup.addresses.push(msg.sender);
    betGroup.avatars.push(avatar);
    betGroup.countries.push(countryCode);
    betGroup.total += amount;
    return betGroup.total;
  }

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

  function makeTrade(
    makeTradeStruct calldata userTrade
  ) public payable onlyOpenPool(userTrade.poolId) onlyGameRunning onlyPoolExists(userTrade.poolId) {
    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");
    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);
    } 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);
    }

    string memory avatar;
    {
      avatar = userTrade.avatarUrl;
    }

    string memory countryCode;
    {
      countryCode = userTrade.countryCode;
    }

    int64 roundStartTime;
    {
      roundStartTime = pools[userTrade.poolId].roundStartTime;
    }

    emit TradePlaced(userTrade.poolId, msg.sender, msg.value, (userTrade.upOrDown) ? "UP":"DOWN", newTotal, userTrade.poolId, msg.sender, avatar, countryCode, roundStartTime);
  }

  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 ABI

[{"inputs":[{"internalType":"address","name":"newGameController","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"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"}],"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"}],"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"}],"name":"TradeWinningsSent","type":"event"},{"inputs":[{"internalType":"address","name":"newGameController","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":"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":"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":[{"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":"struct UpVsDownGameV1.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":"uint256","name":"total","type":"uint256"},{"internalType":"uint256","name":"distributedCount","type":"uint256"},{"internalType":"uint256","name":"totalDistributed","type":"uint256"}],"internalType":"struct UpVsDownGameV1.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":"uint256","name":"total","type":"uint256"},{"internalType":"uint256","name":"distributedCount","type":"uint256"},{"internalType":"uint256","name":"totalDistributed","type":"uint256"}],"internalType":"struct UpVsDownGameV1.BetGroup","name":"downBetGroup","type":"tuple"},{"internalType":"int64","name":"roundStartTime","type":"int64"}],"stateMutability":"view","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":"int32","name":"price","type":"int32"},{"internalType":"uint32","name":"batchSize","type":"uint32"}],"name":"trigger","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526005600360006101000a81548160ff021916908360ff16021790555033600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200006e57600080fd5b506040516200460338038062004603833981810160405281019062000094919062000232565b620000b4620000a8620000fc60201b60201c565b6200010460201b60201c565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505062000264565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620001fa82620001cd565b9050919050565b6200020c81620001ed565b81146200021857600080fd5b50565b6000815190506200022c8162000201565b92915050565b6000602082840312156200024b576200024a620001c8565b5b60006200025b848285016200021b565b91505092915050565b61438f80620002746000396000f3fe60806040526004361061011f5760003560e01c8063a001ecdd116100a0578063d65ab5f211610064578063d65ab5f2146103ba578063e4709969146103d1578063eab79b7d146103fa578063f2fde38b14610423578063f68256a81461044c5761011f565b8063a001ecdd146102f8578063a7c3324d14610323578063a9b99af51461034c578063d4c770cf14610375578063d52947bc1461039e5761011f565b806341275358116100e75780634127535814610237578063595dc897146102625780636518a0a91461028b578063715018a6146102b65780638da5cb5b146102cd5761011f565b80630c2f915e146101245780631d0d625b146101615780632014e5d11461018a57806330efabd4146101b55780633fafac92146101f2575b600080fd5b34801561013057600080fd5b5061014b60048036038101906101469190612bb1565b610477565b6040516101589190612c19565b60405180910390f35b34801561016d57600080fd5b5061018860048036038101906101839190612c92565b6104e1565b005b34801561019657600080fd5b5061019f6105a1565b6040516101ac9190612c19565b60405180910390f35b3480156101c157600080fd5b506101dc60048036038101906101d79190612bb1565b6105b4565b6040516101e99190612c19565b60405180910390f35b3480156101fe57600080fd5b5061021960048036038101906102149190612e00565b6105f4565b60405161022e99989796959493929190613211565b60405180910390f35b34801561024357600080fd5b5061024c610c0c565b60405161025991906132bb565b60405180910390f35b34801561026e57600080fd5b5061028960048036038101906102849190612c92565b610c32565b005b34801561029757600080fd5b506102a0610cf2565b6040516102ad919061332b565b60405180910390f35b3480156102c257600080fd5b506102cb610d80565b005b3480156102d957600080fd5b506102e2610e08565b6040516102ef91906132bb565b60405180910390f35b34801561030457600080fd5b5061030d610e31565b60405161031a9190613369565b60405180910390f35b34801561032f57600080fd5b5061034a600480360381019061034591906133ec565b610e44565b005b34801561035857600080fd5b50610373600480360381019061036e919061348c565b61136e565b005b34801561038157600080fd5b5061039c60048036038101906103979190613540565b6116d4565b005b6103b860048036038101906103b39190613591565b61176e565b005b3480156103c657600080fd5b506103cf611e24565b005b3480156103dd57600080fd5b506103f860048036038101906103f39190613606565b611f0f565b005b34801561040657600080fd5b50610421600480360381019061041c9190612bb1565b61205a565b005b34801561042f57600080fd5b5061044a60048036038101906104459190612c92565b612140565b005b34801561045857600080fd5b50610461612238565b60405161046e91906132bb565b60405180910390f35b6000806002848460405161048c9291906136be565b9081526020016040518091039020600b0160000180549050600285856040516104b69291906136be565b9081526020016040518091039020600401600001805490506104d89190613706565b11905092915050565b6104e961225e565b73ffffffffffffffffffffffffffffffffffffffff16610507610e08565b73ffffffffffffffffffffffffffffffffffffffff161461055d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610554906137b9565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600360159054906101000a900460ff1681565b600080600284846040516105c99291906136be565b908152602001604051809103902060000160019054906101000a900460030b60030b14905092915050565b6002818051602081018201805184825260208301602085012081835280955050505050506000915090508060000160009054906101000a900460ff16908060000160019054906101000a900460030b908060000160059054906101000a900460030b90806001015490806002015490806003015490806004016040518060e0016040529081600082018054806020026020016040519081016040528092919081815260200182805480156106c757602002820191906000526020600020905b8154815260200190600101908083116106b3575b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561075557602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161070b575b5050505050815260200160028201805480602002602001604051908101604052809291908181526020016000905b8282101561082f5783829060005260206000200180546107a290613808565b80601f01602080910402602001604051908101604052809291908181526020018280546107ce90613808565b801561081b5780601f106107f05761010080835404028352916020019161081b565b820191906000526020600020905b8154815290600101906020018083116107fe57829003601f168201915b505050505081526020019060010190610783565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b8282101561090857838290600052602060002001805461087b90613808565b80601f01602080910402602001604051908101604052809291908181526020018280546108a790613808565b80156108f45780601f106108c9576101008083540402835291602001916108f4565b820191906000526020600020905b8154815290600101906020018083116108d757829003601f168201915b50505050508152602001906001019061085c565b50505050815260200160048201548152602001600582015481526020016006820154815250509080600b016040518060e00160405290816000820180548060200260200160405190810160405280929190818152602001828054801561098d57602002820191906000526020600020905b815481526020019060010190808311610979575b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015610a1b57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116109d1575b5050505050815260200160028201805480602002602001604051908101604052809291908181526020016000905b82821015610af5578382906000526020600020018054610a6890613808565b80601f0160208091040260200160405190810160405280929190818152602001828054610a9490613808565b8015610ae15780601f10610ab657610100808354040283529160200191610ae1565b820191906000526020600020905b815481529060010190602001808311610ac457829003601f168201915b505050505081526020019060010190610a49565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b82821015610bce578382906000526020600020018054610b4190613808565b80601f0160208091040260200160405190810160405280929190818152602001828054610b6d90613808565b8015610bba5780601f10610b8f57610100808354040283529160200191610bba565b820191906000526020600020905b815481529060010190602001808311610b9d57829003601f168201915b505050505081526020019060010190610b22565b5050505081526020016004820154815260200160058201548152602001600682015481525050908060120160009054906101000a900460070b905089565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610c3a61225e565b73ffffffffffffffffffffffffffffffffffffffff16610c58610e08565b73ffffffffffffffffffffffffffffffffffffffff1614610cae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca5906137b9565b60405180910390fd5b80600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60048054610cff90613808565b80601f0160208091040260200160405190810160405280929190818152602001828054610d2b90613808565b8015610d785780601f10610d4d57610100808354040283529160200191610d78565b820191906000526020600020905b815481529060010190602001808311610d5b57829003601f168201915b505050505081565b610d8861225e565b73ffffffffffffffffffffffffffffffffffffffff16610da6610e08565b73ffffffffffffffffffffffffffffffffffffffff1614610dfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df3906137b9565b60405180910390fd5b610e066000612266565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600360009054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ed4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ecb90613886565b60405180910390fd5b83836001151560028383604051610eec9291906136be565b908152602001604051809103902060000160009054906101000a900460ff16151514610f4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f44906138f2565b60405180910390fd5b600060028787604051610f619291906136be565b90815260200160405180910390209050600081600b01905060008260040190508260000160059054906101000a900460030b60030b8360000160019054906101000a900460030b60030b1215610fbe5782600401915082600b0190505b60008260000180549050141561105057610fda8989838a61232a565b7fd86802201c3bf5d79ef71027c49cdfdee99fa298848917618ba148d098f15f7489898360000180549050846005015485600501548b6040516110229695949392919061393f565b60405180910390a18060000180549050816005015414156110485761104789896124b7565b5b505050611366565b600061105c8383612623565b905060008863ffffffff1682604001511161107b578160400151611083565b8863ffffffff165b905060008185600501546110979190613706565b90506000856005015490505b8181101561129d57600060648560200151886004015460648a60000186815481106110d1576110d061399b565b5b90600052602060002001546110e691906139ca565b6110f09190613a53565b6110fa91906139ca565b6111049190613a53565b905061117b87600101838154811061111f5761111e61399b565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168860000184815481106111605761115f61399b565b5b9060005260206000200154836111769190613706565b6126ac565b8660010182815481106111915761119061399b565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f60126990c62860b34a33a079082f6792fa0193def7ed581b626414399f9dae9c8f8f8a600101868154811061120b5761120a61399b565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168b600001878154811061124c5761124b61399b565b5b906000526020600020015486604051611269959493929190613a84565b60405180910390a28087600601546112819190613706565b876006018190555050808061129590613ad2565b9150506110a3565b507fd86802201c3bf5d79ef71027c49cdfdee99fa298848917618ba148d098f15f748c8c87600001805490508860050154858e6040516112e29695949392919061393f565b60405180910390a180856005018190555084600001805490508560050154141561135f57611354600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff168660060154856020015186600001516113459190613706565b61134f9190613b1b565b6126ac565b61135e8c8c6124b7565b5b5050505050505b505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146113fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f590613886565b60405180910390fd5b848460011515600283836040516114169291906136be565b908152602001604051809103902060000160009054906101000a900460ff16151514611477576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146e906138f2565b60405180910390fd5b60006002888860405161148b9291906136be565b908152602001604051809103902090506114a588886105b4565b156115ca57600360159054906101000a900460ff166114f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f090613bc1565b60405180910390fd5b848160000160016101000a81548163ffffffff021916908360030b63ffffffff160217905550858160120160006101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff160217905550878760405161155d9291906136be565b60405180910390207f977f157300bb4d69d09b3e083fb55a17a0c02f978e5b220c08173c63de9665aa8989898560000160019054906101000a900460030b8660010154876002015488600301546040516115bd9796959493929190613be1565b60405180910390a26116ca565b60008160000160059054906101000a900460030b60030b141561169757848160000160056101000a81548163ffffffff021916908360030b63ffffffff160217905550878760405161161d9291906136be565b60405180910390207fe097bf610f5827ffcdd36eb07b790e6ee02dd498f911ab45664208cfad9323b08989898560000160019054906101000a900460030b8660000160059054906101000a900460030b60405161167e959493929190613c4b565b60405180910390a261169288888689610e44565b6116c9565b6040517fd56be5db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b5050505050505050565b6116dc61225e565b73ffffffffffffffffffffffffffffffffffffffff166116fa610e08565b73ffffffffffffffffffffffffffffffffffffffff1614611750576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611747906137b9565b60405180910390fd5b80600360006101000a81548160ff021916908360ff16021790555050565b80806000019061177e9190613ca8565b61178882826105b4565b6117c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117be90613d7d565b60405180910390fd5b600360159054906101000a900460ff16611816576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180d90613de9565b60405180910390fd5b8280600001906118269190613ca8565b600115156002838360405161183c9291906136be565b908152602001604051809103902060000160009054906101000a900460ff1615151461189d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611894906138f2565b60405180910390fd5b600034116118e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d790613e55565b60405180910390fd5b60028580600001906118f29190613ca8565b6040516119009291906136be565b908152602001604051809103902060010154341015611954576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194b90613ee7565b60405180910390fd5b60028580600001906119669190613ca8565b6040516119749291906136be565b9081526020016040518091039020600201543411156119c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119bf90613f79565b60405180910390fd5b60008560600160208101906119dd9190613fc5565b15611afa57600160028780600001906119f69190613ca8565b604051611a049291906136be565b908152602001604051809103902060030154611a209190613b1b565b6002878060000190611a329190613ca8565b604051611a409291906136be565b9081526020016040518091039020600401600001805490501115611a99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9090614064565b60405180910390fd5b611af36002878060000190611aae9190613ca8565b604051611abc9291906136be565b908152602001604051809103902060040134888060200190611ade9190614084565b8a8060400190611aee9190614084565b612763565b9050611c0e565b60016002878060000190611b0e9190613ca8565b604051611b1c9291906136be565b908152602001604051809103902060030154611b389190613b1b565b6002878060000190611b4a9190613ca8565b604051611b589291906136be565b9081526020016040518091039020600b01600001805490501115611bb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba890614064565b60405180910390fd5b611c0b6002878060000190611bc69190613ca8565b604051611bd49291906136be565b9081526020016040518091039020600b0134888060200190611bf69190614084565b8a8060400190611c069190614084565b612763565b90505b6060868060200190611c209190614084565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505090506060878060400190611c779190614084565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050905060006002898060000190611cd09190613ca8565b604051611cde9291906136be565b908152602001604051809103902060120160009054906101000a900460070b90503373ffffffffffffffffffffffffffffffffffffffff16898060000190611d269190613ca8565b604051611d349291906136be565b60405180910390207ff291bb36c3b51271e4642a86feed650b5c8c1ceb8305facdd13577c05264526a8b8060000190611d6d9190613ca8565b33348f6060016020810190611d829190613fc5565b611dc1576040518060400160405280600481526020017f444f574e00000000000000000000000000000000000000000000000000000000815250611df8565b6040518060400160405280600281526020017f55500000000000000000000000000000000000000000000000000000000000008152505b8b8b8b8b604051611e1199989796959493929190614120565b60405180910390a3505050505050505050565b611e2c61225e565b73ffffffffffffffffffffffffffffffffffffffff16611e4a610e08565b73ffffffffffffffffffffffffffffffffffffffff1614611ea0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e97906137b9565b60405180910390fd5b6001600360156101000a81548160ff0219169083151502179055506040518060200160405280600081525060049080519060200190611ee09291906128a1565b507f762f260439bb4be3ef6e4dc2786e2e7bd187d3d80b79057d7a424fe98563e33560405160405180910390a1565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611f9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9690613886565b60405180910390fd5b600160028686604051611fb39291906136be565b908152602001604051809103902060000160006101000a81548160ff0219169083151502179055508260028686604051611fee9291906136be565b90815260200160405180910390206001018190555081600286866040516120169291906136be565b908152602001604051809103902060020181905550806002868660405161203e9291906136be565b9081526020016040518091039020600301819055505050505050565b61206261225e565b73ffffffffffffffffffffffffffffffffffffffff16612080610e08565b73ffffffffffffffffffffffffffffffffffffffff16146120d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120cd906137b9565b60405180910390fd5b6000600360156101000a81548160ff021916908315150217905550818160049190612102929190612927565b507fbbed56c796999ec9481de9169e54d6f193c57a335189c8b82053d80e263fdbd682826040516121349291906141bc565b60405180910390a15050565b61214861225e565b73ffffffffffffffffffffffffffffffffffffffff16612166610e08565b73ffffffffffffffffffffffffffffffffffffffff16146121bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b3906137b9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561222c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222390614252565b60405180910390fd5b61223581612266565b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000826005015483600001805490506123439190613b1b565b905060008263ffffffff16821161235a5781612362565b8263ffffffff165b905060008185600501546123769190613706565b90506000856005015490505b818110156124a4576123f48660010182815481106123a3576123a261399b565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168760000183815481106123e4576123e361399b565b5b90600052602060002001546126ac565b7f0ef369ab00174499e32a26cfe220b3dd58fad9d231e8319504ce52fa0801e0b4888888600101848154811061242d5761242c61399b565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1689600001858154811061246e5761246d61399b565b5b90600052602060002001546040516124899493929190614272565b60405180910390a1808061249c90613ad2565b915050612382565b5080856005018190555050505050505050565b600282826040516124c99291906136be565b9081526020016040518091039020600401600080820160006124eb91906129ad565b6001820160006124fb91906129ce565b60028201600061250b91906129ef565b60038201600061251b91906129ef565b6004820160009055600582016000905560068201600090555050600282826040516125479291906136be565b9081526020016040518091039020600b016000808201600061256991906129ad565b60018201600061257991906129ce565b60028201600061258991906129ef565b60038201600061259991906129ef565b6004820160009055600582016000905560068201600090555050600282826040516125c59291906136be565b908152602001604051809103902060000160016101000a81549063ffffffff0219169055600282826040516125fb9291906136be565b908152602001604051809103902060000160056101000a81549063ffffffff02191690555050565b61262b612a10565b600060648360040154600360009054906101000a900460ff1660ff1661265191906139ca565b61265b9190613a53565b90506000846005015485600001805490506126769190613b1b565b905060405180606001604052808381526020018386600401546126999190613b1b565b8152602001828152509250505092915050565b6000808373ffffffffffffffffffffffffffffffffffffffff166000846040516126d5906142d8565b600060405180830381858888f193505050503d8060008114612713576040519150601f19603f3d011682016040523d82523d6000602084013e612718565b606091505b50915091508161275d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161275490614339565b60405180910390fd5b50505050565b60008660000186908060018154018082558091505060019003906000526020600020016000909190919091505586600101339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555086600201858590918060018154018082558091505060019003906000526020600020016000909192909192909192909192509190612834929190612a31565b5086600301838390918060018154018082558091505060019003906000526020600020016000909192909192909192909192509190612874929190612a31565b50858760040160008282546128899190613706565b92505081905550866004015490509695505050505050565b8280546128ad90613808565b90600052602060002090601f0160209004810192826128cf5760008555612916565b82601f106128e857805160ff1916838001178555612916565b82800160010185558215612916579182015b828111156129155782518255916020019190600101906128fa565b5b5090506129239190612ab7565b5090565b82805461293390613808565b90600052602060002090601f016020900481019282612955576000855561299c565b82601f1061296e57803560ff191683800117855561299c565b8280016001018555821561299c579182015b8281111561299b578235825591602001919060010190612980565b5b5090506129a99190612ab7565b5090565b50805460008255906000526020600020908101906129cb9190612ab7565b50565b50805460008255906000526020600020908101906129ec9190612ab7565b50565b5080546000825590600052602060002090810190612a0d9190612ad4565b50565b60405180606001604052806000815260200160008152602001600081525090565b828054612a3d90613808565b90600052602060002090601f016020900481019282612a5f5760008555612aa6565b82601f10612a7857803560ff1916838001178555612aa6565b82800160010185558215612aa6579182015b82811115612aa5578235825591602001919060010190612a8a565b5b509050612ab39190612ab7565b5090565b5b80821115612ad0576000816000905550600101612ab8565b5090565b5b80821115612af45760008181612aeb9190612af8565b50600101612ad5565b5090565b508054612b0490613808565b6000825580601f10612b165750612b35565b601f016020900490600052602060002090810190612b349190612ab7565b5b50565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f840112612b7157612b70612b4c565b5b8235905067ffffffffffffffff811115612b8e57612b8d612b51565b5b602083019150836001820283011115612baa57612ba9612b56565b5b9250929050565b60008060208385031215612bc857612bc7612b42565b5b600083013567ffffffffffffffff811115612be657612be5612b47565b5b612bf285828601612b5b565b92509250509250929050565b60008115159050919050565b612c1381612bfe565b82525050565b6000602082019050612c2e6000830184612c0a565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c5f82612c34565b9050919050565b612c6f81612c54565b8114612c7a57600080fd5b50565b600081359050612c8c81612c66565b92915050565b600060208284031215612ca857612ca7612b42565b5b6000612cb684828501612c7d565b91505092915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612d0d82612cc4565b810181811067ffffffffffffffff82111715612d2c57612d2b612cd5565b5b80604052505050565b6000612d3f612b38565b9050612d4b8282612d04565b919050565b600067ffffffffffffffff821115612d6b57612d6a612cd5565b5b612d7482612cc4565b9050602081019050919050565b82818337600083830152505050565b6000612da3612d9e84612d50565b612d35565b905082815260208101848484011115612dbf57612dbe612cbf565b5b612dca848285612d81565b509392505050565b600082601f830112612de757612de6612b4c565b5b8135612df7848260208601612d90565b91505092915050565b600060208284031215612e1657612e15612b42565b5b600082013567ffffffffffffffff811115612e3457612e33612b47565b5b612e4084828501612dd2565b91505092915050565b60008160030b9050919050565b612e5f81612e49565b82525050565b6000819050919050565b612e7881612e65565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612eb381612e65565b82525050565b6000612ec58383612eaa565b60208301905092915050565b6000602082019050919050565b6000612ee982612e7e565b612ef38185612e89565b9350612efe83612e9a565b8060005b83811015612f2f578151612f168882612eb9565b9750612f2183612ed1565b925050600181019050612f02565b5085935050505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612f7181612c54565b82525050565b6000612f838383612f68565b60208301905092915050565b6000602082019050919050565b6000612fa782612f3c565b612fb18185612f47565b9350612fbc83612f58565b8060005b83811015612fed578151612fd48882612f77565b9750612fdf83612f8f565b925050600181019050612fc0565b5085935050505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613060578082015181840152602081019050613045565b8381111561306f576000848401525b50505050565b600061308082613026565b61308a8185613031565b935061309a818560208601613042565b6130a381612cc4565b840191505092915050565b60006130ba8383613075565b905092915050565b6000602082019050919050565b60006130da82612ffa565b6130e48185613005565b9350836020820285016130f685613016565b8060005b85811015613132578484038952815161311385826130ae565b945061311e836130c2565b925060208a019950506001810190506130fa565b50829750879550505050505092915050565b600060e08301600083015184820360008601526131618282612ede565b9150506020830151848203602086015261317b8282612f9c565b9150506040830151848203604086015261319582826130cf565b915050606083015184820360608601526131af82826130cf565b91505060808301516131c46080860182612eaa565b5060a08301516131d760a0860182612eaa565b5060c08301516131ea60c0860182612eaa565b508091505092915050565b60008160070b9050919050565b61320b816131f5565b82525050565b600061012082019050613227600083018c612c0a565b613234602083018b612e56565b613241604083018a612e56565b61324e6060830189612e6f565b61325b6080830188612e6f565b61326860a0830187612e6f565b81810360c083015261327a8186613144565b905081810360e083015261328e8185613144565b905061329e610100830184613202565b9a9950505050505050505050565b6132b581612c54565b82525050565b60006020820190506132d060008301846132ac565b92915050565b600081519050919050565b600082825260208201905092915050565b60006132fd826132d6565b61330781856132e1565b9350613317818560208601613042565b61332081612cc4565b840191505092915050565b6000602082019050818103600083015261334581846132f2565b905092915050565b600060ff82169050919050565b6133638161334d565b82525050565b600060208201905061337e600083018461335a565b92915050565b600063ffffffff82169050919050565b61339d81613384565b81146133a857600080fd5b50565b6000813590506133ba81613394565b92915050565b6133c9816131f5565b81146133d457600080fd5b50565b6000813590506133e6816133c0565b92915050565b6000806000806060858703121561340657613405612b42565b5b600085013567ffffffffffffffff81111561342457613423612b47565b5b61343087828801612b5b565b94509450506020613443878288016133ab565b9250506040613454878288016133d7565b91505092959194509250565b61346981612e49565b811461347457600080fd5b50565b60008135905061348681613460565b92915050565b6000806000806000608086880312156134a8576134a7612b42565b5b600086013567ffffffffffffffff8111156134c6576134c5612b47565b5b6134d288828901612b5b565b955095505060206134e5888289016133d7565b93505060406134f688828901613477565b9250506060613507888289016133ab565b9150509295509295909350565b61351d8161334d565b811461352857600080fd5b50565b60008135905061353a81613514565b92915050565b60006020828403121561355657613555612b42565b5b60006135648482850161352b565b91505092915050565b600080fd5b6000608082840312156135885761358761356d565b5b81905092915050565b6000602082840312156135a7576135a6612b42565b5b600082013567ffffffffffffffff8111156135c5576135c4612b47565b5b6135d184828501613572565b91505092915050565b6135e381612e65565b81146135ee57600080fd5b50565b600081359050613600816135da565b92915050565b60008060008060006080868803121561362257613621612b42565b5b600086013567ffffffffffffffff8111156136405761363f612b47565b5b61364c88828901612b5b565b9550955050602061365f888289016135f1565b9350506040613670888289016135f1565b9250506060613681888289016135f1565b9150509295509295909350565b600081905092915050565b60006136a5838561368e565b93506136b2838584612d81565b82840190509392505050565b60006136cb828486613699565b91508190509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061371182612e65565b915061371c83612e65565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613751576137506136d7565b5b828201905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006137a360208361375c565b91506137ae8261376d565b602082019050919050565b600060208201905081810360008301526137d281613796565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061382057607f821691505b60208210811415613834576138336137d9565b5b50919050565b7f4f6e6c792067616d6520636f6e74726f6c6c65722063616e20646f2074686973600082015250565b600061387060208361375c565b915061387b8261383a565b602082019050919050565b6000602082019050818103600083015261389f81613863565b9050919050565b7f506f6f6c20646f6573206e6f7420657869737400000000000000000000000000600082015250565b60006138dc60138361375c565b91506138e7826138a6565b602082019050919050565b6000602082019050818103600083015261390b816138cf565b9050919050565b600061391e83856132e1565b935061392b838584612d81565b61393483612cc4565b840190509392505050565b600060a082019050818103600083015261395a81888a613912565b90506139696020830187612e6f565b6139766040830186612e6f565b6139836060830185612e6f565b6139906080830184613202565b979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006139d582612e65565b91506139e083612e65565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613a1957613a186136d7565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613a5e82612e65565b9150613a6983612e65565b925082613a7957613a78613a24565b5b828204905092915050565b60006080820190508181036000830152613a9f818789613912565b9050613aae60208301866132ac565b613abb6040830185612e6f565b613ac86060830184612e6f565b9695505050505050565b6000613add82612e65565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613b1057613b0f6136d7565b5b600182019050919050565b6000613b2682612e65565b9150613b3183612e65565b925082821015613b4457613b436136d7565b5b828203905092915050565b7f5468652067616d65206973206e6f742072756e6e696e672c20726f756e64732060008201527f63616e206f6e6c7920626520656e646564206174207468697320706f696e7400602082015250565b6000613bab603f8361375c565b9150613bb682613b4f565b604082019050919050565b60006020820190508181036000830152613bda81613b9e565b9050919050565b600060c0820190508181036000830152613bfc81898b613912565b9050613c0b6020830188613202565b613c186040830187612e56565b613c256060830186612e6f565b613c326080830185612e6f565b613c3f60a0830184612e6f565b98975050505050505050565b60006080820190508181036000830152613c66818789613912565b9050613c756020830186613202565b613c826040830185612e56565b613c8f6060830184612e56565b9695505050505050565b600080fd5b600080fd5b600080fd5b60008083356001602003843603038112613cc557613cc4613c99565b5b80840192508235915067ffffffffffffffff821115613ce757613ce6613c9e565b5b602083019250600182023603831315613d0357613d02613ca3565b5b509250929050565b7f5468697320706f6f6c20686173206120726f756e6420696e2070726f6772657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d6760218361375c565b9150613d7282613d0b565b604082019050919050565b60006020820190508181036000830152613d9681613d5a565b9050919050565b7f5468652067616d65206973206e6f742072756e6e696e67000000000000000000600082015250565b6000613dd360178361375c565b9150613dde82613d9d565b602082019050919050565b60006020820190508181036000830152613e0281613dc6565b9050919050565b7f4e6565647320746f2073656e64204d6174696320746f20747261646500000000600082015250565b6000613e3f601c8361375c565b9150613e4a82613e09565b602082019050919050565b60006020820190508181036000830152613e6e81613e32565b9050919050565b7f547261646520616d6f756e742073686f756c642062652068696768657220746860008201527f616e20746865206d696e696d756d000000000000000000000000000000000000602082015250565b6000613ed1602e8361375c565b9150613edc82613e75565b604082019050919050565b60006020820190508181036000830152613f0081613ec4565b9050919050565b7f547261646520616d6f756e742073686f756c64206265206c6f7765722074686160008201527f6e20746865206d6178696d756d00000000000000000000000000000000000000602082015250565b6000613f63602d8361375c565b9150613f6e82613f07565b604082019050919050565b60006020820190508181036000830152613f9281613f56565b9050919050565b613fa281612bfe565b8114613fad57600080fd5b50565b600081359050613fbf81613f99565b92915050565b600060208284031215613fdb57613fda612b42565b5b6000613fe984828501613fb0565b91505092915050565b7f506f6f6c2069732066756c6c2c207761697420666f72206e65787420726f756e60008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b600061404e60218361375c565b915061405982613ff2565b604082019050919050565b6000602082019050818103600083015261407d81614041565b9050919050565b600080833560016020038436030381126140a1576140a0613c99565b5b80840192508235915067ffffffffffffffff8211156140c3576140c2613c9e565b5b6020830192506001820236038313156140df576140de613ca3565b5b509250929050565b60006140f282613026565b6140fc818561375c565b935061410c818560208601613042565b61411581612cc4565b840191505092915050565b600061010082019050818103600083015261413c818b8d613912565b905061414b602083018a6132ac565b6141586040830189612e6f565b818103606083015261416a81886140e7565b90506141796080830187612e6f565b81810360a083015261418b81866140e7565b905081810360c083015261419f81856140e7565b90506141ae60e0830184613202565b9a9950505050505050505050565b600060208201905081810360008301526141d7818486613912565b90509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061423c60268361375c565b9150614247826141e0565b604082019050919050565b6000602082019050818103600083015261426b8161422f565b9050919050565b6000606082019050818103600083015261428d818688613912565b905061429c60208301856132ac565b6142a96040830184612e6f565b95945050505050565b50565b60006142c260008361368e565b91506142cd826142b2565b600082019050919050565b60006142e3826142b5565b9150819050919050565b7f436f756c646e27742073656e6420657468657200000000000000000000000000600082015250565b600061432360138361375c565b915061432e826142ed565b602082019050919050565b6000602082019050818103600083015261435281614316565b905091905056fea26469706673582212206ebb902ad4f75eba24a0d40f4fb14b9d0c5419a99d363aabd174bcbf2ff07fa464736f6c634300080a0033000000000000000000000000c2d778bc7481cf3397d02a4152c7f95d8d2df268

Deployed Bytecode

0x60806040526004361061011f5760003560e01c8063a001ecdd116100a0578063d65ab5f211610064578063d65ab5f2146103ba578063e4709969146103d1578063eab79b7d146103fa578063f2fde38b14610423578063f68256a81461044c5761011f565b8063a001ecdd146102f8578063a7c3324d14610323578063a9b99af51461034c578063d4c770cf14610375578063d52947bc1461039e5761011f565b806341275358116100e75780634127535814610237578063595dc897146102625780636518a0a91461028b578063715018a6146102b65780638da5cb5b146102cd5761011f565b80630c2f915e146101245780631d0d625b146101615780632014e5d11461018a57806330efabd4146101b55780633fafac92146101f2575b600080fd5b34801561013057600080fd5b5061014b60048036038101906101469190612bb1565b610477565b6040516101589190612c19565b60405180910390f35b34801561016d57600080fd5b5061018860048036038101906101839190612c92565b6104e1565b005b34801561019657600080fd5b5061019f6105a1565b6040516101ac9190612c19565b60405180910390f35b3480156101c157600080fd5b506101dc60048036038101906101d79190612bb1565b6105b4565b6040516101e99190612c19565b60405180910390f35b3480156101fe57600080fd5b5061021960048036038101906102149190612e00565b6105f4565b60405161022e99989796959493929190613211565b60405180910390f35b34801561024357600080fd5b5061024c610c0c565b60405161025991906132bb565b60405180910390f35b34801561026e57600080fd5b5061028960048036038101906102849190612c92565b610c32565b005b34801561029757600080fd5b506102a0610cf2565b6040516102ad919061332b565b60405180910390f35b3480156102c257600080fd5b506102cb610d80565b005b3480156102d957600080fd5b506102e2610e08565b6040516102ef91906132bb565b60405180910390f35b34801561030457600080fd5b5061030d610e31565b60405161031a9190613369565b60405180910390f35b34801561032f57600080fd5b5061034a600480360381019061034591906133ec565b610e44565b005b34801561035857600080fd5b50610373600480360381019061036e919061348c565b61136e565b005b34801561038157600080fd5b5061039c60048036038101906103979190613540565b6116d4565b005b6103b860048036038101906103b39190613591565b61176e565b005b3480156103c657600080fd5b506103cf611e24565b005b3480156103dd57600080fd5b506103f860048036038101906103f39190613606565b611f0f565b005b34801561040657600080fd5b50610421600480360381019061041c9190612bb1565b61205a565b005b34801561042f57600080fd5b5061044a60048036038101906104459190612c92565b612140565b005b34801561045857600080fd5b50610461612238565b60405161046e91906132bb565b60405180910390f35b6000806002848460405161048c9291906136be565b9081526020016040518091039020600b0160000180549050600285856040516104b69291906136be565b9081526020016040518091039020600401600001805490506104d89190613706565b11905092915050565b6104e961225e565b73ffffffffffffffffffffffffffffffffffffffff16610507610e08565b73ffffffffffffffffffffffffffffffffffffffff161461055d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610554906137b9565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600360159054906101000a900460ff1681565b600080600284846040516105c99291906136be565b908152602001604051809103902060000160019054906101000a900460030b60030b14905092915050565b6002818051602081018201805184825260208301602085012081835280955050505050506000915090508060000160009054906101000a900460ff16908060000160019054906101000a900460030b908060000160059054906101000a900460030b90806001015490806002015490806003015490806004016040518060e0016040529081600082018054806020026020016040519081016040528092919081815260200182805480156106c757602002820191906000526020600020905b8154815260200190600101908083116106b3575b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561075557602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161070b575b5050505050815260200160028201805480602002602001604051908101604052809291908181526020016000905b8282101561082f5783829060005260206000200180546107a290613808565b80601f01602080910402602001604051908101604052809291908181526020018280546107ce90613808565b801561081b5780601f106107f05761010080835404028352916020019161081b565b820191906000526020600020905b8154815290600101906020018083116107fe57829003601f168201915b505050505081526020019060010190610783565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b8282101561090857838290600052602060002001805461087b90613808565b80601f01602080910402602001604051908101604052809291908181526020018280546108a790613808565b80156108f45780601f106108c9576101008083540402835291602001916108f4565b820191906000526020600020905b8154815290600101906020018083116108d757829003601f168201915b50505050508152602001906001019061085c565b50505050815260200160048201548152602001600582015481526020016006820154815250509080600b016040518060e00160405290816000820180548060200260200160405190810160405280929190818152602001828054801561098d57602002820191906000526020600020905b815481526020019060010190808311610979575b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015610a1b57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116109d1575b5050505050815260200160028201805480602002602001604051908101604052809291908181526020016000905b82821015610af5578382906000526020600020018054610a6890613808565b80601f0160208091040260200160405190810160405280929190818152602001828054610a9490613808565b8015610ae15780601f10610ab657610100808354040283529160200191610ae1565b820191906000526020600020905b815481529060010190602001808311610ac457829003601f168201915b505050505081526020019060010190610a49565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b82821015610bce578382906000526020600020018054610b4190613808565b80601f0160208091040260200160405190810160405280929190818152602001828054610b6d90613808565b8015610bba5780601f10610b8f57610100808354040283529160200191610bba565b820191906000526020600020905b815481529060010190602001808311610b9d57829003601f168201915b505050505081526020019060010190610b22565b5050505081526020016004820154815260200160058201548152602001600682015481525050908060120160009054906101000a900460070b905089565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610c3a61225e565b73ffffffffffffffffffffffffffffffffffffffff16610c58610e08565b73ffffffffffffffffffffffffffffffffffffffff1614610cae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca5906137b9565b60405180910390fd5b80600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60048054610cff90613808565b80601f0160208091040260200160405190810160405280929190818152602001828054610d2b90613808565b8015610d785780601f10610d4d57610100808354040283529160200191610d78565b820191906000526020600020905b815481529060010190602001808311610d5b57829003601f168201915b505050505081565b610d8861225e565b73ffffffffffffffffffffffffffffffffffffffff16610da6610e08565b73ffffffffffffffffffffffffffffffffffffffff1614610dfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df3906137b9565b60405180910390fd5b610e066000612266565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600360009054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ed4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ecb90613886565b60405180910390fd5b83836001151560028383604051610eec9291906136be565b908152602001604051809103902060000160009054906101000a900460ff16151514610f4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f44906138f2565b60405180910390fd5b600060028787604051610f619291906136be565b90815260200160405180910390209050600081600b01905060008260040190508260000160059054906101000a900460030b60030b8360000160019054906101000a900460030b60030b1215610fbe5782600401915082600b0190505b60008260000180549050141561105057610fda8989838a61232a565b7fd86802201c3bf5d79ef71027c49cdfdee99fa298848917618ba148d098f15f7489898360000180549050846005015485600501548b6040516110229695949392919061393f565b60405180910390a18060000180549050816005015414156110485761104789896124b7565b5b505050611366565b600061105c8383612623565b905060008863ffffffff1682604001511161107b578160400151611083565b8863ffffffff165b905060008185600501546110979190613706565b90506000856005015490505b8181101561129d57600060648560200151886004015460648a60000186815481106110d1576110d061399b565b5b90600052602060002001546110e691906139ca565b6110f09190613a53565b6110fa91906139ca565b6111049190613a53565b905061117b87600101838154811061111f5761111e61399b565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168860000184815481106111605761115f61399b565b5b9060005260206000200154836111769190613706565b6126ac565b8660010182815481106111915761119061399b565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f60126990c62860b34a33a079082f6792fa0193def7ed581b626414399f9dae9c8f8f8a600101868154811061120b5761120a61399b565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168b600001878154811061124c5761124b61399b565b5b906000526020600020015486604051611269959493929190613a84565b60405180910390a28087600601546112819190613706565b876006018190555050808061129590613ad2565b9150506110a3565b507fd86802201c3bf5d79ef71027c49cdfdee99fa298848917618ba148d098f15f748c8c87600001805490508860050154858e6040516112e29695949392919061393f565b60405180910390a180856005018190555084600001805490508560050154141561135f57611354600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff168660060154856020015186600001516113459190613706565b61134f9190613b1b565b6126ac565b61135e8c8c6124b7565b5b5050505050505b505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146113fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f590613886565b60405180910390fd5b848460011515600283836040516114169291906136be565b908152602001604051809103902060000160009054906101000a900460ff16151514611477576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146e906138f2565b60405180910390fd5b60006002888860405161148b9291906136be565b908152602001604051809103902090506114a588886105b4565b156115ca57600360159054906101000a900460ff166114f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f090613bc1565b60405180910390fd5b848160000160016101000a81548163ffffffff021916908360030b63ffffffff160217905550858160120160006101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff160217905550878760405161155d9291906136be565b60405180910390207f977f157300bb4d69d09b3e083fb55a17a0c02f978e5b220c08173c63de9665aa8989898560000160019054906101000a900460030b8660010154876002015488600301546040516115bd9796959493929190613be1565b60405180910390a26116ca565b60008160000160059054906101000a900460030b60030b141561169757848160000160056101000a81548163ffffffff021916908360030b63ffffffff160217905550878760405161161d9291906136be565b60405180910390207fe097bf610f5827ffcdd36eb07b790e6ee02dd498f911ab45664208cfad9323b08989898560000160019054906101000a900460030b8660000160059054906101000a900460030b60405161167e959493929190613c4b565b60405180910390a261169288888689610e44565b6116c9565b6040517fd56be5db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b5050505050505050565b6116dc61225e565b73ffffffffffffffffffffffffffffffffffffffff166116fa610e08565b73ffffffffffffffffffffffffffffffffffffffff1614611750576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611747906137b9565b60405180910390fd5b80600360006101000a81548160ff021916908360ff16021790555050565b80806000019061177e9190613ca8565b61178882826105b4565b6117c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117be90613d7d565b60405180910390fd5b600360159054906101000a900460ff16611816576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180d90613de9565b60405180910390fd5b8280600001906118269190613ca8565b600115156002838360405161183c9291906136be565b908152602001604051809103902060000160009054906101000a900460ff1615151461189d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611894906138f2565b60405180910390fd5b600034116118e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d790613e55565b60405180910390fd5b60028580600001906118f29190613ca8565b6040516119009291906136be565b908152602001604051809103902060010154341015611954576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194b90613ee7565b60405180910390fd5b60028580600001906119669190613ca8565b6040516119749291906136be565b9081526020016040518091039020600201543411156119c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119bf90613f79565b60405180910390fd5b60008560600160208101906119dd9190613fc5565b15611afa57600160028780600001906119f69190613ca8565b604051611a049291906136be565b908152602001604051809103902060030154611a209190613b1b565b6002878060000190611a329190613ca8565b604051611a409291906136be565b9081526020016040518091039020600401600001805490501115611a99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9090614064565b60405180910390fd5b611af36002878060000190611aae9190613ca8565b604051611abc9291906136be565b908152602001604051809103902060040134888060200190611ade9190614084565b8a8060400190611aee9190614084565b612763565b9050611c0e565b60016002878060000190611b0e9190613ca8565b604051611b1c9291906136be565b908152602001604051809103902060030154611b389190613b1b565b6002878060000190611b4a9190613ca8565b604051611b589291906136be565b9081526020016040518091039020600b01600001805490501115611bb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba890614064565b60405180910390fd5b611c0b6002878060000190611bc69190613ca8565b604051611bd49291906136be565b9081526020016040518091039020600b0134888060200190611bf69190614084565b8a8060400190611c069190614084565b612763565b90505b6060868060200190611c209190614084565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505090506060878060400190611c779190614084565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050905060006002898060000190611cd09190613ca8565b604051611cde9291906136be565b908152602001604051809103902060120160009054906101000a900460070b90503373ffffffffffffffffffffffffffffffffffffffff16898060000190611d269190613ca8565b604051611d349291906136be565b60405180910390207ff291bb36c3b51271e4642a86feed650b5c8c1ceb8305facdd13577c05264526a8b8060000190611d6d9190613ca8565b33348f6060016020810190611d829190613fc5565b611dc1576040518060400160405280600481526020017f444f574e00000000000000000000000000000000000000000000000000000000815250611df8565b6040518060400160405280600281526020017f55500000000000000000000000000000000000000000000000000000000000008152505b8b8b8b8b604051611e1199989796959493929190614120565b60405180910390a3505050505050505050565b611e2c61225e565b73ffffffffffffffffffffffffffffffffffffffff16611e4a610e08565b73ffffffffffffffffffffffffffffffffffffffff1614611ea0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e97906137b9565b60405180910390fd5b6001600360156101000a81548160ff0219169083151502179055506040518060200160405280600081525060049080519060200190611ee09291906128a1565b507f762f260439bb4be3ef6e4dc2786e2e7bd187d3d80b79057d7a424fe98563e33560405160405180910390a1565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611f9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9690613886565b60405180910390fd5b600160028686604051611fb39291906136be565b908152602001604051809103902060000160006101000a81548160ff0219169083151502179055508260028686604051611fee9291906136be565b90815260200160405180910390206001018190555081600286866040516120169291906136be565b908152602001604051809103902060020181905550806002868660405161203e9291906136be565b9081526020016040518091039020600301819055505050505050565b61206261225e565b73ffffffffffffffffffffffffffffffffffffffff16612080610e08565b73ffffffffffffffffffffffffffffffffffffffff16146120d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120cd906137b9565b60405180910390fd5b6000600360156101000a81548160ff021916908315150217905550818160049190612102929190612927565b507fbbed56c796999ec9481de9169e54d6f193c57a335189c8b82053d80e263fdbd682826040516121349291906141bc565b60405180910390a15050565b61214861225e565b73ffffffffffffffffffffffffffffffffffffffff16612166610e08565b73ffffffffffffffffffffffffffffffffffffffff16146121bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b3906137b9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561222c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222390614252565b60405180910390fd5b61223581612266565b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000826005015483600001805490506123439190613b1b565b905060008263ffffffff16821161235a5781612362565b8263ffffffff165b905060008185600501546123769190613706565b90506000856005015490505b818110156124a4576123f48660010182815481106123a3576123a261399b565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168760000183815481106123e4576123e361399b565b5b90600052602060002001546126ac565b7f0ef369ab00174499e32a26cfe220b3dd58fad9d231e8319504ce52fa0801e0b4888888600101848154811061242d5761242c61399b565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1689600001858154811061246e5761246d61399b565b5b90600052602060002001546040516124899493929190614272565b60405180910390a1808061249c90613ad2565b915050612382565b5080856005018190555050505050505050565b600282826040516124c99291906136be565b9081526020016040518091039020600401600080820160006124eb91906129ad565b6001820160006124fb91906129ce565b60028201600061250b91906129ef565b60038201600061251b91906129ef565b6004820160009055600582016000905560068201600090555050600282826040516125479291906136be565b9081526020016040518091039020600b016000808201600061256991906129ad565b60018201600061257991906129ce565b60028201600061258991906129ef565b60038201600061259991906129ef565b6004820160009055600582016000905560068201600090555050600282826040516125c59291906136be565b908152602001604051809103902060000160016101000a81549063ffffffff0219169055600282826040516125fb9291906136be565b908152602001604051809103902060000160056101000a81549063ffffffff02191690555050565b61262b612a10565b600060648360040154600360009054906101000a900460ff1660ff1661265191906139ca565b61265b9190613a53565b90506000846005015485600001805490506126769190613b1b565b905060405180606001604052808381526020018386600401546126999190613b1b565b8152602001828152509250505092915050565b6000808373ffffffffffffffffffffffffffffffffffffffff166000846040516126d5906142d8565b600060405180830381858888f193505050503d8060008114612713576040519150601f19603f3d011682016040523d82523d6000602084013e612718565b606091505b50915091508161275d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161275490614339565b60405180910390fd5b50505050565b60008660000186908060018154018082558091505060019003906000526020600020016000909190919091505586600101339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555086600201858590918060018154018082558091505060019003906000526020600020016000909192909192909192909192509190612834929190612a31565b5086600301838390918060018154018082558091505060019003906000526020600020016000909192909192909192909192509190612874929190612a31565b50858760040160008282546128899190613706565b92505081905550866004015490509695505050505050565b8280546128ad90613808565b90600052602060002090601f0160209004810192826128cf5760008555612916565b82601f106128e857805160ff1916838001178555612916565b82800160010185558215612916579182015b828111156129155782518255916020019190600101906128fa565b5b5090506129239190612ab7565b5090565b82805461293390613808565b90600052602060002090601f016020900481019282612955576000855561299c565b82601f1061296e57803560ff191683800117855561299c565b8280016001018555821561299c579182015b8281111561299b578235825591602001919060010190612980565b5b5090506129a99190612ab7565b5090565b50805460008255906000526020600020908101906129cb9190612ab7565b50565b50805460008255906000526020600020908101906129ec9190612ab7565b50565b5080546000825590600052602060002090810190612a0d9190612ad4565b50565b60405180606001604052806000815260200160008152602001600081525090565b828054612a3d90613808565b90600052602060002090601f016020900481019282612a5f5760008555612aa6565b82601f10612a7857803560ff1916838001178555612aa6565b82800160010185558215612aa6579182015b82811115612aa5578235825591602001919060010190612a8a565b5b509050612ab39190612ab7565b5090565b5b80821115612ad0576000816000905550600101612ab8565b5090565b5b80821115612af45760008181612aeb9190612af8565b50600101612ad5565b5090565b508054612b0490613808565b6000825580601f10612b165750612b35565b601f016020900490600052602060002090810190612b349190612ab7565b5b50565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f840112612b7157612b70612b4c565b5b8235905067ffffffffffffffff811115612b8e57612b8d612b51565b5b602083019150836001820283011115612baa57612ba9612b56565b5b9250929050565b60008060208385031215612bc857612bc7612b42565b5b600083013567ffffffffffffffff811115612be657612be5612b47565b5b612bf285828601612b5b565b92509250509250929050565b60008115159050919050565b612c1381612bfe565b82525050565b6000602082019050612c2e6000830184612c0a565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c5f82612c34565b9050919050565b612c6f81612c54565b8114612c7a57600080fd5b50565b600081359050612c8c81612c66565b92915050565b600060208284031215612ca857612ca7612b42565b5b6000612cb684828501612c7d565b91505092915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612d0d82612cc4565b810181811067ffffffffffffffff82111715612d2c57612d2b612cd5565b5b80604052505050565b6000612d3f612b38565b9050612d4b8282612d04565b919050565b600067ffffffffffffffff821115612d6b57612d6a612cd5565b5b612d7482612cc4565b9050602081019050919050565b82818337600083830152505050565b6000612da3612d9e84612d50565b612d35565b905082815260208101848484011115612dbf57612dbe612cbf565b5b612dca848285612d81565b509392505050565b600082601f830112612de757612de6612b4c565b5b8135612df7848260208601612d90565b91505092915050565b600060208284031215612e1657612e15612b42565b5b600082013567ffffffffffffffff811115612e3457612e33612b47565b5b612e4084828501612dd2565b91505092915050565b60008160030b9050919050565b612e5f81612e49565b82525050565b6000819050919050565b612e7881612e65565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612eb381612e65565b82525050565b6000612ec58383612eaa565b60208301905092915050565b6000602082019050919050565b6000612ee982612e7e565b612ef38185612e89565b9350612efe83612e9a565b8060005b83811015612f2f578151612f168882612eb9565b9750612f2183612ed1565b925050600181019050612f02565b5085935050505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612f7181612c54565b82525050565b6000612f838383612f68565b60208301905092915050565b6000602082019050919050565b6000612fa782612f3c565b612fb18185612f47565b9350612fbc83612f58565b8060005b83811015612fed578151612fd48882612f77565b9750612fdf83612f8f565b925050600181019050612fc0565b5085935050505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613060578082015181840152602081019050613045565b8381111561306f576000848401525b50505050565b600061308082613026565b61308a8185613031565b935061309a818560208601613042565b6130a381612cc4565b840191505092915050565b60006130ba8383613075565b905092915050565b6000602082019050919050565b60006130da82612ffa565b6130e48185613005565b9350836020820285016130f685613016565b8060005b85811015613132578484038952815161311385826130ae565b945061311e836130c2565b925060208a019950506001810190506130fa565b50829750879550505050505092915050565b600060e08301600083015184820360008601526131618282612ede565b9150506020830151848203602086015261317b8282612f9c565b9150506040830151848203604086015261319582826130cf565b915050606083015184820360608601526131af82826130cf565b91505060808301516131c46080860182612eaa565b5060a08301516131d760a0860182612eaa565b5060c08301516131ea60c0860182612eaa565b508091505092915050565b60008160070b9050919050565b61320b816131f5565b82525050565b600061012082019050613227600083018c612c0a565b613234602083018b612e56565b613241604083018a612e56565b61324e6060830189612e6f565b61325b6080830188612e6f565b61326860a0830187612e6f565b81810360c083015261327a8186613144565b905081810360e083015261328e8185613144565b905061329e610100830184613202565b9a9950505050505050505050565b6132b581612c54565b82525050565b60006020820190506132d060008301846132ac565b92915050565b600081519050919050565b600082825260208201905092915050565b60006132fd826132d6565b61330781856132e1565b9350613317818560208601613042565b61332081612cc4565b840191505092915050565b6000602082019050818103600083015261334581846132f2565b905092915050565b600060ff82169050919050565b6133638161334d565b82525050565b600060208201905061337e600083018461335a565b92915050565b600063ffffffff82169050919050565b61339d81613384565b81146133a857600080fd5b50565b6000813590506133ba81613394565b92915050565b6133c9816131f5565b81146133d457600080fd5b50565b6000813590506133e6816133c0565b92915050565b6000806000806060858703121561340657613405612b42565b5b600085013567ffffffffffffffff81111561342457613423612b47565b5b61343087828801612b5b565b94509450506020613443878288016133ab565b9250506040613454878288016133d7565b91505092959194509250565b61346981612e49565b811461347457600080fd5b50565b60008135905061348681613460565b92915050565b6000806000806000608086880312156134a8576134a7612b42565b5b600086013567ffffffffffffffff8111156134c6576134c5612b47565b5b6134d288828901612b5b565b955095505060206134e5888289016133d7565b93505060406134f688828901613477565b9250506060613507888289016133ab565b9150509295509295909350565b61351d8161334d565b811461352857600080fd5b50565b60008135905061353a81613514565b92915050565b60006020828403121561355657613555612b42565b5b60006135648482850161352b565b91505092915050565b600080fd5b6000608082840312156135885761358761356d565b5b81905092915050565b6000602082840312156135a7576135a6612b42565b5b600082013567ffffffffffffffff8111156135c5576135c4612b47565b5b6135d184828501613572565b91505092915050565b6135e381612e65565b81146135ee57600080fd5b50565b600081359050613600816135da565b92915050565b60008060008060006080868803121561362257613621612b42565b5b600086013567ffffffffffffffff8111156136405761363f612b47565b5b61364c88828901612b5b565b9550955050602061365f888289016135f1565b9350506040613670888289016135f1565b9250506060613681888289016135f1565b9150509295509295909350565b600081905092915050565b60006136a5838561368e565b93506136b2838584612d81565b82840190509392505050565b60006136cb828486613699565b91508190509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061371182612e65565b915061371c83612e65565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613751576137506136d7565b5b828201905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006137a360208361375c565b91506137ae8261376d565b602082019050919050565b600060208201905081810360008301526137d281613796565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061382057607f821691505b60208210811415613834576138336137d9565b5b50919050565b7f4f6e6c792067616d6520636f6e74726f6c6c65722063616e20646f2074686973600082015250565b600061387060208361375c565b915061387b8261383a565b602082019050919050565b6000602082019050818103600083015261389f81613863565b9050919050565b7f506f6f6c20646f6573206e6f7420657869737400000000000000000000000000600082015250565b60006138dc60138361375c565b91506138e7826138a6565b602082019050919050565b6000602082019050818103600083015261390b816138cf565b9050919050565b600061391e83856132e1565b935061392b838584612d81565b61393483612cc4565b840190509392505050565b600060a082019050818103600083015261395a81888a613912565b90506139696020830187612e6f565b6139766040830186612e6f565b6139836060830185612e6f565b6139906080830184613202565b979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006139d582612e65565b91506139e083612e65565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613a1957613a186136d7565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613a5e82612e65565b9150613a6983612e65565b925082613a7957613a78613a24565b5b828204905092915050565b60006080820190508181036000830152613a9f818789613912565b9050613aae60208301866132ac565b613abb6040830185612e6f565b613ac86060830184612e6f565b9695505050505050565b6000613add82612e65565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613b1057613b0f6136d7565b5b600182019050919050565b6000613b2682612e65565b9150613b3183612e65565b925082821015613b4457613b436136d7565b5b828203905092915050565b7f5468652067616d65206973206e6f742072756e6e696e672c20726f756e64732060008201527f63616e206f6e6c7920626520656e646564206174207468697320706f696e7400602082015250565b6000613bab603f8361375c565b9150613bb682613b4f565b604082019050919050565b60006020820190508181036000830152613bda81613b9e565b9050919050565b600060c0820190508181036000830152613bfc81898b613912565b9050613c0b6020830188613202565b613c186040830187612e56565b613c256060830186612e6f565b613c326080830185612e6f565b613c3f60a0830184612e6f565b98975050505050505050565b60006080820190508181036000830152613c66818789613912565b9050613c756020830186613202565b613c826040830185612e56565b613c8f6060830184612e56565b9695505050505050565b600080fd5b600080fd5b600080fd5b60008083356001602003843603038112613cc557613cc4613c99565b5b80840192508235915067ffffffffffffffff821115613ce757613ce6613c9e565b5b602083019250600182023603831315613d0357613d02613ca3565b5b509250929050565b7f5468697320706f6f6c20686173206120726f756e6420696e2070726f6772657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d6760218361375c565b9150613d7282613d0b565b604082019050919050565b60006020820190508181036000830152613d9681613d5a565b9050919050565b7f5468652067616d65206973206e6f742072756e6e696e67000000000000000000600082015250565b6000613dd360178361375c565b9150613dde82613d9d565b602082019050919050565b60006020820190508181036000830152613e0281613dc6565b9050919050565b7f4e6565647320746f2073656e64204d6174696320746f20747261646500000000600082015250565b6000613e3f601c8361375c565b9150613e4a82613e09565b602082019050919050565b60006020820190508181036000830152613e6e81613e32565b9050919050565b7f547261646520616d6f756e742073686f756c642062652068696768657220746860008201527f616e20746865206d696e696d756d000000000000000000000000000000000000602082015250565b6000613ed1602e8361375c565b9150613edc82613e75565b604082019050919050565b60006020820190508181036000830152613f0081613ec4565b9050919050565b7f547261646520616d6f756e742073686f756c64206265206c6f7765722074686160008201527f6e20746865206d6178696d756d00000000000000000000000000000000000000602082015250565b6000613f63602d8361375c565b9150613f6e82613f07565b604082019050919050565b60006020820190508181036000830152613f9281613f56565b9050919050565b613fa281612bfe565b8114613fad57600080fd5b50565b600081359050613fbf81613f99565b92915050565b600060208284031215613fdb57613fda612b42565b5b6000613fe984828501613fb0565b91505092915050565b7f506f6f6c2069732066756c6c2c207761697420666f72206e65787420726f756e60008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b600061404e60218361375c565b915061405982613ff2565b604082019050919050565b6000602082019050818103600083015261407d81614041565b9050919050565b600080833560016020038436030381126140a1576140a0613c99565b5b80840192508235915067ffffffffffffffff8211156140c3576140c2613c9e565b5b6020830192506001820236038313156140df576140de613ca3565b5b509250929050565b60006140f282613026565b6140fc818561375c565b935061410c818560208601613042565b61411581612cc4565b840191505092915050565b600061010082019050818103600083015261413c818b8d613912565b905061414b602083018a6132ac565b6141586040830189612e6f565b818103606083015261416a81886140e7565b90506141796080830187612e6f565b81810360a083015261418b81866140e7565b905081810360c083015261419f81856140e7565b90506141ae60e0830184613202565b9a9950505050505050505050565b600060208201905081810360008301526141d7818486613912565b90509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061423c60268361375c565b9150614247826141e0565b604082019050919050565b6000602082019050818103600083015261426b8161422f565b9050919050565b6000606082019050818103600083015261428d818688613912565b905061429c60208301856132ac565b6142a96040830184612e6f565b95945050505050565b50565b60006142c260008361368e565b91506142cd826142b2565b600082019050919050565b60006142e3826142b5565b9150819050919050565b7f436f756c646e27742073656e6420657468657200000000000000000000000000600082015250565b600061432360138361375c565b915061432e826142ed565b602082019050919050565b6000602082019050818103600083015261435281614316565b905091905056fea26469706673582212206ebb902ad4f75eba24a0d40f4fb14b9d0c5419a99d363aabd174bcbf2ff07fa464736f6c634300080a0033

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

000000000000000000000000c2d778bc7481cf3397d02a4152c7f95d8d2df268

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

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


Deployed Bytecode Sourcemap

3219:9662:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10305:196;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5599:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3970:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10507:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3851:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;3927:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5858:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3996:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2513:94;;;;;;;;;;;;;:::i;:::-;;1862:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3892:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8003:1673;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6586:877;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5733:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11152:1515;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6130:120;;;;;;;;;;;;;:::i;:::-;;6256:324;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5973:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2762:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3817:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10305:196;10392:4;10494:1;10452:5;10458:6;;10452:13;;;;;;;:::i;:::-;;;;;;;;;;;;;:26;;:31;;:38;;;;10413:5;10419:6;;10413:13;;;;;;;:::i;:::-;;;;;;;;;;;;;:24;;:29;;:36;;;;:77;;;;:::i;:::-;10412:83;10405:90;;10305:196;;;;:::o;5599:128::-;2093:12;:10;:12::i;:::-;2082:23;;:7;:5;:7::i;:::-;:23;;;2074:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5704:17:::1;5687:14;;:34;;;;;;;;;;;;;;;;;;5599:128:::0;:::o;3970:21::-;;;;;;;;;;;;;:::o;10507:129::-;10581:4;10629:1;10601:5;10607:6;;10601:13;;;;;;;:::i;:::-;;;;;;;;;;;;;:24;;;;;;;;;;;;:29;;;10594:36;;10507:129;;;;:::o;3851:36::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3927:38::-;;;;;;;;;;;;;:::o;5858:109::-;2093:12;:10;:12::i;:::-;2082:23;;:7;:5;:7::i;:::-;:23;;;2074:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5948:13:::1;5935:10;;:26;;;;;;;;;;;;;;;;;;5858:109:::0;:::o;3996:29::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2513:94::-;2093:12;:10;:12::i;:::-;2082:23;;:7;:5;:7::i;:::-;:23;;;2074:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2578:21:::1;2596:1;2578:9;:21::i;:::-;2513:94::o:0;1862:87::-;1908:7;1935:6;;;;;;;;;;;1928:13;;1862:87;:::o;3892:30::-;;;;;;;;;;;;;:::o;8003:1673::-;5047:14;;;;;;;;;;;5033:28;;:10;:28;;;5025:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;8140:6:::1;;5443:4;5418:29;;:5;5424:6;;5418:13;;;;;;;:::i;:::-;;;;;;;;;;;;;:21;;;;;;;;;;;;:29;;;5410:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;8155:19:::2;8177:5;8183:6;;8177:13;;;;;;;:::i;:::-;;;;;;;;;;;;;8155:35;;8199:24;8226:5;:18;;8199:45;;8251:23;8277:5;:16;;8251:42;;8325:5;:14;;;;;;;;;;;;8306:33;;:5;:16;;;;;;;;;;;;:33;;;8302:118;;;8360:5;:16;;8350:26;;8394:5;:18;;8385:27;;8302:118;8455:1;8432:7;:12;;:19;;;;:24;8428:313;;;8467:37;8478:6;;8486;8494:9;8467:10;:37::i;:::-;8518:101;8535:6;;8543;:11;;:18;;;;8563:6;:23;;;8588:6;:23;;;8612:6;8518:101;;;;;;;;;;;:::i;:::-;;;;;;;;8661:6;:11;;:18;;;;8634:6;:23;;;:45;8630:89;;;8692:17;8702:6;;8692:9;:17::i;:::-;8630:89;8727:7;;;;;8428:313;8749:24;8776:38;8798:7;8807:6;8776:21;:38::i;:::-;8749:65;;8821:13;8852:9;8837:24;;:4;:12;;;:24;:51;;8876:4;:12;;;8837:51;;;8864:9;8837:51;;;8821:67;;8895:10;8935:5;8908:7;:24;;;:32;;;;:::i;:::-;8895:45;;8954:6;8963:7;:24;;;8954:33;;8949:406;8993:2;8989:1;:6;8949:406;;;9011:16;9094:3;9073:4;:18;;;9056:7;:13;;;9050:3;9032:7;:12;;9045:1;9032:15;;;;;;;;:::i;:::-;;;;;;;;;;:21;;;;:::i;:::-;:37;;;;:::i;:::-;9031:60;;;;:::i;:::-;:66;;;;:::i;:::-;9011:87;;9107:59;9117:7;:17;;9135:1;9117:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9150:7;:12;;9163:1;9150:15;;;;;;;;:::i;:::-;;;;;;;;;;9139:8;:26;;;;:::i;:::-;9107:9;:59::i;:::-;9255:7;:17;;9273:1;9255:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9180:96;;;9198:6;;9206:7;:17;;9224:1;9206:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9228:7;:12;;9241:1;9228:15;;;;;;;;:::i;:::-;;;;;;;;;;9245:8;9180:96;;;;;;;;;;:::i;:::-;;;;;;;;9339:8;9312:7;:24;;;:35;;;;:::i;:::-;9285:7;:24;;:62;;;;9002:353;8997:3;;;;;:::i;:::-;;;;8949:406;;;;9368:83;9385:6;;9393:7;:12;;:19;;;;9414:7;:24;;;9440:2;9444:6;9368:83;;;;;;;;;;;:::i;:::-;;;;;;;;9487:2;9460:7;:24;;:29;;;;9528:7;:12;;:19;;;;9500:7;:24;;;:47;9496:175;;;9558:79;9568:10;;;;;;;;;;;9612:7;:24;;;9591:4;:18;;;9580:4;:8;;;:29;;;;:::i;:::-;:56;;;;:::i;:::-;9558:9;:79::i;:::-;9646:17;9656:6;;9646:9;:17::i;:::-;9496:175;8148:1528;;;;;;5478:1;5105::::1;;8003:1673:::0;;;;:::o;6586:877::-;5047:14;;;;;;;;;;;5033:28;;:10;:28;;;5025:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;6737:6:::1;;5443:4;5418:29;;:5;5424:6;;5418:13;;;;;;;:::i;:::-;;;;;;;;;;;;;:21;;;;;;;;;;;;:29;;;5410:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;6752:26:::2;6781:5;6787:6;;6781:13;;;;;;;:::i;:::-;;;;;;;;;;;;;6752:42;;6806:18;6817:6;;6806:10;:18::i;:::-;6803:655;;;6843:9;;;;;;;;;;;6835:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;6955:5;6929:12;:23;;;:31;;;;;;;;;;;;;;;;;;;;6999:6;6969:12;:27;;;:36;;;;;;;;;;;;;;;;;;;;7161:6;;7025:143;;;;;;;:::i;:::-;;;;;;;;;7038:6;;7046;7054:12;:23;;;;;;;;;;;;7079:12;:25;;;7106:12;:25;;;7133:12;:26;;;7025:143;;;;;;;;;;;;:::i;:::-;;;;;;;;6803:655;;;7211:1;7186:12;:21;;;;;;;;;;;;:26;;;7182:276;;;7247:5;7223:12;:21;;;:29;;;;;;;;;;;;;;;;;;;;7343:6;;7268:82;;;;;;;:::i;:::-;;;;;;;;;7279:6;;7287;7295:12;:23;;;;;;;;;;;;7320:12;:21;;;;;;;;;;;;7268:82;;;;;;;;;;:::i;:::-;;;;;;;;7361:37;7372:6;;7380:9;7391:6;7361:10;:37::i;:::-;7182:276;;;7428:22;;;;;;;;;;;;;;7182:276;6803:655;6745:718;5105:1:::1;;6586:877:::0;;;;;:::o;5733:119::-;2093:12;:10;:12::i;:::-;2082:23;;:7;:5;:7::i;:::-;:23;;;2074:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5830:16:::1;5814:13;;:32;;;;;;;;;;;;;;;;;;5733:119:::0;:::o;11152:1515::-;11245:9;:16;;;;;;;;:::i;:::-;5179:18;5190:6;;5179:10;:18::i;:::-;5171:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;5298:9:::1;;;;;;;;;;;5290:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;11294:9:::2;:16;;;;;;;;:::i;:::-;5443:4;5418:29;;:5;5424:6;;5418:13;;;;;;;:::i;:::-;;;;;;;;;;;;;:21;;;;;;;;;;;;:29;;;5410:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;11339:1:::3;11327:9;:13;11319:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;11401:5;11407:9;:16;;;;;;;;:::i;:::-;11401:23;;;;;;;:::i;:::-;;;;;;;;;;;;;:36;;;11388:9;:49;;11380:108;;;;;;;;;;;;:::i;:::-;;;;;;;;;11516:5;11522:9;:16;;;;;;;;:::i;:::-;11516:23;;;;;;;:::i;:::-;;;;;;;;;;;;;:36;;;11503:9;:49;;11495:107;;;;;;;;;;;;:::i;:::-;;;;;;;;;11609:16;11638:9;:18;;;;;;;;;;:::i;:::-;11634:570;;;11763:1;11725:5;11731:9;:16;;;;;;;;:::i;:::-;11725:23;;;;;;;:::i;:::-;;;;;;;;;;;;;:37;;;:39;;;;:::i;:::-;11675:5;11681:9;:16;;;;;;;;:::i;:::-;11675:23;;;;;;;:::i;:::-;;;;;;;;;;;;;:34;;:39;;:46;;;;:89;;11667:134;;;;;;;;;;;;:::i;:::-;;;;;;;;;11821:97;11828:5;11834:9;:16;;;;;;;;:::i;:::-;11828:23;;;;;;;:::i;:::-;;;;;;;;;;;;;:34;;11864:9;11875;:19;;;;;;;;:::i;:::-;11896:9;:21;;;;;;;;:::i;:::-;11821:6;:97::i;:::-;11810:108;;11634:570;;;12039:1;12001:5;12007:9;:16;;;;;;;;:::i;:::-;12001:23;;;;;;;:::i;:::-;;;;;;;;;;;;;:37;;;:39;;;;:::i;:::-;11949:5;11955:9;:16;;;;;;;;:::i;:::-;11949:23;;;;;;;:::i;:::-;;;;;;;;;;;;;:36;;:41;;:48;;;;:91;;11941:136;;;;;;;;;;;;:::i;:::-;;;;;;;;;12097:99;12104:5;12110:9;:16;;;;;;;;:::i;:::-;12104:23;;;;;;;:::i;:::-;;;;;;;;;;;;;:36;;12142:9;12153;:19;;;;;;;;:::i;:::-;12174:9;:21;;;;;;;;:::i;:::-;12097:6;:99::i;:::-;12086:110;;11634:570;12212:20;12257:9;:19;;;;;;;;:::i;:::-;12248:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12292:25;12347:9;:21;;;;;;;;:::i;:::-;12333:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12384:20;12437:5;12443:9;:16;;;;;;;;:::i;:::-;12437:23;;;;;;;:::i;:::-;;;;;;;;;;;;;:38;;;;;;;;;;;;12420:55;;12613:10;12496:165;;12595:9;:16;;;;;;;;:::i;:::-;12496:165;;;;;;;:::i;:::-;;;;;;;;;12508:9;:16;;;;;;;;:::i;:::-;12526:10;12538:9;12550;:18;;;;;;;;;;:::i;:::-;12549:34;;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;;;::::0;::::3;12585:8;12625:6;12633:11;12646:14;12496:165;;;;;;;;;;;;;;:::i;:::-;;;;;;;;11312:1355;;;;5342:1:::2;;11152:1515:::0;;;:::o;6130:120::-;2093:12;:10;:12::i;:::-;2082:23;;:7;:5;:7::i;:::-;:23;;;2074:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6187:4:::1;6175:9;;:16;;;;;;;;;;;;;;;;;;6198:21;;;;;;;;;;;::::0;:16:::1;:21;;;;;;;;;;;;:::i;:::-;;6231:13;;;;;;;;;;6130:120::o:0;6256:324::-;5047:14;;;;;;;;;;;5033:28;;:10;:28;;;5025:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;6424:4:::1;6400:5;6406:6;;6400:13;;;;;;;:::i;:::-;;;;;;;;;;;;;:21;;;:28;;;;;;;;;;;;;;;;;;6464:12;6435:5;6441:6;;6435:13;;;;;;;:::i;:::-;;;;;;;;;;;;;:26;;:41;;;;6512:12;6483:5;6489:6;;6483:13;;;;;;;:::i;:::-;;;;;;;;;;;;;:26;;:41;;;;6561:13;6531:5;6537:6;;6531:13;;;;;;;:::i;:::-;;;;;;;;;;;;;:27;;:43;;;;6256:324:::0;;;;;:::o;5973:151::-;2093:12;:10;:12::i;:::-;2082:23;;:7;:5;:7::i;:::-;:23;;;2074:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6050:5:::1;6038:9;;:17;;;;;;;;;;;;;;;;;;6081:6;;6062:16;:25;;;;;;;:::i;:::-;;6099:19;6111:6;;6099:19;;;;;;;:::i;:::-;;;;;;;;5973:151:::0;;:::o;2762:192::-;2093:12;:10;:12::i;:::-;2082:23;;:7;:5;:7::i;:::-;:23;;;2074:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2871:1:::1;2851:22;;:8;:22;;;;2843:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2927:19;2937:8;2927:9;:19::i;:::-;2762:192:::0;:::o;3817:29::-;;;;;;;;;;;;;:::o;656:98::-;709:7;736:10;729:17;;656:98;:::o;2962:173::-;3018:16;3037:6;;;;;;;;;;;3018:25;;3063:8;3054:6;;:17;;;;;;;;;;;;;;;;;;3118:8;3087:40;;3108:8;3087:40;;;;;;;;;;;;3007:128;2962:173;:::o;7469:528::-;7590:15;7628:5;:22;;;7608:5;:10;;:17;;;;:42;;;;:::i;:::-;7590:60;;7657:13;7683:9;7673:19;;:7;:19;:41;;7707:7;7673:41;;;7695:9;7673:41;;;7657:57;;7721:10;7759:5;7734;:22;;;:30;;;;:::i;:::-;7721:43;;7778:6;7787:5;:22;;;7778:31;;7773:183;7815:2;7811:1;:6;7773:183;;;7834:44;7844:5;:15;;7860:1;7844:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7864:5;:10;;7875:1;7864:13;;;;;;;;:::i;:::-;;;;;;;;;;7834:9;:44::i;:::-;7892:56;7906:6;;7914:5;:15;;7930:1;7914:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7934:5;:10;;7945:1;7934:13;;;;;;;;:::i;:::-;;;;;;;;;;7892:56;;;;;;;;;:::i;:::-;;;;;;;;7819:4;;;;;:::i;:::-;;;;7773:183;;;;7989:2;7964:5;:22;;:27;;;;7583:414;;;7469:528;;;;:::o;10080:219::-;10155:5;10161:6;;10155:13;;;;;;;:::i;:::-;;;;;;;;;;;;;:24;;;10148:31;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;10193:5;10199:6;;10193:13;;;;;;;:::i;:::-;;;;;;;;;;;;;:26;;;10186:33;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;10233:5;10239:6;;10233:13;;;;;;;:::i;:::-;;;;;;;;;;;;;:24;;;10226:31;;;;;;;;;;;10271:5;10277:6;;10271:13;;;;;;;:::i;:::-;;;;;;;;;;;;;:22;;;10264:29;;;;;;;;;;;10080:219;;:::o;9682:392::-;9802:19;;:::i;:::-;9830:11;9875:3;9860:6;:12;;;9844:13;;;;;;;;;;;:28;;;;;;:::i;:::-;:34;;;;:::i;:::-;9830:48;;9885:15;9925:7;:24;;;9903:7;:12;;:19;;;;:46;;;;:::i;:::-;9885:64;;9963:105;;;;;;;;9990:3;9963:105;;;;10032:3;10017:6;:12;;;:18;;;;:::i;:::-;9963:105;;;;10053:7;9963:105;;;9956:112;;;;9682:392;;;;:::o;12673:204::-;12753:9;12764:17;12793:2;12785:16;;12807:1;12817:6;12785:43;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12752:76;;;;12843:4;12835:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;12745:132;;12673:204;;:::o;10642:383::-;10797:7;10813:8;:13;;10832:6;10813:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10846:8;:18;;10870:10;10846:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10888:8;:16;;10910:6;;10888:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10924:8;:18;;10948:11;;10924:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10985:6;10967:8;:14;;;:24;;;;;;;:::i;:::-;;;;;;;;11005:8;:14;;;10998:21;;10642:383;;;;;;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::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:126::-;2271:7;2311:42;2304:5;2300:54;2289:65;;2234:126;;;:::o;2366:96::-;2403:7;2432:24;2450:5;2432:24;:::i;:::-;2421:35;;2366:96;;;:::o;2468:122::-;2541:24;2559:5;2541:24;:::i;:::-;2534:5;2531:35;2521:63;;2580:1;2577;2570:12;2521:63;2468:122;:::o;2596:139::-;2642:5;2680:6;2667:20;2658:29;;2696:33;2723:5;2696:33;:::i;:::-;2596:139;;;;:::o;2741:329::-;2800:6;2849:2;2837:9;2828:7;2824:23;2820:32;2817:119;;;2855:79;;:::i;:::-;2817:119;2975:1;3000:53;3045:7;3036:6;3025:9;3021:22;3000:53;:::i;:::-;2990:63;;2946:117;2741:329;;;;:::o;3076:117::-;3185:1;3182;3175:12;3199:102;3240:6;3291:2;3287:7;3282:2;3275:5;3271:14;3267:28;3257:38;;3199:102;;;:::o;3307:180::-;3355:77;3352:1;3345:88;3452:4;3449:1;3442:15;3476:4;3473:1;3466:15;3493:281;3576:27;3598:4;3576:27;:::i;:::-;3568:6;3564:40;3706:6;3694:10;3691:22;3670:18;3658:10;3655:34;3652:62;3649:88;;;3717:18;;:::i;:::-;3649:88;3757:10;3753:2;3746:22;3536:238;3493:281;;:::o;3780:129::-;3814:6;3841:20;;:::i;:::-;3831:30;;3870:33;3898:4;3890:6;3870:33;:::i;:::-;3780:129;;;:::o;3915:307::-;3976:4;4066:18;4058:6;4055:30;4052:56;;;4088:18;;:::i;:::-;4052:56;4126:29;4148:6;4126:29;:::i;:::-;4118:37;;4210:4;4204;4200:15;4192:23;;3915:307;;;:::o;4228:154::-;4312:6;4307:3;4302;4289:30;4374:1;4365:6;4360:3;4356:16;4349:27;4228:154;;;:::o;4388:410::-;4465:5;4490:65;4506:48;4547:6;4506:48;:::i;:::-;4490:65;:::i;:::-;4481:74;;4578:6;4571:5;4564:21;4616:4;4609:5;4605:16;4654:3;4645:6;4640:3;4636:16;4633:25;4630:112;;;4661:79;;:::i;:::-;4630:112;4751:41;4785:6;4780:3;4775;4751:41;:::i;:::-;4471:327;4388:410;;;;;:::o;4817:338::-;4872:5;4921:3;4914:4;4906:6;4902:17;4898:27;4888:122;;4929:79;;:::i;:::-;4888:122;5046:6;5033:20;5071:78;5145:3;5137:6;5130:4;5122:6;5118:17;5071:78;:::i;:::-;5062:87;;4878:277;4817:338;;;;:::o;5161:507::-;5229:6;5278:2;5266:9;5257:7;5253:23;5249:32;5246:119;;;5284:79;;:::i;:::-;5246:119;5432:1;5421:9;5417:17;5404:31;5462:18;5454:6;5451:30;5448:117;;;5484:79;;:::i;:::-;5448:117;5589:62;5643:7;5634:6;5623:9;5619:22;5589:62;:::i;:::-;5579:72;;5375:286;5161:507;;;;:::o;5674:90::-;5709:7;5752:5;5749:1;5738:20;5727:31;;5674:90;;;:::o;5770:112::-;5853:22;5869:5;5853:22;:::i;:::-;5848:3;5841:35;5770:112;;:::o;5888:77::-;5925:7;5954:5;5943:16;;5888:77;;;:::o;5971:118::-;6058:24;6076:5;6058:24;:::i;:::-;6053:3;6046:37;5971:118;;:::o;6095:114::-;6162:6;6196:5;6190:12;6180:22;;6095:114;;;:::o;6215:174::-;6304:11;6338:6;6333:3;6326:19;6378:4;6373:3;6369:14;6354:29;;6215:174;;;;:::o;6395:132::-;6462:4;6485:3;6477:11;;6515:4;6510:3;6506:14;6498:22;;6395:132;;;:::o;6533:108::-;6610:24;6628:5;6610:24;:::i;:::-;6605:3;6598:37;6533:108;;:::o;6647:179::-;6716:10;6737:46;6779:3;6771:6;6737:46;:::i;:::-;6815:4;6810:3;6806:14;6792:28;;6647:179;;;;:::o;6832:113::-;6902:4;6934;6929:3;6925:14;6917:22;;6832:113;;;:::o;6981:712::-;7090:3;7119:54;7167:5;7119:54;:::i;:::-;7189:76;7258:6;7253:3;7189:76;:::i;:::-;7182:83;;7289:56;7339:5;7289:56;:::i;:::-;7368:7;7399:1;7384:284;7409:6;7406:1;7403:13;7384:284;;;7485:6;7479:13;7512:63;7571:3;7556:13;7512:63;:::i;:::-;7505:70;;7598:60;7651:6;7598:60;:::i;:::-;7588:70;;7444:224;7431:1;7428;7424:9;7419:14;;7384:284;;;7388:14;7684:3;7677:10;;7095:598;;;6981:712;;;;:::o;7699:114::-;7766:6;7800:5;7794:12;7784:22;;7699:114;;;:::o;7819:174::-;7908:11;7942:6;7937:3;7930:19;7982:4;7977:3;7973:14;7958:29;;7819:174;;;;:::o;7999:132::-;8066:4;8089:3;8081:11;;8119:4;8114:3;8110:14;8102:22;;7999:132;;;:::o;8137:108::-;8214:24;8232:5;8214:24;:::i;:::-;8209:3;8202:37;8137:108;;:::o;8251:179::-;8320:10;8341:46;8383:3;8375:6;8341:46;:::i;:::-;8419:4;8414:3;8410:14;8396:28;;8251:179;;;;:::o;8436:113::-;8506:4;8538;8533:3;8529:14;8521:22;;8436:113;;;:::o;8585:712::-;8694:3;8723:54;8771:5;8723:54;:::i;:::-;8793:76;8862:6;8857:3;8793:76;:::i;:::-;8786:83;;8893:56;8943:5;8893:56;:::i;:::-;8972:7;9003:1;8988:284;9013:6;9010:1;9007:13;8988:284;;;9089:6;9083:13;9116:63;9175:3;9160:13;9116:63;:::i;:::-;9109:70;;9202:60;9255:6;9202:60;:::i;:::-;9192:70;;9048:224;9035:1;9032;9028:9;9023:14;;8988:284;;;8992:14;9288:3;9281:10;;8699:598;;;8585:712;;;;:::o;9303:124::-;9380:6;9414:5;9408:12;9398:22;;9303:124;;;:::o;9433:184::-;9532:11;9566:6;9561:3;9554:19;9606:4;9601:3;9597:14;9582:29;;9433:184;;;;:::o;9623:142::-;9700:4;9723:3;9715:11;;9753:4;9748:3;9744:14;9736:22;;9623:142;;;:::o;9771:99::-;9823:6;9857:5;9851:12;9841:22;;9771:99;;;:::o;9876:159::-;9950:11;9984:6;9979:3;9972:19;10024:4;10019:3;10015:14;10000:29;;9876:159;;;;:::o;10041:307::-;10109:1;10119:113;10133:6;10130:1;10127:13;10119:113;;;10218:1;10213:3;10209:11;10203:18;10199:1;10194:3;10190:11;10183:39;10155:2;10152:1;10148:10;10143:15;;10119:113;;;10250:6;10247:1;10244:13;10241:101;;;10330:1;10321:6;10316:3;10312:16;10305:27;10241:101;10090:258;10041:307;;;:::o;10354:344::-;10432:3;10460:39;10493:5;10460:39;:::i;:::-;10515:61;10569:6;10564:3;10515:61;:::i;:::-;10508:68;;10585:52;10630:6;10625:3;10618:4;10611:5;10607:16;10585:52;:::i;:::-;10662:29;10684:6;10662:29;:::i;:::-;10657:3;10653:39;10646:46;;10436:262;10354:344;;;;:::o;10704:196::-;10793:10;10828:66;10890:3;10882:6;10828:66;:::i;:::-;10814:80;;10704:196;;;;:::o;10906:123::-;10986:4;11018;11013:3;11009:14;11001:22;;10906:123;;;:::o;11063:971::-;11192:3;11221:64;11279:5;11221:64;:::i;:::-;11301:86;11380:6;11375:3;11301:86;:::i;:::-;11294:93;;11413:3;11458:4;11450:6;11446:17;11441:3;11437:27;11488:66;11548:5;11488:66;:::i;:::-;11577:7;11608:1;11593:396;11618:6;11615:1;11612:13;11593:396;;;11689:9;11683:4;11679:20;11674:3;11667:33;11740:6;11734:13;11768:84;11847:4;11832:13;11768:84;:::i;:::-;11760:92;;11875:70;11938:6;11875:70;:::i;:::-;11865:80;;11974:4;11969:3;11965:14;11958:21;;11653:336;11640:1;11637;11633:9;11628:14;;11593:396;;;11597:14;12005:4;11998:11;;12025:3;12018:10;;11197:837;;;;;11063:971;;;;:::o;12112:1887::-;12231:3;12267:4;12262:3;12258:14;12354:4;12347:5;12343:16;12337:23;12407:3;12401:4;12397:14;12390:4;12385:3;12381:14;12374:38;12433:103;12531:4;12517:12;12433:103;:::i;:::-;12425:111;;12282:265;12634:4;12627:5;12623:16;12617:23;12687:3;12681:4;12677:14;12670:4;12665:3;12661:14;12654:38;12713:103;12811:4;12797:12;12713:103;:::i;:::-;12705:111;;12557:270;12912:4;12905:5;12901:16;12895:23;12965:3;12959:4;12955:14;12948:4;12943:3;12939:14;12932:38;12991:123;13109:4;13095:12;12991:123;:::i;:::-;12983:131;;12837:288;13212:4;13205:5;13201:16;13195:23;13265:3;13259:4;13255:14;13248:4;13243:3;13239:14;13232:38;13291:123;13409:4;13395:12;13291:123;:::i;:::-;13283:131;;13135:290;13508:4;13501:5;13497:16;13491:23;13527:63;13584:4;13579:3;13575:14;13561:12;13527:63;:::i;:::-;13435:165;13694:4;13687:5;13683:16;13677:23;13713:63;13770:4;13765:3;13761:14;13747:12;13713:63;:::i;:::-;13610:176;13880:4;13873:5;13869:16;13863:23;13899:63;13956:4;13951:3;13947:14;13933:12;13899:63;:::i;:::-;13796:176;13989:4;13982:11;;12236:1763;12112:1887;;;;:::o;14005:90::-;14040:7;14083:5;14080:1;14069:20;14058:31;;14005:90;;;:::o;14101:112::-;14184:22;14200:5;14184:22;:::i;:::-;14179:3;14172:35;14101:112;;:::o;14219:1374::-;14618:4;14656:3;14645:9;14641:19;14633:27;;14670:65;14732:1;14721:9;14717:17;14708:6;14670:65;:::i;:::-;14745:68;14809:2;14798:9;14794:18;14785:6;14745:68;:::i;:::-;14823;14887:2;14876:9;14872:18;14863:6;14823:68;:::i;:::-;14901:72;14969:2;14958:9;14954:18;14945:6;14901:72;:::i;:::-;14983:73;15051:3;15040:9;15036:19;15027:6;14983:73;:::i;:::-;15066;15134:3;15123:9;15119:19;15110:6;15066:73;:::i;:::-;15187:9;15181:4;15177:20;15171:3;15160:9;15156:19;15149:49;15215:108;15318:4;15309:6;15215:108;:::i;:::-;15207:116;;15371:9;15365:4;15361:20;15355:3;15344:9;15340:19;15333:49;15399:108;15502:4;15493:6;15399:108;:::i;:::-;15391:116;;15517:69;15581:3;15570:9;15566:19;15557:6;15517:69;:::i;:::-;14219:1374;;;;;;;;;;;;:::o;15599:118::-;15686:24;15704:5;15686:24;:::i;:::-;15681:3;15674:37;15599:118;;:::o;15723:222::-;15816:4;15854:2;15843:9;15839:18;15831:26;;15867:71;15935:1;15924:9;15920:17;15911:6;15867:71;:::i;:::-;15723:222;;;;:::o;15951:98::-;16002:6;16036:5;16030:12;16020:22;;15951:98;;;:::o;16055:168::-;16138:11;16172:6;16167:3;16160:19;16212:4;16207:3;16203:14;16188:29;;16055:168;;;;:::o;16229:360::-;16315:3;16343:38;16375:5;16343:38;:::i;:::-;16397:70;16460:6;16455:3;16397:70;:::i;:::-;16390:77;;16476:52;16521:6;16516:3;16509:4;16502:5;16498:16;16476:52;:::i;:::-;16553:29;16575:6;16553:29;:::i;:::-;16548:3;16544:39;16537:46;;16319:270;16229:360;;;;:::o;16595:309::-;16706:4;16744:2;16733:9;16729:18;16721:26;;16793:9;16787:4;16783:20;16779:1;16768:9;16764:17;16757:47;16821:76;16892:4;16883:6;16821:76;:::i;:::-;16813:84;;16595:309;;;;:::o;16910:86::-;16945:7;16985:4;16978:5;16974:16;16963:27;;16910:86;;;:::o;17002:112::-;17085:22;17101:5;17085:22;:::i;:::-;17080:3;17073:35;17002:112;;:::o;17120:214::-;17209:4;17247:2;17236:9;17232:18;17224:26;;17260:67;17324:1;17313:9;17309:17;17300:6;17260:67;:::i;:::-;17120:214;;;;:::o;17340:93::-;17376:7;17416:10;17409:5;17405:22;17394:33;;17340:93;;;:::o;17439:120::-;17511:23;17528:5;17511:23;:::i;:::-;17504:5;17501:34;17491:62;;17549:1;17546;17539:12;17491:62;17439:120;:::o;17565:137::-;17610:5;17648:6;17635:20;17626:29;;17664:32;17690:5;17664:32;:::i;:::-;17565:137;;;;:::o;17708:118::-;17779:22;17795:5;17779:22;:::i;:::-;17772:5;17769:33;17759:61;;17816:1;17813;17806:12;17759:61;17708:118;:::o;17832:135::-;17876:5;17914:6;17901:20;17892:29;;17930:31;17955:5;17930:31;:::i;:::-;17832:135;;;;:::o;17973:811::-;18058:6;18066;18074;18082;18131:2;18119:9;18110:7;18106:23;18102:32;18099:119;;;18137:79;;:::i;:::-;18099:119;18285:1;18274:9;18270:17;18257:31;18315:18;18307:6;18304:30;18301:117;;;18337:79;;:::i;:::-;18301:117;18450:64;18506:7;18497:6;18486:9;18482:22;18450:64;:::i;:::-;18432:82;;;;18228:296;18563:2;18589:52;18633:7;18624:6;18613:9;18609:22;18589:52;:::i;:::-;18579:62;;18534:117;18690:2;18716:51;18759:7;18750:6;18739:9;18735:22;18716:51;:::i;:::-;18706:61;;18661:116;17973:811;;;;;;;:::o;18790:118::-;18861:22;18877:5;18861:22;:::i;:::-;18854:5;18851:33;18841:61;;18898:1;18895;18888:12;18841:61;18790:118;:::o;18914:135::-;18958:5;18996:6;18983:20;18974:29;;19012:31;19037:5;19012:31;:::i;:::-;18914:135;;;;:::o;19055:953::-;19147:6;19155;19163;19171;19179;19228:3;19216:9;19207:7;19203:23;19199:33;19196:120;;;19235:79;;:::i;:::-;19196:120;19383:1;19372:9;19368:17;19355:31;19413:18;19405:6;19402:30;19399:117;;;19435:79;;:::i;:::-;19399:117;19548:64;19604:7;19595:6;19584:9;19580:22;19548:64;:::i;:::-;19530:82;;;;19326:296;19661:2;19687:51;19730:7;19721:6;19710:9;19706:22;19687:51;:::i;:::-;19677:61;;19632:116;19787:2;19813:51;19856:7;19847:6;19836:9;19832:22;19813:51;:::i;:::-;19803:61;;19758:116;19913:2;19939:52;19983:7;19974:6;19963:9;19959:22;19939:52;:::i;:::-;19929:62;;19884:117;19055:953;;;;;;;;:::o;20014:118::-;20085:22;20101:5;20085:22;:::i;:::-;20078:5;20075:33;20065:61;;20122:1;20119;20112:12;20065:61;20014:118;:::o;20138:135::-;20182:5;20220:6;20207:20;20198:29;;20236:31;20261:5;20236:31;:::i;:::-;20138:135;;;;:::o;20279:325::-;20336:6;20385:2;20373:9;20364:7;20360:23;20356:32;20353:119;;;20391:79;;:::i;:::-;20353:119;20511:1;20536:51;20579:7;20570:6;20559:9;20555:22;20536:51;:::i;:::-;20526:61;;20482:115;20279:325;;;;:::o;20610:117::-;20719:1;20716;20709:12;20778:240;20859:5;20900:3;20891:6;20886:3;20882:16;20878:26;20875:113;;;20907:79;;:::i;:::-;20875:113;21006:6;20997:15;;20778:240;;;;:::o;21024:559::-;21118:6;21167:2;21155:9;21146:7;21142:23;21138:32;21135:119;;;21173:79;;:::i;:::-;21135:119;21321:1;21310:9;21306:17;21293:31;21351:18;21343:6;21340:30;21337:117;;;21373:79;;:::i;:::-;21337:117;21478:88;21558:7;21549:6;21538:9;21534:22;21478:88;:::i;:::-;21468:98;;21264:312;21024:559;;;;:::o;21589:122::-;21662:24;21680:5;21662:24;:::i;:::-;21655:5;21652:35;21642:63;;21701:1;21698;21691:12;21642:63;21589:122;:::o;21717:139::-;21763:5;21801:6;21788:20;21779:29;;21817:33;21844:5;21817:33;:::i;:::-;21717:139;;;;:::o;21862:963::-;21959:6;21967;21975;21983;21991;22040:3;22028:9;22019:7;22015:23;22011:33;22008:120;;;22047:79;;:::i;:::-;22008:120;22195:1;22184:9;22180:17;22167:31;22225:18;22217:6;22214:30;22211:117;;;22247:79;;:::i;:::-;22211:117;22360:64;22416:7;22407:6;22396:9;22392:22;22360:64;:::i;:::-;22342:82;;;;22138:296;22473:2;22499:53;22544:7;22535:6;22524:9;22520:22;22499:53;:::i;:::-;22489:63;;22444:118;22601:2;22627:53;22672:7;22663:6;22652:9;22648:22;22627:53;:::i;:::-;22617:63;;22572:118;22729:2;22755:53;22800:7;22791:6;22780:9;22776:22;22755:53;:::i;:::-;22745:63;;22700:118;21862:963;;;;;;;;:::o;22831:147::-;22932:11;22969:3;22954:18;;22831:147;;;;:::o;23006:314::-;23120:3;23141:88;23222:6;23217:3;23141:88;:::i;:::-;23134:95;;23239:43;23275:6;23270:3;23263:5;23239:43;:::i;:::-;23307:6;23302:3;23298:16;23291:23;;23006:314;;;;;:::o;23326:291::-;23466:3;23488:103;23587:3;23578:6;23570;23488:103;:::i;:::-;23481:110;;23608:3;23601:10;;23326:291;;;;;:::o;23623:180::-;23671:77;23668:1;23661:88;23768:4;23765:1;23758:15;23792:4;23789:1;23782:15;23809:305;23849:3;23868:20;23886:1;23868:20;:::i;:::-;23863:25;;23902:20;23920:1;23902:20;:::i;:::-;23897:25;;24056:1;23988:66;23984:74;23981:1;23978:81;23975:107;;;24062:18;;:::i;:::-;23975:107;24106:1;24103;24099:9;24092:16;;23809:305;;;;:::o;24120:169::-;24204:11;24238:6;24233:3;24226:19;24278:4;24273:3;24269:14;24254:29;;24120:169;;;;:::o;24295:182::-;24435:34;24431:1;24423:6;24419:14;24412:58;24295:182;:::o;24483:366::-;24625:3;24646:67;24710:2;24705:3;24646:67;:::i;:::-;24639:74;;24722:93;24811:3;24722:93;:::i;:::-;24840:2;24835:3;24831:12;24824:19;;24483:366;;;:::o;24855:419::-;25021:4;25059:2;25048:9;25044:18;25036:26;;25108:9;25102:4;25098:20;25094:1;25083:9;25079:17;25072:47;25136:131;25262:4;25136:131;:::i;:::-;25128:139;;24855:419;;;:::o;25280:180::-;25328:77;25325:1;25318:88;25425:4;25422:1;25415:15;25449:4;25446:1;25439:15;25466:320;25510:6;25547:1;25541:4;25537:12;25527:22;;25594:1;25588:4;25584:12;25615:18;25605:81;;25671:4;25663:6;25659:17;25649:27;;25605:81;25733:2;25725:6;25722:14;25702:18;25699:38;25696:84;;;25752:18;;:::i;:::-;25696:84;25517:269;25466:320;;;:::o;25792:182::-;25932:34;25928:1;25920:6;25916:14;25909:58;25792:182;:::o;25980:366::-;26122:3;26143:67;26207:2;26202:3;26143:67;:::i;:::-;26136:74;;26219:93;26308:3;26219:93;:::i;:::-;26337:2;26332:3;26328:12;26321:19;;25980:366;;;:::o;26352:419::-;26518:4;26556:2;26545:9;26541:18;26533:26;;26605:9;26599:4;26595:20;26591:1;26580:9;26576:17;26569:47;26633:131;26759:4;26633:131;:::i;:::-;26625:139;;26352:419;;;:::o;26777:169::-;26917:21;26913:1;26905:6;26901:14;26894:45;26777:169;:::o;26952:366::-;27094:3;27115:67;27179:2;27174:3;27115:67;:::i;:::-;27108:74;;27191:93;27280:3;27191:93;:::i;:::-;27309:2;27304:3;27300:12;27293:19;;26952:366;;;:::o;27324:419::-;27490:4;27528:2;27517:9;27513:18;27505:26;;27577:9;27571:4;27567:20;27563:1;27552:9;27548:17;27541:47;27605:131;27731:4;27605:131;:::i;:::-;27597:139;;27324:419;;;:::o;27771:301::-;27867:3;27888:70;27951:6;27946:3;27888:70;:::i;:::-;27881:77;;27968:43;28004:6;27999:3;27992:5;27968:43;:::i;:::-;28036:29;28058:6;28036:29;:::i;:::-;28031:3;28027:39;28020:46;;27771:301;;;;;:::o;28078:763::-;28307:4;28345:3;28334:9;28330:19;28322:27;;28395:9;28389:4;28385:20;28381:1;28370:9;28366:17;28359:47;28423:86;28504:4;28495:6;28487;28423:86;:::i;:::-;28415:94;;28519:72;28587:2;28576:9;28572:18;28563:6;28519:72;:::i;:::-;28601;28669:2;28658:9;28654:18;28645:6;28601:72;:::i;:::-;28683;28751:2;28740:9;28736:18;28727:6;28683:72;:::i;:::-;28765:69;28829:3;28818:9;28814:19;28805:6;28765:69;:::i;:::-;28078:763;;;;;;;;;:::o;28847:180::-;28895:77;28892:1;28885:88;28992:4;28989:1;28982:15;29016:4;29013:1;29006:15;29033:348;29073:7;29096:20;29114:1;29096:20;:::i;:::-;29091:25;;29130:20;29148:1;29130:20;:::i;:::-;29125:25;;29318:1;29250:66;29246:74;29243:1;29240:81;29235:1;29228:9;29221:17;29217:105;29214:131;;;29325:18;;:::i;:::-;29214:131;29373:1;29370;29366:9;29355:20;;29033:348;;;;:::o;29387:180::-;29435:77;29432:1;29425:88;29532:4;29529:1;29522:15;29556:4;29553:1;29546:15;29573:185;29613:1;29630:20;29648:1;29630:20;:::i;:::-;29625:25;;29664:20;29682:1;29664:20;:::i;:::-;29659:25;;29703:1;29693:35;;29708:18;;:::i;:::-;29693:35;29750:1;29747;29743:9;29738:14;;29573:185;;;;:::o;29764:660::-;29969:4;30007:3;29996:9;29992:19;29984:27;;30057:9;30051:4;30047:20;30043:1;30032:9;30028:17;30021:47;30085:86;30166:4;30157:6;30149;30085:86;:::i;:::-;30077:94;;30181:72;30249:2;30238:9;30234:18;30225:6;30181:72;:::i;:::-;30263;30331:2;30320:9;30316:18;30307:6;30263:72;:::i;:::-;30345;30413:2;30402:9;30398:18;30389:6;30345:72;:::i;:::-;29764:660;;;;;;;;:::o;30430:233::-;30469:3;30492:24;30510:5;30492:24;:::i;:::-;30483:33;;30538:66;30531:5;30528:77;30525:103;;;30608:18;;:::i;:::-;30525:103;30655:1;30648:5;30644:13;30637:20;;30430:233;;;:::o;30669:191::-;30709:4;30729:20;30747:1;30729:20;:::i;:::-;30724:25;;30763:20;30781:1;30763:20;:::i;:::-;30758:25;;30802:1;30799;30796:8;30793:34;;;30807:18;;:::i;:::-;30793:34;30852:1;30849;30845:9;30837:17;;30669:191;;;;:::o;30866:250::-;31006:34;31002:1;30994:6;30990:14;30983:58;31075:33;31070:2;31062:6;31058:15;31051:58;30866:250;:::o;31122:366::-;31264:3;31285:67;31349:2;31344:3;31285:67;:::i;:::-;31278:74;;31361:93;31450:3;31361:93;:::i;:::-;31479:2;31474:3;31470:12;31463:19;;31122:366;;;:::o;31494:419::-;31660:4;31698:2;31687:9;31683:18;31675:26;;31747:9;31741:4;31737:20;31733:1;31722:9;31718:17;31711:47;31775:131;31901:4;31775:131;:::i;:::-;31767:139;;31494:419;;;:::o;31919:866::-;32172:4;32210:3;32199:9;32195:19;32187:27;;32260:9;32254:4;32250:20;32246:1;32235:9;32231:17;32224:47;32288:86;32369:4;32360:6;32352;32288:86;:::i;:::-;32280:94;;32384:68;32448:2;32437:9;32433:18;32424:6;32384:68;:::i;:::-;32462;32526:2;32515:9;32511:18;32502:6;32462:68;:::i;:::-;32540:72;32608:2;32597:9;32593:18;32584:6;32540:72;:::i;:::-;32622:73;32690:3;32679:9;32675:19;32666:6;32622:73;:::i;:::-;32705;32773:3;32762:9;32758:19;32749:6;32705:73;:::i;:::-;31919:866;;;;;;;;;;:::o;32791:636::-;32984:4;33022:3;33011:9;33007:19;32999:27;;33072:9;33066:4;33062:20;33058:1;33047:9;33043:17;33036:47;33100:86;33181:4;33172:6;33164;33100:86;:::i;:::-;33092:94;;33196:68;33260:2;33249:9;33245:18;33236:6;33196:68;:::i;:::-;33274;33338:2;33327:9;33323:18;33314:6;33274:68;:::i;:::-;33352;33416:2;33405:9;33401:18;33392:6;33352:68;:::i;:::-;32791:636;;;;;;;;:::o;33433:117::-;33542:1;33539;33532:12;33556:117;33665:1;33662;33655:12;33679:117;33788:1;33785;33778:12;33802:724;33879:4;33885:6;33941:11;33928:25;34041:1;34035:4;34031:12;34020:8;34004:14;34000:29;33996:48;33976:18;33972:73;33962:168;;34049:79;;:::i;:::-;33962:168;34161:18;34151:8;34147:33;34139:41;;34213:4;34200:18;34190:28;;34241:18;34233:6;34230:30;34227:117;;;34263:79;;:::i;:::-;34227:117;34371:2;34365:4;34361:13;34353:21;;34428:4;34420:6;34416:17;34400:14;34396:38;34390:4;34386:49;34383:136;;;34438:79;;:::i;:::-;34383:136;33892:634;33802:724;;;;;:::o;34532:220::-;34672:34;34668:1;34660:6;34656:14;34649:58;34741:3;34736:2;34728:6;34724:15;34717:28;34532:220;:::o;34758:366::-;34900:3;34921:67;34985:2;34980:3;34921:67;:::i;:::-;34914:74;;34997:93;35086:3;34997:93;:::i;:::-;35115:2;35110:3;35106:12;35099:19;;34758:366;;;:::o;35130:419::-;35296:4;35334:2;35323:9;35319:18;35311:26;;35383:9;35377:4;35373:20;35369:1;35358:9;35354:17;35347:47;35411:131;35537:4;35411:131;:::i;:::-;35403:139;;35130:419;;;:::o;35555:173::-;35695:25;35691:1;35683:6;35679:14;35672:49;35555:173;:::o;35734:366::-;35876:3;35897:67;35961:2;35956:3;35897:67;:::i;:::-;35890:74;;35973:93;36062:3;35973:93;:::i;:::-;36091:2;36086:3;36082:12;36075:19;;35734:366;;;:::o;36106:419::-;36272:4;36310:2;36299:9;36295:18;36287:26;;36359:9;36353:4;36349:20;36345:1;36334:9;36330:17;36323:47;36387:131;36513:4;36387:131;:::i;:::-;36379:139;;36106:419;;;:::o;36531:178::-;36671:30;36667:1;36659:6;36655:14;36648:54;36531:178;:::o;36715:366::-;36857:3;36878:67;36942:2;36937:3;36878:67;:::i;:::-;36871:74;;36954:93;37043:3;36954:93;:::i;:::-;37072:2;37067:3;37063:12;37056:19;;36715:366;;;:::o;37087:419::-;37253:4;37291:2;37280:9;37276:18;37268:26;;37340:9;37334:4;37330:20;37326:1;37315:9;37311:17;37304:47;37368:131;37494:4;37368:131;:::i;:::-;37360:139;;37087:419;;;:::o;37512:233::-;37652:34;37648:1;37640:6;37636:14;37629:58;37721:16;37716:2;37708:6;37704:15;37697:41;37512:233;:::o;37751:366::-;37893:3;37914:67;37978:2;37973:3;37914:67;:::i;:::-;37907:74;;37990:93;38079:3;37990:93;:::i;:::-;38108:2;38103:3;38099:12;38092:19;;37751:366;;;:::o;38123:419::-;38289:4;38327:2;38316:9;38312:18;38304:26;;38376:9;38370:4;38366:20;38362:1;38351:9;38347:17;38340:47;38404:131;38530:4;38404:131;:::i;:::-;38396:139;;38123:419;;;:::o;38548:232::-;38688:34;38684:1;38676:6;38672:14;38665:58;38757:15;38752:2;38744:6;38740:15;38733:40;38548:232;:::o;38786:366::-;38928:3;38949:67;39013:2;39008:3;38949:67;:::i;:::-;38942:74;;39025:93;39114:3;39025:93;:::i;:::-;39143:2;39138:3;39134:12;39127:19;;38786:366;;;:::o;39158:419::-;39324:4;39362:2;39351:9;39347:18;39339:26;;39411:9;39405:4;39401:20;39397:1;39386:9;39382:17;39375:47;39439:131;39565:4;39439:131;:::i;:::-;39431:139;;39158:419;;;:::o;39583:116::-;39653:21;39668:5;39653:21;:::i;:::-;39646:5;39643:32;39633:60;;39689:1;39686;39679:12;39633:60;39583:116;:::o;39705:133::-;39748:5;39786:6;39773:20;39764:29;;39802:30;39826:5;39802:30;:::i;:::-;39705:133;;;;:::o;39844:323::-;39900:6;39949:2;39937:9;39928:7;39924:23;39920:32;39917:119;;;39955:79;;:::i;:::-;39917:119;40075:1;40100:50;40142:7;40133:6;40122:9;40118:22;40100:50;:::i;:::-;40090:60;;40046:114;39844:323;;;;:::o;40173:220::-;40313:34;40309:1;40301:6;40297:14;40290:58;40382:3;40377:2;40369:6;40365:15;40358:28;40173:220;:::o;40399:366::-;40541:3;40562:67;40626:2;40621:3;40562:67;:::i;:::-;40555:74;;40638:93;40727:3;40638:93;:::i;:::-;40756:2;40751:3;40747:12;40740:19;;40399:366;;;:::o;40771:419::-;40937:4;40975:2;40964:9;40960:18;40952:26;;41024:9;41018:4;41014:20;41010:1;40999:9;40995:17;40988:47;41052:131;41178:4;41052:131;:::i;:::-;41044:139;;40771:419;;;:::o;41196:725::-;41274:4;41280:6;41336:11;41323:25;41436:1;41430:4;41426:12;41415:8;41399:14;41395:29;41391:48;41371:18;41367:73;41357:168;;41444:79;;:::i;:::-;41357:168;41556:18;41546:8;41542:33;41534:41;;41608:4;41595:18;41585:28;;41636:18;41628:6;41625:30;41622:117;;;41658:79;;:::i;:::-;41622:117;41766:2;41760:4;41756:13;41748:21;;41823:4;41815:6;41811:17;41795:14;41791:38;41785:4;41781:49;41778:136;;;41833:79;;:::i;:::-;41778:136;41287:634;41196:725;;;;;:::o;41927:364::-;42015:3;42043:39;42076:5;42043:39;:::i;:::-;42098:71;42162:6;42157:3;42098:71;:::i;:::-;42091:78;;42178:52;42223:6;42218:3;42211:4;42204:5;42200:16;42178:52;:::i;:::-;42255:29;42277:6;42255:29;:::i;:::-;42250:3;42246:39;42239:46;;42019:272;41927:364;;;;:::o;42297:1369::-;42670:4;42708:3;42697:9;42693:19;42685:27;;42758:9;42752:4;42748:20;42744:1;42733:9;42729:17;42722:47;42786:86;42867:4;42858:6;42850;42786:86;:::i;:::-;42778:94;;42882:72;42950:2;42939:9;42935:18;42926:6;42882:72;:::i;:::-;42964;43032:2;43021:9;43017:18;43008:6;42964:72;:::i;:::-;43083:9;43077:4;43073:20;43068:2;43057:9;43053:18;43046:48;43111:78;43184:4;43175:6;43111:78;:::i;:::-;43103:86;;43199:73;43267:3;43256:9;43252:19;43243:6;43199:73;:::i;:::-;43320:9;43314:4;43310:20;43304:3;43293:9;43289:19;43282:49;43348:78;43421:4;43412:6;43348:78;:::i;:::-;43340:86;;43474:9;43468:4;43464:20;43458:3;43447:9;43443:19;43436:49;43502:78;43575:4;43566:6;43502:78;:::i;:::-;43494:86;;43590:69;43654:3;43643:9;43639:19;43630:6;43590:69;:::i;:::-;42297:1369;;;;;;;;;;;;:::o;43672:329::-;43793:4;43831:2;43820:9;43816:18;43808:26;;43880:9;43874:4;43870:20;43866:1;43855:9;43851:17;43844:47;43908:86;43989:4;43980:6;43972;43908:86;:::i;:::-;43900:94;;43672:329;;;;;:::o;44007:225::-;44147:34;44143:1;44135:6;44131:14;44124:58;44216:8;44211:2;44203:6;44199:15;44192:33;44007:225;:::o;44238:366::-;44380:3;44401:67;44465:2;44460:3;44401:67;:::i;:::-;44394:74;;44477:93;44566:3;44477:93;:::i;:::-;44595:2;44590:3;44586:12;44579:19;;44238:366;;;:::o;44610:419::-;44776:4;44814:2;44803:9;44799:18;44791:26;;44863:9;44857:4;44853:20;44849:1;44838:9;44834:17;44827:47;44891:131;45017:4;44891:131;:::i;:::-;44883:139;;44610:419;;;:::o;45035:549::-;45212:4;45250:2;45239:9;45235:18;45227:26;;45299:9;45293:4;45289:20;45285:1;45274:9;45270:17;45263:47;45327:86;45408:4;45399:6;45391;45327:86;:::i;:::-;45319:94;;45423:72;45491:2;45480:9;45476:18;45467:6;45423:72;:::i;:::-;45505;45573:2;45562:9;45558:18;45549:6;45505:72;:::i;:::-;45035:549;;;;;;;:::o;45590:114::-;;:::o;45710:398::-;45869:3;45890:83;45971:1;45966:3;45890:83;:::i;:::-;45883:90;;45982:93;46071:3;45982:93;:::i;:::-;46100:1;46095:3;46091:11;46084:18;;45710:398;;;:::o;46114:379::-;46298:3;46320:147;46463:3;46320:147;:::i;:::-;46313:154;;46484:3;46477:10;;46114:379;;;:::o;46499:169::-;46639:21;46635:1;46627:6;46623:14;46616:45;46499:169;:::o;46674:366::-;46816:3;46837:67;46901:2;46896:3;46837:67;:::i;:::-;46830:74;;46913:93;47002:3;46913:93;:::i;:::-;47031:2;47026:3;47022:12;47015:19;;46674:366;;;:::o;47046:419::-;47212:4;47250:2;47239:9;47235:18;47227:26;;47299:9;47293:4;47289:20;47285:1;47274:9;47270:17;47263:47;47327:131;47453:4;47327:131;:::i;:::-;47319:139;;47046:419;;;:::o

Swarm Source

ipfs://6ebb902ad4f75eba24a0d40f4fb14b9d0c5419a99d363aabd174bcbf2ff07fa4

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

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.