ETH Price: $3,316.52 (+0.27%)
Gas: 20 Gwei

Token

I Fucking Love Crypto (IFLC)
 

Overview

Max Total Supply

100,000,000,000,000,000,000,000,000,000 IFLC

Holders

95

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 0 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
IFLCToken

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-05-21
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

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;
    address private creator;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

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

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

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

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


interface IERC20 {
    /**
     * @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 `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(
        address recipient,
        uint256 amount
    ) external returns (bool);

    function allowance(
        address owner,
        address spender
    ) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
     * @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
    );
}

interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;
    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(
        address account
    ) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(
        address owner,
        address spender
    ) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(
        address spender,
        uint256 amount
    ) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(
            currentAllowance >= amount,
            "ERC20: transfer amount exceeds allowance"
        );
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }

    function increaseAllowance(
        address spender,
        uint256 addedValue
    ) public virtual returns (bool) {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender] + addedValue
        );
        return true;
    }

    function decreaseAllowance(
        address spender,
        uint256 subtractedValue
    ) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(
            currentAllowance >= subtractedValue,
            "ERC20: decreased allowance below zero"
        );
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(
            senderBalance >= amount,
            "ERC20: transfer amount exceeds balance"
        );
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

////// src/IUniswapV2Factory.sol
/* pragma solidity 0.8.10; */
/* pragma experimental ABIEncoderV2; */

interface IUniswapV2Factory {
    event PairCreated(
        address indexed token0,
        address indexed token1,
        address pair,
        uint256
    );

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

    function getPair(
        address tokenA,
        address tokenB
    ) external view returns (address pair);

    function allPairs(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

    function createPair(
        address tokenA,
        address tokenB
    ) external returns (address pair);

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

////// src/IUniswapV2Pair.sol
/* pragma solidity 0.8.10; */
/* pragma experimental ABIEncoderV2; */

interface IUniswapV2Pair {
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 value);

    function name() external pure returns (string memory);

    function symbol() external pure returns (string memory);

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

    function balanceOf(address owner) external view returns (uint256);

    function allowance(
        address owner,
        address spender
    ) external view returns (uint256);

    function approve(address spender, uint256 value) external returns (bool);

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint256);

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;

    event Mint(address indexed sender, uint256 amount0, uint256 amount1);
    event Burn(
        address indexed sender,
        uint256 amount0,
        uint256 amount1,
        address indexed to
    );
    event Swap(
        address indexed sender,
        uint256 amount0In,
        uint256 amount1In,
        uint256 amount0Out,
        uint256 amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves()
        external
        view
        returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function mint(address to) external returns (uint256 liquidity);

    function burn(
        address to
    ) external returns (uint256 amount0, uint256 amount1);

    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

interface IUniswapV2Router02 {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountA, uint256 amountB, uint256 liquidity);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (uint256 amountToken, uint256 amountETH, uint256 liquidity);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

contract IFLCToken is ERC20, Ownable {
 
    uint256 private tMax_Supply = 100_000_000_000 ether;
    uint256 private team_Market = 10_000_000_000 ether;
    uint256 public maxTransactionAmount = (tMax_Supply * 10) / 1000; 
    uint256 public maxWallet = (tMax_Supply * 10) / 1000;
    mapping(address => bool) public _isExcludedMaxTransactionAmount;
    mapping(address => bool) public automatedMarketMakerPairs;

    uint256 public lnchBlk;

    IUniswapV2Router02 public uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
 
    address private uniswapV2Pair;
    address private teamWallet = address(0x3107999Bfd59EA548C5B5f26915c26B11D9b306A);
    bool public lim = false;
    
    mapping(address => bool) private blacklists;

    constructor()
        ERC20("I Fucking Love Crypto ", "IFLC")

    {

        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(teamWallet, true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);
        excludeFromMaxTransaction(address(0), true);
        _mint(address(this), tMax_Supply-team_Market);
        _mint(teamWallet,team_Market);
    }


    function addLP() external payable onlyOwner {

        lnchBlk = block.number;
        excludeFromMaxTransaction(address(uniswapV2Router), true);
        _approve(address(this), address(uniswapV2Router), type(uint256).max);

        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory())
            .createPair(address(this), uniswapV2Router.WETH());

        excludeFromMaxTransaction(address(uniswapV2Pair), true);

        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);

        uniswapV2Router.addLiquidityETH{value: msg.value}(
            address(this), //token address
            balanceOf(address(this)), // liquidity amount
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            owner(), // LP tokens are sent to the owner
            block.timestamp
        );
        lim=true;
    }
   function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;
    }
    function updateMaxWallet(uint amount) external onlyOwner{
        maxWallet = amount;
    }

