ETH Price: $2,075.05 (+2.88%)

Contract

0x35BC8E9DF272f81e3a9e32e33Fae2DFf7Ba0AC93
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
End Game189105072024-01-01 5:27:11799 days ago1704086831IN
0x35BC8E9D...f7Ba0AC93
0 ETH0.000960589.54491445
New Game189105032024-01-01 5:26:23799 days ago1704086783IN
0x35BC8E9D...f7Ba0AC93
0 ETH0.0026879810.10681539
Abort All Games180275322023-08-30 12:51:59923 days ago1693399919IN
0x35BC8E9D...f7Ba0AC93
0 ETH0.0007131427.14586705
New Game180275242023-08-30 12:50:23923 days ago1693399823IN
0x35BC8E9D...f7Ba0AC93
0 ETH0.0025476326.92973925
Set Betting Toke...180236272023-08-29 23:44:47923 days ago1693352687IN
0x35BC8E9D...f7Ba0AC93
0 ETH0.0006001620.43885341

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
DiceGameContract

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2023-08-29
*/

// 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;
    }
}

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() {
        _transferOwnership(_msgSender());
    }

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

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

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

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

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

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

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);

    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `from` to `to` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address from, address to, uint256 amount) external returns (bool);
}

contract DiceGameContract is Ownable {
    address public revenueWallet;
    IERC20 public bettingToken;
    IERC20 public WETH;
    uint256 public immutable minimumBet;
    uint256 public immutable revenueBps;

    constructor(
        address _bettingToken,
        address _WETH,
        uint256 _minimumBet,
        uint256 _revenueBps,
        address _revenueWallet
    ) {
        revenueWallet = _revenueWallet;
        revenueBps = _revenueBps;
        bettingToken = IERC20(_bettingToken);
        WETH = IERC20(_WETH);
        minimumBet = _minimumBet;
    }

    struct Game {
        uint256 minBet;
        uint256[] betAmounts;
        address[] players;
        bool inProgress;
        uint16 loser;
    }

    mapping(int64 => Game) public games;
    int64[] public activeTgGroups;

    event Bet(int64 tgChatId, address player, uint256 amount);
    event Win(int64 tgChatId, address player, uint256 amount);
    event Loss(int64 tgChatId, address player, uint256 amount);
    event Revenue(int64 tgChatId, uint256 amount);

    function isGameInProgress(int64 _tgChatId) public view returns (bool) {
        return games[_tgChatId].inProgress;
    }

    function removeTgId(int64 _tgChatId) internal {
        for (uint256 i = 0; i < activeTgGroups.length; i++) {
            if (activeTgGroups[i] == _tgChatId) {
                activeTgGroups[i] = activeTgGroups[activeTgGroups.length - 1];
                activeTgGroups.pop();
            }
        }
    }

    function newGame(
        int64 _tgChatId,
        uint256 _minBet,
        address[] memory _players,
        uint256[] memory _bets,
        bool useWETH
    ) public returns (uint256[] memory) {
        require(
            _players.length == _bets.length,
            "Players/bets length mismatch"
        );
        require(
            !isGameInProgress(_tgChatId),
            "There is already a game in progress"
        );

        uint256 betTotal = 0;
        for (uint16 i = 0; i < _bets.length; i++) {
            require(_bets[i] >= _minBet, "Bet is smaller than the minimum");
            betTotal += _bets[i];
        }

        IERC20 chosenToken = useWETH ? WETH : bettingToken;

        for (uint16 i = 0; i < _bets.length; i++) {
            require(
                chosenToken.allowance(_players[i], address(this)) >= _bets[i],
                "Not enough allowance"
            );
            bool isSent = chosenToken.transferFrom(
                _players[i],
                address(this),
                _bets[i]
            );
            require(isSent, "Funds transfer failed");

            emit Bet(_tgChatId, _players[i], _bets[i]);
        }

        Game memory g;
        g.minBet = _minBet;
        g.betAmounts = _bets;
        g.players = _players;
        g.inProgress = true;

        games[_tgChatId] = g;
        activeTgGroups.push(_tgChatId);

        return _bets;
    }

    function endGame(
        int64 _tgChatId,
        address _winner,
        bool usedWETH
    ) public onlyOwner {
        require(
            isGameInProgress(_tgChatId),
            "No game in progress for this Telegram chat ID"
        );

        Game storage g = games[_tgChatId];
        require(g.inProgress, "Game is not in progress");

        g.inProgress = false;
        removeTgId(_tgChatId);

        uint256 totalBets = 0;
        for (uint16 i = 0; i < g.betAmounts.length; i++) {
            totalBets += g.betAmounts[i];
        }

        uint256 revenueShare = (totalBets * revenueBps) / 10000; // Calculate revenue share
        uint256 winnings = totalBets - revenueShare;

        IERC20 chosenToken = usedWETH ? WETH : bettingToken;

        // Transfer winnings to the winner
        chosenToken.transfer(_winner, winnings);
        emit Win(_tgChatId, _winner, winnings);

        // Transfer revenue share to the revenue wallet (funding wallet)
        chosenToken.transfer(revenueWallet, revenueShare);
        emit Revenue(_tgChatId, revenueShare);
    }

    function abortGame(int64 _tgChatId, bool usedWETH) public onlyOwner {
        require(
            isGameInProgress(_tgChatId),
            "No game in progress for this Telegram chat ID"
        );
        Game storage g = games[_tgChatId];

        IERC20 chosenToken = usedWETH ? WETH : bettingToken;

        for (uint16 i = 0; i < g.players.length; i++) {
            bool isSent = chosenToken.transfer(g.players[i], g.betAmounts[i]);
            require(isSent, "Funds transfer failed");
        }

        g.inProgress = false;
        removeTgId(_tgChatId);
    }

    function abortAllGames(bool usedWETH) public onlyOwner {
        int64[] memory _activeTgGroups = activeTgGroups;
        for (uint256 i = 0; i < _activeTgGroups.length; i++) {
            abortGame(_activeTgGroups[i], usedWETH);
        }
    }

    function setBettingToken(address _newBettingToken) public onlyOwner {
        require(_newBettingToken != address(0), "Invalid token address");
        bettingToken = IERC20(_newBettingToken);
    }

    function setrevenueWallet(address _revenueWallet) public onlyOwner {
        revenueWallet = address(_revenueWallet);
    }

    function setWETH(address _newWETH) public onlyOwner {
        require(_newWETH != address(0), "Invalid token address");
        WETH = IERC20(_newWETH);
    }

    function emergencyWithdrawERC20(address tokenAddress, address to)
        external
        onlyOwner
    {
        IERC20 token = IERC20(tokenAddress);
        uint256 tokenBalance = token.balanceOf(address(this));
        require(tokenBalance > 0, "No tokens to withdraw");

        token.transfer(to, tokenBalance);
    }

    function emergencyWithdrawEther(address payable to) external onlyOwner {
        uint256 contractBalance = address(this).balance;
        require(contractBalance > 0, "No Ether to withdraw");

        (bool success, ) = to.call{value: contractBalance}("");
        require(success, "Withdraw failed");
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"_bettingToken","type":"address"},{"internalType":"address","name":"_WETH","type":"address"},{"internalType":"uint256","name":"_minimumBet","type":"uint256"},{"internalType":"uint256","name":"_revenueBps","type":"uint256"},{"internalType":"address","name":"_revenueWallet","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"int64","name":"tgChatId","type":"int64"},{"indexed":false,"internalType":"address","name":"player","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Bet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"int64","name":"tgChatId","type":"int64"},{"indexed":false,"internalType":"address","name":"player","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Loss","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":"int64","name":"tgChatId","type":"int64"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Revenue","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"int64","name":"tgChatId","type":"int64"},{"indexed":false,"internalType":"address","name":"player","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Win","type":"event"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"usedWETH","type":"bool"}],"name":"abortAllGames","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"int64","name":"_tgChatId","type":"int64"},{"internalType":"bool","name":"usedWETH","type":"bool"}],"name":"abortGame","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"activeTgGroups","outputs":[{"internalType":"int64","name":"","type":"int64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bettingToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"address","name":"to","type":"address"}],"name":"emergencyWithdrawERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"to","type":"address"}],"name":"emergencyWithdrawEther","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"int64","name":"_tgChatId","type":"int64"},{"internalType":"address","name":"_winner","type":"address"},{"internalType":"bool","name":"usedWETH","type":"bool"}],"name":"endGame","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"int64","name":"","type":"int64"}],"name":"games","outputs":[{"internalType":"uint256","name":"minBet","type":"uint256"},{"internalType":"bool","name":"inProgress","type":"bool"},{"internalType":"uint16","name":"loser","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int64","name":"_tgChatId","type":"int64"}],"name":"isGameInProgress","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumBet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int64","name":"_tgChatId","type":"int64"},{"internalType":"uint256","name":"_minBet","type":"uint256"},{"internalType":"address[]","name":"_players","type":"address[]"},{"internalType":"uint256[]","name":"_bets","type":"uint256[]"},{"internalType":"bool","name":"useWETH","type":"bool"}],"name":"newGame","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revenueBps","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"revenueWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newBettingToken","type":"address"}],"name":"setBettingToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newWETH","type":"address"}],"name":"setWETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_revenueWallet","type":"address"}],"name":"setrevenueWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60c06040523480156200001157600080fd5b5060405162002f2238038062002f228339818101604052810190620000379190620002a6565b620000576200004b6200013560201b60201c565b6200013d60201b60201c565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160a0818152505084600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550826080818152505050505050506200032e565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620002338262000206565b9050919050565b620002458162000226565b81146200025157600080fd5b50565b60008151905062000265816200023a565b92915050565b6000819050919050565b62000280816200026b565b81146200028c57600080fd5b50565b600081519050620002a08162000275565b92915050565b600080600080600060a08688031215620002c557620002c462000201565b5b6000620002d58882890162000254565b9550506020620002e88882890162000254565b9450506040620002fb888289016200028f565b93505060606200030e888289016200028f565b9250506080620003218882890162000254565b9150509295509295909350565b60805160a051612bc76200035b600039600081816108b001526115c601526000610aeb0152612bc76000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c8063c38a8afd116100ad578063deeb2b9c11610071578063deeb2b9c146102f5578063f0dcd96f14610311578063f2fde38b14610341578063f36197161461035d578063ff08aa491461038f5761012c565b8063c38a8afd14610253578063c8e8b7e814610271578063d057fc1f1461028d578063d0cf139e146102bd578063de40a4a9146102d95761012c565b8063715018a6116100f4578063715018a6146101d557806383ba6436146101df5780638da5cb5b146101fb578063ad5c464814610219578063af920e47146102375761012c565b8063297bf1a51461013157806343425e881461014d578063444784251461016b5780635b769f3c1461018957806363c42460146101a5575b600080fd5b61014b60048036038101906101469190611a18565b6103ad565b005b610155610500565b6040516101629190611ab7565b60405180910390f35b610173610526565b6040516101809190611ae1565b60405180910390f35b6101a3600480360381019061019e9190611afc565b61054c565b005b6101bf60048036038101906101ba9190611b62565b610607565b6040516101cc9190611baa565b60405180910390f35b6101dd61063a565b005b6101f960048036038101906101f49190611bf1565b61064e565b005b610203610719565b6040516102109190611ae1565b60405180910390f35b610221610742565b60405161022e9190611ab7565b60405180910390f35b610251600480360381019061024c9190611c1e565b610768565b005b61025b610ae9565b6040516102689190611c8a565b60405180910390f35b61028b60048036038101906102869190611ca5565b610b0d565b005b6102a760048036038101906102a29190611d11565b610d50565b6040516102b49190611d4d565b60405180910390f35b6102d760048036038101906102d29190611afc565b610d87565b005b6102f360048036038101906102ee9190611afc565b610dd3565b005b61030f600480360381019061030a9190611da6565b610e8e565b005b61032b60048036038101906103269190611fef565b610f8f565b6040516103389190612160565b60405180910390f35b61035b60048036038101906103569190611afc565b6114fc565b005b61037760048036038101906103729190611b62565b61157f565b6040516103869392919061219f565b60405180910390f35b6103976115c4565b6040516103a49190611c8a565b60405180910390f35b6103b56115e8565b600082905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016103f59190611ae1565b602060405180830381865afa158015610412573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043691906121eb565b90506000811161047b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047290612275565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b81526004016104b6929190612295565b6020604051808303816000875af11580156104d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f991906122d3565b5050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6105546115e8565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036105c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ba9061234c565b60405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600460008360070b60070b815260200190815260200160002060030160009054906101000a900460ff169050919050565b6106426115e8565b61064c6000611666565b565b6106566115e8565b600060058054806020026020016040519081016040528092919081815260200182805480156106ca57602002820191906000526020600020906000905b82829054906101000a900460070b60070b815260200190600801906020826007010492830192600103820291508084116106935790505b5050505050905060005b8151811015610714576107018282815181106106f3576106f261236c565b5b602002602001015184610b0d565b808061070c906123ca565b9150506106d4565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6107706115e8565b61077983610607565b6107b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107af90612484565b60405180910390fd5b6000600460008560070b60070b815260200190815260200160002090508060030160009054906101000a900460ff16610826576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081d906124f0565b60405180910390fd5b60008160030160006101000a81548160ff02191690831515021790555061084c8461172a565b6000805b82600101805490508161ffff1610156108a857826001018161ffff168154811061087d5761087c61236c565b5b9060005260206000200154826108939190612510565b915080806108a090612544565b915050610850565b5060006127107f0000000000000000000000000000000000000000000000000000000000000000836108da919061256e565b6108e491906125df565b9050600081836108f49190612610565b905060008561092557600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610949565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b90508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb88846040518363ffffffff1660e01b8152600401610986929190612295565b6020604051808303816000875af11580156109a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c991906122d3565b507fc2dc76ce664ffea95879f58074e6b60c3ebb762a62b91e9af938873a81c28d148888846040516109fd93929190612644565b60405180910390a18073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856040518363ffffffff1660e01b8152600401610a62929190612295565b6020604051808303816000875af1158015610a81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa591906122d3565b507f0f771b5d5a6b02378d0d1a6b6b371ac1e69759fb677e46109ae1bb55167ea7ad8884604051610ad792919061267b565b60405180910390a15050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b610b156115e8565b610b1e82610607565b610b5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5490612484565b60405180910390fd5b6000600460008460070b60070b81526020019081526020016000209050600082610ba957600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610bcd565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905060005b82600201805490508161ffff161015610d235760008273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb856002018461ffff1681548110610c1d57610c1c61236c565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866001018561ffff1681548110610c6257610c6161236c565b5b90600052602060002001546040518363ffffffff1660e01b8152600401610c8a929190612295565b6020604051808303816000875af1158015610ca9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ccd91906122d3565b905080610d0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d06906126f0565b60405180910390fd5b508080610d1b90612544565b915050610bd2565b5060008260030160006101000a81548160ff021916908315150217905550610d4a8461172a565b50505050565b60058181548110610d6057600080fd5b9060005260206000209060049182820401919006600802915054906101000a900460070b81565b610d8f6115e8565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610ddb6115e8565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610e4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e419061234c565b60405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610e966115e8565b600047905060008111610ede576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed59061275c565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051610f04906127ad565b60006040518083038185875af1925050503d8060008114610f41576040519150601f19603f3d011682016040523d82523d6000602084013e610f46565b606091505b5050905080610f8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f819061280e565b60405180910390fd5b505050565b60608251845114610fd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcc9061287a565b60405180910390fd5b610fde86610607565b1561101e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110159061290c565b60405180910390fd5b6000805b84518161ffff1610156110cf5786858261ffff16815181106110475761104661236c565b5b60200260200101511015611090576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108790612978565b60405180910390fd5b848161ffff16815181106110a7576110a661236c565b5b6020026020010151826110ba9190612510565b915080806110c790612544565b915050611022565b506000836110ff57600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611123565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905060005b85518161ffff1610156113ba57858161ffff168151811061114c5761114b61236c565b5b60200260200101518273ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e898461ffff16815181106111875761118661236c565b5b6020026020010151306040518363ffffffff1660e01b81526004016111ad929190612998565b602060405180830381865afa1580156111ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ee91906121eb565b101561122f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122690612a0d565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff166323b872dd898461ffff16815181106112645761126361236c565b5b6020026020010151308a8661ffff16815181106112845761128361236c565b5b60200260200101516040518463ffffffff1660e01b81526004016112aa93929190612a2d565b6020604051808303816000875af11580156112c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ed91906122d3565b90508061132f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611326906126f0565b60405180910390fd5b7f95d208f3deafce2776ab2b0da2c1b2e6dfc749f9b7993e0fe1df82ed26358d358a898461ffff16815181106113685761136761236c565b5b6020026020010151898561ffff16815181106113875761138661236c565b5b602002602001015160405161139e93929190612644565b60405180910390a15080806113b290612544565b915050611128565b506113c361187d565b87816000018181525050858160200181905250868160400181905250600181606001901515908115158152505080600460008b60070b60070b81526020019081526020016000206000820151816000015560208201518160010190805190602001906114309291906118b2565b50604082015181600201908051906020019061144d9291906118ff565b5060608201518160030160006101000a81548160ff02191690831515021790555060808201518160030160016101000a81548161ffff021916908361ffff16021790555090505060058990806001815401808255809150506001900390600052602060002090600491828204019190066008029091909190916101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff16021790555085935050505095945050505050565b6115046115e8565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611573576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156a90612ad6565b60405180910390fd5b61157c81611666565b50565b60046020528060005260406000206000915090508060000154908060030160009054906101000a900460ff16908060030160019054906101000a900461ffff16905083565b7f000000000000000000000000000000000000000000000000000000000000000081565b6115f0611875565b73ffffffffffffffffffffffffffffffffffffffff1661160e610719565b73ffffffffffffffffffffffffffffffffffffffff1614611664576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165b90612b42565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60005b600580549050811015611871578160070b600582815481106117525761175161236c565b5b90600052602060002090600491828204019190066008029054906101000a900460070b60070b0361185e57600560016005805490506117919190612610565b815481106117a2576117a161236c565b5b90600052602060002090600491828204019190066008029054906101000a900460070b600582815481106117d9576117d861236c565b5b90600052602060002090600491828204019190066008026101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff160217905550600580548061182957611828612b62565b5b60019003818190600052602060002090600491828204019190066008026101000a81549067ffffffffffffffff021916905590555b8080611869906123ca565b91505061172d565b5050565b600033905090565b6040518060a00160405280600081526020016060815260200160608152602001600015158152602001600061ffff1681525090565b8280548282559060005260206000209081019282156118ee579160200282015b828111156118ed5782518255916020019190600101906118d2565b5b5090506118fb9190611989565b5090565b828054828255906000526020600020908101928215611978579160200282015b828111156119775782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509160200191906001019061191f565b5b5090506119859190611989565b5090565b5b808211156119a257600081600090555060010161198a565b5090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006119e5826119ba565b9050919050565b6119f5816119da565b8114611a0057600080fd5b50565b600081359050611a12816119ec565b92915050565b60008060408385031215611a2f57611a2e6119b0565b5b6000611a3d85828601611a03565b9250506020611a4e85828601611a03565b9150509250929050565b6000819050919050565b6000611a7d611a78611a73846119ba565b611a58565b6119ba565b9050919050565b6000611a8f82611a62565b9050919050565b6000611aa182611a84565b9050919050565b611ab181611a96565b82525050565b6000602082019050611acc6000830184611aa8565b92915050565b611adb816119da565b82525050565b6000602082019050611af66000830184611ad2565b92915050565b600060208284031215611b1257611b116119b0565b5b6000611b2084828501611a03565b91505092915050565b60008160070b9050919050565b611b3f81611b29565b8114611b4a57600080fd5b50565b600081359050611b5c81611b36565b92915050565b600060208284031215611b7857611b776119b0565b5b6000611b8684828501611b4d565b91505092915050565b60008115159050919050565b611ba481611b8f565b82525050565b6000602082019050611bbf6000830184611b9b565b92915050565b611bce81611b8f565b8114611bd957600080fd5b50565b600081359050611beb81611bc5565b92915050565b600060208284031215611c0757611c066119b0565b5b6000611c1584828501611bdc565b91505092915050565b600080600060608486031215611c3757611c366119b0565b5b6000611c4586828701611b4d565b9350506020611c5686828701611a03565b9250506040611c6786828701611bdc565b9150509250925092565b6000819050919050565b611c8481611c71565b82525050565b6000602082019050611c9f6000830184611c7b565b92915050565b60008060408385031215611cbc57611cbb6119b0565b5b6000611cca85828601611b4d565b9250506020611cdb85828601611bdc565b9150509250929050565b611cee81611c71565b8114611cf957600080fd5b50565b600081359050611d0b81611ce5565b92915050565b600060208284031215611d2757611d266119b0565b5b6000611d3584828501611cfc565b91505092915050565b611d4781611b29565b82525050565b6000602082019050611d626000830184611d3e565b92915050565b6000611d73826119ba565b9050919050565b611d8381611d68565b8114611d8e57600080fd5b50565b600081359050611da081611d7a565b92915050565b600060208284031215611dbc57611dbb6119b0565b5b6000611dca84828501611d91565b91505092915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611e2182611dd8565b810181811067ffffffffffffffff82111715611e4057611e3f611de9565b5b80604052505050565b6000611e536119a6565b9050611e5f8282611e18565b919050565b600067ffffffffffffffff821115611e7f57611e7e611de9565b5b602082029050602081019050919050565b600080fd5b6000611ea8611ea384611e64565b611e49565b90508083825260208201905060208402830185811115611ecb57611eca611e90565b5b835b81811015611ef45780611ee08882611a03565b845260208401935050602081019050611ecd565b5050509392505050565b600082601f830112611f1357611f12611dd3565b5b8135611f23848260208601611e95565b91505092915050565b600067ffffffffffffffff821115611f4757611f46611de9565b5b602082029050602081019050919050565b6000611f6b611f6684611f2c565b611e49565b90508083825260208201905060208402830185811115611f8e57611f8d611e90565b5b835b81811015611fb75780611fa38882611cfc565b845260208401935050602081019050611f90565b5050509392505050565b600082601f830112611fd657611fd5611dd3565b5b8135611fe6848260208601611f58565b91505092915050565b600080600080600060a0868803121561200b5761200a6119b0565b5b600061201988828901611b4d565b955050602061202a88828901611cfc565b945050604086013567ffffffffffffffff81111561204b5761204a6119b5565b5b61205788828901611efe565b935050606086013567ffffffffffffffff811115612078576120776119b5565b5b61208488828901611fc1565b925050608061209588828901611bdc565b9150509295509295909350565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6120d781611c71565b82525050565b60006120e983836120ce565b60208301905092915050565b6000602082019050919050565b600061210d826120a2565b61211781856120ad565b9350612122836120be565b8060005b8381101561215357815161213a88826120dd565b9750612145836120f5565b925050600181019050612126565b5085935050505092915050565b6000602082019050818103600083015261217a8184612102565b905092915050565b600061ffff82169050919050565b61219981612182565b82525050565b60006060820190506121b46000830186611c7b565b6121c16020830185611b9b565b6121ce6040830184612190565b949350505050565b6000815190506121e581611ce5565b92915050565b600060208284031215612201576122006119b0565b5b600061220f848285016121d6565b91505092915050565b600082825260208201905092915050565b7f4e6f20746f6b656e7320746f2077697468647261770000000000000000000000600082015250565b600061225f601583612218565b915061226a82612229565b602082019050919050565b6000602082019050818103600083015261228e81612252565b9050919050565b60006040820190506122aa6000830185611ad2565b6122b76020830184611c7b565b9392505050565b6000815190506122cd81611bc5565b92915050565b6000602082840312156122e9576122e86119b0565b5b60006122f7848285016122be565b91505092915050565b7f496e76616c696420746f6b656e20616464726573730000000000000000000000600082015250565b6000612336601583612218565b915061234182612300565b602082019050919050565b6000602082019050818103600083015261236581612329565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006123d582611c71565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036124075761240661239b565b5b600182019050919050565b7f4e6f2067616d6520696e2070726f677265737320666f7220746869732054656c60008201527f656772616d206368617420494400000000000000000000000000000000000000602082015250565b600061246e602d83612218565b915061247982612412565b604082019050919050565b6000602082019050818103600083015261249d81612461565b9050919050565b7f47616d65206973206e6f7420696e2070726f6772657373000000000000000000600082015250565b60006124da601783612218565b91506124e5826124a4565b602082019050919050565b60006020820190508181036000830152612509816124cd565b9050919050565b600061251b82611c71565b915061252683611c71565b925082820190508082111561253e5761253d61239b565b5b92915050565b600061254f82612182565b915061ffff82036125635761256261239b565b5b600182019050919050565b600061257982611c71565b915061258483611c71565b925082820261259281611c71565b915082820484148315176125a9576125a861239b565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006125ea82611c71565b91506125f583611c71565b925082612605576126046125b0565b5b828204905092915050565b600061261b82611c71565b915061262683611c71565b925082820390508181111561263e5761263d61239b565b5b92915050565b60006060820190506126596000830186611d3e565b6126666020830185611ad2565b6126736040830184611c7b565b949350505050565b60006040820190506126906000830185611d3e565b61269d6020830184611c7b565b9392505050565b7f46756e6473207472616e73666572206661696c65640000000000000000000000600082015250565b60006126da601583612218565b91506126e5826126a4565b602082019050919050565b60006020820190508181036000830152612709816126cd565b9050919050565b7f4e6f20457468657220746f207769746864726177000000000000000000000000600082015250565b6000612746601483612218565b915061275182612710565b602082019050919050565b6000602082019050818103600083015261277581612739565b9050919050565b600081905092915050565b50565b600061279760008361277c565b91506127a282612787565b600082019050919050565b60006127b88261278a565b9150819050919050565b7f5769746864726177206661696c65640000000000000000000000000000000000600082015250565b60006127f8600f83612218565b9150612803826127c2565b602082019050919050565b60006020820190508181036000830152612827816127eb565b9050919050565b7f506c61796572732f62657473206c656e677468206d69736d6174636800000000600082015250565b6000612864601c83612218565b915061286f8261282e565b602082019050919050565b6000602082019050818103600083015261289381612857565b9050919050565b7f546865726520697320616c726561647920612067616d6520696e2070726f677260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006128f6602383612218565b91506129018261289a565b604082019050919050565b60006020820190508181036000830152612925816128e9565b9050919050565b7f42657420697320736d616c6c6572207468616e20746865206d696e696d756d00600082015250565b6000612962601f83612218565b915061296d8261292c565b602082019050919050565b6000602082019050818103600083015261299181612955565b9050919050565b60006040820190506129ad6000830185611ad2565b6129ba6020830184611ad2565b9392505050565b7f4e6f7420656e6f75676820616c6c6f77616e6365000000000000000000000000600082015250565b60006129f7601483612218565b9150612a02826129c1565b602082019050919050565b60006020820190508181036000830152612a26816129ea565b9050919050565b6000606082019050612a426000830186611ad2565b612a4f6020830185611ad2565b612a5c6040830184611c7b565b949350505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612ac0602683612218565b9150612acb82612a64565b604082019050919050565b60006020820190508181036000830152612aef81612ab3565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612b2c602083612218565b9150612b3782612af6565b602082019050919050565b60006020820190508181036000830152612b5b81612b1f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220581f113dc86791d07dd7e4bed7aad9dc33c785bb8c784863b8797fbf4acb618564736f6c63430008120033000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000003e80000000000000000000000004863b611340df5fb795796dcfb46313f416cfb7e

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061012c5760003560e01c8063c38a8afd116100ad578063deeb2b9c11610071578063deeb2b9c146102f5578063f0dcd96f14610311578063f2fde38b14610341578063f36197161461035d578063ff08aa491461038f5761012c565b8063c38a8afd14610253578063c8e8b7e814610271578063d057fc1f1461028d578063d0cf139e146102bd578063de40a4a9146102d95761012c565b8063715018a6116100f4578063715018a6146101d557806383ba6436146101df5780638da5cb5b146101fb578063ad5c464814610219578063af920e47146102375761012c565b8063297bf1a51461013157806343425e881461014d578063444784251461016b5780635b769f3c1461018957806363c42460146101a5575b600080fd5b61014b60048036038101906101469190611a18565b6103ad565b005b610155610500565b6040516101629190611ab7565b60405180910390f35b610173610526565b6040516101809190611ae1565b60405180910390f35b6101a3600480360381019061019e9190611afc565b61054c565b005b6101bf60048036038101906101ba9190611b62565b610607565b6040516101cc9190611baa565b60405180910390f35b6101dd61063a565b005b6101f960048036038101906101f49190611bf1565b61064e565b005b610203610719565b6040516102109190611ae1565b60405180910390f35b610221610742565b60405161022e9190611ab7565b60405180910390f35b610251600480360381019061024c9190611c1e565b610768565b005b61025b610ae9565b6040516102689190611c8a565b60405180910390f35b61028b60048036038101906102869190611ca5565b610b0d565b005b6102a760048036038101906102a29190611d11565b610d50565b6040516102b49190611d4d565b60405180910390f35b6102d760048036038101906102d29190611afc565b610d87565b005b6102f360048036038101906102ee9190611afc565b610dd3565b005b61030f600480360381019061030a9190611da6565b610e8e565b005b61032b60048036038101906103269190611fef565b610f8f565b6040516103389190612160565b60405180910390f35b61035b60048036038101906103569190611afc565b6114fc565b005b61037760048036038101906103729190611b62565b61157f565b6040516103869392919061219f565b60405180910390f35b6103976115c4565b6040516103a49190611c8a565b60405180910390f35b6103b56115e8565b600082905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016103f59190611ae1565b602060405180830381865afa158015610412573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043691906121eb565b90506000811161047b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047290612275565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b81526004016104b6929190612295565b6020604051808303816000875af11580156104d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f991906122d3565b5050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6105546115e8565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036105c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ba9061234c565b60405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600460008360070b60070b815260200190815260200160002060030160009054906101000a900460ff169050919050565b6106426115e8565b61064c6000611666565b565b6106566115e8565b600060058054806020026020016040519081016040528092919081815260200182805480156106ca57602002820191906000526020600020906000905b82829054906101000a900460070b60070b815260200190600801906020826007010492830192600103820291508084116106935790505b5050505050905060005b8151811015610714576107018282815181106106f3576106f261236c565b5b602002602001015184610b0d565b808061070c906123ca565b9150506106d4565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6107706115e8565b61077983610607565b6107b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107af90612484565b60405180910390fd5b6000600460008560070b60070b815260200190815260200160002090508060030160009054906101000a900460ff16610826576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081d906124f0565b60405180910390fd5b60008160030160006101000a81548160ff02191690831515021790555061084c8461172a565b6000805b82600101805490508161ffff1610156108a857826001018161ffff168154811061087d5761087c61236c565b5b9060005260206000200154826108939190612510565b915080806108a090612544565b915050610850565b5060006127107f00000000000000000000000000000000000000000000000000000000000003e8836108da919061256e565b6108e491906125df565b9050600081836108f49190612610565b905060008561092557600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610949565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b90508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb88846040518363ffffffff1660e01b8152600401610986929190612295565b6020604051808303816000875af11580156109a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c991906122d3565b507fc2dc76ce664ffea95879f58074e6b60c3ebb762a62b91e9af938873a81c28d148888846040516109fd93929190612644565b60405180910390a18073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856040518363ffffffff1660e01b8152600401610a62929190612295565b6020604051808303816000875af1158015610a81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa591906122d3565b507f0f771b5d5a6b02378d0d1a6b6b371ac1e69759fb677e46109ae1bb55167ea7ad8884604051610ad792919061267b565b60405180910390a15050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000181565b610b156115e8565b610b1e82610607565b610b5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5490612484565b60405180910390fd5b6000600460008460070b60070b81526020019081526020016000209050600082610ba957600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610bcd565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905060005b82600201805490508161ffff161015610d235760008273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb856002018461ffff1681548110610c1d57610c1c61236c565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866001018561ffff1681548110610c6257610c6161236c565b5b90600052602060002001546040518363ffffffff1660e01b8152600401610c8a929190612295565b6020604051808303816000875af1158015610ca9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ccd91906122d3565b905080610d0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d06906126f0565b60405180910390fd5b508080610d1b90612544565b915050610bd2565b5060008260030160006101000a81548160ff021916908315150217905550610d4a8461172a565b50505050565b60058181548110610d6057600080fd5b9060005260206000209060049182820401919006600802915054906101000a900460070b81565b610d8f6115e8565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610ddb6115e8565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610e4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e419061234c565b60405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610e966115e8565b600047905060008111610ede576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed59061275c565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051610f04906127ad565b60006040518083038185875af1925050503d8060008114610f41576040519150601f19603f3d011682016040523d82523d6000602084013e610f46565b606091505b5050905080610f8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f819061280e565b60405180910390fd5b505050565b60608251845114610fd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcc9061287a565b60405180910390fd5b610fde86610607565b1561101e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110159061290c565b60405180910390fd5b6000805b84518161ffff1610156110cf5786858261ffff16815181106110475761104661236c565b5b60200260200101511015611090576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108790612978565b60405180910390fd5b848161ffff16815181106110a7576110a661236c565b5b6020026020010151826110ba9190612510565b915080806110c790612544565b915050611022565b506000836110ff57600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611123565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905060005b85518161ffff1610156113ba57858161ffff168151811061114c5761114b61236c565b5b60200260200101518273ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e898461ffff16815181106111875761118661236c565b5b6020026020010151306040518363ffffffff1660e01b81526004016111ad929190612998565b602060405180830381865afa1580156111ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ee91906121eb565b101561122f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122690612a0d565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff166323b872dd898461ffff16815181106112645761126361236c565b5b6020026020010151308a8661ffff16815181106112845761128361236c565b5b60200260200101516040518463ffffffff1660e01b81526004016112aa93929190612a2d565b6020604051808303816000875af11580156112c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ed91906122d3565b90508061132f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611326906126f0565b60405180910390fd5b7f95d208f3deafce2776ab2b0da2c1b2e6dfc749f9b7993e0fe1df82ed26358d358a898461ffff16815181106113685761136761236c565b5b6020026020010151898561ffff16815181106113875761138661236c565b5b602002602001015160405161139e93929190612644565b60405180910390a15080806113b290612544565b915050611128565b506113c361187d565b87816000018181525050858160200181905250868160400181905250600181606001901515908115158152505080600460008b60070b60070b81526020019081526020016000206000820151816000015560208201518160010190805190602001906114309291906118b2565b50604082015181600201908051906020019061144d9291906118ff565b5060608201518160030160006101000a81548160ff02191690831515021790555060808201518160030160016101000a81548161ffff021916908361ffff16021790555090505060058990806001815401808255809150506001900390600052602060002090600491828204019190066008029091909190916101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff16021790555085935050505095945050505050565b6115046115e8565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611573576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156a90612ad6565b60405180910390fd5b61157c81611666565b50565b60046020528060005260406000206000915090508060000154908060030160009054906101000a900460ff16908060030160019054906101000a900461ffff16905083565b7f00000000000000000000000000000000000000000000000000000000000003e881565b6115f0611875565b73ffffffffffffffffffffffffffffffffffffffff1661160e610719565b73ffffffffffffffffffffffffffffffffffffffff1614611664576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165b90612b42565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60005b600580549050811015611871578160070b600582815481106117525761175161236c565b5b90600052602060002090600491828204019190066008029054906101000a900460070b60070b0361185e57600560016005805490506117919190612610565b815481106117a2576117a161236c565b5b90600052602060002090600491828204019190066008029054906101000a900460070b600582815481106117d9576117d861236c565b5b90600052602060002090600491828204019190066008026101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff160217905550600580548061182957611828612b62565b5b60019003818190600052602060002090600491828204019190066008026101000a81549067ffffffffffffffff021916905590555b8080611869906123ca565b91505061172d565b5050565b600033905090565b6040518060a00160405280600081526020016060815260200160608152602001600015158152602001600061ffff1681525090565b8280548282559060005260206000209081019282156118ee579160200282015b828111156118ed5782518255916020019190600101906118d2565b5b5090506118fb9190611989565b5090565b828054828255906000526020600020908101928215611978579160200282015b828111156119775782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509160200191906001019061191f565b5b5090506119859190611989565b5090565b5b808211156119a257600081600090555060010161198a565b5090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006119e5826119ba565b9050919050565b6119f5816119da565b8114611a0057600080fd5b50565b600081359050611a12816119ec565b92915050565b60008060408385031215611a2f57611a2e6119b0565b5b6000611a3d85828601611a03565b9250506020611a4e85828601611a03565b9150509250929050565b6000819050919050565b6000611a7d611a78611a73846119ba565b611a58565b6119ba565b9050919050565b6000611a8f82611a62565b9050919050565b6000611aa182611a84565b9050919050565b611ab181611a96565b82525050565b6000602082019050611acc6000830184611aa8565b92915050565b611adb816119da565b82525050565b6000602082019050611af66000830184611ad2565b92915050565b600060208284031215611b1257611b116119b0565b5b6000611b2084828501611a03565b91505092915050565b60008160070b9050919050565b611b3f81611b29565b8114611b4a57600080fd5b50565b600081359050611b5c81611b36565b92915050565b600060208284031215611b7857611b776119b0565b5b6000611b8684828501611b4d565b91505092915050565b60008115159050919050565b611ba481611b8f565b82525050565b6000602082019050611bbf6000830184611b9b565b92915050565b611bce81611b8f565b8114611bd957600080fd5b50565b600081359050611beb81611bc5565b92915050565b600060208284031215611c0757611c066119b0565b5b6000611c1584828501611bdc565b91505092915050565b600080600060608486031215611c3757611c366119b0565b5b6000611c4586828701611b4d565b9350506020611c5686828701611a03565b9250506040611c6786828701611bdc565b9150509250925092565b6000819050919050565b611c8481611c71565b82525050565b6000602082019050611c9f6000830184611c7b565b92915050565b60008060408385031215611cbc57611cbb6119b0565b5b6000611cca85828601611b4d565b9250506020611cdb85828601611bdc565b9150509250929050565b611cee81611c71565b8114611cf957600080fd5b50565b600081359050611d0b81611ce5565b92915050565b600060208284031215611d2757611d266119b0565b5b6000611d3584828501611cfc565b91505092915050565b611d4781611b29565b82525050565b6000602082019050611d626000830184611d3e565b92915050565b6000611d73826119ba565b9050919050565b611d8381611d68565b8114611d8e57600080fd5b50565b600081359050611da081611d7a565b92915050565b600060208284031215611dbc57611dbb6119b0565b5b6000611dca84828501611d91565b91505092915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611e2182611dd8565b810181811067ffffffffffffffff82111715611e4057611e3f611de9565b5b80604052505050565b6000611e536119a6565b9050611e5f8282611e18565b919050565b600067ffffffffffffffff821115611e7f57611e7e611de9565b5b602082029050602081019050919050565b600080fd5b6000611ea8611ea384611e64565b611e49565b90508083825260208201905060208402830185811115611ecb57611eca611e90565b5b835b81811015611ef45780611ee08882611a03565b845260208401935050602081019050611ecd565b5050509392505050565b600082601f830112611f1357611f12611dd3565b5b8135611f23848260208601611e95565b91505092915050565b600067ffffffffffffffff821115611f4757611f46611de9565b5b602082029050602081019050919050565b6000611f6b611f6684611f2c565b611e49565b90508083825260208201905060208402830185811115611f8e57611f8d611e90565b5b835b81811015611fb75780611fa38882611cfc565b845260208401935050602081019050611f90565b5050509392505050565b600082601f830112611fd657611fd5611dd3565b5b8135611fe6848260208601611f58565b91505092915050565b600080600080600060a0868803121561200b5761200a6119b0565b5b600061201988828901611b4d565b955050602061202a88828901611cfc565b945050604086013567ffffffffffffffff81111561204b5761204a6119b5565b5b61205788828901611efe565b935050606086013567ffffffffffffffff811115612078576120776119b5565b5b61208488828901611fc1565b925050608061209588828901611bdc565b9150509295509295909350565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6120d781611c71565b82525050565b60006120e983836120ce565b60208301905092915050565b6000602082019050919050565b600061210d826120a2565b61211781856120ad565b9350612122836120be565b8060005b8381101561215357815161213a88826120dd565b9750612145836120f5565b925050600181019050612126565b5085935050505092915050565b6000602082019050818103600083015261217a8184612102565b905092915050565b600061ffff82169050919050565b61219981612182565b82525050565b60006060820190506121b46000830186611c7b565b6121c16020830185611b9b565b6121ce6040830184612190565b949350505050565b6000815190506121e581611ce5565b92915050565b600060208284031215612201576122006119b0565b5b600061220f848285016121d6565b91505092915050565b600082825260208201905092915050565b7f4e6f20746f6b656e7320746f2077697468647261770000000000000000000000600082015250565b600061225f601583612218565b915061226a82612229565b602082019050919050565b6000602082019050818103600083015261228e81612252565b9050919050565b60006040820190506122aa6000830185611ad2565b6122b76020830184611c7b565b9392505050565b6000815190506122cd81611bc5565b92915050565b6000602082840312156122e9576122e86119b0565b5b60006122f7848285016122be565b91505092915050565b7f496e76616c696420746f6b656e20616464726573730000000000000000000000600082015250565b6000612336601583612218565b915061234182612300565b602082019050919050565b6000602082019050818103600083015261236581612329565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006123d582611c71565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036124075761240661239b565b5b600182019050919050565b7f4e6f2067616d6520696e2070726f677265737320666f7220746869732054656c60008201527f656772616d206368617420494400000000000000000000000000000000000000602082015250565b600061246e602d83612218565b915061247982612412565b604082019050919050565b6000602082019050818103600083015261249d81612461565b9050919050565b7f47616d65206973206e6f7420696e2070726f6772657373000000000000000000600082015250565b60006124da601783612218565b91506124e5826124a4565b602082019050919050565b60006020820190508181036000830152612509816124cd565b9050919050565b600061251b82611c71565b915061252683611c71565b925082820190508082111561253e5761253d61239b565b5b92915050565b600061254f82612182565b915061ffff82036125635761256261239b565b5b600182019050919050565b600061257982611c71565b915061258483611c71565b925082820261259281611c71565b915082820484148315176125a9576125a861239b565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006125ea82611c71565b91506125f583611c71565b925082612605576126046125b0565b5b828204905092915050565b600061261b82611c71565b915061262683611c71565b925082820390508181111561263e5761263d61239b565b5b92915050565b60006060820190506126596000830186611d3e565b6126666020830185611ad2565b6126736040830184611c7b565b949350505050565b60006040820190506126906000830185611d3e565b61269d6020830184611c7b565b9392505050565b7f46756e6473207472616e73666572206661696c65640000000000000000000000600082015250565b60006126da601583612218565b91506126e5826126a4565b602082019050919050565b60006020820190508181036000830152612709816126cd565b9050919050565b7f4e6f20457468657220746f207769746864726177000000000000000000000000600082015250565b6000612746601483612218565b915061275182612710565b602082019050919050565b6000602082019050818103600083015261277581612739565b9050919050565b600081905092915050565b50565b600061279760008361277c565b91506127a282612787565b600082019050919050565b60006127b88261278a565b9150819050919050565b7f5769746864726177206661696c65640000000000000000000000000000000000600082015250565b60006127f8600f83612218565b9150612803826127c2565b602082019050919050565b60006020820190508181036000830152612827816127eb565b9050919050565b7f506c61796572732f62657473206c656e677468206d69736d6174636800000000600082015250565b6000612864601c83612218565b915061286f8261282e565b602082019050919050565b6000602082019050818103600083015261289381612857565b9050919050565b7f546865726520697320616c726561647920612067616d6520696e2070726f677260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006128f6602383612218565b91506129018261289a565b604082019050919050565b60006020820190508181036000830152612925816128e9565b9050919050565b7f42657420697320736d616c6c6572207468616e20746865206d696e696d756d00600082015250565b6000612962601f83612218565b915061296d8261292c565b602082019050919050565b6000602082019050818103600083015261299181612955565b9050919050565b60006040820190506129ad6000830185611ad2565b6129ba6020830184611ad2565b9392505050565b7f4e6f7420656e6f75676820616c6c6f77616e6365000000000000000000000000600082015250565b60006129f7601483612218565b9150612a02826129c1565b602082019050919050565b60006020820190508181036000830152612a26816129ea565b9050919050565b6000606082019050612a426000830186611ad2565b612a4f6020830185611ad2565b612a5c6040830184611c7b565b949350505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612ac0602683612218565b9150612acb82612a64565b604082019050919050565b60006020820190508181036000830152612aef81612ab3565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612b2c602083612218565b9150612b3782612af6565b602082019050919050565b60006020820190508181036000830152612b5b81612b1f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220581f113dc86791d07dd7e4bed7aad9dc33c785bb8c784863b8797fbf4acb618564736f6c63430008120033

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

