ETH Price: $2,388.33 (+2.43%)

Token

FIRE (FIRE)
 

Overview

Max Total Supply

1,000,000 FIRE

Holders

41

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.268771973672958479 FIRE

Value
$0.00
0x130Dbe34D038e743461eBA759dcD6a46C34730FF
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:
FIRE

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-08-09
*/

/**

FIRE 🔥🔥🔥

BURN BABY BURN!

https://www.firetoken.tech
https://twitter.com/FireTokenERC20
https://t.me/firetokenportal

*/

// SPDX-License-Identifier: MIT

// Sources flattened with hardhat v2.17.0 https://hardhat.org


pragma solidity ^0.8.0;

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

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

pragma solidity ^0.8.0;

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _transferOwnership(_msgSender());
    }

    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }


    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}


pragma solidity ^0.8.0;

interface IERC20 {

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );

    function totalSupply() external view returns (uint256);

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

    function transfer(address to, 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 from,
        address to,
        uint256 amount
    ) external returns (bool);
}

pragma solidity ^0.8.0;

interface IERC20Metadata is IERC20 {
 
    function name() external view returns (string memory);

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

    function decimals() external view returns (uint8);
}

pragma solidity ^0.8.0;

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

    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

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

    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(
        address account
    ) public view virtual override returns (uint256) {
        return _balances[account];
    }

    function transfer(
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

    function allowance(
        address owner,
        address spender
    ) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(
        address spender,
        uint256 amount
    ) public virtual override returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, amount);
        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    function increaseAllowance(
        address spender,
        uint256 addedValue
    ) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, spender) + addedValue);
        return true;
    }

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

        return true;
    }

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

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(
            fromBalance >= amount,
            "ERC20: transfer amount exceeds balance"
        );
        unchecked {
            _balances[from] = fromBalance - amount;

            _balances[to] += amount;
        }

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, 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;
        unchecked {
            // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.
            _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;
            // Overflow not possible: amount <= accountBalance <= totalSupply.
            _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 _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(
                currentAllowance >= amount,
                "ERC20: insufficient allowance"
            );
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

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


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

pragma solidity ^0.8.9;

interface IUniswapV2Factory {
    function createPair(
        address tokenA,
        address tokenB
    ) external returns (address pair);
}

pragma solidity ^0.8.9;

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

    function factory() external pure returns (address);

    function WETH() external pure returns (address);
}

pragma solidity ^0.8.19;