    function updateLimits(bool value) external onlyOwner{
        lim = value;
    }
    function setAutomatedMarketMakerPair(
        address pair,
        bool value
    ) public onlyOwner {
        require(
            pair != uniswapV2Pair,
            "The pair cannot be removed from automatedMarketMakerPairs"
        );
        _setAutomatedMarketMakerPair(pair, value);
    }
    function blklist(address[] memory _address) external onlyOwner {
        for(uint8 i=0;i<_address.length;i++){
        blacklists[_address[i]] = true;
        }
    }
    function unblklist(address[] memory _address) external onlyOwner {
        for(uint8 i=0;i<_address.length;i++){
        blacklists[_address[i]] = false;
        }
    }
    function excludeFromMaxTransaction(
        address addressToExclude,
        bool isExcluded
    ) public onlyOwner {
        _isExcludedMaxTransactionAmount[addressToExclude] = isExcluded;
    }
  
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal  override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(!blacklists[to] && !blacklists[from], "Blacklisted");

        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }
        if (lim) {
                if (
                    from != owner() &&
                    to != owner() &&
                    to != address(0) &&
                    to != address(0xdead) 
                ) {


                    //when buy
                    if (
                        automatedMarketMakerPairs[from] &&
                        !_isExcludedMaxTransactionAmount[to]
                    ) {
                        require(
                            amount <= maxTransactionAmount,
                            "Buy transfer amount exceeds the maxTransactionAmount."
                        );
                        require(
                            amount + balanceOf(to) <= maxWallet,
                            "Max wallet exceeded"
                        );
                    }
                    //when sell
                    else if (
                        automatedMarketMakerPairs[to] &&
                        !_isExcludedMaxTransactionAmount[from]
                    ) {
                        require(
                            amount <= maxTransactionAmount,
                            "Sell transfer amount exceeds the maxTransactionAmount."
                        );
                        
                    } else if (!_isExcludedMaxTransactionAmount[to]) {
                        require(
                            amount + balanceOf(to) <= maxWallet,
                            "Max wallet exceeded"
                        );

                    }
                }
            }
        uint256 fees = 0;
        if (uniswapV2Pair == from ) {
            // DEAD BLOCKS
            if (block.number - lnchBlk < 10){
                fees = amount * (990)/(1000);
            } 
        }
        if (fees > 0) {
   
            super._transfer(from, address(0xdead), fees);
        }
        amount -= fees;
        super._transfer(from, to, amount);

    }
  

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","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":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"addLP","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_address","type":"address[]"}],"name":"blklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addressToExclude","type":"address"},{"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lim","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lnchBlk","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_address","type":"address[]"}],"name":"unblklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"updateLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526c01431e0fae6d7217caa00000006007556b204fce5e3e250261100000006008556103e8600a60075462000039919062000664565b620000459190620006db565b6009556103e8600a6007546200005c919062000664565b620000689190620006db565b600a55737a250d5630b4cf539739df2c5dacb4c659f2488d600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550733107999bfd59ea548c5b5f26915c26b11d9b306a60105f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f601060146101000a81548160ff02191690831515021790555034801562000139575f80fd5b506040518060400160405280601681526020017f49204675636b696e67204c6f76652043727970746f20000000000000000000008152506040518060400160405280600481526020017f49464c43000000000000000000000000000000000000000000000000000000008152508160039081620001b791906200096d565b508060049081620001c991906200096d565b505050620001ec620001e0620002db60201b60201c565b620002e260201b60201c565b6200020e62000200620003a560201b60201c565b6001620003cd60201b60201c565b6200024260105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620003cd60201b60201c565b62000255306001620003cd60201b60201c565b6200026a61dead6001620003cd60201b60201c565b6200027d5f6001620003cd60201b60201c565b620002a03060085460075462000294919062000a51565b620004b460201b60201c565b620002d560105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600854620004b460201b60201c565b62000bdd565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620003dd620002db60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000403620003a560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200045c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004539062000ae9565b60405180910390fd5b80600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000525576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200051c9062000b57565b60405180910390fd5b620005385f83836200062460201b60201c565b8060025f8282546200054b919062000b77565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546200059f919062000b77565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000605919062000bc2565b60405180910390a3620006205f83836200062960201b60201c565b5050565b505050565b505050565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000670826200062e565b91506200067d836200062e565b92508282026200068d816200062e565b91508282048414831517620006a757620006a662000637565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620006e7826200062e565b9150620006f4836200062e565b925082620007075762000706620006ae565b5b828204905092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200078e57607f821691505b602082108103620007a457620007a362000749565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620008087fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620007cb565b620008148683620007cb565b95508019841693508086168417925050509392505050565b5f819050919050565b5f620008556200084f62000849846200062e565b6200082c565b6200062e565b9050919050565b5f819050919050565b620008708362000835565b620008886200087f826200085c565b848454620007d7565b825550505050565b5f90565b6200089e62000890565b620008ab81848462000865565b505050565b5b81811015620008d257620008c65f8262000894565b600181019050620008b1565b5050565b601f8211156200092157620008eb81620007aa565b620008f684620007bc565b8101602085101562000906578190505b6200091e6200091585620007bc565b830182620008b0565b50505b505050565b5f82821c905092915050565b5f620009435f198460080262000926565b1980831691505092915050565b5f6200095d838362000932565b9150826002028217905092915050565b620009788262000712565b67ffffffffffffffff8111156200099457620009936200071c565b5b620009a0825462000776565b620009ad828285620008d6565b5f60209050601f831160018114620009e3575f8415620009ce578287015190505b620009da858262000950565b86555062000a49565b601f198416620009f386620007aa565b5f5b8281101562000a1c57848901518255600182019150602085019450602081019050620009f5565b8683101562000a3c578489015162000a38601f89168262000932565b8355505b6001600288020188555050505b505050505050565b5f62000a5d826200062e565b915062000a6a836200062e565b925082820390508181111562000a855762000a8462000637565b5b92915050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f62000ad160208362000a8b565b915062000ade8262000a9b565b602082019050919050565b5f6020820190508181035f83015262000b028162000ac3565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62000b3f601f8362000a8b565b915062000b4c8262000b09565b602082019050919050565b5f6020820190508181035f83015262000b708162000b31565b9050919050565b5f62000b83826200062e565b915062000b90836200062e565b925082820190508082111562000bab5762000baa62000637565b5b92915050565b62000bbc816200062e565b82525050565b5f60208201905062000bd75f83018462000bb1565b92915050565b6133068062000beb5f395ff3fe6080604052600436106101b6575f3560e01c80637571336a116100eb578063b24f32aa11610089578063c8c8ebe411610063578063c8c8ebe4146105fa578063dd62ed3e14610624578063f2fde38b14610660578063f8b45b0514610688576101b6565b8063b24f32aa1461058c578063b62496f5146105b4578063bc37e1a3146105f0576101b6565b806395d89b41116100c557806395d89b41146104c25780639a7a23d6146104ec578063a457c2d714610514578063a9059cbb14610550576101b6565b80637571336a146104465780638da5cb5b1461046e57806390f259c514610498576101b6565b80632e0934271161015857806370a082311161013257806370a08231146103a2578063715018a6146103de578063728c97ba146103f457806374326f531461041e576101b6565b80632e09342714610314578063313ce5671461033c5780633950935114610366576101b6565b80631694505e116101945780631694505e1461025c57806318160ddd146102865780631c499ab0146102b057806323b872dd146102d8576101b6565b806306fdde03146101ba578063095ea7b3146101e457806310d5de5314610220575b5f80fd5b3480156101c5575f80fd5b506101ce6106b2565b6040516101db9190612314565b60405180910390f35b3480156101ef575f80fd5b5061020a600480360381019061020591906123d2565b610742565b604051610217919061242a565b60405180910390f35b34801561022b575f80fd5b5061024660048036038101906102419190612443565b61075f565b604051610253919061242a565b60405180910390f35b348015610267575f80fd5b5061027061077c565b60405161027d91906124c9565b60405180910390f35b348015610291575f80fd5b5061029a6107a1565b6040516102a791906124f1565b60405180910390f35b3480156102bb575f80fd5b506102d660048036038101906102d1919061250a565b6107aa565b005b3480156102e3575f80fd5b506102fe60048036038101906102f99190612535565b610830565b60405161030b919061242a565b60405180910390f35b34801561031f575f80fd5b5061033a600480360381019061033591906126c5565b610922565b005b348015610347575f80fd5b50610350610a35565b60405161035d9190612727565b60405180910390f35b348015610371575f80fd5b5061038c600480360381019061038791906123d2565b610a3d565b604051610399919061242a565b60405180910390f35b3480156103ad575f80fd5b506103c860048036038101906103c39190612443565b610ae4565b6040516103d591906124f1565b60405180910390f35b3480156103e9575f80fd5b506103f2610b29565b005b3480156103ff575f80fd5b50610408610bb0565b604051610415919061242a565b60405180910390f35b348015610429575f80fd5b50610444600480360381019061043f919061276a565b610bc3565b005b348015610451575f80fd5b5061046c60048036038101906104679190612795565b610c5c565b005b348015610479575f80fd5b50610482610d30565b60405161048f91906127e2565b60405180910390f35b3480156104a3575f80fd5b506104ac610d58565b6040516104b991906124f1565b60405180910390f35b3480156104cd575f80fd5b506104d6610d5e565b6040516104e39190612314565b60405180910390f35b3480156104f7575f80fd5b50610512600480360381019061050d9190612795565b610dee565b005b34801561051f575f80fd5b5061053a600480360381019061053591906123d2565b610f07565b604051610547919061242a565b60405180910390f35b34801561055b575f80fd5b50610576600480360381019061057191906123d2565b610fed565b604051610583919061242a565b60405180910390f35b348015610597575f80fd5b506105b260048036038101906105ad91906126c5565b61100a565b005b3480156105bf575f80fd5b506105da60048036038101906105d59190612443565b61111c565b6040516105e7919061242a565b60405180910390f35b6105f8611139565b005b348015610605575f80fd5b5061060e611535565b60405161061b91906124f1565b60405180910390f35b34801561062f575f80fd5b5061064a600480360381019061064591906127fb565b61153b565b60405161065791906124f1565b60405180910390f35b34801561066b575f80fd5b5061068660048036038101906106819190612443565b6115bd565b005b348015610693575f80fd5b5061069c6116b3565b6040516106a991906124f1565b60405180910390f35b6060600380546106c190612866565b80601f01602080910402602001604051908101604052809291908181526020018280546106ed90612866565b80156107385780601f1061070f57610100808354040283529160200191610738565b820191905f5260205f20905b81548152906001019060200180831161071b57829003601f168201915b5050505050905090565b5f61075561074e6116b9565b84846116c0565b6001905092915050565b600b602052805f5260405f205f915054906101000a900460ff1681565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600254905090565b6107b26116b9565b73ffffffffffffffffffffffffffffffffffffffff166107d0610d30565b73ffffffffffffffffffffffffffffffffffffffff1614610826576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081d906128e0565b60405180910390fd5b80600a8190555050565b5f61083c848484611883565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6108836116b9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610902576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f99061296e565b60405180910390fd5b6109168561090e6116b9565b8584036116c0565b60019150509392505050565b61092a6116b9565b73ffffffffffffffffffffffffffffffffffffffff16610948610d30565b73ffffffffffffffffffffffffffffffffffffffff161461099e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610995906128e0565b60405180910390fd5b5f5b81518160ff161015610a3157600160115f848460ff16815181106109c7576109c661298c565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080610a29906129e6565b9150506109a0565b5050565b5f6012905090565b5f610ada610a496116b9565b848460015f610a566116b9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610ad59190612a0e565b6116c0565b6001905092915050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610b316116b9565b73ffffffffffffffffffffffffffffffffffffffff16610b4f610d30565b73ffffffffffffffffffffffffffffffffffffffff1614610ba5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9c906128e0565b60405180910390fd5b610bae5f611ef0565b565b601060149054906101000a900460ff1681565b610bcb6116b9565b73ffffffffffffffffffffffffffffffffffffffff16610be9610d30565b73ffffffffffffffffffffffffffffffffffffffff1614610c3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c36906128e0565b60405180910390fd5b80601060146101000a81548160ff02191690831515021790555050565b610c646116b9565b73ffffffffffffffffffffffffffffffffffffffff16610c82610d30565b73ffffffffffffffffffffffffffffffffffffffff1614610cd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ccf906128e0565b60405180910390fd5b80600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600d5481565b606060048054610d6d90612866565b80601f0160208091040260200160405190810160405280929190818152602001828054610d9990612866565b8015610de45780601f10610dbb57610100808354040283529160200191610de4565b820191905f5260205f20905b815481529060010190602001808311610dc757829003601f168201915b5050505050905090565b610df66116b9565b73ffffffffffffffffffffffffffffffffffffffff16610e14610d30565b73ffffffffffffffffffffffffffffffffffffffff1614610e6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e61906128e0565b60405180910390fd5b600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ef9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef090612ab1565b60405180910390fd5b610f038282611fb3565b5050565b5f8060015f610f146116b9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610fce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc590612b3f565b60405180910390fd5b610fe2610fd96116b9565b858584036116c0565b600191505092915050565b5f611000610ff96116b9565b8484611883565b6001905092915050565b6110126116b9565b73ffffffffffffffffffffffffffffffffffffffff16611030610d30565b73ffffffffffffffffffffffffffffffffffffffff1614611086576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107d906128e0565b60405180910390fd5b5f5b81518160ff161015611118575f60115f848460ff16815181106110ae576110ad61298c565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080611110906129e6565b915050611088565b5050565b600c602052805f5260405f205f915054906101000a900460ff1681565b6111416116b9565b73ffffffffffffffffffffffffffffffffffffffff1661115f610d30565b73ffffffffffffffffffffffffffffffffffffffff16146111b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ac906128e0565b60405180910390fd5b43600d819055506111e8600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001610c5c565b61123430600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6116c0565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561129e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112c29190612b71565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611348573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061136c9190612b71565b6040518363ffffffff1660e01b8152600401611389929190612b9c565b6020604051808303815f875af11580156113a5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113c99190612b71565b600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611434600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001610c5c565b611460600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001611fb3565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71934306114a830610ae4565b5f806114b2610d30565b426040518863ffffffff1660e01b81526004016114d496959493929190612bfc565b60606040518083038185885af11580156114f0573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906115159190612c6f565b5050506001601060146101000a81548160ff021916908315150217905550565b60095481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6115c56116b9565b73ffffffffffffffffffffffffffffffffffffffff166115e3610d30565b73ffffffffffffffffffffffffffffffffffffffff1614611639576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611630906128e0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036116a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169e90612d2f565b60405180910390fd5b6116b081611ef0565b50565b600a5481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361172e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172590612dbd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361179c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179390612e4b565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161187691906124f1565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e890612ed9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361195f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195690612f67565b60405180910390fd5b60115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156119fd575060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611a3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3390612fcf565b60405180910390fd5b5f8103611a5357611a4e83835f61200b565b611eeb565b601060149054906101000a900460ff1615611e3057611a70610d30565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611ade5750611aae610d30565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611b1657505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611b50575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611e2f57600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611bf25750600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611c9957600954811115611c3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c339061305d565b60405180910390fd5b600a54611c4883610ae4565b82611c539190612a0e565b1115611c94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8b906130c5565b60405180910390fd5b611e2e565b600c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611d365750600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611d8557600954811115611d80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7790613153565b60405180910390fd5b611e2d565b600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611e2c57600a54611ddf83610ae4565b82611dea9190612a0e565b1115611e2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e22906130c5565b60405180910390fd5b5b5b5b5b5b5f8373ffffffffffffffffffffffffffffffffffffffff16600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611eba57600a600d5443611e959190613171565b1015611eb9576103e86103de83611eac91906131a4565b611eb69190613212565b90505b5b5f811115611ed057611ecf8461dead8361200b565b5b8082611edc9190613171565b9150611ee984848461200b565b505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612079576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207090612ed9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120de90612f67565b60405180910390fd5b6120f2838383612280565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612175576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216c906132b2565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546122039190612a0e565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161226791906124f1565b60405180910390a361227a848484612285565b50505050565b505050565b505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156122c15780820151818401526020810190506122a6565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6122e68261228a565b6122f08185612294565b93506123008185602086016122a4565b612309816122cc565b840191505092915050565b5f6020820190508181035f83015261232c81846122dc565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61236e82612345565b9050919050565b61237e81612364565b8114612388575f80fd5b50565b5f8135905061239981612375565b92915050565b5f819050919050565b6123b18161239f565b81146123bb575f80fd5b50565b5f813590506123cc816123a8565b92915050565b5f80604083850312156123e8576123e761233d565b5b5f6123f58582860161238b565b9250506020612406858286016123be565b9150509250929050565b5f8115159050919050565b61242481612410565b82525050565b5f60208201905061243d5f83018461241b565b92915050565b5f602082840312156124585761245761233d565b5b5f6124658482850161238b565b91505092915050565b5f819050919050565b5f61249161248c61248784612345565b61246e565b612345565b9050919050565b5f6124a282612477565b9050919050565b5f6124b382612498565b9050919050565b6124c3816124a9565b82525050565b5f6020820190506124dc5f8301846124ba565b92915050565b6124eb8161239f565b82525050565b5f6020820190506125045f8301846124e2565b92915050565b5f6020828403121561251f5761251e61233d565b5b5f61252c848285016123be565b91505092915050565b5f805f6060848603121561254c5761254b61233d565b5b5f6125598682870161238b565b935050602061256a8682870161238b565b925050604061257b868287016123be565b9150509250925092565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6125bf826122cc565b810181811067ffffffffffffffff821117156125de576125dd612589565b5b80604052505050565b5f6125f0612334565b90506125fc82826125b6565b919050565b5f67ffffffffffffffff82111561261b5761261a612589565b5b602082029050602081019050919050565b5f80fd5b5f61264261263d84612601565b6125e7565b905080838252602082019050602084028301858111156126655761266461262c565b5b835b8181101561268e578061267a888261238b565b845260208401935050602081019050612667565b5050509392505050565b5f82601f8301126126ac576126ab612585565b5b81356126bc848260208601612630565b91505092915050565b5f602082840312156126da576126d961233d565b5b5f82013567ffffffffffffffff8111156126f7576126f6612341565b5b61270384828501612698565b91505092915050565b5f60ff82169050919050565b6127218161270c565b82525050565b5f60208201905061273a5f830184612718565b92915050565b61274981612410565b8114612753575f80fd5b50565b5f8135905061276481612740565b92915050565b5f6020828403121561277f5761277e61233d565b5b5f61278c84828501612756565b91505092915050565b5f80604083850312156127ab576127aa61233d565b5b5f6127b88582860161238b565b92505060206127c985828601612756565b9150509250929050565b6127dc81612364565b82525050565b5f6020820190506127f55f8301846127d3565b92915050565b5f80604083850312156128115761281061233d565b5b5f61281e8582860161238b565b925050602061282f8582860161238b565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061287d57607f821691505b6020821081036128905761288f612839565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6128ca602083612294565b91506128d582612896565b602082019050919050565b5f6020820190508181035f8301526128f7816128be565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f612958602883612294565b9150612963826128fe565b604082019050919050565b5f6020820190508181035f8301526129858161294c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6129f08261270c565b915060ff8203612a0357612a026129b9565b5b600182019050919050565b5f612a188261239f565b9150612a238361239f565b9250828201905080821115612a3b57612a3a6129b9565b5b92915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f612a9b603983612294565b9150612aa682612a41565b604082019050919050565b5f6020820190508181035f830152612ac881612a8f565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f612b29602583612294565b9150612b3482612acf565b604082019050919050565b5f6020820190508181035f830152612b5681612b1d565b9050919050565b5f81519050612b6b81612375565b92915050565b5f60208284031215612b8657612b8561233d565b5b5f612b9384828501612b5d565b91505092915050565b5f604082019050612baf5f8301856127d3565b612bbc60208301846127d3565b9392505050565b5f819050919050565b5f612be6612be1612bdc84612bc3565b61246e565b61239f565b9050919050565b612bf681612bcc565b82525050565b5f60c082019050612c0f5f8301896127d3565b612c1c60208301886124e2565b612c296040830187612bed565b612c366060830186612bed565b612c4360808301856127d3565b612c5060a08301846124e2565b979650505050505050565b5f81519050612c69816123a8565b92915050565b5f805f60608486031215612c8657612c8561233d565b5b5f612c9386828701612c5b565b9350506020612ca486828701612c5b565b9250506040612cb586828701612c5b565b9150509250925092565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612d19602683612294565b9150612d2482612cbf565b604082019050919050565b5f6020820190508181035f830152612d4681612d0d565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612da7602483612294565b9150612db282612d4d565b604082019050919050565b5f6020820190508181035f830152612dd481612d9b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612e35602283612294565b9150612e4082612ddb565b604082019050919050565b5f6020820190508181035f830152612e6281612e29565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612ec3602583612294565b9150612ece82612e69565b604082019050919050565b5f6020820190508181035f830152612ef081612eb7565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612f51602383612294565b9150612f5c82612ef7565b604082019050919050565b5f6020820190508181035f830152612f7e81612f45565b9050919050565b7f426c61636b6c69737465640000000000000000000000000000000000000000005f82015250565b5f612fb9600b83612294565b9150612fc482612f85565b602082019050919050565b5f6020820190508181035f830152612fe681612fad565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f613047603583612294565b915061305282612fed565b604082019050919050565b5f6020820190508181035f8301526130748161303b565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f6130af601383612294565b91506130ba8261307b565b602082019050919050565b5f6020820190508181035f8301526130dc816130a3565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f61313d603683612294565b9150613148826130e3565b604082019050919050565b5f6020820190508181035f83015261316a81613131565b9050919050565b5f61317b8261239f565b91506131868361239f565b925082820390508181111561319e5761319d6129b9565b5b92915050565b5f6131ae8261239f565b91506131b98361239f565b92508282026131c78161239f565b915082820484148315176131de576131dd6129b9565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61321c8261239f565b91506132278361239f565b925082613237576132366131e5565b5b828204905092915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f61329c602683612294565b91506132a782613242565b604082019050919050565b5f6020820190508181035f8301526132c981613290565b905091905056fea264697066735822122067d0703619d324232a98f0db26979278fe49cb01736dd0cc6f964146295e916064736f6c63430008180033