000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000003e80000000000000000000000004863b611340df5fb795796dcfb46313f416cfb7e

-----Decoded View---------------
Arg [0] : _bettingToken (address): 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2
Arg [1] : _WETH (address): 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2
Arg [2] : _minimumBet (uint256): 1
Arg [3] : _revenueBps (uint256): 1000
Arg [4] : _revenueWallet (address): 0x4863b611340Df5fB795796Dcfb46313f416cFb7E

-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
Arg [1] : 000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [3] : 00000000000000000000000000000000000000000000000000000000000003e8
Arg [4] : 0000000000000000000000004863b611340df5fb795796dcfb46313f416cfb7e


Deployed Bytecode Sourcemap

5523:6158:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11025:332;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5602:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5567:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10856:161;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6607:123;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2025:103;;;:::i;:::-;;10256:250;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1384:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5635:18;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8535:1118;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5660:35;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9661:587;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6322:29;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10723:125;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10514:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11365:313;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7059:1468;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2283:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6280:35;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;5702;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11025:332;1270:13;:11;:13::i;:::-;11144:12:::1;11166;11144:35;;11190:20;11213:5;:15;;;11237:4;11213:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11190:53;;11277:1;11262:12;:16;11254:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;11317:5;:14;;;11332:2;11336:12;11317:32;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11133:224;;11025:332:::0;;:::o;5602:26::-;;;;;;;;;;;;;:::o;5567:28::-;;;;;;;;;;;;;:::o;10856:161::-;1270:13;:11;:13::i;:::-;10947:1:::1;10927:22;;:8;:22;;::::0;10919:56:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;11000:8;10986:4;;:23;;;;;;;;;;;;;;;;;;10856:161:::0;:::o;6607:123::-;6671:4;6695:5;:16;6701:9;6695:16;;;;;;;;;;;;;;;:27;;;;;;;;;;;;6688:34;;6607:123;;;:::o;2025:103::-;1270:13;:11;:13::i;:::-;2090:30:::1;2117:1;2090:18;:30::i;:::-;2025:103::o:0;10256:250::-;1270:13;:11;:13::i;:::-;10322:30:::1;10355:14;10322:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10385:9;10380:119;10404:15;:22;10400:1;:26;10380:119;;;10448:39;10458:15;10474:1;10458:18;;;;;;;;:::i;:::-;;;;;;;;10478:8;10448:9;:39::i;:::-;10428:3;;;;;:::i;:::-;;;;10380:119;;;;10311:195;10256:250:::0;:::o;1384:87::-;1430:7;1457:6;;;;;;;;;;;1450:13;;1384:87;:::o;5635:18::-;;;;;;;;;;;;;:::o;8535:1118::-;1270:13;:11;:13::i;:::-;8685:27:::1;8702:9;8685:16;:27::i;:::-;8663:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;8798:14;8815:5;:16;8821:9;8815:16;;;;;;;;;;;;;;;8798:33;;8850:1;:12;;;;;;;;;;;;8842:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;8918:5;8903:1;:12;;;:20;;;;;;;;;;;;;;;;;;8934:21;8945:9;8934:10;:21::i;:::-;8968:17;9005:8:::0;9000:104:::1;9023:1;:12;;:19;;;;9019:1;:23;;;9000:104;;;9077:1;:12;;9090:1;9077:15;;;;;;;;;;:::i;:::-;;;;;;;;;;9064:28;;;;;:::i;:::-;;;9044:3;;;;;:::i;:::-;;;;9000:104;;;;9116:20;9166:5;9152:10;9140:9;:22;;;;:::i;:::-;9139:32;;;;:::i;:::-;9116:55;;9209:16;9240:12;9228:9;:24;;;;:::i;:::-;9209:43;;9265:18;9286:8;:30;;9304:12;;;;;;;;;;;9286:30;;;9297:4;;;;;;;;;;;9286:30;9265:51;;9373:11;:20;;;9394:7;9403:8;9373:39;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9428:33;9432:9;9443:7;9452:8;9428:33;;;;;;;;:::i;:::-;;;;;;;;9548:11;:20;;;9569:13;;;;;;;;;;;9584:12;9548:49;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9613:32;9621:9;9632:12;9613:32;;;;;;;:::i;:::-;;;;;;;;8652:1001;;;;;8535:1118:::0;;;:::o;5660:35::-;;;:::o;9661:587::-;1270:13;:11;:13::i;:::-;9762:27:::1;9779:9;9762:16;:27::i;:::-;9740:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;9873:14;9890:5;:16;9896:9;9890:16;;;;;;;;;;;;;;;9873:33;;9919:18;9940:8;:30;;9958:12;;;;;;;;;;;9940:30;;;9951:4;;;;;;;;;;;9940:30;9919:51;;9988:8;9983:193;10006:1;:9;;:16;;;;10002:1;:20;;;9983:193;;;10044:11;10058;:20;;;10079:1;:9;;10089:1;10079:12;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10093:1;:12;;10106:1;10093:15;;;;;;;;;;:::i;:::-;;;;;;;;;;10058:51;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10044:65;;10132:6;10124:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;10029:147;10024:3;;;;;:::i;:::-;;;;9983:193;;;;10203:5;10188:1;:12;;;:20;;;;;;;;;;;;;;;;;;10219:21;10230:9;10219:10;:21::i;:::-;9729:519;;9661:587:::0;;:::o;6322:29::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;10723:125::-;1270:13;:11;:13::i;:::-;10825:14:::1;10801:13;;:39;;;;;;;;;;;;;;;;;;10723:125:::0;:::o;10514:201::-;1270:13;:11;:13::i;:::-;10629:1:::1;10601:30;;:16;:30;;::::0;10593:64:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;10690:16;10668:12;;:39;;;;;;;;;;;;;;;;;;10514:201:::0;:::o;11365:313::-;1270:13;:11;:13::i;:::-;11447:23:::1;11473:21;11447:47;;11531:1;11513:15;:19;11505:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;11571:12;11589:2;:7;;11604:15;11589:35;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11570:54;;;11643:7;11635:35;;;;;;;;;;;;:::i;:::-;;;;;;;;;11436:242;;11365:313:::0;:::o;7059:1468::-;7243:16;7313:5;:12;7294:8;:15;:31;7272:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;7415:27;7432:9;7415:16;:27::i;:::-;7414:28;7392:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;7518:16;7554:8;7549:167;7572:5;:12;7568:1;:16;;;7549:167;;;7626:7;7614:5;7620:1;7614:8;;;;;;;;;;:::i;:::-;;;;;;;;:19;;7606:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;7696:5;7702:1;7696:8;;;;;;;;;;:::i;:::-;;;;;;;;7684:20;;;;;:::i;:::-;;;7586:3;;;;;:::i;:::-;;;;7549:167;;;;7728:18;7749:7;:29;;7766:12;;;;;;;;;;;7749:29;;;7759:4;;;;;;;;;;;7749:29;7728:50;;7796:8;7791:483;7814:5;:12;7810:1;:16;;;7791:483;;;7927:5;7933:1;7927:8;;;;;;;;;;:::i;:::-;;;;;;;;7874:11;:21;;;7896:8;7905:1;7896:11;;;;;;;;;;:::i;:::-;;;;;;;;7917:4;7874:49;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:61;;7848:143;;;;;;;;;;;;:::i;:::-;;;;;;;;;8006:11;8020;:24;;;8063:8;8072:1;8063:11;;;;;;;;;;:::i;:::-;;;;;;;;8101:4;8125:5;8131:1;8125:8;;;;;;;;;;:::i;:::-;;;;;;;;8020:128;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8006:142;;8171:6;8163:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;8225:37;8229:9;8240:8;8249:1;8240:11;;;;;;;;;;:::i;:::-;;;;;;;;8253:5;8259:1;8253:8;;;;;;;;;;:::i;:::-;;;;;;;;8225:37;;;;;;;;:::i;:::-;;;;;;;;7833:441;7828:3;;;;;:::i;:::-;;;;7791:483;;;;8286:13;;:::i;:::-;8321:7;8310:1;:8;;:18;;;;;8354:5;8339:1;:12;;:20;;;;8382:8;8370:1;:9;;:20;;;;8416:4;8401:1;:12;;:19;;;;;;;;;;;8452:1;8433:5;:16;8439:9;8433:16;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8464:14;8484:9;8464:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8514:5;8507:12;;;;;7059:1468;;;;;;;:::o;2283:201::-;1270:13;:11;:13::i;:::-;2392:1:::1;2372:22;;:8;:22;;::::0;2364:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2448:28;2467:8;2448:18;:28::i;:::-;2283:201:::0;:::o;6280:35::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5702:::-;;;:::o;1549:132::-;1624:12;:10;:12::i;:::-;1613:23;;:7;:5;:7::i;:::-;:23;;;1605:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1549:132::o;2644:191::-;2718:16;2737:6;;;;;;;;;;;2718:25;;2763:8;2754:6;;:17;;;;;;;;;;;;;;;;;;2818:8;2787:40;;2808:8;2787:40;;;;;;;;;;;;2707:128;2644:191;:::o;6738:313::-;6800:9;6795:249;6819:14;:21;;;;6815:1;:25;6795:249;;;6887:9;6866:30;;:14;6881:1;6866:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;6862:171;;6937:14;6976:1;6952:14;:21;;;;:25;;;;:::i;:::-;6937:41;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6917:14;6932:1;6917:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:61;;;;;;;;;;;;;;;;;;;;6997:14;:20;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6862:171;6842:3;;;;;:::i;:::-;;;;6795:249;;;;6738:313;:::o;600:98::-;653:7;680:10;673:17;;600:98;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::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:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:474::-;909:6;917;966:2;954:9;945:7;941:23;937:32;934:119;;;972:79;;:::i;:::-;934:119;1092:1;1117:53;1162:7;1153:6;1142:9;1138:22;1117:53;:::i;:::-;1107:63;;1063:117;1219:2;1245:53;1290:7;1281:6;1270:9;1266:22;1245:53;:::i;:::-;1235:63;;1190:118;841:474;;;;;:::o;1321:60::-;1349:3;1370:5;1363:12;;1321:60;;;:::o;1387:142::-;1437:9;1470:53;1488:34;1497:24;1515:5;1497:24;:::i;:::-;1488:34;:::i;:::-;1470:53;:::i;:::-;1457:66;;1387:142;;;:::o;1535:126::-;1585:9;1618:37;1649:5;1618:37;:::i;:::-;1605:50;;1535:126;;;:::o;1667:140::-;1731:9;1764:37;1795:5;1764:37;:::i;:::-;1751:50;;1667:140;;;:::o;1813:159::-;1914:51;1959:5;1914:51;:::i;:::-;1909:3;1902:64;1813:159;;:::o;1978:250::-;2085:4;2123:2;2112:9;2108:18;2100:26;;2136:85;2218:1;2207:9;2203:17;2194:6;2136:85;:::i;:::-;1978:250;;;;:::o;2234:118::-;2321:24;2339:5;2321:24;:::i;:::-;2316:3;2309:37;2234:118;;:::o;2358:222::-;2451:4;2489:2;2478:9;2474:18;2466:26;;2502:71;2570:1;2559:9;2555:17;2546:6;2502:71;:::i;:::-;2358:222;;;;:::o;2586:329::-;2645:6;2694:2;2682:9;2673:7;2669:23;2665:32;2662:119;;;2700:79;;:::i;:::-;2662:119;2820:1;2845:53;2890:7;2881:6;2870:9;2866:22;2845:53;:::i;:::-;2835:63;;2791:117;2586:329;;;;:::o;2921:90::-;2956:7;2999:5;2996:1;2985:20;2974:31;;2921:90;;;:::o;3017:118::-;3088:22;3104:5;3088:22;:::i;:::-;3081:5;3078:33;3068:61;;3125:1;3122;3115:12;3068:61;3017:118;:::o;3141:135::-;3185:5;3223:6;3210:20;3201:29;;3239:31;3264:5;3239:31;:::i;:::-;3141:135;;;;:::o;3282:325::-;3339:6;3388:2;3376:9;3367:7;3363:23;3359:32;3356:119;;;3394:79;;:::i;:::-;3356:119;3514:1;3539:51;3582:7;3573:6;3562:9;3558:22;3539:51;:::i;:::-;3529:61;;3485:115;3282:325;;;;:::o;3613:90::-;3647:7;3690:5;3683:13;3676:21;3665:32;;3613:90;;;:::o;3709:109::-;3790:21;3805:5;3790:21;:::i;:::-;3785:3;3778:34;3709:109;;:::o;3824:210::-;3911:4;3949:2;3938:9;3934:18;3926:26;;3962:65;4024:1;4013:9;4009:17;4000:6;3962:65;:::i;:::-;3824:210;;;;:::o;4040:116::-;4110:21;4125:5;4110:21;:::i;:::-;4103:5;4100:32;4090:60;;4146:1;4143;4136:12;4090:60;4040:116;:::o;4162:133::-;4205:5;4243:6;4230:20;4221:29;;4259:30;4283:5;4259:30;:::i;:::-;4162:133;;;;:::o;4301:323::-;4357:6;4406:2;4394:9;4385:7;4381:23;4377:32;4374:119;;;4412:79;;:::i;:::-;4374:119;4532:1;4557:50;4599:7;4590:6;4579:9;4575:22;4557:50;:::i;:::-;4547:60;;4503:114;4301:323;;;;:::o;4630:609::-;4702:6;4710;4718;4767:2;4755:9;4746:7;4742:23;4738:32;4735:119;;;4773:79;;:::i;:::-;4735:119;4893:1;4918:51;4961:7;4952:6;4941:9;4937:22;4918:51;:::i;:::-;4908:61;;4864:115;5018:2;5044:53;5089:7;5080:6;5069:9;5065:22;5044:53;:::i;:::-;5034:63;;4989:118;5146:2;5172:50;5214:7;5205:6;5194:9;5190:22;5172:50;:::i;:::-;5162:60;;5117:115;4630:609;;;;;:::o;5245:77::-;5282:7;5311:5;5300:16;;5245:77;;;:::o;5328:118::-;5415:24;5433:5;5415:24;:::i;:::-;5410:3;5403:37;5328:118;;:::o;5452:222::-;5545:4;5583:2;5572:9;5568:18;5560:26;;5596:71;5664:1;5653:9;5649:17;5640:6;5596:71;:::i;:::-;5452:222;;;;:::o;5680:464::-;5743:6;5751;5800:2;5788:9;5779:7;5775:23;5771:32;5768:119;;;5806:79;;:::i;:::-;5768:119;5926:1;5951:51;5994:7;5985:6;5974:9;5970:22;5951:51;:::i;:::-;5941:61;;5897:115;6051:2;6077:50;6119:7;6110:6;6099:9;6095:22;6077:50;:::i;:::-;6067:60;;6022:115;5680:464;;;;;:::o;6150:122::-;6223:24;6241:5;6223:24;:::i;:::-;6216:5;6213:35;6203:63;;6262:1;6259;6252:12;6203:63;6150:122;:::o;6278:139::-;6324:5;6362:6;6349:20;6340:29;;6378:33;6405:5;6378:33;:::i;:::-;6278:139;;;;:::o;6423:329::-;6482:6;6531:2;6519:9;6510:7;6506:23;6502:32;6499:119;;;6537:79;;:::i;:::-;6499:119;6657:1;6682:53;6727:7;6718:6;6707:9;6703:22;6682:53;:::i;:::-;6672:63;;6628:117;6423:329;;;;:::o;6758:112::-;6841:22;6857:5;6841:22;:::i;:::-;6836:3;6829:35;6758:112;;:::o;6876:214::-;6965:4;7003:2;6992:9;6988:18;6980:26;;7016:67;7080:1;7069:9;7065:17;7056:6;7016:67;:::i;:::-;6876:214;;;;:::o;7096:104::-;7141:7;7170:24;7188:5;7170:24;:::i;:::-;7159:35;;7096:104;;;:::o;7206:138::-;7287:32;7313:5;7287:32;:::i;:::-;7280:5;7277:43;7267:71;;7334:1;7331;7324:12;7267:71;7206:138;:::o;7350:155::-;7404:5;7442:6;7429:20;7420:29;;7458:41;7493:5;7458:41;:::i;:::-;7350:155;;;;:::o;7511:345::-;7578:6;7627:2;7615:9;7606:7;7602:23;7598:32;7595:119;;;7633:79;;:::i;:::-;7595:119;7753:1;7778:61;7831:7;7822:6;7811:9;7807:22;7778:61;:::i;:::-;7768:71;;7724:125;7511:345;;;;:::o;7862:117::-;7971:1;7968;7961:12;7985:102;8026:6;8077:2;8073:7;8068:2;8061:5;8057:14;8053:28;8043:38;;7985:102;;;:::o;8093:180::-;8141:77;8138:1;8131:88;8238:4;8235:1;8228:15;8262:4;8259:1;8252:15;8279:281;8362:27;8384:4;8362:27;:::i;:::-;8354:6;8350:40;8492:6;8480:10;8477:22;8456:18;8444:10;8441:34;8438:62;8435:88;;;8503:18;;:::i;:::-;8435:88;8543:10;8539:2;8532:22;8322:238;8279:281;;:::o;8566:129::-;8600:6;8627:20;;:::i;:::-;8617:30;;8656:33;8684:4;8676:6;8656:33;:::i;:::-;8566:129;;;:::o;8701:311::-;8778:4;8868:18;8860:6;8857:30;8854:56;;;8890:18;;:::i;:::-;8854:56;8940:4;8932:6;8928:17;8920:25;;9000:4;8994;8990:15;8982:23;;8701:311;;;:::o;9018:117::-;9127:1;9124;9117:12;9158:710;9254:5;9279:81;9295:64;9352:6;9295:64;:::i;:::-;9279:81;:::i;:::-;9270:90;;9380:5;9409:6;9402:5;9395:21;9443:4;9436:5;9432:16;9425:23;;9496:4;9488:6;9484:17;9476:6;9472:30;9525:3;9517:6;9514:15;9511:122;;;9544:79;;:::i;:::-;9511:122;9659:6;9642:220;9676:6;9671:3;9668:15;9642:220;;;9751:3;9780:37;9813:3;9801:10;9780:37;:::i;:::-;9775:3;9768:50;9847:4;9842:3;9838:14;9831:21;;9718:144;9702:4;9697:3;9693:14;9686:21;;9642:220;;;9646:21;9260:608;;9158:710;;;;;:::o;9891:370::-;9962:5;10011:3;10004:4;9996:6;9992:17;9988:27;9978:122;;10019:79;;:::i;:::-;9978:122;10136:6;10123:20;10161:94;10251:3;10243:6;10236:4;10228:6;10224:17;10161:94;:::i;:::-;10152:103;;9968:293;9891:370;;;;:::o;10267:311::-;10344:4;10434:18;10426:6;10423:30;10420:56;;;10456:18;;:::i;:::-;10420:56;10506:4;10498:6;10494:17;10486:25;;10566:4;10560;10556:15;10548:23;;10267:311;;;:::o;10601:710::-;10697:5;10722:81;10738:64;10795:6;10738:64;:::i;:::-;10722:81;:::i;:::-;10713:90;;10823:5;10852:6;10845:5;10838:21;10886:4;10879:5;10875:16;10868:23;;10939:4;10931:6;10927:17;10919:6;10915:30;10968:3;10960:6;10957:15;10954:122;;;10987:79;;:::i;:::-;10954:122;11102:6;11085:220;11119:6;11114:3;11111:15;11085:220;;;11194:3;11223:37;11256:3;11244:10;11223:37;:::i;:::-;11218:3;11211:50;11290:4;11285:3;11281:14;11274:21;;11161:144;11145:4;11140:3;11136:14;11129:21;;11085:220;;;11089:21;10703:608;;10601:710;;;;;:::o;11334:370::-;11405:5;11454:3;11447:4;11439:6;11435:17;11431:27;11421:122;;11462:79;;:::i;:::-;11421:122;11579:6;11566:20;11604:94;11694:3;11686:6;11679:4;11671:6;11667:17;11604:94;:::i;:::-;11595:103;;11411:293;11334:370;;;;:::o;11710:1321::-;11850:6;11858;11866;11874;11882;11931:3;11919:9;11910:7;11906:23;11902:33;11899:120;;;11938:79;;:::i;:::-;11899:120;12058:1;12083:51;12126:7;12117:6;12106:9;12102:22;12083:51;:::i;:::-;12073:61;;12029:115;12183:2;12209:53;12254:7;12245:6;12234:9;12230:22;12209:53;:::i;:::-;12199:63;;12154:118;12339:2;12328:9;12324:18;12311:32;12370:18;12362:6;12359:30;12356:117;;;12392:79;;:::i;:::-;12356:117;12497:78;12567:7;12558:6;12547:9;12543:22;12497:78;:::i;:::-;12487:88;;12282:303;12652:2;12641:9;12637:18;12624:32;12683:18;12675:6;12672:30;12669:117;;;12705:79;;:::i;:::-;12669:117;12810:78;12880:7;12871:6;12860:9;12856:22;12810:78;:::i;:::-;12800:88;;12595:303;12937:3;12964:50;13006:7;12997:6;12986:9;12982:22;12964:50;:::i;:::-;12954:60;;12908:116;11710:1321;;;;;;;;:::o;13037:114::-;13104:6;13138:5;13132:12;13122:22;;13037:114;;;:::o;13157:184::-;13256:11;13290:6;13285:3;13278:19;13330:4;13325:3;13321:14;13306:29;;13157:184;;;;:::o;13347:132::-;13414:4;13437:3;13429:11;;13467:4;13462:3;13458:14;13450:22;;13347:132;;;:::o;13485:108::-;13562:24;13580:5;13562:24;:::i;:::-;13557:3;13550:37;13485:108;;:::o;13599:179::-;13668:10;13689:46;13731:3;13723:6;13689:46;:::i;:::-;13767:4;13762:3;13758:14;13744:28;;13599:179;;;;:::o;13784:113::-;13854:4;13886;13881:3;13877:14;13869:22;;13784:113;;;:::o;13933:732::-;14052:3;14081:54;14129:5;14081:54;:::i;:::-;14151:86;14230:6;14225:3;14151:86;:::i;:::-;14144:93;;14261:56;14311:5;14261:56;:::i;:::-;14340:7;14371:1;14356:284;14381:6;14378:1;14375:13;14356:284;;;14457:6;14451:13;14484:63;14543:3;14528:13;14484:63;:::i;:::-;14477:70;;14570:60;14623:6;14570:60;:::i;:::-;14560:70;;14416:224;14403:1;14400;14396:9;14391:14;;14356:284;;;14360:14;14656:3;14649:10;;14057:608;;;13933:732;;;;:::o;14671:373::-;14814:4;14852:2;14841:9;14837:18;14829:26;;14901:9;14895:4;14891:20;14887:1;14876:9;14872:17;14865:47;14929:108;15032:4;15023:6;14929:108;:::i;:::-;14921:116;;14671:373;;;;:::o;15050:89::-;15086:7;15126:6;15119:5;15115:18;15104:29;;15050:89;;;:::o;15145:115::-;15230:23;15247:5;15230:23;:::i;:::-;15225:3;15218:36;15145:115;;:::o;15266:426::-;15407:4;15445:2;15434:9;15430:18;15422:26;;15458:71;15526:1;15515:9;15511:17;15502:6;15458:71;:::i;:::-;15539:66;15601:2;15590:9;15586:18;15577:6;15539:66;:::i;:::-;15615:70;15681:2;15670:9;15666:18;15657:6;15615:70;:::i;:::-;15266:426;;;;;;:::o;15698:143::-;15755:5;15786:6;15780:13;15771:22;;15802:33;15829:5;15802:33;:::i;:::-;15698:143;;;;:::o;15847:351::-;15917:6;15966:2;15954:9;15945:7;15941:23;15937:32;15934:119;;;15972:79;;:::i;:::-;15934:119;16092:1;16117:64;16173:7;16164:6;16153:9;16149:22;16117:64;:::i;:::-;16107:74;;16063:128;15847:351;;;;:::o;16204:169::-;16288:11;16322:6;16317:3;16310:19;16362:4;16357:3;16353:14;16338:29;;16204:169;;;;:::o;16379:171::-;16519:23;16515:1;16507:6;16503:14;16496:47;16379:171;:::o;16556:366::-;16698:3;16719:67;16783:2;16778:3;16719:67;:::i;:::-;16712:74;;16795:93;16884:3;16795:93;:::i;:::-;16913:2;16908:3;16904:12;16897:19;;16556:366;;;:::o;16928:419::-;17094:4;17132:2;17121:9;17117:18;17109:26;;17181:9;17175:4;17171:20;17167:1;17156:9;17152:17;17145:47;17209:131;17335:4;17209:131;:::i;:::-;17201:139;;16928:419;;;:::o;17353:332::-;17474:4;17512:2;17501:9;17497:18;17489:26;;17525:71;17593:1;17582:9;17578:17;17569:6;17525:71;:::i;:::-;17606:72;17674:2;17663:9;17659:18;17650:6;17606:72;:::i;:::-;17353:332;;;;;:::o;17691:137::-;17745:5;17776:6;17770:13;17761:22;;17792:30;17816:5;17792:30;:::i;:::-;17691:137;;;;:::o;17834:345::-;17901:6;17950:2;17938:9;17929:7;17925:23;17921:32;17918:119;;;17956:79;;:::i;:::-;17918:119;18076:1;18101:61;18154:7;18145:6;18134:9;18130:22;18101:61;:::i;:::-;18091:71;;18047:125;17834:345;;;;:::o;18185:171::-;18325:23;18321:1;18313:6;18309:14;18302:47;18185:171;:::o;18362:366::-;18504:3;18525:67;18589:2;18584:3;18525:67;:::i;:::-;18518:74;;18601:93;18690:3;18601:93;:::i;:::-;18719:2;18714:3;18710:12;18703:19;;18362:366;;;:::o;18734:419::-;18900:4;18938:2;18927:9;18923:18;18915:26;;18987:9;18981:4;18977:20;18973:1;18962:9;18958:17;18951:47;19015:131;19141:4;19015:131;:::i;:::-;19007:139;;18734:419;;;:::o;19159:180::-;19207:77;19204:1;19197:88;19304:4;19301:1;19294:15;19328:4;19325:1;19318:15;19345:180;19393:77;19390:1;19383:88;19490:4;19487:1;19480:15;19514:4;19511:1;19504:15;19531:233;19570:3;19593:24;19611:5;19593:24;:::i;:::-;19584:33;;19639:66;19632:5;19629:77;19626:103;;19709:18;;:::i;:::-;19626:103;19756:1;19749:5;19745:13;19738:20;;19531:233;;;:::o;19770:232::-;19910:34;19906:1;19898:6;19894:14;19887:58;19979:15;19974:2;19966:6;19962:15;19955:40;19770:232;:::o;20008:366::-;20150:3;20171:67;20235:2;20230:3;20171:67;:::i;:::-;20164:74;;20247:93;20336:3;20247:93;:::i;:::-;20365:2;20360:3;20356:12;20349:19;;20008:366;;;:::o;20380:419::-;20546:4;20584:2;20573:9;20569:18;20561:26;;20633:9;20627:4;20623:20;20619:1;20608:9;20604:17;20597:47;20661:131;20787:4;20661:131;:::i;:::-;20653:139;;20380:419;;;:::o;20805:173::-;20945:25;20941:1;20933:6;20929:14;20922:49;20805:173;:::o;20984:366::-;21126:3;21147:67;21211:2;21206:3;21147:67;:::i;:::-;21140:74;;21223:93;21312:3;21223:93;:::i;:::-;21341:2;21336:3;21332:12;21325:19;;20984:366;;;:::o;21356:419::-;21522:4;21560:2;21549:9;21545:18;21537:26;;21609:9;21603:4;21599:20;21595:1;21584:9;21580:17;21573:47;21637:131;21763:4;21637:131;:::i;:::-;21629:139;;21356:419;;;:::o;21781:191::-;21821:3;21840:20;21858:1;21840:20;:::i;:::-;21835:25;;21874:20;21892:1;21874:20;:::i;:::-;21869:25;;21917:1;21914;21910:9;21903:16;;21938:3;21935:1;21932:10;21929:36;;;21945:18;;:::i;:::-;21929:36;21781:191;;;;:::o;21978:171::-;22016:3;22039:23;22056:5;22039:23;:::i;:::-;22030:32;;22084:6;22077:5;22074:17;22071:43;;22094:18;;:::i;:::-;22071:43;22141:1;22134:5;22130:13;22123:20;;21978:171;;;:::o;22155:410::-;22195:7;22218:20;22236:1;22218:20;:::i;:::-;22213:25;;22252:20;22270:1;22252:20;:::i;:::-;22247:25;;22307:1;22304;22300:9;22329:30;22347:11;22329:30;:::i;:::-;22318:41;;22508:1;22499:7;22495:15;22492:1;22489:22;22469:1;22462:9;22442:83;22419:139;;22538:18;;:::i;:::-;22419:139;22203:362;22155:410;;;;:::o;22571:180::-;22619:77;22616:1;22609:88;22716:4;22713:1;22706:15;22740:4;22737:1;22730:15;22757:185;22797:1;22814:20;22832:1;22814:20;:::i;:::-;22809:25;;22848:20;22866:1;22848:20;:::i;:::-;22843:25;;22887:1;22877:35;;22892:18;;:::i;:::-;22877:35;22934:1;22931;22927:9;22922:14;;22757:185;;;;:::o;22948:194::-;22988:4;23008:20;23026:1;23008:20;:::i;:::-;23003:25;;23042:20;23060:1;23042:20;:::i;:::-;23037:25;;23086:1;23083;23079:9;23071:17;;23110:1;23104:4;23101:11;23098:37;;;23115:18;;:::i;:::-;23098:37;22948:194;;;;:::o;23148:434::-;23293:4;23331:2;23320:9;23316:18;23308:26;;23344:67;23408:1;23397:9;23393:17;23384:6;23344:67;:::i;:::-;23421:72;23489:2;23478:9;23474:18;23465:6;23421:72;:::i;:::-;23503;23571:2;23560:9;23556:18;23547:6;23503:72;:::i;:::-;23148:434;;;;;;:::o;23588:324::-;23705:4;23743:2;23732:9;23728:18;23720:26;;23756:67;23820:1;23809:9;23805:17;23796:6;23756:67;:::i;:::-;23833:72;23901:2;23890:9;23886:18;23877:6;23833:72;:::i;:::-;23588:324;;;;;:::o;23918:171::-;24058:23;24054:1;24046:6;24042:14;24035:47;23918:171;:::o;24095:366::-;24237:3;24258:67;24322:2;24317:3;24258:67;:::i;:::-;24251:74;;24334:93;24423:3;24334:93;:::i;:::-;24452:2;24447:3;24443:12;24436:19;;24095:366;;;:::o;24467:419::-;24633:4;24671:2;24660:9;24656:18;24648:26;;24720:9;24714:4;24710:20;24706:1;24695:9;24691:17;24684:47;24748:131;24874:4;24748:131;:::i;:::-;24740:139;;24467:419;;;:::o;24892:170::-;25032:22;25028:1;25020:6;25016:14;25009:46;24892:170;:::o;25068:366::-;25210:3;25231:67;25295:2;25290:3;25231:67;:::i;:::-;25224:74;;25307:93;25396:3;25307:93;:::i;:::-;25425:2;25420:3;25416:12;25409:19;;25068:366;;;:::o;25440:419::-;25606:4;25644:2;25633:9;25629:18;25621:26;;25693:9;25687:4;25683:20;25679:1;25668:9;25664:17;25657:47;25721:131;25847:4;25721:131;:::i;:::-;25713:139;;25440:419;;;:::o;25865:147::-;25966:11;26003:3;25988:18;;25865:147;;;;:::o;26018:114::-;;:::o;26138:398::-;26297:3;26318:83;26399:1;26394:3;26318:83;:::i;:::-;26311:90;;26410:93;26499:3;26410:93;:::i;:::-;26528:1;26523:3;26519:11;26512:18;;26138:398;;;:::o;26542:379::-;26726:3;26748:147;26891:3;26748:147;:::i;:::-;26741:154;;26912:3;26905:10;;26542:379;;;:::o;26927:165::-;27067:17;27063:1;27055:6;27051:14;27044:41;26927:165;:::o;27098:366::-;27240:3;27261:67;27325:2;27320:3;27261:67;:::i;:::-;27254:74;;27337:93;27426:3;27337:93;:::i;:::-;27455:2;27450:3;27446:12;27439:19;;27098:366;;;:::o;27470:419::-;27636:4;27674:2;27663:9;27659:18;27651:26;;27723:9;27717:4;27713:20;27709:1;27698:9;27694:17;27687:47;27751:131;27877:4;27751:131;:::i;:::-;27743:139;;27470:419;;;:::o;27895:178::-;28035:30;28031:1;28023:6;28019:14;28012:54;27895:178;:::o;28079:366::-;28221:3;28242:67;28306:2;28301:3;28242:67;:::i;:::-;28235:74;;28318:93;28407:3;28318:93;:::i;:::-;28436:2;28431:3;28427:12;28420:19;;28079:366;;;:::o;28451:419::-;28617:4;28655:2;28644:9;28640:18;28632:26;;28704:9;28698:4;28694:20;28690:1;28679:9;28675:17;28668:47;28732:131;28858:4;28732:131;:::i;:::-;28724:139;;28451:419;;;:::o;28876:222::-;29016:34;29012:1;29004:6;29000:14;28993:58;29085:5;29080:2;29072:6;29068:15;29061:30;28876:222;:::o;29104:366::-;29246:3;29267:67;29331:2;29326:3;29267:67;:::i;:::-;29260:74;;29343:93;29432:3;29343:93;:::i;:::-;29461:2;29456:3;29452:12;29445:19;;29104:366;;;:::o;29476:419::-;29642:4;29680:2;29669:9;29665:18;29657:26;;29729:9;29723:4;29719:20;29715:1;29704:9;29700:17;29693:47;29757:131;29883:4;29757:131;:::i;:::-;29749:139;;29476:419;;;:::o;29901:181::-;30041:33;30037:1;30029:6;30025:14;30018:57;29901:181;:::o;30088:366::-;30230:3;30251:67;30315:2;30310:3;30251:67;:::i;:::-;30244:74;;30327:93;30416:3;30327:93;:::i;:::-;30445:2;30440:3;30436:12;30429:19;;30088:366;;;:::o;30460:419::-;30626:4;30664:2;30653:9;30649:18;30641:26;;30713:9;30707:4;30703:20;30699:1;30688:9;30684:17;30677:47;30741:131;30867:4;30741:131;:::i;:::-;30733:139;;30460:419;;;:::o;30885:332::-;31006:4;31044:2;31033:9;31029:18;31021:26;;31057:71;31125:1;31114:9;31110:17;31101:6;31057:71;:::i;:::-;31138:72;31206:2;31195:9;31191:18;31182:6;31138:72;:::i;:::-;30885:332;;;;;:::o;31223:170::-;31363:22;31359:1;31351:6;31347:14;31340:46;31223:170;:::o;31399:366::-;31541:3;31562:67;31626:2;31621:3;31562:67;:::i;:::-;31555:74;;31638:93;31727:3;31638:93;:::i;:::-;31756:2;31751:3;31747:12;31740:19;;31399:366;;;:::o;31771:419::-;31937:4;31975:2;31964:9;31960:18;31952:26;;32024:9;32018:4;32014:20;32010:1;31999:9;31995:17;31988:47;32052:131;32178:4;32052:131;:::i;:::-;32044:139;;31771:419;;;:::o;32196:442::-;32345:4;32383:2;32372:9;32368:18;32360:26;;32396:71;32464:1;32453:9;32449:17;32440:6;32396:71;:::i;:::-;32477:72;32545:2;32534:9;32530:18;32521:6;32477:72;:::i;:::-;32559;32627:2;32616:9;32612:18;32603:6;32559:72;:::i;:::-;32196:442;;;;;;:::o;32644:225::-;32784:34;32780:1;32772:6;32768:14;32761:58;32853:8;32848:2;32840:6;32836:15;32829:33;32644:225;:::o;32875:366::-;33017:3;33038:67;33102:2;33097:3;33038:67;:::i;:::-;33031:74;;33114:93;33203:3;33114:93;:::i;:::-;33232:2;33227:3;33223:12;33216:19;;32875:366;;;:::o;33247:419::-;33413:4;33451:2;33440:9;33436:18;33428:26;;33500:9;33494:4;33490:20;33486:1;33475:9;33471:17;33464:47;33528:131;33654:4;33528:131;:::i;:::-;33520:139;;33247:419;;;:::o;33672:182::-;33812:34;33808:1;33800:6;33796:14;33789:58;33672:182;:::o;33860:366::-;34002:3;34023:67;34087:2;34082:3;34023:67;:::i;:::-;34016:74;;34099:93;34188:3;34099:93;:::i;:::-;34217:2;34212:3;34208:12;34201:19;;33860:366;;;:::o;34232:419::-;34398:4;34436:2;34425:9;34421:18;34413:26;;34485:9;34479:4;34475:20;34471:1;34460:9;34456:17;34449:47;34513:131;34639:4;34513:131;:::i;:::-;34505:139;;34232:419;;;:::o;34657:180::-;34705:77;34702:1;34695:88;34802:4;34799:1;34792:15;34826:4;34823:1;34816:15

Swarm Source

ipfs://581f113dc86791d07dd7e4bed7aad9dc33c785bb8c784863b8797fbf4acb6185

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ 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.