contract FIRE is ERC20, Ownable {
    uint256 public _maxTxAmount = 20000 * 10 ** decimals();
    uint256 public _maxWalletSize = 20000 * 10 ** decimals();
    uint256 public _swapTokensAtAmount = 10000 * 10 ** decimals();
    uint256 public _amountToSwap = 10000 * 10 ** decimals();

    uint256 private immutable _maxFee = 30; //MAX FEES
    uint256 private _taxFeeOnBuy = 3;
    uint256 private _taxFeeOnSell = 3;

    mapping(address => bool) private _isExcludedFromFee;

    address payable private constant _feeAddress =
        payable(0xc984D052BD3377e7f45C875440a9C262a53A4B4e);

    IUniswapV2Router02 public constant uniswapV2Router =
        IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

    address public uniswapV2Pair;

    bool private inSwap = false;

    modifier lockTheSwap() {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() ERC20("FIRE", "FIRE") {
        _mint(msg.sender, 1000000 * 10 ** decimals());

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

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[address(uniswapV2Router)] = true;
        _isExcludedFromFee[_feeAddress] = true;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        if (from != owner() && to != owner()) {
            if (to != _feeAddress && from != _feeAddress) {
                require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");
            }

            if (
                to != uniswapV2Pair && to != _feeAddress && from != _feeAddress
            ) {
                require(
                    balanceOf(to) + amount <= _maxWalletSize,
                    "TOKEN: Balance exceeds wallet size!"
                );
            }
            uint256 contractTokenBalance = balanceOf(address(this));
            bool shouldSwap = contractTokenBalance >= _swapTokensAtAmount;

            if (contractTokenBalance >= _amountToSwap) {
                contractTokenBalance = _amountToSwap;
            }

            if (
                shouldSwap &&
                !inSwap &&
                from != uniswapV2Pair &&
                !_isExcludedFromFee[from] &&
                !_isExcludedFromFee[to]
            ) {
                swapTokensForEth(contractTokenBalance);

                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    _feeAddress.transfer(contractETHBalance);
                }
            }
        }

        //Transfer Tokens
        uint256 _taxFee = 0;
        if (from == uniswapV2Pair && to != address(uniswapV2Router)) {
            _taxFee = _taxFeeOnBuy;
        }

        if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
            _taxFee = _taxFeeOnSell;
        }

        if (
            (_isExcludedFromFee[from] || _isExcludedFromFee[to]) ||
            (from != uniswapV2Pair && to != uniswapV2Pair)
        ) {
            _taxFee = 0;
        }

        uint256 tTeam = (amount * _taxFee) / 100;
        uint256 tTransferAmount = amount - tTeam;
        if (tTeam > 0) {
            super._transfer(from, address(this), tTeam);
        }
        super._transfer(from, to, tTransferAmount);
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    // external onlyOwner
    function setFee(
        uint256 taxFeeOnBuy,
        uint256 taxFeeOnSell
    ) external onlyOwner {
        require(taxFeeOnBuy <= _maxFee, "Fee is too high");
        require(taxFeeOnSell <= _maxFee, "Fee is too high");

        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
    }

    function setLimits(
        uint256 maxTxAmount,
        uint256 maxWalletSize
    ) external onlyOwner {
        _maxTxAmount = maxTxAmount;
        _maxWalletSize = maxWalletSize;
    }

    function setSwapTokensAtAmount(
        uint256 swapTokensAtAmount
    ) external onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }

    function setAmountToSwap(uint256 amountToSwap) external onlyOwner {
        _amountToSwap = amountToSwap;
    }

    function excludeAccountsFromFees(
        address[] calldata accounts,
        bool excluded
    ) external onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
        }
    }

    function launchlimits()  external onlyOwner {
        _maxTxAmount = 10000 * 10 ** decimals();
	    _maxWalletSize = 10000 * 10 ** decimals();
	    _swapTokensAtAmount = 10000 * 10 ** decimals();
	    _amountToSwap = 9999 * 10 ** decimals();
	    _taxFeeOnBuy = 30;
	    _taxFeeOnSell = 30;
    }

    function launchlimits2()  external onlyOwner {
        _maxTxAmount = 20000 * 10 ** decimals();
	    _maxWalletSize = 20000 * 10 ** decimals();
	    _swapTokensAtAmount = 10000 * 10 ** decimals();
	    _amountToSwap = 9999 * 10 ** decimals();
	    _taxFeeOnBuy = 3;
	    _taxFeeOnSell = 30;
    }

    function launchlimits3()  external onlyOwner {
        _maxTxAmount = 50000 * 10 ** decimals();
	    _maxWalletSize = 50000 * 10 ** decimals();
	    _swapTokensAtAmount = 10000 * 10 ** decimals();
	    _amountToSwap = 9999 * 10 ** decimals();
	    _taxFeeOnBuy = 3;
	    _taxFeeOnSell = 15;
    }

        function launchlimits4()  external onlyOwner {
        _maxTxAmount = 1000000 * 10 ** decimals();
	    _maxWalletSize = 1000000 * 10 ** decimals();
	    _swapTokensAtAmount = 2000 * 10 ** decimals();
	    _amountToSwap = 2000 * 10 ** decimals();
	    _taxFeeOnBuy = 3;
	    _taxFeeOnSell = 3;
    }



    // Send the current ETH and token balance to the marketing address

    function cleanContract() external {
        uint256 contractETHBalance = address(this).balance;
        if (contractETHBalance > 0) {
            _feeAddress.transfer(contractETHBalance);
        }
        uint256 contractTokenBalance = balanceOf(address(this));
        if (contractTokenBalance > 0) {
            _transfer(address(this), _feeAddress, contractTokenBalance);
        }
    }

    receive() external payable {}
}

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":[],"name":"_amountToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cleanContract","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":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeAccountsFromFees","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":"launchlimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launchlimits2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launchlimits3","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launchlimits4","outputs":[],"stateMutability":"nonpayable","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":"uint256","name":"amountToSwap","type":"uint256"}],"name":"setAmountToSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"},{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setSwapTokensAtAmount","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":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","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":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a0604052620000146200055a60201b60201c565b600a6200002291906200096c565b614e20620000319190620009bd565b600655620000446200055a60201b60201c565b600a6200005291906200096c565b614e20620000619190620009bd565b600755620000746200055a60201b60201c565b600a6200008291906200096c565b612710620000919190620009bd565b600855620000a46200055a60201b60201c565b600a620000b291906200096c565b612710620000c19190620009bd565b600955601e6080908152506003600a556003600b556000600d60146101000a81548160ff021916908315150217905550348015620000fe57600080fd5b506040518060400160405280600481526020017f46495245000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f464952450000000000000000000000000000000000000000000000000000000081525081600390816200017c919062000c78565b5080600490816200018e919062000c78565b505050620001b1620001a56200056360201b60201c565b6200056b60201b60201c565b620001f033620001c66200055a60201b60201c565b600a620001d491906200096c565b620f4240620001e49190620009bd565b6200063160201b60201c565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000250573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000276919062000dc9565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000318919062000dc9565b6040518363ffffffff1660e01b81526004016200033792919062000e0c565b6020604051808303816000875af115801562000357573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200037d919062000dc9565b600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c6000620003d36200079e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c600073c984d052bd3377e7f45c875440a9c262a53a4b4e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000f25565b60006012905090565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620006a3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200069a9062000e9a565b60405180910390fd5b620006b760008383620007c860201b60201c565b8060026000828254620006cb919062000ebc565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200077e919062000f08565b60405180910390a36200079a60008383620007cd60201b60201c565b5050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b505050565b505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200086057808604811115620008385762000837620007d2565b5b6001851615620008485780820291505b8081029050620008588562000801565b945062000818565b94509492505050565b6000826200087b57600190506200094e565b816200088b57600090506200094e565b8160018114620008a45760028114620008af57620008e5565b60019150506200094e565b60ff841115620008c457620008c3620007d2565b5b8360020a915084821115620008de57620008dd620007d2565b5b506200094e565b5060208310610133831016604e8410600b84101617156200091f5782820a905083811115620009195762000918620007d2565b5b6200094e565b6200092e84848460016200080e565b92509050818404811115620009485762000947620007d2565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620009798262000955565b915062000986836200095f565b9250620009b57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000869565b905092915050565b6000620009ca8262000955565b9150620009d78362000955565b9250828202620009e78162000955565b9150828204841483151762000a015762000a00620007d2565b5b5092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000a8a57607f821691505b60208210810362000aa05762000a9f62000a42565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000b0a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000acb565b62000b16868362000acb565b95508019841693508086168417925050509392505050565b6000819050919050565b600062000b5962000b5362000b4d8462000955565b62000b2e565b62000955565b9050919050565b6000819050919050565b62000b758362000b38565b62000b8d62000b848262000b60565b84845462000ad8565b825550505050565b600090565b62000ba462000b95565b62000bb181848462000b6a565b505050565b5b8181101562000bd95762000bcd60008262000b9a565b60018101905062000bb7565b5050565b601f82111562000c285762000bf28162000aa6565b62000bfd8462000abb565b8101602085101562000c0d578190505b62000c2562000c1c8562000abb565b83018262000bb6565b50505b505050565b600082821c905092915050565b600062000c4d6000198460080262000c2d565b1980831691505092915050565b600062000c68838362000c3a565b9150826002028217905092915050565b62000c838262000a08565b67ffffffffffffffff81111562000c9f5762000c9e62000a13565b5b62000cab825462000a71565b62000cb882828562000bdd565b600060209050601f83116001811462000cf0576000841562000cdb578287015190505b62000ce7858262000c5a565b86555062000d57565b601f19841662000d008662000aa6565b60005b8281101562000d2a5784890151825560018201915060208501945060208101905062000d03565b8683101562000d4a578489015162000d46601f89168262000c3a565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000d918262000d64565b9050919050565b62000da38162000d84565b811462000daf57600080fd5b50565b60008151905062000dc38162000d98565b92915050565b60006020828403121562000de25762000de162000d5f565b5b600062000df28482850162000db2565b91505092915050565b62000e068162000d84565b82525050565b600060408201905062000e23600083018562000dfb565b62000e32602083018462000dfb565b9392505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000e82601f8362000e39565b915062000e8f8262000e4a565b602082019050919050565b6000602082019050818103600083015262000eb58162000e73565b9050919050565b600062000ec98262000955565b915062000ed68362000955565b925082820190508082111562000ef15762000ef0620007d2565b5b92915050565b62000f028162000955565b82525050565b600060208201905062000f1f600083018462000ef7565b92915050565b6080516130f062000f4860003960008181610a870152610aea01526130f06000f3fe6080604052600436106101d15760003560e01c8063715018a6116100f7578063a34efa3e11610095578063b21227b211610064578063b21227b21461063b578063c4590d3f14610652578063dd62ed3e1461067b578063f2fde38b146106b8576101d8565b8063a34efa3e1461056f578063a457c2d714610598578063a9059cbb146105d5578063afa4f3b214610612576101d8565b80638da5cb5b116100d15780638da5cb5b146104c55780638f9a55c0146104f057806390d2c93a1461051b57806395d89b4114610544576101d8565b8063715018a61461046c5780637be842dd146104835780637d1db4a51461049a576101d8565b806326bb6d171161016f578063395093511161013e578063395093511461039e57806349bd5a5e146103db57806352f7c9881461040657806370a082311461042f576101d8565b806326bb6d171461031a5780632fd689e314610331578063313ce5671461035c57806336d2d13f14610387576101d8565b80631694505e116101ab5780631694505e1461025c57806318160ddd146102875780631c127eab146102b257806323b872dd146102dd576101d8565b806301e7872a146101dd57806306fdde03146101f4578063095ea7b31461021f576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f26106e1565b005b34801561020057600080fd5b50610209610797565b60405161021691906120cf565b60405180910390f35b34801561022b57600080fd5b506102466004803603810190610241919061218f565b610829565b60405161025391906121ea565b60405180910390f35b34801561026857600080fd5b5061027161084c565b60405161027e9190612264565b60405180910390f35b34801561029357600080fd5b5061029c610864565b6040516102a9919061228e565b60405180910390f35b3480156102be57600080fd5b506102c761086e565b6040516102d4919061228e565b60405180910390f35b3480156102e957600080fd5b5061030460048036038101906102ff91906122a9565b610874565b60405161031191906121ea565b60405180910390f35b34801561032657600080fd5b5061032f6108a3565b005b34801561033d57600080fd5b50610346610959565b604051610353919061228e565b60405180910390f35b34801561036857600080fd5b5061037161095f565b60405161037e9190612318565b60405180910390f35b34801561039357600080fd5b5061039c610968565b005b3480156103aa57600080fd5b506103c560048036038101906103c0919061218f565b610a20565b6040516103d291906121ea565b60405180910390f35b3480156103e757600080fd5b506103f0610a57565b6040516103fd9190612342565b60405180910390f35b34801561041257600080fd5b5061042d6004803603810190610428919061235d565b610a7d565b005b34801561043b57600080fd5b506104566004803603810190610451919061239d565b610b5d565b604051610463919061228e565b60405180910390f35b34801561047857600080fd5b50610481610ba5565b005b34801561048f57600080fd5b50610498610bb9565b005b3480156104a657600080fd5b506104af610c5d565b6040516104bc919061228e565b60405180910390f35b3480156104d157600080fd5b506104da610c63565b6040516104e79190612342565b60405180910390f35b3480156104fc57600080fd5b50610505610c8d565b604051610512919061228e565b60405180910390f35b34801561052757600080fd5b50610542600480360381019061053d919061245b565b610c93565b005b34801561055057600080fd5b50610559610d40565b60405161056691906120cf565b60405180910390f35b34801561057b57600080fd5b50610596600480360381019061059191906124bb565b610dd2565b005b3480156105a457600080fd5b506105bf60048036038101906105ba919061218f565b610de4565b6040516105cc91906121ea565b60405180910390f35b3480156105e157600080fd5b506105fc60048036038101906105f7919061218f565b610e5b565b60405161060991906121ea565b60405180910390f35b34801561061e57600080fd5b50610639600480360381019061063491906124bb565b610e7e565b005b34801561064757600080fd5b50610650610e90565b005b34801561065e57600080fd5b506106796004803603810190610674919061235d565b610f46565b005b34801561068757600080fd5b506106a2600480360381019061069d91906124e8565b610f60565b6040516106af919061228e565b60405180910390f35b3480156106c457600080fd5b506106df60048036038101906106da919061239d565b610fe7565b005b6106e961106a565b6106f161095f565b600a6106fd919061268a565b614e2061070a91906126d5565b60068190555061071861095f565b600a610724919061268a565b614e2061073191906126d5565b60078190555061073f61095f565b600a61074b919061268a565b61271061075891906126d5565b60088190555061076661095f565b600a610772919061268a565b61270f61077f91906126d5565b6009819055506003600a81905550601e600b81905550565b6060600380546107a690612746565b80601f01602080910402602001604051908101604052809291908181526020018280546107d290612746565b801561081f5780601f106107f45761010080835404028352916020019161081f565b820191906000526020600020905b81548152906001019060200180831161080257829003601f168201915b5050505050905090565b6000806108346110e8565b90506108418185856110f0565b600191505092915050565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b60095481565b60008061087f6110e8565b905061088c8582856112b9565b610897858585611345565b60019150509392505050565b6108ab61106a565b6108b361095f565b600a6108bf919061268a565b6127106108cc91906126d5565b6006819055506108da61095f565b600a6108e6919061268a565b6127106108f391906126d5565b60078190555061090161095f565b600a61090d919061268a565b61271061091a91906126d5565b60088190555061092861095f565b600a610934919061268a565b61270f61094191906126d5565b600981905550601e600a81905550601e600b81905550565b60085481565b60006012905090565b61097061106a565b61097861095f565b600a610984919061268a565b620f424061099291906126d5565b6006819055506109a061095f565b600a6109ac919061268a565b620f42406109ba91906126d5565b6007819055506109c861095f565b600a6109d4919061268a565b6107d06109e191906126d5565b6008819055506109ef61095f565b600a6109fb919061268a565b6107d0610a0891906126d5565b6009819055506003600a819055506003600b81905550565b600080610a2b6110e8565b9050610a4c818585610a3d8589610f60565b610a479190612777565b6110f0565b600191505092915050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a8561106a565b7f0000000000000000000000000000000000000000000000000000000000000000821115610ae8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610adf906127f7565b60405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000811115610b4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b42906127f7565b60405180910390fd5b81600a8190555080600b819055505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610bad61106a565b610bb76000611aaa565b565b60004790506000811115610c235773c984d052bd3377e7f45c875440a9c262a53a4b4e73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610c21573d6000803e3d6000fd5b505b6000610c2e30610b5d565b90506000811115610c5957610c583073c984d052bd3377e7f45c875440a9c262a53a4b4e83611345565b5b5050565b60065481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60075481565b610c9b61106a565b60005b83839050811015610d3a5781600c6000868685818110610cc157610cc0612817565b5b9050602002016020810190610cd6919061239d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610d3290612846565b915050610c9e565b50505050565b606060048054610d4f90612746565b80601f0160208091040260200160405190810160405280929190818152602001828054610d7b90612746565b8015610dc85780601f10610d9d57610100808354040283529160200191610dc8565b820191906000526020600020905b815481529060010190602001808311610dab57829003601f168201915b5050505050905090565b610dda61106a565b8060098190555050565b600080610def6110e8565b90506000610dfd8286610f60565b905083811015610e42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3990612900565b60405180910390fd5b610e4f82868684036110f0565b60019250505092915050565b600080610e666110e8565b9050610e73818585611345565b600191505092915050565b610e8661106a565b8060088190555050565b610e9861106a565b610ea061095f565b600a610eac919061268a565b61c350610eb991906126d5565b600681905550610ec761095f565b600a610ed3919061268a565b61c350610ee091906126d5565b600781905550610eee61095f565b600a610efa919061268a565b612710610f0791906126d5565b600881905550610f1561095f565b600a610f21919061268a565b61270f610f2e91906126d5565b6009819055506003600a81905550600f600b81905550565b610f4e61106a565b81600681905550806007819055505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610fef61106a565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361105e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105590612992565b60405180910390fd5b61106781611aaa565b50565b6110726110e8565b73ffffffffffffffffffffffffffffffffffffffff16611090610c63565b73ffffffffffffffffffffffffffffffffffffffff16146110e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110dd906129fe565b60405180910390fd5b565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361115f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115690612a90565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c590612b22565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516112ac919061228e565b60405180910390a3505050565b60006112c58484610f60565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461133f5781811015611331576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132890612b8e565b60405180910390fd5b61133e84848484036110f0565b5b50505050565b61134d610c63565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156113bb575061138b610c63565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156117a65773c984d052bd3377e7f45c875440a9c262a53a4b4e73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611450575073c984d052bd3377e7f45c875440a9c262a53a4b4e73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561149b5760065481111561149a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149190612bfa565b60405180910390fd5b5b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611539575073c984d052bd3377e7f45c875440a9c262a53a4b4e73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611585575073c984d052bd3377e7f45c875440a9c262a53a4b4e73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156115e3576007548161159784610b5d565b6115a19190612777565b11156115e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d990612c8c565b60405180910390fd5b5b60006115ee30610b5d565b90506000600854821015905060095482106116095760095491505b8080156116235750600d60149054906101000a900460ff16155b801561167d5750600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156116d35750600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156117295750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156117a35761173782611b70565b600047905060008111156117a15773c984d052bd3377e7f45c875440a9c262a53a4b4e73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561179f573d6000803e3d6000fd5b505b505b50505b6000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156118455750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561185057600a5490505b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156118ed5750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156118f857600b5490505b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806119995750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611a4c5750600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611a4b5750600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611a5657600090505b600060648284611a6691906126d5565b611a709190612cdb565b905060008184611a809190612d0c565b90506000821115611a9757611a96863084611dbf565b5b611aa2868683611dbf565b505050505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6001600d60146101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611ba857611ba7612d40565b5b604051908082528060200260200182016040528015611bd65781602001602082028036833780820191505090505b5090503081600081518110611bee57611bed612817565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cab9190612d84565b81600181518110611cbf57611cbe612817565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611d1830737a250d5630b4cf539739df2c5dacb4c659f2488d846110f0565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611d6e959493929190612eaa565b600060405180830381600087803b158015611d8857600080fd5b505af1158015611d9c573d6000803e3d6000fd5b50505050506000600d60146101000a81548160ff02191690831515021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2590612f76565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9490613008565b60405180910390fd5b611ea8838383612035565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611f2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f259061309a565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161201c919061228e565b60405180910390a361202f84848461203a565b50505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561207957808201518184015260208101905061205e565b60008484015250505050565b6000601f19601f8301169050919050565b60006120a18261203f565b6120ab818561204a565b93506120bb81856020860161205b565b6120c481612085565b840191505092915050565b600060208201905081810360008301526120e98184612096565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612126826120fb565b9050919050565b6121368161211b565b811461214157600080fd5b50565b6000813590506121538161212d565b92915050565b6000819050919050565b61216c81612159565b811461217757600080fd5b50565b60008135905061218981612163565b92915050565b600080604083850312156121a6576121a56120f1565b5b60006121b485828601612144565b92505060206121c58582860161217a565b9150509250929050565b60008115159050919050565b6121e4816121cf565b82525050565b60006020820190506121ff60008301846121db565b92915050565b6000819050919050565b600061222a612225612220846120fb565b612205565b6120fb565b9050919050565b600061223c8261220f565b9050919050565b600061224e82612231565b9050919050565b61225e81612243565b82525050565b60006020820190506122796000830184612255565b92915050565b61228881612159565b82525050565b60006020820190506122a3600083018461227f565b92915050565b6000806000606084860312156122c2576122c16120f1565b5b60006122d086828701612144565b93505060206122e186828701612144565b92505060406122f28682870161217a565b9150509250925092565b600060ff82169050919050565b612312816122fc565b82525050565b600060208201905061232d6000830184612309565b92915050565b61233c8161211b565b82525050565b60006020820190506123576000830184612333565b92915050565b60008060408385031215612374576123736120f1565b5b60006123828582860161217a565b92505060206123938582860161217a565b9150509250929050565b6000602082840312156123b3576123b26120f1565b5b60006123c184828501612144565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126123ef576123ee6123ca565b5b8235905067ffffffffffffffff81111561240c5761240b6123cf565b5b602083019150836020820283011115612428576124276123d4565b5b9250929050565b612438816121cf565b811461244357600080fd5b50565b6000813590506124558161242f565b92915050565b600080600060408486031215612474576124736120f1565b5b600084013567ffffffffffffffff811115612492576124916120f6565b5b61249e868287016123d9565b935093505060206124b186828701612446565b9150509250925092565b6000602082840312156124d1576124d06120f1565b5b60006124df8482850161217a565b91505092915050565b600080604083850312156124ff576124fe6120f1565b5b600061250d85828601612144565b925050602061251e85828601612144565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156125ae5780860481111561258a57612589612528565b5b60018516156125995780820291505b80810290506125a785612557565b945061256e565b94509492505050565b6000826125c75760019050612683565b816125d55760009050612683565b81600181146125eb57600281146125f557612624565b6001915050612683565b60ff84111561260757612606612528565b5b8360020a91508482111561261e5761261d612528565b5b50612683565b5060208310610133831016604e8410600b84101617156126595782820a90508381111561265457612653612528565b5b612683565b6126668484846001612564565b9250905081840481111561267d5761267c612528565b5b81810290505b9392505050565b600061269582612159565b91506126a0836122fc565b92506126cd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846125b7565b905092915050565b60006126e082612159565b91506126eb83612159565b92508282026126f981612159565b915082820484148315176127105761270f612528565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061275e57607f821691505b60208210810361277157612770612717565b5b50919050565b600061278282612159565b915061278d83612159565b92508282019050808211156127a5576127a4612528565b5b92915050565b7f46656520697320746f6f20686967680000000000000000000000000000000000600082015250565b60006127e1600f8361204a565b91506127ec826127ab565b602082019050919050565b60006020820190508181036000830152612810816127d4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061285182612159565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361288357612882612528565b5b600182019050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006128ea60258361204a565b91506128f58261288e565b604082019050919050565b60006020820190508181036000830152612919816128dd565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061297c60268361204a565b915061298782612920565b604082019050919050565b600060208201905081810360008301526129ab8161296f565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006129e860208361204a565b91506129f3826129b2565b602082019050919050565b60006020820190508181036000830152612a17816129db565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612a7a60248361204a565b9150612a8582612a1e565b604082019050919050565b60006020820190508181036000830152612aa981612a6d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612b0c60228361204a565b9150612b1782612ab0565b604082019050919050565b60006020820190508181036000830152612b3b81612aff565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000612b78601d8361204a565b9150612b8382612b42565b602082019050919050565b60006020820190508181036000830152612ba781612b6b565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000612be4601c8361204a565b9150612bef82612bae565b602082019050919050565b60006020820190508181036000830152612c1381612bd7565b9050919050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000612c7660238361204a565b9150612c8182612c1a565b604082019050919050565b60006020820190508181036000830152612ca581612c69565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612ce682612159565b9150612cf183612159565b925082612d0157612d00612cac565b5b828204905092915050565b6000612d1782612159565b9150612d2283612159565b9250828203905081811115612d3a57612d39612528565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050612d7e8161212d565b92915050565b600060208284031215612d9a57612d996120f1565b5b6000612da884828501612d6f565b91505092915050565b6000819050919050565b6000612dd6612dd1612dcc84612db1565b612205565b612159565b9050919050565b612de681612dbb565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612e218161211b565b82525050565b6000612e338383612e18565b60208301905092915050565b6000602082019050919050565b6000612e5782612dec565b612e618185612df7565b9350612e6c83612e08565b8060005b83811015612e9d578151612e848882612e27565b9750612e8f83612e3f565b925050600181019050612e70565b5085935050505092915050565b600060a082019050612ebf600083018861227f565b612ecc6020830187612ddd565b8181036040830152612ede8186612e4c565b9050612eed6060830185612333565b612efa608083018461227f565b9695505050505050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612f6060258361204a565b9150612f6b82612f04565b604082019050919050565b60006020820190508181036000830152612f8f81612f53565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612ff260238361204a565b9150612ffd82612f96565b604082019050919050565b6000602082019050818103600083015261302181612fe5565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061308460268361204a565b915061308f82613028565b604082019050919050565b600060208201905081810360008301526130b381613077565b905091905056fea2646970667358221220c3b970893ba7273276fbceaa7e06945659d805b7c02c853ad299b5f66aab0cc664736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101d15760003560e01c8063715018a6116100f7578063a34efa3e11610095578063b21227b211610064578063b21227b21461063b578063c4590d3f14610652578063dd62ed3e1461067b578063f2fde38b146106b8576101d8565b8063a34efa3e1461056f578063a457c2d714610598578063a9059cbb146105d5578063afa4f3b214610612576101d8565b80638da5cb5b116100d15780638da5cb5b146104c55780638f9a55c0146104f057806390d2c93a1461051b57806395d89b4114610544576101d8565b8063715018a61461046c5780637be842dd146104835780637d1db4a51461049a576101d8565b806326bb6d171161016f578063395093511161013e578063395093511461039e57806349bd5a5e146103db57806352f7c9881461040657806370a082311461042f576101d8565b806326bb6d171461031a5780632fd689e314610331578063313ce5671461035c57806336d2d13f14610387576101d8565b80631694505e116101ab5780631694505e1461025c57806318160ddd146102875780631c127eab146102b257806323b872dd146102dd576101d8565b806301e7872a146101dd57806306fdde03146101f4578063095ea7b31461021f576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f26106e1565b005b34801561020057600080fd5b50610209610797565b60405161021691906120cf565b60405180910390f35b34801561022b57600080fd5b506102466004803603810190610241919061218f565b610829565b60405161025391906121ea565b60405180910390f35b34801561026857600080fd5b5061027161084c565b60405161027e9190612264565b60405180910390f35b34801561029357600080fd5b5061029c610864565b6040516102a9919061228e565b60405180910390f35b3480156102be57600080fd5b506102c761086e565b6040516102d4919061228e565b60405180910390f35b3480156102e957600080fd5b5061030460048036038101906102ff91906122a9565b610874565b60405161031191906121ea565b60405180910390f35b34801561032657600080fd5b5061032f6108a3565b005b34801561033d57600080fd5b50610346610959565b604051610353919061228e565b60405180910390f35b34801561036857600080fd5b5061037161095f565b60405161037e9190612318565b60405180910390f35b34801561039357600080fd5b5061039c610968565b005b3480156103aa57600080fd5b506103c560048036038101906103c0919061218f565b610a20565b6040516103d291906121ea565b60405180910390f35b3480156103e757600080fd5b506103f0610a57565b6040516103fd9190612342565b60405180910390f35b34801561041257600080fd5b5061042d6004803603810190610428919061235d565b610a7d565b005b34801561043b57600080fd5b506104566004803603810190610451919061239d565b610b5d565b604051610463919061228e565b60405180910390f35b34801561047857600080fd5b50610481610ba5565b005b34801561048f57600080fd5b50610498610bb9565b005b3480156104a657600080fd5b506104af610c5d565b6040516104bc919061228e565b60405180910390f35b3480156104d157600080fd5b506104da610c63565b6040516104e79190612342565b60405180910390f35b3480156104fc57600080fd5b50610505610c8d565b604051610512919061228e565b60405180910390f35b34801561052757600080fd5b50610542600480360381019061053d919061245b565b610c93565b005b34801561055057600080fd5b50610559610d40565b60405161056691906120cf565b60405180910390f35b34801561057b57600080fd5b50610596600480360381019061059191906124bb565b610dd2565b005b3480156105a457600080fd5b506105bf60048036038101906105ba919061218f565b610de4565b6040516105cc91906121ea565b60405180910390f35b3480156105e157600080fd5b506105fc60048036038101906105f7919061218f565b610e5b565b60405161060991906121ea565b60405180910390f35b34801561061e57600080fd5b50610639600480360381019061063491906124bb565b610e7e565b005b34801561064757600080fd5b50610650610e90565b005b34801561065e57600080fd5b506106796004803603810190610674919061235d565b610f46565b005b34801561068757600080fd5b506106a2600480360381019061069d91906124e8565b610f60565b6040516106af919061228e565b60405180910390f35b3480156106c457600080fd5b506106df60048036038101906106da919061239d565b610fe7565b005b6106e961106a565b6106f161095f565b600a6106fd919061268a565b614e2061070a91906126d5565b60068190555061071861095f565b600a610724919061268a565b614e2061073191906126d5565b60078190555061073f61095f565b600a61074b919061268a565b61271061075891906126d5565b60088190555061076661095f565b600a610772919061268a565b61270f61077f91906126d5565b6009819055506003600a81905550601e600b81905550565b6060600380546107a690612746565b80601f01602080910402602001604051908101604052809291908181526020018280546107d290612746565b801561081f5780601f106107f45761010080835404028352916020019161081f565b820191906000526020600020905b81548152906001019060200180831161080257829003601f168201915b5050505050905090565b6000806108346110e8565b90506108418185856110f0565b600191505092915050565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b60095481565b60008061087f6110e8565b905061088c8582856112b9565b610897858585611345565b60019150509392505050565b6108ab61106a565b6108b361095f565b600a6108bf919061268a565b6127106108cc91906126d5565b6006819055506108da61095f565b600a6108e6919061268a565b6127106108f391906126d5565b60078190555061090161095f565b600a61090d919061268a565b61271061091a91906126d5565b60088190555061092861095f565b600a610934919061268a565b61270f61094191906126d5565b600981905550601e600a81905550601e600b81905550565b60085481565b60006012905090565b61097061106a565b61097861095f565b600a610984919061268a565b620f424061099291906126d5565b6006819055506109a061095f565b600a6109ac919061268a565b620f42406109ba91906126d5565b6007819055506109c861095f565b600a6109d4919061268a565b6107d06109e191906126d5565b6008819055506109ef61095f565b600a6109fb919061268a565b6107d0610a0891906126d5565b6009819055506003600a819055506003600b81905550565b600080610a2b6110e8565b9050610a4c818585610a3d8589610f60565b610a479190612777565b6110f0565b600191505092915050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a8561106a565b7f000000000000000000000000000000000000000000000000000000000000001e821115610ae8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610adf906127f7565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000001e811115610b4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b42906127f7565b60405180910390fd5b81600a8190555080600b819055505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610bad61106a565b610bb76000611aaa565b565b60004790506000811115610c235773c984d052bd3377e7f45c875440a9c262a53a4b4e73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610c21573d6000803e3d6000fd5b505b6000610c2e30610b5d565b90506000811115610c5957610c583073c984d052bd3377e7f45c875440a9c262a53a4b4e83611345565b5b5050565b60065481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60075481565b610c9b61106a565b60005b83839050811015610d3a5781600c6000868685818110610cc157610cc0612817565b5b9050602002016020810190610cd6919061239d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610d3290612846565b915050610c9e565b50505050565b606060048054610d4f90612746565b80601f0160208091040260200160405190810160405280929190818152602001828054610d7b90612746565b8015610dc85780601f10610d9d57610100808354040283529160200191610dc8565b820191906000526020600020905b815481529060010190602001808311610dab57829003601f168201915b5050505050905090565b610dda61106a565b8060098190555050565b600080610def6110e8565b90506000610dfd8286610f60565b905083811015610e42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3990612900565b60405180910390fd5b610e4f82868684036110f0565b60019250505092915050565b600080610e666110e8565b9050610e73818585611345565b600191505092915050565b610e8661106a565b8060088190555050565b610e9861106a565b610ea061095f565b600a610eac919061268a565b61c350610eb991906126d5565b600681905550610ec761095f565b600a610ed3919061268a565b61c350610ee091906126d5565b600781905550610eee61095f565b600a610efa919061268a565b612710610f0791906126d5565b600881905550610f1561095f565b600a610f21919061268a565b61270f610f2e91906126d5565b6009819055506003600a81905550600f600b81905550565b610f4e61106a565b81600681905550806007819055505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610fef61106a565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361105e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105590612992565b60405180910390fd5b61106781611aaa565b50565b6110726110e8565b73ffffffffffffffffffffffffffffffffffffffff16611090610c63565b73ffffffffffffffffffffffffffffffffffffffff16146110e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110dd906129fe565b60405180910390fd5b565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361115f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115690612a90565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c590612b22565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516112ac919061228e565b60405180910390a3505050565b60006112c58484610f60565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461133f5781811015611331576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132890612b8e565b60405180910390fd5b61133e84848484036110f0565b5b50505050565b61134d610c63565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156113bb575061138b610c63565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156117a65773c984d052bd3377e7f45c875440a9c262a53a4b4e73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611450575073c984d052bd3377e7f45c875440a9c262a53a4b4e73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561149b5760065481111561149a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149190612bfa565b60405180910390fd5b5b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611539575073c984d052bd3377e7f45c875440a9c262a53a4b4e73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611585575073c984d052bd3377e7f45c875440a9c262a53a4b4e73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156115e3576007548161159784610b5d565b6115a19190612777565b11156115e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d990612c8c565b60405180910390fd5b5b60006115ee30610b5d565b90506000600854821015905060095482106116095760095491505b8080156116235750600d60149054906101000a900460ff16155b801561167d5750600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156116d35750600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156117295750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156117a35761173782611b70565b600047905060008111156117a15773c984d052bd3377e7f45c875440a9c262a53a4b4e73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561179f573d6000803e3d6000fd5b505b505b50505b6000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156118455750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561185057600a5490505b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156118ed5750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156118f857600b5490505b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806119995750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611a4c5750600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611a4b5750600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611a5657600090505b600060648284611a6691906126d5565b611a709190612cdb565b905060008184611a809190612d0c565b90506000821115611a9757611a96863084611dbf565b5b611aa2868683611dbf565b505050505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6001600d60146101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611ba857611ba7612d40565b5b604051908082528060200260200182016040528015611bd65781602001602082028036833780820191505090505b5090503081600081518110611bee57611bed612817565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cab9190612d84565b81600181518110611cbf57611cbe612817565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611d1830737a250d5630b4cf539739df2c5dacb4c659f2488d846110f0565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611d6e959493929190612eaa565b600060405180830381600087803b158015611d8857600080fd5b505af1158015611d9c573d6000803e3d6000fd5b50505050506000600d60146101000a81548160ff02191690831515021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2590612f76565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9490613008565b60405180910390fd5b611ea8838383612035565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611f2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f259061309a565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161201c919061228e565b60405180910390a361202f84848461203a565b50505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561207957808201518184015260208101905061205e565b60008484015250505050565b6000601f19601f8301169050919050565b60006120a18261203f565b6120ab818561204a565b93506120bb81856020860161205b565b6120c481612085565b840191505092915050565b600060208201905081810360008301526120e98184612096565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612126826120fb565b9050919050565b6121368161211b565b811461214157600080fd5b50565b6000813590506121538161212d565b92915050565b6000819050919050565b61216c81612159565b811461217757600080fd5b50565b60008135905061218981612163565b92915050565b600080604083850312156121a6576121a56120f1565b5b60006121b485828601612144565b92505060206121c58582860161217a565b9150509250929050565b60008115159050919050565b6121e4816121cf565b82525050565b60006020820190506121ff60008301846121db565b92915050565b6000819050919050565b600061222a612225612220846120fb565b612205565b6120fb565b9050919050565b600061223c8261220f565b9050919050565b600061224e82612231565b9050919050565b61225e81612243565b82525050565b60006020820190506122796000830184612255565b92915050565b61228881612159565b82525050565b60006020820190506122a3600083018461227f565b92915050565b6000806000606084860312156122c2576122c16120f1565b5b60006122d086828701612144565b93505060206122e186828701612144565b92505060406122f28682870161217a565b9150509250925092565b600060ff82169050919050565b612312816122fc565b82525050565b600060208201905061232d6000830184612309565b92915050565b61233c8161211b565b82525050565b60006020820190506123576000830184612333565b92915050565b60008060408385031215612374576123736120f1565b5b60006123828582860161217a565b92505060206123938582860161217a565b9150509250929050565b6000602082840312156123b3576123b26120f1565b5b60006123c184828501612144565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126123ef576123ee6123ca565b5b8235905067ffffffffffffffff81111561240c5761240b6123cf565b5b602083019150836020820283011115612428576124276123d4565b5b9250929050565b612438816121cf565b811461244357600080fd5b50565b6000813590506124558161242f565b92915050565b600080600060408486031215612474576124736120f1565b5b600084013567ffffffffffffffff811115612492576124916120f6565b5b61249e868287016123d9565b935093505060206124b186828701612446565b9150509250925092565b6000602082840312156124d1576124d06120f1565b5b60006124df8482850161217a565b91505092915050565b600080604083850312156124ff576124fe6120f1565b5b600061250d85828601612144565b925050602061251e85828601612144565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156125ae5780860481111561258a57612589612528565b5b60018516156125995780820291505b80810290506125a785612557565b945061256e565b94509492505050565b6000826125c75760019050612683565b816125d55760009050612683565b81600181146125eb57600281146125f557612624565b6001915050612683565b60ff84111561260757612606612528565b5b8360020a91508482111561261e5761261d612528565b5b50612683565b5060208310610133831016604e8410600b84101617156126595782820a90508381111561265457612653612528565b5b612683565b6126668484846001612564565b9250905081840481111561267d5761267c612528565b5b81810290505b9392505050565b600061269582612159565b91506126a0836122fc565b92506126cd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846125b7565b905092915050565b60006126e082612159565b91506126eb83612159565b92508282026126f981612159565b915082820484148315176127105761270f612528565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061275e57607f821691505b60208210810361277157612770612717565b5b50919050565b600061278282612159565b915061278d83612159565b92508282019050808211156127a5576127a4612528565b5b92915050565b7f46656520697320746f6f20686967680000000000000000000000000000000000600082015250565b60006127e1600f8361204a565b91506127ec826127ab565b602082019050919050565b60006020820190508181036000830152612810816127d4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061285182612159565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361288357612882612528565b5b600182019050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006128ea60258361204a565b91506128f58261288e565b604082019050919050565b60006020820190508181036000830152612919816128dd565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061297c60268361204a565b915061298782612920565b604082019050919050565b600060208201905081810360008301526129ab8161296f565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006129e860208361204a565b91506129f3826129b2565b602082019050919050565b60006020820190508181036000830152612a17816129db565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612a7a60248361204a565b9150612a8582612a1e565b604082019050919050565b60006020820190508181036000830152612aa981612a6d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612b0c60228361204a565b9150612b1782612ab0565b604082019050919050565b60006020820190508181036000830152612b3b81612aff565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000612b78601d8361204a565b9150612b8382612b42565b602082019050919050565b60006020820190508181036000830152612ba781612b6b565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000612be4601c8361204a565b9150612bef82612bae565b602082019050919050565b60006020820190508181036000830152612c1381612bd7565b9050919050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000612c7660238361204a565b9150612c8182612c1a565b604082019050919050565b60006020820190508181036000830152612ca581612c69565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612ce682612159565b9150612cf183612159565b925082612d0157612d00612cac565b5b828204905092915050565b6000612d1782612159565b9150612d2283612159565b9250828203905081811115612d3a57612d39612528565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050612d7e8161212d565b92915050565b600060208284031215612d9a57612d996120f1565b5b6000612da884828501612d6f565b91505092915050565b6000819050919050565b6000612dd6612dd1612dcc84612db1565b612205565b612159565b9050919050565b612de681612dbb565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612e218161211b565b82525050565b6000612e338383612e18565b60208301905092915050565b6000602082019050919050565b6000612e5782612dec565b612e618185612df7565b9350612e6c83612e08565b8060005b83811015612e9d578151612e848882612e27565b9750612e8f83612e3f565b925050600181019050612e70565b5085935050505092915050565b600060a082019050612ebf600083018861227f565b612ecc6020830187612ddd565b8181036040830152612ede8186612e4c565b9050612eed6060830185612333565b612efa608083018461227f565b9695505050505050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612f6060258361204a565b9150612f6b82612f04565b604082019050919050565b60006020820190508181036000830152612f8f81612f53565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612ff260238361204a565b9150612ffd82612f96565b604082019050919050565b6000602082019050818103600083015261302181612fe5565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061308460268361204a565b915061308f82613028565b604082019050919050565b600060208201905081810360008301526130b381613077565b905091905056fea2646970667358221220c3b970893ba7273276fbceaa7e06945659d805b7c02c853ad299b5f66aab0cc664736f6c63430008130033

Deployed Bytecode Sourcemap

9217:6924:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14684:303;;;;;;;;;;;;;:::i;:::-;;3169:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4167:226;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9825:124;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3490:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9448:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4401:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14373:303;;;;;;;;;;;;;:::i;:::-;;9380:61;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3389:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15310:305;;;;;;;;;;;;;:::i;:::-;;4704:263;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9958:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13308:312;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3606:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1127:103;;;;;;;;;;;;;:::i;:::-;;15701:400;;;;;;;;;;;;;:::i;:::-;;9256:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;890:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9317:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14111:254;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3277:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13990:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4975:498;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3757:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13829:153;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14995:303;;;;;;;;;;;;;:::i;:::-;;13628:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3983:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1238:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14684:303;849:13;:11;:13::i;:::-;14769:10:::1;:8;:10::i;:::-;14763:2;:16;;;;:::i;:::-;14755:5;:24;;;;:::i;:::-;14740:12;:39;;;;14818:10;:8;:10::i;:::-;14812:2;:16;;;;:::i;:::-;14804:5;:24;;;;:::i;:::-;14787:14;:41;;;;14872:10;:8;:10::i;:::-;14866:2;:16;;;;:::i;:::-;14858:5;:24;;;;:::i;:::-;14836:19;:46;;;;14919:10;:8;:10::i;:::-;14913:2;:16;;;;:::i;:::-;14906:4;:23;;;;:::i;:::-;14890:13;:39;;;;14952:1;14937:12;:16;;;;14977:2;14961:13;:18;;;;14684:303::o:0;3169:100::-;3223:13;3256:5;3249:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3169:100;:::o;4167:226::-;4275:4;4292:13;4308:12;:10;:12::i;:::-;4292:28;;4331:32;4340:5;4347:7;4356:6;4331:8;:32::i;:::-;4381:4;4374:11;;;4167:226;;;;:::o;9825:124::-;9906:42;9825:124;:::o;3490:108::-;3551:7;3578:12;;3571:19;;3490:108;:::o;9448:55::-;;;;:::o;4401:295::-;4532:4;4549:15;4567:12;:10;:12::i;:::-;4549:30;;4590:38;4606:4;4612:7;4621:6;4590:15;:38::i;:::-;4639:27;4649:4;4655:2;4659:6;4639:9;:27::i;:::-;4684:4;4677:11;;;4401:295;;;;;:::o;14373:303::-;849:13;:11;:13::i;:::-;14457:10:::1;:8;:10::i;:::-;14451:2;:16;;;;:::i;:::-;14443:5;:24;;;;:::i;:::-;14428:12;:39;;;;14506:10;:8;:10::i;:::-;14500:2;:16;;;;:::i;:::-;14492:5;:24;;;;:::i;:::-;14475:14;:41;;;;14560:10;:8;:10::i;:::-;14554:2;:16;;;;:::i;:::-;14546:5;:24;;;;:::i;:::-;14524:19;:46;;;;14607:10;:8;:10::i;:::-;14601:2;:16;;;;:::i;:::-;14594:4;:23;;;;:::i;:::-;14578:13;:39;;;;14640:2;14625:12;:17;;;;14666:2;14650:13;:18;;;;14373:303::o:0;9380:61::-;;;;:::o;3389:93::-;3447:5;3472:2;3465:9;;3389:93;:::o;15310:305::-;849:13;:11;:13::i;:::-;15397:10:::1;:8;:10::i;:::-;15391:2;:16;;;;:::i;:::-;15381:7;:26;;;;:::i;:::-;15366:12;:41;;;;15448:10;:8;:10::i;:::-;15442:2;:16;;;;:::i;:::-;15432:7;:26;;;;:::i;:::-;15415:14;:43;;;;15501:10;:8;:10::i;:::-;15495:2;:16;;;;:::i;:::-;15488:4;:23;;;;:::i;:::-;15466:19;:45;;;;15548:10;:8;:10::i;:::-;15542:2;:16;;;;:::i;:::-;15535:4;:23;;;;:::i;:::-;15519:13;:39;;;;15581:1;15566:12;:16;;;;15606:1;15590:13;:17;;;;15310:305::o:0;4704:263::-;4817:4;4834:13;4850:12;:10;:12::i;:::-;4834:28;;4873:64;4882:5;4889:7;4926:10;4898:25;4908:5;4915:7;4898:9;:25::i;:::-;:38;;;;:::i;:::-;4873:8;:64::i;:::-;4955:4;4948:11;;;4704:263;;;;:::o;9958:28::-;;;;;;;;;;;;;:::o;13308:312::-;849:13;:11;:13::i;:::-;13445:7:::1;13430:11;:22;;13422:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;13507:7;13491:12;:23;;13483:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;13562:11;13547:12;:26;;;;13600:12;13584:13;:28;;;;13308:312:::0;;:::o;3606:143::-;3696:7;3723:9;:18;3733:7;3723:18;;;;;;;;;;;;;;;;3716:25;;3606:143;;;:::o;1127:103::-;849:13;:11;:13::i;:::-;1192:30:::1;1219:1;1192:18;:30::i;:::-;1127:103::o:0;15701:400::-;15746:26;15775:21;15746:50;;15832:1;15811:18;:22;15807:95;;;9773:42;15850:20;;:40;15871:18;15850:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15807:95;15912:28;15943:24;15961:4;15943:9;:24::i;:::-;15912:55;;16005:1;15982:20;:24;15978:116;;;16023:59;16041:4;9773:42;16061:20;16023:9;:59::i;:::-;15978:116;15735:366;;15701:400::o;9256:54::-;;;;:::o;890:87::-;936:7;963:6;;;;;;;;;;;956:13;;890:87;:::o;9317:56::-;;;;:::o;14111:254::-;849:13;:11;:13::i;:::-;14248:9:::1;14243:115;14267:8;;:15;;14263:1;:19;14243:115;;;14338:8;14304:18;:31;14323:8;;14332:1;14323:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;14304:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;14284:3;;;;;:::i;:::-;;;;14243:115;;;;14111:254:::0;;;:::o;3277:104::-;3333:13;3366:7;3359:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3277:104;:::o;13990:113::-;849:13;:11;:13::i;:::-;14083:12:::1;14067:13;:28;;;;13990:113:::0;:::o;4975:498::-;5093:4;5110:13;5126:12;:10;:12::i;:::-;5110:28;;5149:24;5176:25;5186:5;5193:7;5176:9;:25::i;:::-;5149:52;;5254:15;5234:16;:35;;5212:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;5370:60;5379:5;5386:7;5414:15;5395:16;:34;5370:8;:60::i;:::-;5461:4;5454:11;;;;4975:498;;;;:::o;3757:218::-;3861:4;3878:13;3894:12;:10;:12::i;:::-;3878:28;;3917;3927:5;3934:2;3938:6;3917:9;:28::i;:::-;3963:4;3956:11;;;3757:218;;;;:::o;13829:153::-;849:13;:11;:13::i;:::-;13956:18:::1;13934:19;:40;;;;13829:153:::0;:::o;14995:303::-;849:13;:11;:13::i;:::-;15080:10:::1;:8;:10::i;:::-;15074:2;:16;;;;:::i;:::-;15066:5;:24;;;;:::i;:::-;15051:12;:39;;;;15129:10;:8;:10::i;:::-;15123:2;:16;;;;:::i;:::-;15115:5;:24;;;;:::i;:::-;15098:14;:41;;;;15183:10;:8;:10::i;:::-;15177:2;:16;;;;:::i;:::-;15169:5;:24;;;;:::i;:::-;15147:19;:46;;;;15230:10;:8;:10::i;:::-;15224:2;:16;;;;:::i;:::-;15217:4;:23;;;;:::i;:::-;15201:13;:39;;;;15263:1;15248:12;:16;;;;15288:2;15272:13;:18;;;;14995:303::o:0;13628:193::-;849:13;:11;:13::i;:::-;13761:11:::1;13746:12;:26;;;;13800:13;13783:14;:30;;;;13628:193:::0;;:::o;3983:176::-;4097:7;4124:11;:18;4136:5;4124:18;;;;;;;;;;;;;;;:27;4143:7;4124:27;;;;;;;;;;;;;;;;4117:34;;3983:176;;;;:::o;1238:238::-;849:13;:11;:13::i;:::-;1361:1:::1;1341:22;;:8;:22;;::::0;1319:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1440:28;1459:8;1440:18;:28::i;:::-;1238:238:::0;:::o;987:132::-;1062:12;:10;:12::i;:::-;1051:23;;:7;:5;:7::i;:::-;:23;;;1043:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;987:132::o;311:98::-;364:7;391:10;384:17;;311:98;:::o;7446:380::-;7599:1;7582:19;;:5;:19;;;7574:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7680:1;7661:21;;:7;:21;;;7653:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7764:6;7734:11;:18;7746:5;7734:18;;;;;;;;;;;;;;;:27;7753:7;7734:27;;;;;;;;;;;;;;;:36;;;;7802:7;7786:32;;7795:5;7786:32;;;7811:6;7786:32;;;;;;:::i;:::-;;;;;;;;7446:380;;;:::o;7834:502::-;7969:24;7996:25;8006:5;8013:7;7996:9;:25::i;:::-;7969:52;;8056:17;8036:16;:37;8032:297;;8136:6;8116:16;:26;;8090:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;8251:51;8260:5;8267:7;8295:6;8276:16;:25;8251:8;:51::i;:::-;8032:297;7958:378;7834:502;;;:::o;10620:2162::-;10756:7;:5;:7::i;:::-;10748:15;;:4;:15;;;;:32;;;;;10773:7;:5;:7::i;:::-;10767:13;;:2;:13;;;;10748:32;10744:1282;;;9773:42;10801:17;;:2;:17;;;;:40;;;;;9773:42;10822:19;;:4;:19;;;;10801:40;10797:144;;;10880:12;;10870:6;:22;;10862:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10797:144;10985:13;;;;;;;;;;;10979:19;;:2;:19;;;;:40;;;;;9773:42;11002:17;;:2;:17;;;;10979:40;:63;;;;;9773:42;11023:19;;:4;:19;;;;10979:63;10957:285;;;11133:14;;11123:6;11107:13;11117:2;11107:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;11077:149;;;;;;;;;;;;:::i;:::-;;;;;;;;;10957:285;11256:28;11287:24;11305:4;11287:9;:24::i;:::-;11256:55;;11326:15;11368:19;;11344:20;:43;;11326:61;;11432:13;;11408:20;:37;11404:114;;11489:13;;11466:36;;11404:114;11556:10;:38;;;;;11588:6;;;;;;;;;;;11587:7;11556:38;:80;;;;;11623:13;;;;;;;;;;;11615:21;;:4;:21;;;;11556:80;:126;;;;;11658:18;:24;11677:4;11658:24;;;;;;;;;;;;;;;;;;;;;;;;;11657:25;11556:126;:170;;;;;11704:18;:22;11723:2;11704:22;;;;;;;;;;;;;;;;;;;;;;;;;11703:23;11556:170;11534:481;;;11761:38;11778:20;11761:16;:38::i;:::-;11820:26;11849:21;11820:50;;11914:1;11893:18;:22;11889:111;;;9773:42;11940:20;;:40;11961:18;11940:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11889:111;11742:273;11534:481;10782:1244;;10744:1282;12065:15;12107:13;;;;;;;;;;;12099:21;;:4;:21;;;:55;;;;;9906:42;12124:30;;:2;:30;;;;12099:55;12095:110;;;12181:12;;12171:22;;12095:110;12227:13;;;;;;;;;;;12221:19;;:2;:19;;;:55;;;;;9906:42;12244:32;;:4;:32;;;;12221:55;12217:111;;;12303:13;;12293:23;;12217:111;12359:18;:24;12378:4;12359:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;12387:18;:22;12406:2;12387:22;;;;;;;;;;;;;;;;;;;;;;;;;12359:50;12358:115;;;;12436:13;;;;;;;;;;;12428:21;;:4;:21;;;;:44;;;;;12459:13;;;;;;;;;;;12453:19;;:2;:19;;;;12428:44;12358:115;12340:183;;;12510:1;12500:11;;12340:183;12535:13;12572:3;12561:7;12552:6;:16;;;;:::i;:::-;12551:24;;;;:::i;:::-;12535:40;;12586:23;12621:5;12612:6;:14;;;;:::i;:::-;12586:40;;12649:1;12641:5;:9;12637:85;;;12667:43;12683:4;12697;12704:5;12667:15;:43::i;:::-;12637:85;12732:42;12748:4;12754:2;12758:15;12732;:42::i;:::-;10733:2049;;;10620:2162;;;:::o;1484:191::-;1558:16;1577:6;;;;;;;;;;;1558:25;;1603:8;1594:6;;:17;;;;;;;;;;;;;;;;;;1658:8;1627:40;;1648:8;1627:40;;;;;;;;;;;;1547:128;1484:191;:::o;12790:483::-;10074:4;10065:6;;:13;;;;;;;;;;;;;;;;;;12868:21:::1;12906:1;12892:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12868:40;;12937:4;12919;12924:1;12919:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;9906:42;12963:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12953:4;12958:1;12953:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;12996:62;13013:4;9906:42;13046:11;12996:8;:62::i;:::-;9906:42;13069:66;;;13150:11;13176:1;13192:4;13219;13239:15;13069:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12857:416;10110:5:::0;10101:6;;:14;;;;;;;;;;;;;;;;;;12790:483;:::o;5481:714::-;5628:1;5612:18;;:4;:18;;;5604:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5705:1;5691:16;;:2;:16;;;5683:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;5760:38;5781:4;5787:2;5791:6;5760:20;:38::i;:::-;5811:19;5833:9;:15;5843:4;5833:15;;;;;;;;;;;;;;;;5811:37;;5896:6;5881:11;:21;;5859:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;6036:6;6022:11;:20;6004:9;:15;6014:4;6004:15;;;;;;;;;;;;;;;:38;;;;6076:6;6059:9;:13;6069:2;6059:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;6126:2;6111:26;;6120:4;6111:26;;;6130:6;6111:26;;;;;;:::i;:::-;;;;;;;;6150:37;6170:4;6176:2;6180:6;6150:19;:37::i;:::-;5593:602;5481:714;;;:::o;8344:125::-;;;;:::o;8479: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;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:60::-;3474:3;3495:5;3488:12;;3446:60;;;:::o;3512:142::-;3562:9;3595:53;3613:34;3622:24;3640:5;3622:24;:::i;:::-;3613:34;:::i;:::-;3595:53;:::i;:::-;3582:66;;3512:142;;;:::o;3660:126::-;3710:9;3743:37;3774:5;3743:37;:::i;:::-;3730:50;;3660:126;;;:::o;3792:152::-;3868:9;3901:37;3932:5;3901:37;:::i;:::-;3888:50;;3792:152;;;:::o;3950:183::-;4063:63;4120:5;4063:63;:::i;:::-;4058:3;4051:76;3950:183;;:::o;4139:274::-;4258:4;4296:2;4285:9;4281:18;4273:26;;4309:97;4403:1;4392:9;4388:17;4379:6;4309:97;:::i;:::-;4139:274;;;;:::o;4419:118::-;4506:24;4524:5;4506:24;:::i;:::-;4501:3;4494:37;4419:118;;:::o;4543:222::-;4636:4;4674:2;4663:9;4659:18;4651:26;;4687:71;4755:1;4744:9;4740:17;4731:6;4687:71;:::i;:::-;4543:222;;;;:::o;4771:619::-;4848:6;4856;4864;4913:2;4901:9;4892:7;4888:23;4884:32;4881:119;;;4919:79;;:::i;:::-;4881:119;5039:1;5064:53;5109:7;5100:6;5089:9;5085:22;5064:53;:::i;:::-;5054:63;;5010:117;5166:2;5192:53;5237:7;5228:6;5217:9;5213:22;5192:53;:::i;:::-;5182:63;;5137:118;5294:2;5320:53;5365:7;5356:6;5345:9;5341:22;5320:53;:::i;:::-;5310:63;;5265:118;4771:619;;;;;:::o;5396:86::-;5431:7;5471:4;5464:5;5460:16;5449:27;;5396:86;;;:::o;5488:112::-;5571:22;5587:5;5571:22;:::i;:::-;5566:3;5559:35;5488:112;;:::o;5606:214::-;5695:4;5733:2;5722:9;5718:18;5710:26;;5746:67;5810:1;5799:9;5795:17;5786:6;5746:67;:::i;:::-;5606:214;;;;:::o;5826:118::-;5913:24;5931:5;5913:24;:::i;:::-;5908:3;5901:37;5826:118;;:::o;5950:222::-;6043:4;6081:2;6070:9;6066:18;6058:26;;6094:71;6162:1;6151:9;6147:17;6138:6;6094:71;:::i;:::-;5950:222;;;;:::o;6178:474::-;6246:6;6254;6303:2;6291:9;6282:7;6278:23;6274:32;6271:119;;;6309:79;;:::i;:::-;6271:119;6429:1;6454:53;6499:7;6490:6;6479:9;6475:22;6454:53;:::i;:::-;6444:63;;6400:117;6556:2;6582:53;6627:7;6618:6;6607:9;6603:22;6582:53;:::i;:::-;6572:63;;6527:118;6178:474;;;;;:::o;6658:329::-;6717:6;6766:2;6754:9;6745:7;6741:23;6737:32;6734:119;;;6772:79;;:::i;:::-;6734:119;6892:1;6917:53;6962:7;6953:6;6942:9;6938:22;6917:53;:::i;:::-;6907:63;;6863:117;6658:329;;;;:::o;6993:117::-;7102:1;7099;7092:12;7116:117;7225:1;7222;7215:12;7239:117;7348:1;7345;7338:12;7379:568;7452:8;7462:6;7512:3;7505:4;7497:6;7493:17;7489:27;7479:122;;7520:79;;:::i;:::-;7479:122;7633:6;7620:20;7610:30;;7663:18;7655:6;7652:30;7649:117;;;7685:79;;:::i;:::-;7649:117;7799:4;7791:6;7787:17;7775:29;;7853:3;7845:4;7837:6;7833:17;7823:8;7819:32;7816:41;7813:128;;;7860:79;;:::i;:::-;7813:128;7379:568;;;;;:::o;7953:116::-;8023:21;8038:5;8023:21;:::i;:::-;8016:5;8013:32;8003:60;;8059:1;8056;8049:12;8003:60;7953:116;:::o;8075:133::-;8118:5;8156:6;8143:20;8134:29;;8172:30;8196:5;8172:30;:::i;:::-;8075:133;;;;:::o;8214:698::-;8306:6;8314;8322;8371:2;8359:9;8350:7;8346:23;8342:32;8339:119;;;8377:79;;:::i;:::-;8339:119;8525:1;8514:9;8510:17;8497:31;8555:18;8547:6;8544:30;8541:117;;;8577:79;;:::i;:::-;8541:117;8690:80;8762:7;8753:6;8742:9;8738:22;8690:80;:::i;:::-;8672:98;;;;8468:312;8819:2;8845:50;8887:7;8878:6;8867:9;8863:22;8845:50;:::i;:::-;8835:60;;8790:115;8214:698;;;;;:::o;8918:329::-;8977:6;9026:2;9014:9;9005:7;9001:23;8997:32;8994:119;;;9032:79;;:::i;:::-;8994:119;9152:1;9177:53;9222:7;9213:6;9202:9;9198:22;9177:53;:::i;:::-;9167:63;;9123:117;8918:329;;;;:::o;9253:474::-;9321:6;9329;9378:2;9366:9;9357:7;9353:23;9349:32;9346:119;;;9384:79;;:::i;:::-;9346:119;9504:1;9529:53;9574:7;9565:6;9554:9;9550:22;9529:53;:::i;:::-;9519:63;;9475:117;9631:2;9657:53;9702:7;9693:6;9682:9;9678:22;9657:53;:::i;:::-;9647:63;;9602:118;9253:474;;;;;:::o;9733:180::-;9781:77;9778:1;9771:88;9878:4;9875:1;9868:15;9902:4;9899:1;9892:15;9919:102;9961:8;10008:5;10005:1;10001:13;9980:34;;9919:102;;;:::o;10027:848::-;10088:5;10095:4;10119:6;10110:15;;10143:5;10134:14;;10157:712;10178:1;10168:8;10165:15;10157:712;;;10273:4;10268:3;10264:14;10258:4;10255:24;10252:50;;;10282:18;;:::i;:::-;10252:50;10332:1;10322:8;10318:16;10315:451;;;10747:4;10740:5;10736:16;10727:25;;10315:451;10797:4;10791;10787:15;10779:23;;10827:32;10850:8;10827:32;:::i;:::-;10815:44;;10157:712;;;10027:848;;;;;;;:::o;10881:1073::-;10935:5;11126:8;11116:40;;11147:1;11138:10;;11149:5;;11116:40;11175:4;11165:36;;11192:1;11183:10;;11194:5;;11165:36;11261:4;11309:1;11304:27;;;;11345:1;11340:191;;;;11254:277;;11304:27;11322:1;11313:10;;11324:5;;;11340:191;11385:3;11375:8;11372:17;11369:43;;;11392:18;;:::i;:::-;11369:43;11441:8;11438:1;11434:16;11425:25;;11476:3;11469:5;11466:14;11463:40;;;11483:18;;:::i;:::-;11463:40;11516:5;;;11254:277;;11640:2;11630:8;11627:16;11621:3;11615:4;11612:13;11608:36;11590:2;11580:8;11577:16;11572:2;11566:4;11563:12;11559:35;11543:111;11540:246;;;11696:8;11690:4;11686:19;11677:28;;11731:3;11724:5;11721:14;11718:40;;;11738:18;;:::i;:::-;11718:40;11771:5;;11540:246;11811:42;11849:3;11839:8;11833:4;11830:1;11811:42;:::i;:::-;11796:57;;;;11885:4;11880:3;11876:14;11869:5;11866:25;11863:51;;;11894:18;;:::i;:::-;11863:51;11943:4;11936:5;11932:16;11923:25;;10881:1073;;;;;;:::o;11960:281::-;12018:5;12042:23;12060:4;12042:23;:::i;:::-;12034:31;;12086:25;12102:8;12086:25;:::i;:::-;12074:37;;12130:104;12167:66;12157:8;12151:4;12130:104;:::i;:::-;12121:113;;11960:281;;;;:::o;12247:410::-;12287:7;12310:20;12328:1;12310:20;:::i;:::-;12305:25;;12344:20;12362:1;12344:20;:::i;:::-;12339:25;;12399:1;12396;12392:9;12421:30;12439:11;12421:30;:::i;:::-;12410:41;;12600:1;12591:7;12587:15;12584:1;12581:22;12561:1;12554:9;12534:83;12511:139;;12630:18;;:::i;:::-;12511:139;12295:362;12247:410;;;;:::o;12663:180::-;12711:77;12708:1;12701:88;12808:4;12805:1;12798:15;12832:4;12829:1;12822:15;12849:320;12893:6;12930:1;12924:4;12920:12;12910:22;;12977:1;12971:4;12967:12;12998:18;12988:81;;13054:4;13046:6;13042:17;13032:27;;12988:81;13116:2;13108:6;13105:14;13085:18;13082:38;13079:84;;13135:18;;:::i;:::-;13079:84;12900:269;12849:320;;;:::o;13175:191::-;13215:3;13234:20;13252:1;13234:20;:::i;:::-;13229:25;;13268:20;13286:1;13268:20;:::i;:::-;13263:25;;13311:1;13308;13304:9;13297:16;;13332:3;13329:1;13326:10;13323:36;;;13339:18;;:::i;:::-;13323:36;13175:191;;;;:::o;13372:165::-;13512:17;13508:1;13500:6;13496:14;13489:41;13372:165;:::o;13543:366::-;13685:3;13706:67;13770:2;13765:3;13706:67;:::i;:::-;13699:74;;13782:93;13871:3;13782:93;:::i;:::-;13900:2;13895:3;13891:12;13884:19;;13543:366;;;:::o;13915:419::-;14081:4;14119:2;14108:9;14104:18;14096:26;;14168:9;14162:4;14158:20;14154:1;14143:9;14139:17;14132:47;14196:131;14322:4;14196:131;:::i;:::-;14188:139;;13915:419;;;:::o;14340:180::-;14388:77;14385:1;14378:88;14485:4;14482:1;14475:15;14509:4;14506:1;14499:15;14526:233;14565:3;14588:24;14606:5;14588:24;:::i;:::-;14579:33;;14634:66;14627:5;14624:77;14621:103;;14704:18;;:::i;:::-;14621:103;14751:1;14744:5;14740:13;14733:20;;14526:233;;;:::o;14765:224::-;14905:34;14901:1;14893:6;14889:14;14882:58;14974:7;14969:2;14961:6;14957:15;14950:32;14765:224;:::o;14995:366::-;15137:3;15158:67;15222:2;15217:3;15158:67;:::i;:::-;15151:74;;15234:93;15323:3;15234:93;:::i;:::-;15352:2;15347:3;15343:12;15336:19;;14995:366;;;:::o;15367:419::-;15533:4;15571:2;15560:9;15556:18;15548:26;;15620:9;15614:4;15610:20;15606:1;15595:9;15591:17;15584:47;15648:131;15774:4;15648:131;:::i;:::-;15640:139;;15367:419;;;:::o;15792:225::-;15932:34;15928:1;15920:6;15916:14;15909:58;16001:8;15996:2;15988:6;15984:15;15977:33;15792:225;:::o;16023:366::-;16165:3;16186:67;16250:2;16245:3;16186:67;:::i;:::-;16179:74;;16262:93;16351:3;16262:93;:::i;:::-;16380:2;16375:3;16371:12;16364:19;;16023:366;;;:::o;16395:419::-;16561:4;16599:2;16588:9;16584:18;16576:26;;16648:9;16642:4;16638:20;16634:1;16623:9;16619:17;16612:47;16676:131;16802:4;16676:131;:::i;:::-;16668:139;;16395:419;;;:::o;16820:182::-;16960:34;16956:1;16948:6;16944:14;16937:58;16820:182;:::o;17008:366::-;17150:3;17171:67;17235:2;17230:3;17171:67;:::i;:::-;17164:74;;17247:93;17336:3;17247:93;:::i;:::-;17365:2;17360:3;17356:12;17349:19;;17008:366;;;:::o;17380:419::-;17546:4;17584:2;17573:9;17569:18;17561:26;;17633:9;17627:4;17623:20;17619:1;17608:9;17604:17;17597:47;17661:131;17787:4;17661:131;:::i;:::-;17653:139;;17380:419;;;:::o;17805:223::-;17945:34;17941:1;17933:6;17929:14;17922:58;18014:6;18009:2;18001:6;17997:15;17990:31;17805:223;:::o;18034:366::-;18176:3;18197:67;18261:2;18256:3;18197:67;:::i;:::-;18190:74;;18273:93;18362:3;18273:93;:::i;:::-;18391:2;18386:3;18382:12;18375:19;;18034:366;;;:::o;18406:419::-;18572:4;18610:2;18599:9;18595:18;18587:26;;18659:9;18653:4;18649:20;18645:1;18634:9;18630:17;18623:47;18687:131;18813:4;18687:131;:::i;:::-;18679:139;;18406:419;;;:::o;18831:221::-;18971:34;18967:1;18959:6;18955:14;18948:58;19040:4;19035:2;19027:6;19023:15;19016:29;18831:221;:::o;19058:366::-;19200:3;19221:67;19285:2;19280:3;19221:67;:::i;:::-;19214:74;;19297:93;19386:3;19297:93;:::i;:::-;19415:2;19410:3;19406:12;19399:19;;19058:366;;;:::o;19430:419::-;19596:4;19634:2;19623:9;19619:18;19611:26;;19683:9;19677:4;19673:20;19669:1;19658:9;19654:17;19647:47;19711:131;19837:4;19711:131;:::i;:::-;19703:139;;19430:419;;;:::o;19855:179::-;19995:31;19991:1;19983:6;19979:14;19972:55;19855:179;:::o;20040:366::-;20182:3;20203:67;20267:2;20262:3;20203:67;:::i;:::-;20196:74;;20279:93;20368:3;20279:93;:::i;:::-;20397:2;20392:3;20388:12;20381:19;;20040:366;;;:::o;20412:419::-;20578:4;20616:2;20605:9;20601:18;20593:26;;20665:9;20659:4;20655:20;20651:1;20640:9;20636:17;20629:47;20693:131;20819:4;20693:131;:::i;:::-;20685:139;;20412:419;;;:::o;20837:178::-;20977:30;20973:1;20965:6;20961:14;20954:54;20837:178;:::o;21021:366::-;21163:3;21184:67;21248:2;21243:3;21184:67;:::i;:::-;21177:74;;21260:93;21349:3;21260:93;:::i;:::-;21378:2;21373:3;21369:12;21362:19;;21021:366;;;:::o;21393:419::-;21559:4;21597:2;21586:9;21582:18;21574:26;;21646:9;21640:4;21636:20;21632:1;21621:9;21617:17;21610:47;21674:131;21800:4;21674:131;:::i;:::-;21666:139;;21393:419;;;:::o;21818:222::-;21958:34;21954:1;21946:6;21942:14;21935:58;22027:5;22022:2;22014:6;22010:15;22003:30;21818:222;:::o;22046:366::-;22188:3;22209:67;22273:2;22268:3;22209:67;:::i;:::-;22202:74;;22285:93;22374:3;22285:93;:::i;:::-;22403:2;22398:3;22394:12;22387:19;;22046:366;;;:::o;22418:419::-;22584:4;22622:2;22611:9;22607:18;22599:26;;22671:9;22665:4;22661:20;22657:1;22646:9;22642:17;22635:47;22699:131;22825:4;22699:131;:::i;:::-;22691:139;;22418:419;;;:::o;22843:180::-;22891:77;22888:1;22881:88;22988:4;22985:1;22978:15;23012:4;23009:1;23002:15;23029:185;23069:1;23086:20;23104:1;23086:20;:::i;:::-;23081:25;;23120:20;23138:1;23120:20;:::i;:::-;23115:25;;23159:1;23149:35;;23164:18;;:::i;:::-;23149:35;23206:1;23203;23199:9;23194:14;;23029:185;;;;:::o;23220:194::-;23260:4;23280:20;23298:1;23280:20;:::i;:::-;23275:25;;23314:20;23332:1;23314:20;:::i;:::-;23309:25;;23358:1;23355;23351:9;23343:17;;23382:1;23376:4;23373:11;23370:37;;;23387:18;;:::i;:::-;23370:37;23220:194;;;;:::o;23420:180::-;23468:77;23465:1;23458:88;23565:4;23562:1;23555:15;23589:4;23586:1;23579:15;23606:143;23663:5;23694:6;23688:13;23679:22;;23710:33;23737:5;23710:33;:::i;:::-;23606:143;;;;:::o;23755:351::-;23825:6;23874:2;23862:9;23853:7;23849:23;23845:32;23842:119;;;23880:79;;:::i;:::-;23842:119;24000:1;24025:64;24081:7;24072:6;24061:9;24057:22;24025:64;:::i;:::-;24015:74;;23971:128;23755:351;;;;:::o;24112:85::-;24157:7;24186:5;24175:16;;24112:85;;;:::o;24203:158::-;24261:9;24294:61;24312:42;24321:32;24347:5;24321:32;:::i;:::-;24312:42;:::i;:::-;24294:61;:::i;:::-;24281:74;;24203:158;;;:::o;24367:147::-;24462:45;24501:5;24462:45;:::i;:::-;24457:3;24450:58;24367:147;;:::o;24520:114::-;24587:6;24621:5;24615:12;24605:22;;24520:114;;;:::o;24640:184::-;24739:11;24773:6;24768:3;24761:19;24813:4;24808:3;24804:14;24789:29;;24640:184;;;;:::o;24830:132::-;24897:4;24920:3;24912:11;;24950:4;24945:3;24941:14;24933:22;;24830:132;;;:::o;24968:108::-;25045:24;25063:5;25045:24;:::i;:::-;25040:3;25033:37;24968:108;;:::o;25082:179::-;25151:10;25172:46;25214:3;25206:6;25172:46;:::i;:::-;25250:4;25245:3;25241:14;25227:28;;25082:179;;;;:::o;25267:113::-;25337:4;25369;25364:3;25360:14;25352:22;;25267:113;;;:::o;25416:732::-;25535:3;25564:54;25612:5;25564:54;:::i;:::-;25634:86;25713:6;25708:3;25634:86;:::i;:::-;25627:93;;25744:56;25794:5;25744:56;:::i;:::-;25823:7;25854:1;25839:284;25864:6;25861:1;25858:13;25839:284;;;25940:6;25934:13;25967:63;26026:3;26011:13;25967:63;:::i;:::-;25960:70;;26053:60;26106:6;26053:60;:::i;:::-;26043:70;;25899:224;25886:1;25883;25879:9;25874:14;;25839:284;;;25843:14;26139:3;26132:10;;25540:608;;;25416:732;;;;:::o;26154:831::-;26417:4;26455:3;26444:9;26440:19;26432:27;;26469:71;26537:1;26526:9;26522:17;26513:6;26469:71;:::i;:::-;26550:80;26626:2;26615:9;26611:18;26602:6;26550:80;:::i;:::-;26677:9;26671:4;26667:20;26662:2;26651:9;26647:18;26640:48;26705:108;26808:4;26799:6;26705:108;:::i;:::-;26697:116;;26823:72;26891:2;26880:9;26876:18;26867:6;26823:72;:::i;:::-;26905:73;26973:3;26962:9;26958:19;26949:6;26905:73;:::i;:::-;26154:831;;;;;;;;:::o;26991:224::-;27131:34;27127:1;27119:6;27115:14;27108:58;27200:7;27195:2;27187:6;27183:15;27176:32;26991:224;:::o;27221:366::-;27363:3;27384:67;27448:2;27443:3;27384:67;:::i;:::-;27377:74;;27460:93;27549:3;27460:93;:::i;:::-;27578:2;27573:3;27569:12;27562:19;;27221:366;;;:::o;27593:419::-;27759:4;27797:2;27786:9;27782:18;27774:26;;27846:9;27840:4;27836:20;27832:1;27821:9;27817:17;27810:47;27874:131;28000:4;27874:131;:::i;:::-;27866:139;;27593:419;;;:::o;28018:222::-;28158:34;28154:1;28146:6;28142:14;28135:58;28227:5;28222:2;28214:6;28210:15;28203:30;28018:222;:::o;28246:366::-;28388:3;28409:67;28473:2;28468:3;28409:67;:::i;:::-;28402:74;;28485:93;28574:3;28485:93;:::i;:::-;28603:2;28598:3;28594:12;28587:19;;28246:366;;;:::o;28618:419::-;28784:4;28822:2;28811:9;28807:18;28799:26;;28871:9;28865:4;28861:20;28857:1;28846:9;28842:17;28835:47;28899:131;29025:4;28899:131;:::i;:::-;28891:139;;28618:419;;;:::o;29043:225::-;29183:34;29179:1;29171:6;29167:14;29160:58;29252:8;29247:2;29239:6;29235:15;29228:33;29043:225;:::o;29274:366::-;29416:3;29437:67;29501:2;29496:3;29437:67;:::i;:::-;29430:74;;29513:93;29602:3;29513:93;:::i;:::-;29631:2;29626:3;29622:12;29615:19;;29274:366;;;:::o;29646:419::-;29812:4;29850:2;29839:9;29835:18;29827:26;;29899:9;29893:4;29889:20;29885:1;29874:9;29870:17;29863:47;29927:131;30053:4;29927:131;:::i;:::-;29919:139;;29646:419;;;:::o

Swarm Source

ipfs://c3b970893ba7273276fbceaa7e06945659d805b7c02c853ad299b5f66aab0cc6
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.