Deployed Bytecode

0x6080604052600436106101b6575f3560e01c80637571336a116100eb578063b24f32aa11610089578063c8c8ebe411610063578063c8c8ebe4146105fa578063dd62ed3e14610624578063f2fde38b14610660578063f8b45b0514610688576101b6565b8063b24f32aa1461058c578063b62496f5146105b4578063bc37e1a3146105f0576101b6565b806395d89b41116100c557806395d89b41146104c25780639a7a23d6146104ec578063a457c2d714610514578063a9059cbb14610550576101b6565b80637571336a146104465780638da5cb5b1461046e57806390f259c514610498576101b6565b80632e0934271161015857806370a082311161013257806370a08231146103a2578063715018a6146103de578063728c97ba146103f457806374326f531461041e576101b6565b80632e09342714610314578063313ce5671461033c5780633950935114610366576101b6565b80631694505e116101945780631694505e1461025c57806318160ddd146102865780631c499ab0146102b057806323b872dd146102d8576101b6565b806306fdde03146101ba578063095ea7b3146101e457806310d5de5314610220575b5f80fd5b3480156101c5575f80fd5b506101ce6106b2565b6040516101db9190612314565b60405180910390f35b3480156101ef575f80fd5b5061020a600480360381019061020591906123d2565b610742565b604051610217919061242a565b60405180910390f35b34801561022b575f80fd5b5061024660048036038101906102419190612443565b61075f565b604051610253919061242a565b60405180910390f35b348015610267575f80fd5b5061027061077c565b60405161027d91906124c9565b60405180910390f35b348015610291575f80fd5b5061029a6107a1565b6040516102a791906124f1565b60405180910390f35b3480156102bb575f80fd5b506102d660048036038101906102d1919061250a565b6107aa565b005b3480156102e3575f80fd5b506102fe60048036038101906102f99190612535565b610830565b60405161030b919061242a565b60405180910390f35b34801561031f575f80fd5b5061033a600480360381019061033591906126c5565b610922565b005b348015610347575f80fd5b50610350610a35565b60405161035d9190612727565b60405180910390f35b348015610371575f80fd5b5061038c600480360381019061038791906123d2565b610a3d565b604051610399919061242a565b60405180910390f35b3480156103ad575f80fd5b506103c860048036038101906103c39190612443565b610ae4565b6040516103d591906124f1565b60405180910390f35b3480156103e9575f80fd5b506103f2610b29565b005b3480156103ff575f80fd5b50610408610bb0565b604051610415919061242a565b60405180910390f35b348015610429575f80fd5b50610444600480360381019061043f919061276a565b610bc3565b005b348015610451575f80fd5b5061046c60048036038101906104679190612795565b610c5c565b005b348015610479575f80fd5b50610482610d30565b60405161048f91906127e2565b60405180910390f35b3480156104a3575f80fd5b506104ac610d58565b6040516104b991906124f1565b60405180910390f35b3480156104cd575f80fd5b506104d6610d5e565b6040516104e39190612314565b60405180910390f35b3480156104f7575f80fd5b50610512600480360381019061050d9190612795565b610dee565b005b34801561051f575f80fd5b5061053a600480360381019061053591906123d2565b610f07565b604051610547919061242a565b60405180910390f35b34801561055b575f80fd5b50610576600480360381019061057191906123d2565b610fed565b604051610583919061242a565b60405180910390f35b348015610597575f80fd5b506105b260048036038101906105ad91906126c5565b61100a565b005b3480156105bf575f80fd5b506105da60048036038101906105d59190612443565b61111c565b6040516105e7919061242a565b60405180910390f35b6105f8611139565b005b348015610605575f80fd5b5061060e611535565b60405161061b91906124f1565b60405180910390f35b34801561062f575f80fd5b5061064a600480360381019061064591906127fb565b61153b565b60405161065791906124f1565b60405180910390f35b34801561066b575f80fd5b5061068660048036038101906106819190612443565b6115bd565b005b348015610693575f80fd5b5061069c6116b3565b6040516106a991906124f1565b60405180910390f35b6060600380546106c190612866565b80601f01602080910402602001604051908101604052809291908181526020018280546106ed90612866565b80156107385780601f1061070f57610100808354040283529160200191610738565b820191905f5260205f20905b81548152906001019060200180831161071b57829003601f168201915b5050505050905090565b5f61075561074e6116b9565b84846116c0565b6001905092915050565b600b602052805f5260405f205f915054906101000a900460ff1681565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600254905090565b6107b26116b9565b73ffffffffffffffffffffffffffffffffffffffff166107d0610d30565b73ffffffffffffffffffffffffffffffffffffffff1614610826576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081d906128e0565b60405180910390fd5b80600a8190555050565b5f61083c848484611883565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6108836116b9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610902576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f99061296e565b60405180910390fd5b6109168561090e6116b9565b8584036116c0565b60019150509392505050565b61092a6116b9565b73ffffffffffffffffffffffffffffffffffffffff16610948610d30565b73ffffffffffffffffffffffffffffffffffffffff161461099e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610995906128e0565b60405180910390fd5b5f5b81518160ff161015610a3157600160115f848460ff16815181106109c7576109c661298c565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080610a29906129e6565b9150506109a0565b5050565b5f6012905090565b5f610ada610a496116b9565b848460015f610a566116b9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610ad59190612a0e565b6116c0565b6001905092915050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610b316116b9565b73ffffffffffffffffffffffffffffffffffffffff16610b4f610d30565b73ffffffffffffffffffffffffffffffffffffffff1614610ba5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9c906128e0565b60405180910390fd5b610bae5f611ef0565b565b601060149054906101000a900460ff1681565b610bcb6116b9565b73ffffffffffffffffffffffffffffffffffffffff16610be9610d30565b73ffffffffffffffffffffffffffffffffffffffff1614610c3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c36906128e0565b60405180910390fd5b80601060146101000a81548160ff02191690831515021790555050565b610c646116b9565b73ffffffffffffffffffffffffffffffffffffffff16610c82610d30565b73ffffffffffffffffffffffffffffffffffffffff1614610cd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ccf906128e0565b60405180910390fd5b80600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600d5481565b606060048054610d6d90612866565b80601f0160208091040260200160405190810160405280929190818152602001828054610d9990612866565b8015610de45780601f10610dbb57610100808354040283529160200191610de4565b820191905f5260205f20905b815481529060010190602001808311610dc757829003601f168201915b5050505050905090565b610df66116b9565b73ffffffffffffffffffffffffffffffffffffffff16610e14610d30565b73ffffffffffffffffffffffffffffffffffffffff1614610e6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e61906128e0565b60405180910390fd5b600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ef9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef090612ab1565b60405180910390fd5b610f038282611fb3565b5050565b5f8060015f610f146116b9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610fce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc590612b3f565b60405180910390fd5b610fe2610fd96116b9565b858584036116c0565b600191505092915050565b5f611000610ff96116b9565b8484611883565b6001905092915050565b6110126116b9565b73ffffffffffffffffffffffffffffffffffffffff16611030610d30565b73ffffffffffffffffffffffffffffffffffffffff1614611086576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107d906128e0565b60405180910390fd5b5f5b81518160ff161015611118575f60115f848460ff16815181106110ae576110ad61298c565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080611110906129e6565b915050611088565b5050565b600c602052805f5260405f205f915054906101000a900460ff1681565b6111416116b9565b73ffffffffffffffffffffffffffffffffffffffff1661115f610d30565b73ffffffffffffffffffffffffffffffffffffffff16146111b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ac906128e0565b60405180910390fd5b43600d819055506111e8600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001610c5c565b61123430600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6116c0565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561129e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112c29190612b71565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611348573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061136c9190612b71565b6040518363ffffffff1660e01b8152600401611389929190612b9c565b6020604051808303815f875af11580156113a5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113c99190612b71565b600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611434600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001610c5c565b611460600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001611fb3565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71934306114a830610ae4565b5f806114b2610d30565b426040518863ffffffff1660e01b81526004016114d496959493929190612bfc565b60606040518083038185885af11580156114f0573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906115159190612c6f565b5050506001601060146101000a81548160ff021916908315150217905550565b60095481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6115c56116b9565b73ffffffffffffffffffffffffffffffffffffffff166115e3610d30565b73ffffffffffffffffffffffffffffffffffffffff1614611639576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611630906128e0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036116a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169e90612d2f565b60405180910390fd5b6116b081611ef0565b50565b600a5481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361172e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172590612dbd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361179c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179390612e4b565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161187691906124f1565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e890612ed9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361195f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195690612f67565b60405180910390fd5b60115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156119fd575060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611a3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3390612fcf565b60405180910390fd5b5f8103611a5357611a4e83835f61200b565b611eeb565b601060149054906101000a900460ff1615611e3057611a70610d30565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611ade5750611aae610d30565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611b1657505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611b50575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611e2f57600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611bf25750600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611c9957600954811115611c3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c339061305d565b60405180910390fd5b600a54611c4883610ae4565b82611c539190612a0e565b1115611c94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8b906130c5565b60405180910390fd5b611e2e565b600c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611d365750600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611d8557600954811115611d80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7790613153565b60405180910390fd5b611e2d565b600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611e2c57600a54611ddf83610ae4565b82611dea9190612a0e565b1115611e2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e22906130c5565b60405180910390fd5b5b5b5b5b5b5f8373ffffffffffffffffffffffffffffffffffffffff16600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611eba57600a600d5443611e959190613171565b1015611eb9576103e86103de83611eac91906131a4565b611eb69190613212565b90505b5b5f811115611ed057611ecf8461dead8361200b565b5b8082611edc9190613171565b9150611ee984848461200b565b505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612079576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207090612ed9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120de90612f67565b60405180910390fd5b6120f2838383612280565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612175576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216c906132b2565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546122039190612a0e565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161226791906124f1565b60405180910390a361227a848484612285565b50505050565b505050565b505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156122c15780820151818401526020810190506122a6565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6122e68261228a565b6122f08185612294565b93506123008185602086016122a4565b612309816122cc565b840191505092915050565b5f6020820190508181035f83015261232c81846122dc565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61236e82612345565b9050919050565b61237e81612364565b8114612388575f80fd5b50565b5f8135905061239981612375565b92915050565b5f819050919050565b6123b18161239f565b81146123bb575f80fd5b50565b5f813590506123cc816123a8565b92915050565b5f80604083850312156123e8576123e761233d565b5b5f6123f58582860161238b565b9250506020612406858286016123be565b9150509250929050565b5f8115159050919050565b61242481612410565b82525050565b5f60208201905061243d5f83018461241b565b92915050565b5f602082840312156124585761245761233d565b5b5f6124658482850161238b565b91505092915050565b5f819050919050565b5f61249161248c61248784612345565b61246e565b612345565b9050919050565b5f6124a282612477565b9050919050565b5f6124b382612498565b9050919050565b6124c3816124a9565b82525050565b5f6020820190506124dc5f8301846124ba565b92915050565b6124eb8161239f565b82525050565b5f6020820190506125045f8301846124e2565b92915050565b5f6020828403121561251f5761251e61233d565b5b5f61252c848285016123be565b91505092915050565b5f805f6060848603121561254c5761254b61233d565b5b5f6125598682870161238b565b935050602061256a8682870161238b565b925050604061257b868287016123be565b9150509250925092565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6125bf826122cc565b810181811067ffffffffffffffff821117156125de576125dd612589565b5b80604052505050565b5f6125f0612334565b90506125fc82826125b6565b919050565b5f67ffffffffffffffff82111561261b5761261a612589565b5b602082029050602081019050919050565b5f80fd5b5f61264261263d84612601565b6125e7565b905080838252602082019050602084028301858111156126655761266461262c565b5b835b8181101561268e578061267a888261238b565b845260208401935050602081019050612667565b5050509392505050565b5f82601f8301126126ac576126ab612585565b5b81356126bc848260208601612630565b91505092915050565b5f602082840312156126da576126d961233d565b5b5f82013567ffffffffffffffff8111156126f7576126f6612341565b5b61270384828501612698565b91505092915050565b5f60ff82169050919050565b6127218161270c565b82525050565b5f60208201905061273a5f830184612718565b92915050565b61274981612410565b8114612753575f80fd5b50565b5f8135905061276481612740565b92915050565b5f6020828403121561277f5761277e61233d565b5b5f61278c84828501612756565b91505092915050565b5f80604083850312156127ab576127aa61233d565b5b5f6127b88582860161238b565b92505060206127c985828601612756565b9150509250929050565b6127dc81612364565b82525050565b5f6020820190506127f55f8301846127d3565b92915050565b5f80604083850312156128115761281061233d565b5b5f61281e8582860161238b565b925050602061282f8582860161238b565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061287d57607f821691505b6020821081036128905761288f612839565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6128ca602083612294565b91506128d582612896565b602082019050919050565b5f6020820190508181035f8301526128f7816128be565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f612958602883612294565b9150612963826128fe565b604082019050919050565b5f6020820190508181035f8301526129858161294c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6129f08261270c565b915060ff8203612a0357612a026129b9565b5b600182019050919050565b5f612a188261239f565b9150612a238361239f565b9250828201905080821115612a3b57612a3a6129b9565b5b92915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f612a9b603983612294565b9150612aa682612a41565b604082019050919050565b5f6020820190508181035f830152612ac881612a8f565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f612b29602583612294565b9150612b3482612acf565b604082019050919050565b5f6020820190508181035f830152612b5681612b1d565b9050919050565b5f81519050612b6b81612375565b92915050565b5f60208284031215612b8657612b8561233d565b5b5f612b9384828501612b5d565b91505092915050565b5f604082019050612baf5f8301856127d3565b612bbc60208301846127d3565b9392505050565b5f819050919050565b5f612be6612be1612bdc84612bc3565b61246e565b61239f565b9050919050565b612bf681612bcc565b82525050565b5f60c082019050612c0f5f8301896127d3565b612c1c60208301886124e2565b612c296040830187612bed565b612c366060830186612bed565b612c4360808301856127d3565b612c5060a08301846124e2565b979650505050505050565b5f81519050612c69816123a8565b92915050565b5f805f60608486031215612c8657612c8561233d565b5b5f612c9386828701612c5b565b9350506020612ca486828701612c5b565b9250506040612cb586828701612c5b565b9150509250925092565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612d19602683612294565b9150612d2482612cbf565b604082019050919050565b5f6020820190508181035f830152612d4681612d0d565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612da7602483612294565b9150612db282612d4d565b604082019050919050565b5f6020820190508181035f830152612dd481612d9b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612e35602283612294565b9150612e4082612ddb565b604082019050919050565b5f6020820190508181035f830152612e6281612e29565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612ec3602583612294565b9150612ece82612e69565b604082019050919050565b5f6020820190508181035f830152612ef081612eb7565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612f51602383612294565b9150612f5c82612ef7565b604082019050919050565b5f6020820190508181035f830152612f7e81612f45565b9050919050565b7f426c61636b6c69737465640000000000000000000000000000000000000000005f82015250565b5f612fb9600b83612294565b9150612fc482612f85565b602082019050919050565b5f6020820190508181035f830152612fe681612fad565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f613047603583612294565b915061305282612fed565b604082019050919050565b5f6020820190508181035f8301526130748161303b565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f6130af601383612294565b91506130ba8261307b565b602082019050919050565b5f6020820190508181035f8301526130dc816130a3565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f61313d603683612294565b9150613148826130e3565b604082019050919050565b5f6020820190508181035f83015261316a81613131565b9050919050565b5f61317b8261239f565b91506131868361239f565b925082820390508181111561319e5761319d6129b9565b5b92915050565b5f6131ae8261239f565b91506131b98361239f565b92508282026131c78161239f565b915082820484148315176131de576131dd6129b9565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61321c8261239f565b91506132278361239f565b925082613237576132366131e5565b5b828204905092915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f61329c602683612294565b91506132a782613242565b604082019050919050565b5f6020820190508181035f8301526132c981613290565b905091905056fea264697066735822122067d0703619d324232a98f0db26979278fe49cb01736dd0cc6f964146295e916064736f6c63430008180033

Deployed Bytecode Sourcemap

15538:5779:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4678:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6280:194;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15830:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15997:106;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5167:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17804:93;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6482:529;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18303:170;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5009:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7019:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5338:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1424:103;;;;;;;;;;;;;:::i;:::-;;16236:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17905:82;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18658:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;773:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15966:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4897:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17993:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7317:475;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5694:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18479:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15900:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16785:878;;;:::i;:::-;;15700:63;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5957:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1682:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15771:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4678:100;4732:13;4765:5;4758:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4678:100;:::o;6280:194::-;6388:4;6405:39;6414:12;:10;:12::i;:::-;6428:7;6437:6;6405:8;:39::i;:::-;6462:4;6455:11;;6280:194;;;;:::o;15830:63::-;;;;;;;;;;;;;;;;;;;;;;:::o;15997:106::-;;;;;;;;;;;;;:::o;5167:108::-;5228:7;5255:12;;5248:19;;5167:108;:::o;17804:93::-;1004:12;:10;:12::i;:::-;993:23;;:7;:5;:7::i;:::-;:23;;;985:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17883:6:::1;17871:9;:18;;;;17804:93:::0;:::o;6482:529::-;6622:4;6639:36;6649:6;6657:9;6668:6;6639:9;:36::i;:::-;6688:24;6715:11;:19;6727:6;6715:19;;;;;;;;;;;;;;;:33;6735:12;:10;:12::i;:::-;6715:33;;;;;;;;;;;;;;;;6688:60;;6801:6;6781:16;:26;;6759:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;6911:57;6920:6;6928:12;:10;:12::i;:::-;6961:6;6942:16;:25;6911:8;:57::i;:::-;6999:4;6992:11;;;6482:529;;;;;:::o;18303:170::-;1004:12;:10;:12::i;:::-;993:23;;:7;:5;:7::i;:::-;:23;;;985:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18381:7:::1;18377:89;18393:8;:15;18391:1;:17;;;18377:89;;;18450:4;18424:10;:23;18435:8;18444:1;18435:11;;;;;;;;;;:::i;:::-;;;;;;;;18424:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;18409:3;;;;;:::i;:::-;;;;18377:89;;;;18303:170:::0;:::o;5009:93::-;5067:5;5092:2;5085:9;;5009:93;:::o;7019:290::-;7132:4;7149:130;7172:12;:10;:12::i;:::-;7199:7;7258:10;7221:11;:25;7233:12;:10;:12::i;:::-;7221:25;;;;;;;;;;;;;;;:34;7247:7;7221:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;7149:8;:130::i;:::-;7297:4;7290:11;;7019:290;;;;:::o;5338:143::-;5428:7;5455:9;:18;5465:7;5455:18;;;;;;;;;;;;;;;;5448:25;;5338:143;;;:::o;1424:103::-;1004:12;:10;:12::i;:::-;993:23;;:7;:5;:7::i;:::-;:23;;;985:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1489:30:::1;1516:1;1489:18;:30::i;:::-;1424:103::o:0;16236:23::-;;;;;;;;;;;;;:::o;17905:82::-;1004:12;:10;:12::i;:::-;993:23;;:7;:5;:7::i;:::-;:23;;;985:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17974:5:::1;17968:3;;:11;;;;;;;;;;;;;;;;;;17905:82:::0;:::o;18658:201::-;1004:12;:10;:12::i;:::-;993:23;;:7;:5;:7::i;:::-;:23;;;985:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18841:10:::1;18789:31;:49;18821:16;18789:49;;;;;;;;;;;;;;;;:62;;;;;;;;;;;;;;;;;;18658:201:::0;;:::o;773:87::-;819:7;846:6;;;;;;;;;;;839:13;;773:87;:::o;15966:22::-;;;;:::o;4897:104::-;4953:13;4986:7;4979:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4897:104;:::o;17993:304::-;1004:12;:10;:12::i;:::-;993:23;;:7;:5;:7::i;:::-;:23;;;985:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18139:13:::1;;;;;;;;;;;18131:21;;:4;:21;;::::0;18109:128:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;18248:41;18277:4;18283:5;18248:28;:41::i;:::-;17993:304:::0;;:::o;7317:475::-;7435:4;7452:24;7479:11;:25;7491:12;:10;:12::i;:::-;7479:25;;;;;;;;;;;;;;;:34;7505:7;7479:34;;;;;;;;;;;;;;;;7452:61;;7566:15;7546:16;:35;;7524:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;7682:67;7691:12;:10;:12::i;:::-;7705:7;7733:15;7714:16;:34;7682:8;:67::i;:::-;7780:4;7773:11;;;7317:475;;;;:::o;5694:200::-;5805:4;5822:42;5832:12;:10;:12::i;:::-;5846:9;5857:6;5822:9;:42::i;:::-;5882:4;5875:11;;5694:200;;;;:::o;18479:173::-;1004:12;:10;:12::i;:::-;993:23;;:7;:5;:7::i;:::-;:23;;;985:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18559:7:::1;18555:90;18571:8;:15;18569:1;:17;;;18555:90;;;18628:5;18602:10;:23;18613:8;18622:1;18613:11;;;;;;;;;;:::i;:::-;;;;;;;;18602:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;18587:3;;;;;:::i;:::-;;;;18555:90;;;;18479:173:::0;:::o;15900:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;16785:878::-;1004:12;:10;:12::i;:::-;993:23;;:7;:5;:7::i;:::-;:23;;;985:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16852:12:::1;16842:7;:22;;;;16875:57;16909:15;;;;;;;;;;;16927:4;16875:25;:57::i;:::-;16943:68;16960:4;16975:15;;;;;;;;;;;16993:17;16943:8;:68::i;:::-;17058:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17040:69;;;17118:4;17125:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17040:108;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17024:13;;:124;;;;;;;;;;;;;;;;;;17161:55;17195:13;;;;;;;;;;;17211:4;17161:25;:55::i;:::-;17229:58;17266:13;;;;;;;;;;;17282:4;17229:28;:58::i;:::-;17300:15;;;;;;;;;;;:31;;;17339:9;17372:4;17408:24;17426:4;17408:9;:24::i;:::-;17467:1;17510::::0;17553:7:::1;:5;:7::i;:::-;17610:15;17300:336;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;17651:4;17647:3;;:8;;;;;;;;;;;;;;;;;;16785:878::o:0;15700:63::-;;;;:::o;5957:176::-;6071:7;6098:11;:18;6110:5;6098:18;;;;;;;;;;;;;;;:27;6117:7;6098:27;;;;;;;;;;;;;;;;6091:34;;5957:176;;;;:::o;1682:238::-;1004:12;:10;:12::i;:::-;993:23;;:7;:5;:7::i;:::-;:23;;;985:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1805:1:::1;1785:22;;:8;:22;;::::0;1763:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1884:28;1903:8;1884:18;:28::i;:::-;1682:238:::0;:::o;15771:52::-;;;;:::o;94:98::-;147:7;174:10;167:17;;94:98;:::o;9584:380::-;9737:1;9720:19;;:5;:19;;;9712:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9818:1;9799:21;;:7;:21;;;9791:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9902:6;9872:11;:18;9884:5;9872:18;;;;;;;;;;;;;;;:27;9891:7;9872:27;;;;;;;;;;;;;;;:36;;;;9940:7;9924:32;;9933:5;9924:32;;;9949:6;9924:32;;;;;;:::i;:::-;;;;;;;;9584:380;;;:::o;18869:2439::-;19018:1;19002:18;;:4;:18;;;18994:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19095:1;19081:16;;:2;:16;;;19073:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;19157:10;:14;19168:2;19157:14;;;;;;;;;;;;;;;;;;;;;;;;;19156:15;:36;;;;;19176:10;:16;19187:4;19176:16;;;;;;;;;;;;;;;;;;;;;;;;;19175:17;19156:36;19148:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;19235:1;19225:6;:11;19221:93;;19253:28;19269:4;19275:2;19279:1;19253:15;:28::i;:::-;19296:7;;19221:93;19328:3;;;;;;;;;;;19324:1591;;;19386:7;:5;:7::i;:::-;19378:15;;:4;:15;;;;:53;;;;;19424:7;:5;:7::i;:::-;19418:13;;:2;:13;;;;19378:53;:94;;;;;19470:1;19456:16;;:2;:16;;;;19378:94;:140;;;;;19511:6;19497:21;;:2;:21;;;;19378:140;19352:1548;;;19628:25;:31;19654:4;19628:31;;;;;;;;;;;;;;;;;;;;;;;;;:96;;;;;19689:31;:35;19721:2;19689:35;;;;;;;;;;;;;;;;;;;;;;;;;19688:36;19628:96;19598:1283;;;19823:20;;19813:6;:30;;19775:181;;;;;;;;;;;;:::i;:::-;;;;;;;;;20047:9;;20030:13;20040:2;20030:9;:13::i;:::-;20021:6;:22;;;;:::i;:::-;:35;;19983:152;;;;;;;;;;;;:::i;:::-;;;;;;;;;19598:1283;;;20249:25;:29;20275:2;20249:29;;;;;;;;;;;;;;;;;;;;;;;;;:96;;;;;20308:31;:37;20340:4;20308:37;;;;;;;;;;;;;;;;;;;;;;;;;20307:38;20249:96;20219:662;;;20444:20;;20434:6;:30;;20396:182;;;;;;;;;;;;:::i;:::-;;;;;;;;;20219:662;;;20639:31;:35;20671:2;20639:35;;;;;;;;;;;;;;;;;;;;;;;;;20634:247;;20767:9;;20750:13;20760:2;20750:9;:13::i;:::-;20741:6;:22;;;;:::i;:::-;:35;;20703:152;;;;;;;;;;;;:::i;:::-;;;;;;;;;20634:247;20219:662;19598:1283;19352:1548;19324:1591;20925:12;20973:4;20956:21;;:13;;;;;;;;;;;:21;;;20952:178;;21052:2;21042:7;;21027:12;:22;;;;:::i;:::-;:27;21023:95;;;21097:4;21091:3;21081:6;:14;;;;:::i;:::-;:21;;;;:::i;:::-;21074:28;;21023:95;20952:178;21151:1;21144:4;:8;21140:90;;;21174:44;21190:4;21204:6;21213:4;21174:15;:44::i;:::-;21140:90;21250:4;21240:14;;;;;:::i;:::-;;;21265:33;21281:4;21287:2;21291:6;21265:15;:33::i;:::-;18983:2325;18869:2439;;;;:::o;2080:191::-;2154:16;2173:6;;;;;;;;;;;2154:25;;2199:8;2190:6;;:17;;;;;;;;;;;;;;;;;;2254:8;2223:40;;2244:8;2223:40;;;;;;;;;;;;2143:128;2080:191;:::o;17668:130::-;17785:5;17751:25;:31;17777:4;17751:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;17668:130;;:::o;7800:770::-;7958:1;7940:20;;:6;:20;;;7932:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;8042:1;8021:23;;:9;:23;;;8013:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;8097:47;8118:6;8126:9;8137:6;8097:20;:47::i;:::-;8157:21;8181:9;:17;8191:6;8181:17;;;;;;;;;;;;;;;;8157:41;;8248:6;8231:13;:23;;8209:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;8392:6;8376:13;:22;8356:9;:17;8366:6;8356:17;;;;;;;;;;;;;;;:42;;;;8444:6;8420:9;:20;8430:9;8420:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;8485:9;8468:35;;8477:6;8468:35;;;8496:6;8468:35;;;;;;:::i;:::-;;;;;;;;8516:46;8536:6;8544:9;8555:6;8516:19;:46::i;:::-;7921:649;7800:770;;;:::o;9972:125::-;;;;:::o;10105:124::-;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:60::-;3809:3;3830:5;3823:12;;3781:60;;;:::o;3847:142::-;3897:9;3930:53;3948:34;3957:24;3975:5;3957:24;:::i;:::-;3948:34;:::i;:::-;3930:53;:::i;:::-;3917:66;;3847:142;;;:::o;3995:126::-;4045:9;4078:37;4109:5;4078:37;:::i;:::-;4065:50;;3995:126;;;:::o;4127:153::-;4204:9;4237:37;4268:5;4237:37;:::i;:::-;4224:50;;4127:153;;;:::o;4286:185::-;4400:64;4458:5;4400:64;:::i;:::-;4395:3;4388:77;4286:185;;:::o;4477:276::-;4597:4;4635:2;4624:9;4620:18;4612:26;;4648:98;4743:1;4732:9;4728:17;4719:6;4648:98;:::i;:::-;4477:276;;;;:::o;4759:118::-;4846:24;4864:5;4846:24;:::i;:::-;4841:3;4834:37;4759:118;;:::o;4883:222::-;4976:4;5014:2;5003:9;4999:18;4991:26;;5027:71;5095:1;5084:9;5080:17;5071:6;5027:71;:::i;:::-;4883:222;;;;:::o;5111:329::-;5170:6;5219:2;5207:9;5198:7;5194:23;5190:32;5187:119;;;5225:79;;:::i;:::-;5187:119;5345:1;5370:53;5415:7;5406:6;5395:9;5391:22;5370:53;:::i;:::-;5360:63;;5316:117;5111:329;;;;:::o;5446:619::-;5523:6;5531;5539;5588:2;5576:9;5567:7;5563:23;5559:32;5556:119;;;5594:79;;:::i;:::-;5556:119;5714:1;5739:53;5784:7;5775:6;5764:9;5760:22;5739:53;:::i;:::-;5729:63;;5685:117;5841:2;5867:53;5912:7;5903:6;5892:9;5888:22;5867:53;:::i;:::-;5857:63;;5812:118;5969:2;5995:53;6040:7;6031:6;6020:9;6016:22;5995:53;:::i;:::-;5985:63;;5940:118;5446:619;;;;;:::o;6071:117::-;6180:1;6177;6170:12;6194:180;6242:77;6239:1;6232:88;6339:4;6336:1;6329:15;6363:4;6360:1;6353:15;6380:281;6463:27;6485:4;6463:27;:::i;:::-;6455:6;6451:40;6593:6;6581:10;6578:22;6557:18;6545:10;6542:34;6539:62;6536:88;;;6604:18;;:::i;:::-;6536:88;6644:10;6640:2;6633:22;6423:238;6380:281;;:::o;6667:129::-;6701:6;6728:20;;:::i;:::-;6718:30;;6757:33;6785:4;6777:6;6757:33;:::i;:::-;6667:129;;;:::o;6802:311::-;6879:4;6969:18;6961:6;6958:30;6955:56;;;6991:18;;:::i;:::-;6955:56;7041:4;7033:6;7029:17;7021:25;;7101:4;7095;7091:15;7083:23;;6802:311;;;:::o;7119:117::-;7228:1;7225;7218:12;7259:710;7355:5;7380:81;7396:64;7453:6;7396:64;:::i;:::-;7380:81;:::i;:::-;7371:90;;7481:5;7510:6;7503:5;7496:21;7544:4;7537:5;7533:16;7526:23;;7597:4;7589:6;7585:17;7577:6;7573:30;7626:3;7618:6;7615:15;7612:122;;;7645:79;;:::i;:::-;7612:122;7760:6;7743:220;7777:6;7772:3;7769:15;7743:220;;;7852:3;7881:37;7914:3;7902:10;7881:37;:::i;:::-;7876:3;7869:50;7948:4;7943:3;7939:14;7932:21;;7819:144;7803:4;7798:3;7794:14;7787:21;;7743:220;;;7747:21;7361:608;;7259:710;;;;;:::o;7992:370::-;8063:5;8112:3;8105:4;8097:6;8093:17;8089:27;8079:122;;8120:79;;:::i;:::-;8079:122;8237:6;8224:20;8262:94;8352:3;8344:6;8337:4;8329:6;8325:17;8262:94;:::i;:::-;8253:103;;8069:293;7992:370;;;;:::o;8368:539::-;8452:6;8501:2;8489:9;8480:7;8476:23;8472:32;8469:119;;;8507:79;;:::i;:::-;8469:119;8655:1;8644:9;8640:17;8627:31;8685:18;8677:6;8674:30;8671:117;;;8707:79;;:::i;:::-;8671:117;8812:78;8882:7;8873:6;8862:9;8858:22;8812:78;:::i;:::-;8802:88;;8598:302;8368:539;;;;:::o;8913:86::-;8948:7;8988:4;8981:5;8977:16;8966:27;;8913:86;;;:::o;9005:112::-;9088:22;9104:5;9088:22;:::i;:::-;9083:3;9076:35;9005:112;;:::o;9123:214::-;9212:4;9250:2;9239:9;9235:18;9227:26;;9263:67;9327:1;9316:9;9312:17;9303:6;9263:67;:::i;:::-;9123:214;;;;:::o;9343:116::-;9413:21;9428:5;9413:21;:::i;:::-;9406:5;9403:32;9393:60;;9449:1;9446;9439:12;9393:60;9343:116;:::o;9465:133::-;9508:5;9546:6;9533:20;9524:29;;9562:30;9586:5;9562:30;:::i;:::-;9465:133;;;;:::o;9604:323::-;9660:6;9709:2;9697:9;9688:7;9684:23;9680:32;9677:119;;;9715:79;;:::i;:::-;9677:119;9835:1;9860:50;9902:7;9893:6;9882:9;9878:22;9860:50;:::i;:::-;9850:60;;9806:114;9604:323;;;;:::o;9933:468::-;9998:6;10006;10055:2;10043:9;10034:7;10030:23;10026:32;10023:119;;;10061:79;;:::i;:::-;10023:119;10181:1;10206:53;10251:7;10242:6;10231:9;10227:22;10206:53;:::i;:::-;10196:63;;10152:117;10308:2;10334:50;10376:7;10367:6;10356:9;10352:22;10334:50;:::i;:::-;10324:60;;10279:115;9933:468;;;;;:::o;10407:118::-;10494:24;10512:5;10494:24;:::i;:::-;10489:3;10482:37;10407:118;;:::o;10531:222::-;10624:4;10662:2;10651:9;10647:18;10639:26;;10675:71;10743:1;10732:9;10728:17;10719:6;10675:71;:::i;:::-;10531:222;;;;:::o;10759:474::-;10827:6;10835;10884:2;10872:9;10863:7;10859:23;10855:32;10852:119;;;10890:79;;:::i;:::-;10852:119;11010:1;11035:53;11080:7;11071:6;11060:9;11056:22;11035:53;:::i;:::-;11025:63;;10981:117;11137:2;11163:53;11208:7;11199:6;11188:9;11184:22;11163:53;:::i;:::-;11153:63;;11108:118;10759:474;;;;;:::o;11239:180::-;11287:77;11284:1;11277:88;11384:4;11381:1;11374:15;11408:4;11405:1;11398:15;11425:320;11469:6;11506:1;11500:4;11496:12;11486:22;;11553:1;11547:4;11543:12;11574:18;11564:81;;11630:4;11622:6;11618:17;11608:27;;11564:81;11692:2;11684:6;11681:14;11661:18;11658:38;11655:84;;11711:18;;:::i;:::-;11655:84;11476:269;11425:320;;;:::o;11751:182::-;11891:34;11887:1;11879:6;11875:14;11868:58;11751:182;:::o;11939:366::-;12081:3;12102:67;12166:2;12161:3;12102:67;:::i;:::-;12095:74;;12178:93;12267:3;12178:93;:::i;:::-;12296:2;12291:3;12287:12;12280:19;;11939:366;;;:::o;12311:419::-;12477:4;12515:2;12504:9;12500:18;12492:26;;12564:9;12558:4;12554:20;12550:1;12539:9;12535:17;12528:47;12592:131;12718:4;12592:131;:::i;:::-;12584:139;;12311:419;;;:::o;12736:227::-;12876:34;12872:1;12864:6;12860:14;12853:58;12945:10;12940:2;12932:6;12928:15;12921:35;12736:227;:::o;12969:366::-;13111:3;13132:67;13196:2;13191:3;13132:67;:::i;:::-;13125:74;;13208:93;13297:3;13208:93;:::i;:::-;13326:2;13321:3;13317:12;13310:19;;12969:366;;;:::o;13341:419::-;13507:4;13545:2;13534:9;13530:18;13522:26;;13594:9;13588:4;13584:20;13580:1;13569:9;13565:17;13558:47;13622:131;13748:4;13622:131;:::i;:::-;13614:139;;13341:419;;;:::o;13766:180::-;13814:77;13811:1;13804:88;13911:4;13908:1;13901:15;13935:4;13932:1;13925:15;13952:180;14000:77;13997:1;13990:88;14097:4;14094:1;14087:15;14121:4;14118:1;14111:15;14138:167;14175:3;14198:22;14214:5;14198:22;:::i;:::-;14189:31;;14242:4;14235:5;14232:15;14229:41;;14250:18;;:::i;:::-;14229:41;14297:1;14290:5;14286:13;14279:20;;14138:167;;;:::o;14311:191::-;14351:3;14370:20;14388:1;14370:20;:::i;:::-;14365:25;;14404:20;14422:1;14404:20;:::i;:::-;14399:25;;14447:1;14444;14440:9;14433:16;;14468:3;14465:1;14462:10;14459:36;;;14475:18;;:::i;:::-;14459:36;14311:191;;;;:::o;14508:244::-;14648:34;14644:1;14636:6;14632:14;14625:58;14717:27;14712:2;14704:6;14700:15;14693:52;14508:244;:::o;14758:366::-;14900:3;14921:67;14985:2;14980:3;14921:67;:::i;:::-;14914:74;;14997:93;15086:3;14997:93;:::i;:::-;15115:2;15110:3;15106:12;15099:19;;14758:366;;;:::o;15130:419::-;15296:4;15334:2;15323:9;15319:18;15311:26;;15383:9;15377:4;15373:20;15369:1;15358:9;15354:17;15347:47;15411:131;15537:4;15411:131;:::i;:::-;15403:139;;15130:419;;;:::o;15555:224::-;15695:34;15691:1;15683:6;15679:14;15672:58;15764:7;15759:2;15751:6;15747:15;15740:32;15555:224;:::o;15785:366::-;15927:3;15948:67;16012:2;16007:3;15948:67;:::i;:::-;15941:74;;16024:93;16113:3;16024:93;:::i;:::-;16142:2;16137:3;16133:12;16126:19;;15785:366;;;:::o;16157:419::-;16323:4;16361:2;16350:9;16346:18;16338:26;;16410:9;16404:4;16400:20;16396:1;16385:9;16381:17;16374:47;16438:131;16564:4;16438:131;:::i;:::-;16430:139;;16157:419;;;:::o;16582:143::-;16639:5;16670:6;16664:13;16655:22;;16686:33;16713:5;16686:33;:::i;:::-;16582:143;;;;:::o;16731:351::-;16801:6;16850:2;16838:9;16829:7;16825:23;16821:32;16818:119;;;16856:79;;:::i;:::-;16818:119;16976:1;17001:64;17057:7;17048:6;17037:9;17033:22;17001:64;:::i;:::-;16991:74;;16947:128;16731:351;;;;:::o;17088:332::-;17209:4;17247:2;17236:9;17232:18;17224:26;;17260:71;17328:1;17317:9;17313:17;17304:6;17260:71;:::i;:::-;17341:72;17409:2;17398:9;17394:18;17385:6;17341:72;:::i;:::-;17088:332;;;;;:::o;17426:85::-;17471:7;17500:5;17489:16;;17426:85;;;:::o;17517:158::-;17575:9;17608:61;17626:42;17635:32;17661:5;17635:32;:::i;:::-;17626:42;:::i;:::-;17608:61;:::i;:::-;17595:74;;17517:158;;;:::o;17681:147::-;17776:45;17815:5;17776:45;:::i;:::-;17771:3;17764:58;17681:147;;:::o;17834:807::-;18083:4;18121:3;18110:9;18106:19;18098:27;;18135:71;18203:1;18192:9;18188:17;18179:6;18135:71;:::i;:::-;18216:72;18284:2;18273:9;18269:18;18260:6;18216:72;:::i;:::-;18298:80;18374:2;18363:9;18359:18;18350:6;18298:80;:::i;:::-;18388;18464:2;18453:9;18449:18;18440:6;18388:80;:::i;:::-;18478:73;18546:3;18535:9;18531:19;18522:6;18478:73;:::i;:::-;18561;18629:3;18618:9;18614:19;18605:6;18561:73;:::i;:::-;17834:807;;;;;;;;;:::o;18647:143::-;18704:5;18735:6;18729:13;18720:22;;18751:33;18778:5;18751:33;:::i;:::-;18647:143;;;;:::o;18796:663::-;18884:6;18892;18900;18949:2;18937:9;18928:7;18924:23;18920:32;18917:119;;;18955:79;;:::i;:::-;18917:119;19075:1;19100:64;19156:7;19147:6;19136:9;19132:22;19100:64;:::i;:::-;19090:74;;19046:128;19213:2;19239:64;19295:7;19286:6;19275:9;19271:22;19239:64;:::i;:::-;19229:74;;19184:129;19352:2;19378:64;19434:7;19425:6;19414:9;19410:22;19378:64;:::i;:::-;19368:74;;19323:129;18796:663;;;;;:::o;19465:225::-;19605:34;19601:1;19593:6;19589:14;19582:58;19674:8;19669:2;19661:6;19657:15;19650:33;19465:225;:::o;19696:366::-;19838:3;19859:67;19923:2;19918:3;19859:67;:::i;:::-;19852:74;;19935:93;20024:3;19935:93;:::i;:::-;20053:2;20048:3;20044:12;20037:19;;19696:366;;;:::o;20068:419::-;20234:4;20272:2;20261:9;20257:18;20249:26;;20321:9;20315:4;20311:20;20307:1;20296:9;20292:17;20285:47;20349:131;20475:4;20349:131;:::i;:::-;20341:139;;20068:419;;;:::o;20493:223::-;20633:34;20629:1;20621:6;20617:14;20610:58;20702:6;20697:2;20689:6;20685:15;20678:31;20493:223;:::o;20722:366::-;20864:3;20885:67;20949:2;20944:3;20885:67;:::i;:::-;20878:74;;20961:93;21050:3;20961:93;:::i;:::-;21079:2;21074:3;21070:12;21063:19;;20722:366;;;:::o;21094:419::-;21260:4;21298:2;21287:9;21283:18;21275:26;;21347:9;21341:4;21337:20;21333:1;21322:9;21318:17;21311:47;21375:131;21501:4;21375:131;:::i;:::-;21367:139;;21094:419;;;:::o;21519:221::-;21659:34;21655:1;21647:6;21643:14;21636:58;21728:4;21723:2;21715:6;21711:15;21704:29;21519:221;:::o;21746:366::-;21888:3;21909:67;21973:2;21968:3;21909:67;:::i;:::-;21902:74;;21985:93;22074:3;21985:93;:::i;:::-;22103:2;22098:3;22094:12;22087:19;;21746:366;;;:::o;22118:419::-;22284:4;22322:2;22311:9;22307:18;22299:26;;22371:9;22365:4;22361:20;22357:1;22346:9;22342:17;22335:47;22399:131;22525:4;22399:131;:::i;:::-;22391:139;;22118:419;;;:::o;22543:224::-;22683:34;22679:1;22671:6;22667:14;22660:58;22752:7;22747:2;22739:6;22735:15;22728:32;22543:224;:::o;22773:366::-;22915:3;22936:67;23000:2;22995:3;22936:67;:::i;:::-;22929:74;;23012:93;23101:3;23012:93;:::i;:::-;23130:2;23125:3;23121:12;23114:19;;22773:366;;;:::o;23145:419::-;23311:4;23349:2;23338:9;23334:18;23326:26;;23398:9;23392:4;23388:20;23384:1;23373:9;23369:17;23362:47;23426:131;23552:4;23426:131;:::i;:::-;23418:139;;23145:419;;;:::o;23570:222::-;23710:34;23706:1;23698:6;23694:14;23687:58;23779:5;23774:2;23766:6;23762:15;23755:30;23570:222;:::o;23798:366::-;23940:3;23961:67;24025:2;24020:3;23961:67;:::i;:::-;23954:74;;24037:93;24126:3;24037:93;:::i;:::-;24155:2;24150:3;24146:12;24139:19;;23798:366;;;:::o;24170:419::-;24336:4;24374:2;24363:9;24359:18;24351:26;;24423:9;24417:4;24413:20;24409:1;24398:9;24394:17;24387:47;24451:131;24577:4;24451:131;:::i;:::-;24443:139;;24170:419;;;:::o;24595:161::-;24735:13;24731:1;24723:6;24719:14;24712:37;24595:161;:::o;24762:366::-;24904:3;24925:67;24989:2;24984:3;24925:67;:::i;:::-;24918:74;;25001:93;25090:3;25001:93;:::i;:::-;25119:2;25114:3;25110:12;25103:19;;24762:366;;;:::o;25134:419::-;25300:4;25338:2;25327:9;25323:18;25315:26;;25387:9;25381:4;25377:20;25373:1;25362:9;25358:17;25351:47;25415:131;25541:4;25415:131;:::i;:::-;25407:139;;25134:419;;;:::o;25559:240::-;25699:34;25695:1;25687:6;25683:14;25676:58;25768:23;25763:2;25755:6;25751:15;25744:48;25559:240;:::o;25805:366::-;25947:3;25968:67;26032:2;26027:3;25968:67;:::i;:::-;25961:74;;26044:93;26133:3;26044:93;:::i;:::-;26162:2;26157:3;26153:12;26146:19;;25805:366;;;:::o;26177:419::-;26343:4;26381:2;26370:9;26366:18;26358:26;;26430:9;26424:4;26420:20;26416:1;26405:9;26401:17;26394:47;26458:131;26584:4;26458:131;:::i;:::-;26450:139;;26177:419;;;:::o;26602:169::-;26742:21;26738:1;26730:6;26726:14;26719:45;26602:169;:::o;26777:366::-;26919:3;26940:67;27004:2;26999:3;26940:67;:::i;:::-;26933:74;;27016:93;27105:3;27016:93;:::i;:::-;27134:2;27129:3;27125:12;27118:19;;26777:366;;;:::o;27149:419::-;27315:4;27353:2;27342:9;27338:18;27330:26;;27402:9;27396:4;27392:20;27388:1;27377:9;27373:17;27366:47;27430:131;27556:4;27430:131;:::i;:::-;27422:139;;27149:419;;;:::o;27574:241::-;27714:34;27710:1;27702:6;27698:14;27691:58;27783:24;27778:2;27770:6;27766:15;27759:49;27574:241;:::o;27821:366::-;27963:3;27984:67;28048:2;28043:3;27984:67;:::i;:::-;27977:74;;28060:93;28149:3;28060:93;:::i;:::-;28178:2;28173:3;28169:12;28162:19;;27821:366;;;:::o;28193:419::-;28359:4;28397:2;28386:9;28382:18;28374:26;;28446:9;28440:4;28436:20;28432:1;28421:9;28417:17;28410:47;28474:131;28600:4;28474:131;:::i;:::-;28466:139;;28193:419;;;:::o;28618:194::-;28658:4;28678:20;28696:1;28678:20;:::i;:::-;28673:25;;28712:20;28730:1;28712:20;:::i;:::-;28707:25;;28756:1;28753;28749:9;28741:17;;28780:1;28774:4;28771:11;28768:37;;;28785:18;;:::i;:::-;28768:37;28618:194;;;;:::o;28818:410::-;28858:7;28881:20;28899:1;28881:20;:::i;:::-;28876:25;;28915:20;28933:1;28915:20;:::i;:::-;28910:25;;28970:1;28967;28963:9;28992:30;29010:11;28992:30;:::i;:::-;28981:41;;29171:1;29162:7;29158:15;29155:1;29152:22;29132:1;29125:9;29105:83;29082:139;;29201:18;;:::i;:::-;29082:139;28866:362;28818:410;;;;:::o;29234:180::-;29282:77;29279:1;29272:88;29379:4;29376:1;29369:15;29403:4;29400:1;29393:15;29420:185;29460:1;29477:20;29495:1;29477:20;:::i;:::-;29472:25;;29511:20;29529:1;29511:20;:::i;:::-;29506:25;;29550:1;29540:35;;29555:18;;:::i;:::-;29540:35;29597:1;29594;29590:9;29585:14;;29420:185;;;;:::o;29611:225::-;29751:34;29747:1;29739:6;29735:14;29728:58;29820:8;29815:2;29807:6;29803:15;29796:33;29611:225;:::o;29842:366::-;29984:3;30005:67;30069:2;30064:3;30005:67;:::i;:::-;29998:74;;30081:93;30170:3;30081:93;:::i;:::-;30199:2;30194:3;30190:12;30183:19;;29842:366;;;:::o;30214:419::-;30380:4;30418:2;30407:9;30403:18;30395:26;;30467:9;30461:4;30457:20;30453:1;30442:9;30438:17;30431:47;30495:131;30621:4;30495:131;:::i;:::-;30487:139;;30214:419;;;:::o

Swarm Source

ipfs://67d0703619d324232a98f0db26979278fe49cb01736dd0cc6f964146295e9160
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.