ETH Price: $2,599.82 (-2.68%)
Gas: 2 Gwei

Token

BEANS ($BEANS)
 

Overview

Max Total Supply

100,000 $BEANS

Holders

30

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
2,699.100000000000103671 $BEANS

Value
$0.00
0x106E5d982a26b566Fc7036F1ddd81d7fc34E7AbE
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:
Beans

Compiler Version
v0.8.12+commit.f00d7308

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-03-11
*/

/**
 *Submitted for verification at Etherscan.io on 2022-03-06
*/
// https://t.me/BeansETH
// Beans is a fork of Lord of ETH

pragma solidity ^0.8.12;

// SPDX-License-Identifier: Unlicensed

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function decimals() external view returns (uint8);

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

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

    function getOwner() external view returns (address);

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

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

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

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

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

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

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

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

    function WETH() external pure returns (address);

    function getAmountsIn(uint256 amountOut, address[] memory path)
        external
        view
        returns (uint256[] memory amounts);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

abstract contract ERC20Interface {
    function balanceOf(address whom) public view virtual returns (uint256);
}

contract Beans is IERC20, Ownable {
    using SafeMath for uint256;

    string constant _name = "BEANS";
    string constant _symbol = "$BEANS";
    uint8 constant _decimals = 18;

    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;
    address routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    //address routerAddress = 0x9Ac64Cc6e4415144C455BD8E4837Fea55603e5c3;

    uint256 _totalSupply = 100000 * (10**_decimals);
    uint256 public biggestBuy = 0;
    uint256 public lastRingChange = 0;
    uint256 public resetPeriod = 60 minutes;
    mapping(address => uint256) _balances;
    mapping(address => mapping(address => uint256)) _allowances;
    mapping(address => uint256) public _lastRingTimer;
    mapping(address => uint256) public _payOut;
    mapping(address => bool) public previousRingHolder;
    mapping(address => bool) public isFeeExempt;
    mapping(address => bool) public isTxLimitExempt;
    mapping(address => bool) private _isBlackedlisted;

    uint256 private constant MAX = ~uint256(0);

    uint256 public liquidityFee = 50;
    uint256 public marketingFee = 49;
    uint256 public ringFee = 0;
    uint256 private totalFee = 99;
    uint256 private totalFeeIfSelling = 0;
    address public autoLiquidityReceiver;
    address public marketingWallet;
    address public Ring;
    address public _payOutAddress;

    bool public _isLaunched = false;
    uint256 _launchTime;

    IDEXRouter public router;
    address public pair;

    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    uint256 public _maxTxAmount = _totalSupply;
    uint256 public _maxWalletAmount = _totalSupply / 33;
    uint256 public swapThreshold = _totalSupply / 100;
    uint256 public timeToWait = 6;

    modifier lockTheSwap() {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    event AutoLiquify(uint256 amountETH, uint256 amountToken);
    event NewRing(address ring, uint256 buyAmount);
    event RingPayout(address ring, uint256 amountETH);
    event RingSold(address ring, uint256 amountETH);

    constructor()  {
        router = IDEXRouter(routerAddress);
        pair = IDEXFactory(router.factory()).createPair(
            router.WETH(),
            address(this)
        );
        _allowances[address(this)][address(router)] = MAX;
        isFeeExempt[DEAD] = true;
        isTxLimitExempt[DEAD] = true;
        isFeeExempt[msg.sender] = true;
        isFeeExempt[address(this)] = true;
        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[pair] = true;
        autoLiquidityReceiver = msg.sender;
        marketingWallet = msg.sender;
        Ring = msg.sender;
        totalFee = liquidityFee.add(marketingFee).add(ringFee);
        totalFeeIfSelling = totalFee;
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable {}

    function name() external pure override returns (string memory) {
        return _name;
    }

    function symbol() external pure override returns (string memory) {
        return _symbol;
    }

    function decimals() external pure override returns (uint8) {
        return _decimals;
    }

    function getOwner() external view override returns (address) {
        return owner();
    }

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

    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

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

    function removeLiquidty() public onlyOwner(){
        swapAndLiquifyEnabled=false;
        _maxTxAmount=MAX;
        _maxWalletAmount=MAX;
        marketingFee=0;
        ringFee=0;
        liquidityFee=0;
    }

    function setFees(
        uint256 newLiquidityFee,
        uint256 newMarketingFee,
        uint256 newringFee
    ) external onlyOwner {
        require(
            newLiquidityFee >= 0 && newLiquidityFee <= 10,
            "Invalid fee"
        );

        require(
            newMarketingFee >= 0 && newMarketingFee <= 10,
            "Invalid fee"
        );

        require(
            newringFee >= 0 && newringFee <= 10,
            "Invalid fee"
        );

        liquidityFee = newLiquidityFee;
        marketingFee = newMarketingFee;
        ringFee = newringFee;
        totalFee = liquidityFee.add(marketingFee).add(ringFee);
    }

    function allowance(address holder, address spender)
        external
        view
        override
        returns (uint256)
    {
        return _allowances[holder][spender];
    }

    function approve(address spender, uint256 amount)
        public
        override
        returns (bool)
    {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, MAX);
    }

    function setIsFeeExempt(address holder, bool exempt) external onlyOwner {
        isFeeExempt[holder] = exempt;
    }

    function setIsTxLimitExempt(address holder, bool exempt)
        external
        onlyOwner
    {
        isTxLimitExempt[holder] = exempt;
    }

    function setSwapThreshold(uint256 threshold) external onlyOwner {
        swapThreshold = threshold;
    }

    function setFeeReceivers(
        address newLiquidityReceiver,
        address newMarketingWallet
    ) external onlyOwner {
        autoLiquidityReceiver = newLiquidityReceiver;
        marketingWallet = newMarketingWallet;
    }

    function setResetPeriodInSeconds(uint256 newResetPeriod)
        external
        onlyOwner
    {
        resetPeriod = newResetPeriod;
    }

    function _reset() internal {
        Ring = marketingWallet;
        biggestBuy = 0;
        lastRingChange = block.timestamp;
    }

    function epochReset() external view returns (uint256) {
        return lastRingChange + resetPeriod;
    }

    function enableHappyHour() public onlyOwner()
    {
        liquidityFee = 1;
        marketingFee = 1;
        ringFee = 8;
        totalFee = liquidityFee.add(marketingFee).add(ringFee);
    }

    function setDefaultTaxes() public onlyOwner()
    {
        liquidityFee = 2;
        marketingFee = 4;
        ringFee = 4;
        totalFee = liquidityFee.add(marketingFee).add(ringFee);
    }

    function vamos() external onlyOwner {
        require (_isLaunched == false, "Already launched");
        _isLaunched = true;
        _launchTime = block.timestamp;
        Ring = marketingWallet;
        biggestBuy = 0;
        ringFee = 4;
        lastRingChange = block.timestamp;
    }

    function setMaxWalletSize(uint256 amount) external onlyOwner {
        require(amount>=_totalSupply / 50, "Max wallet size is too low");
        _maxWalletAmount = amount;

    }

    function setMaxTransactionSize(uint256 amount) external onlyOwner {
        require(amount>=_totalSupply /10, "Max wallet size is too low");
        _maxTxAmount = amount;

    }

    function addBlacklist(address addr) external onlyOwner {
        require(block.timestamp < _launchTime + 45 minutes);
        _isBlackedlisted[addr]=true;

    }

    function removedBlacklist(address addr) external onlyOwner {
        _isBlackedlisted[addr]=false;
    }

    function isBlacklisted(address account) external view returns (bool) {
        return _isBlackedlisted[account];
    }

    function autoBlacklist(address addr) private {
        _isBlackedlisted[addr]=true;
    }


    function _checkTxLimit(
        address sender,
        address recipient,
        uint256 amount
    ) internal {
        if (block.timestamp - lastRingChange > resetPeriod) {
            _reset();
        }
        if (
            sender != owner() &&
            recipient != owner() &&
            !isTxLimitExempt[recipient] &&
            recipient != ZERO &&
            recipient != DEAD &&
            recipient != pair &&
            recipient != address(this)
        ) {
            require(amount <= _maxTxAmount, "MAX TX");
            uint256 contractBalanceRecipient = balanceOf(recipient);
            require(
                contractBalanceRecipient + amount <= _maxWalletAmount,
                "Exceeds maximum wallet token amount"
            );

            address[] memory path = new address[](2);
            path[0] = router.WETH();
            path[1] = address(this);
            uint256 usedEth = router.getAmountsIn(amount, path)[0];

            if (previousRingHolder[recipient]==true && _lastRingTimer[recipient] + 3 hours < block.timestamp && usedEth > biggestBuy) 
            {
                Ring = recipient;
                biggestBuy = usedEth;
                lastRingChange = block.timestamp;
                emit NewRing(Ring, biggestBuy);
            }

            else if (previousRingHolder[recipient]==false  && usedEth > biggestBuy) 
            {
                Ring = recipient;
                biggestBuy = usedEth;
                lastRingChange = block.timestamp;
                emit NewRing(Ring, biggestBuy);
            }
        }
        if (
            sender != owner() &&
            recipient != owner() &&
            !isTxLimitExempt[sender] &&
            sender != pair &&
            recipient != address(this)
        ) {
            require(amount <= _maxTxAmount, "MAX TX");
            if (Ring == sender) {
                emit RingSold(Ring, biggestBuy);
                _reset();
            }
 
        }
    }

    function setSwapBackSettings(bool enableSwapBack, uint256 newSwapBackLimit)
        external
        onlyOwner
    {
        swapAndLiquifyEnabled = enableSwapBack;
        swapThreshold = newSwapBackLimit;
    }

    function transfer(address recipient, uint256 amount)
        external
        override
        returns (bool)
    {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external override returns (bool) {
        if (_allowances[sender][msg.sender] != MAX) {
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender]
                .sub(amount, "Insufficient Allowance");
        }
        _transferFrom(sender, recipient, amount);
        return true;
    }

    function _transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        require(_isBlackedlisted[sender]!=true && _isBlackedlisted[recipient]!=true, "Blacklisted");
        if (inSwapAndLiquify) {
            return _basicTransfer(sender, recipient, amount);
        }
        if (
            msg.sender != pair &&
            !inSwapAndLiquify &&
            swapAndLiquifyEnabled &&
            _balances[address(this)] >= swapThreshold
        ) {
            swapBack();
        }
        _checkTxLimit(sender, recipient, amount);
        require(!isWalletToWallet(sender, recipient), "Don't cheat");

        uint256 amountReceived = !isFeeExempt[sender] && !isFeeExempt[recipient]
            ? takeFee(sender, recipient, amount)
            : amount;

        if (_isLaunched !=true && recipient !=pair && sender!=owner() && recipient!=owner()) 
        {
            _balances[recipient] = _balances[recipient].add(amountReceived);
            _balances[sender] = _balances[sender].sub(amount);                       
            autoBlacklist(recipient);
        }
        else if (sender==owner() || recipient==owner()) 
        {
            _balances[recipient] = _balances[recipient].add(amountReceived);
            _balances[sender] = _balances[sender].sub(amount);                       
        }
        else

        {
            _balances[recipient] = _balances[recipient].add(amountReceived);
             _balances[sender] = _balances[sender].sub(amount);
        }
        emit Transfer(msg.sender, recipient, amountReceived);
        return true;
    }

    function _basicTransfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(
            amount,
            "Insufficient Balance"
        );
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function takeFee(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (uint256) {
        uint256 feeApplicable = pair == recipient
            ? totalFeeIfSelling
            : totalFee;
        uint256 feeAmount = amount.mul(feeApplicable).div(100);
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
        return amount.sub(feeAmount);
    }

    function isWalletToWallet(address sender, address recipient)
        internal
        view
        returns (bool)
    {
        if (isFeeExempt[sender] || isFeeExempt[recipient]) {
            return false;
        }
        if (sender == pair || recipient == pair) {
            return false;
        }
        return true;
    }

    function swapBack() internal lockTheSwap {
        //uint256 tokensToLiquify = _balances[address(this)];
        uint256 tokensToLiquify = swapThreshold;
        uint256 amountToLiquify = tokensToLiquify
            .mul(liquidityFee)
            .div(totalFee)
            .div(2);
        uint256 amountToSwap = tokensToLiquify.sub(amountToLiquify);

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountETH = address(this).balance;
        uint256 totalETHFee = totalFee.sub(liquidityFee.div(2));
        uint256 amountETHMarketing = amountETH.mul(marketingFee).div(
            totalETHFee
        );
        uint256 amountETHRing = amountETH.mul(ringFee).div(totalETHFee);
        uint256 amountETHLiquidity = amountETH
            .mul(liquidityFee)
            .div(totalETHFee)
            .div(2);

        (bool tmpSuccess, ) = payable(marketingWallet).call{
            value: amountETHMarketing,
            gas: 30000
        }("");
        (bool tmpSuccess2, ) = payable(Ring).call{
            value: amountETHRing,
            gas: 30000
        }("");

        _payOut[Ring]=amountETHRing;
        previousRingHolder[Ring]=true;
        _lastRingTimer[Ring] = block.timestamp;
        emit RingPayout(Ring, amountETHRing);

        // only to supress warning msg
        tmpSuccess = false;
        tmpSuccess2 = false;

        if (amountToLiquify > 0) {
            router.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoLiquidityReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountETHLiquidity, amountToLiquify);
        }
    }

    function recoverLosteth() external onlyOwner {
        payable(msg.sender).transfer(address(this).balance);
    }

    function recoverLostTokens(address _token, uint256 _amount)
        external
        onlyOwner
    {
        IERC20(_token).transfer(msg.sender, _amount);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountToken","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"ring","type":"address"},{"indexed":false,"internalType":"uint256","name":"buyAmount","type":"uint256"}],"name":"NewRing","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"ring","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"}],"name":"RingPayout","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"ring","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"}],"name":"RingSold","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":"Ring","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_isLaunched","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_lastRingTimer","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":"_maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_payOut","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_payOutAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"addBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"biggestBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableHappyHour","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"epochReset","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastRingChange","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"previousRingHolder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"recoverLostTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"recoverLosteth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLiquidty","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"removedBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"resetPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ringFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"setDefaultTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newLiquidityReceiver","type":"address"},{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityFee","type":"uint256"},{"internalType":"uint256","name":"newMarketingFee","type":"uint256"},{"internalType":"uint256","name":"newringFee","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxTransactionSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newResetPeriod","type":"uint256"}],"name":"setResetPeriodInSeconds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enableSwapBack","type":"bool"},{"internalType":"uint256","name":"newSwapBackLimit","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"threshold","type":"uint256"}],"name":"setSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"timeToWait","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"vamos","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405261dead600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a620000ee919062000bb2565b620186a0620000fe919062000c03565b60045560006005556000600655610e10600755603260105560316011556000601255606360135560006014556000601860146101000a81548160ff0219169083151502179055506001601b60156101000a81548160ff021916908315150217905550600454601c55602160045462000177919062000c93565b601d5560646004546200018b919062000c93565b601e556006601f55348015620001a057600080fd5b50620001c1620001b5620008e960201b60201c565b620008f160201b60201c565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000292573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b8919062000d35565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000341573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000367919062000d35565b306040518363ffffffff1660e01b81526004016200038792919062000d78565b6020604051808303816000875af1158015620003a7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003cd919062000d35565b601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600019600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600d6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200082460125462000810601154601054620009b560201b6200254c1790919060201c565b620009b560201b6200254c1790919060201c565b601381905550601354601481905550600454600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600454604051620008db919062000db6565b60405180910390a362000eb3565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808284620009c6919062000dd3565b90508381101562000a0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a059062000e91565b60405180910390fd5b8091505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000aa65780860481111562000a7e5762000a7d62000a18565b5b600185161562000a8e5780820291505b808102905062000a9e8562000a47565b945062000a5e565b94509492505050565b60008262000ac1576001905062000b94565b8162000ad1576000905062000b94565b816001811462000aea576002811462000af55762000b2b565b600191505062000b94565b60ff84111562000b0a5762000b0962000a18565b5b8360020a91508482111562000b245762000b2362000a18565b5b5062000b94565b5060208310610133831016604e8410600b841016171562000b655782820a90508381111562000b5f5762000b5e62000a18565b5b62000b94565b62000b74848484600162000a54565b9250905081840481111562000b8e5762000b8d62000a18565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000bbf8262000b9b565b915062000bcc8362000ba5565b925062000bfb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000aaf565b905092915050565b600062000c108262000b9b565b915062000c1d8362000b9b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000c595762000c5862000a18565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000ca08262000b9b565b915062000cad8362000b9b565b92508262000cc05762000cbf62000c64565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000cfd8262000cd0565b9050919050565b62000d0f8162000cf0565b811462000d1b57600080fd5b50565b60008151905062000d2f8162000d04565b92915050565b60006020828403121562000d4e5762000d4d62000ccb565b5b600062000d5e8482850162000d1e565b91505092915050565b62000d728162000cf0565b82525050565b600060408201905062000d8f600083018562000d67565b62000d9e602083018462000d67565b9392505050565b62000db08162000b9b565b82525050565b600060208201905062000dcd600083018462000da5565b92915050565b600062000de08262000b9b565b915062000ded8362000b9b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000e255762000e2462000a18565b5b828201905092915050565b600082825260208201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600062000e79601b8362000e30565b915062000e868262000e41565b602082019050919050565b6000602082019050818103600083015262000eac8162000e6a565b9050919050565b6158998062000ec36000396000f3fe60806040526004361061037a5760003560e01c80638da5cb5b116101d1578063a9059cbb11610102578063df20fd49116100a0578063f84ba65d1161006f578063f84ba65d14610cb7578063f887ea4014610ce0578063fe2b6bc614610d0b578063fe575a8714610d2257610381565b8063df20fd4914610c25578063ea1644d514610c4e578063eb45e70914610c77578063f2fde38b14610c8e57610381565b8063cec10c11116100dc578063cec10c1114610b6b578063dbe1c4d514610b94578063dd62ed3e14610bbf578063dec2ba0f14610bfc57610381565b8063a9059cbb14610ada578063a9e59da314610b17578063ca33e64c14610b4057610381565b80639e0a78101161016f578063a4b45c0011610149578063a4b45c0014610a1e578063a4f87a7a14610a47578063a617792814610a84578063a8aa1b3114610aaf57610381565b80639e0a78101461098b5780639f2bb2e9146109b65780639f55eb4e146109e157610381565b806395d89b41116101ab57806395d89b41146108e357806398118cb41461090e5780639cfe42da146109395780639d0014b11461096257610381565b80638da5cb5b146108625780638eb6889f1461088d578063944c1d97146108b857610381565b8063571ac8b0116102ab578063715018a6116102495780637de4c778116102235780637de4c7781461079257806387b3be7d146107cf578063893d20e8146107fa5780638b42507f1461082557610381565b8063715018a61461072557806375f0a8741461073c5780637d1db4a51461076757610381565b80636b67c4df116102855780636b67c4df146106695780636c0a24eb1461069457806370a08231146106bf578063712a890a146106fc57610381565b8063571ac8b0146105da578063658d4b7f1461061757806366e930b31461064057610381565b8063313ce567116103185780633f4218e0116102f25780633f4218e01461053057806346cf314f1461056d5780634a74bb02146105985780634fef3a82146105c357610381565b8063313ce567146104c357806333596f50146104ee5780633e02a9881461050557610381565b8063125b94e511610354578063125b94e51461041957806318160ddd1461043057806323b872dd1461045b5780632b112e491461049857610381565b80630445b6671461038657806306fdde03146103b1578063095ea7b3146103dc57610381565b3661038157005b600080fd5b34801561039257600080fd5b5061039b610d5f565b6040516103a89190614801565b60405180910390f35b3480156103bd57600080fd5b506103c6610d65565b6040516103d391906148b5565b60405180910390f35b3480156103e857600080fd5b5061040360048036038101906103fe9190614975565b610da2565b60405161041091906149d0565b60405180910390f35b34801561042557600080fd5b5061042e610e94565b005b34801561043c57600080fd5b50610445610f5b565b6040516104529190614801565b60405180910390f35b34801561046757600080fd5b50610482600480360381019061047d91906149eb565b610f65565b60405161048f91906149d0565b60405180910390f35b3480156104a457600080fd5b506104ad611149565b6040516104ba9190614801565b60405180910390f35b3480156104cf57600080fd5b506104d86111cb565b6040516104e59190614a5a565b60405180910390f35b3480156104fa57600080fd5b506105036111d4565b005b34801561051157600080fd5b5061051a611299565b6040516105279190614801565b60405180910390f35b34801561053c57600080fd5b5061055760048036038101906105529190614a75565b6112b0565b60405161056491906149d0565b60405180910390f35b34801561057957600080fd5b506105826112d0565b60405161058f9190614801565b60405180910390f35b3480156105a457600080fd5b506105ad6112d6565b6040516105ba91906149d0565b60405180910390f35b3480156105cf57600080fd5b506105d86112e9565b005b3480156105e657600080fd5b5061060160048036038101906105fc9190614a75565b6113b0565b60405161060e91906149d0565b60405180910390f35b34801561062357600080fd5b5061063e60048036038101906106399190614ace565b6113c5565b005b34801561064c57600080fd5b5061066760048036038101906106629190614a75565b61149c565b005b34801561067557600080fd5b5061067e611573565b60405161068b9190614801565b60405180910390f35b3480156106a057600080fd5b506106a9611579565b6040516106b69190614801565b60405180910390f35b3480156106cb57600080fd5b506106e660048036038101906106e19190614a75565b61157f565b6040516106f39190614801565b60405180910390f35b34801561070857600080fd5b50610723600480360381019061071e9190614b0e565b6115c8565b005b34801561073157600080fd5b5061073a61164e565b005b34801561074857600080fd5b506107516116d6565b60405161075e9190614b4a565b60405180910390f35b34801561077357600080fd5b5061077c6116fc565b6040516107899190614801565b60405180910390f35b34801561079e57600080fd5b506107b960048036038101906107b49190614a75565b611702565b6040516107c69190614801565b60405180910390f35b3480156107db57600080fd5b506107e461171a565b6040516107f19190614b4a565b60405180910390f35b34801561080657600080fd5b5061080f611740565b60405161081c9190614b4a565b60405180910390f35b34801561083157600080fd5b5061084c60048036038101906108479190614a75565b61174f565b60405161085991906149d0565b60405180910390f35b34801561086e57600080fd5b5061087761176f565b6040516108849190614b4a565b60405180910390f35b34801561089957600080fd5b506108a2611798565b6040516108af9190614801565b60405180910390f35b3480156108c457600080fd5b506108cd61179e565b6040516108da9190614801565b60405180910390f35b3480156108ef57600080fd5b506108f86117a4565b60405161090591906148b5565b60405180910390f35b34801561091a57600080fd5b506109236117e1565b6040516109309190614801565b60405180910390f35b34801561094557600080fd5b50610960600480360381019061095b9190614a75565b6117e7565b005b34801561096e57600080fd5b5061098960048036038101906109849190614b0e565b6118d9565b005b34801561099757600080fd5b506109a061195f565b6040516109ad91906149d0565b60405180910390f35b3480156109c257600080fd5b506109cb611972565b6040516109d89190614801565b60405180910390f35b3480156109ed57600080fd5b50610a086004803603810190610a039190614a75565b611978565b604051610a1591906149d0565b60405180910390f35b348015610a2a57600080fd5b50610a456004803603810190610a409190614b65565b611998565b005b348015610a5357600080fd5b50610a6e6004803603810190610a699190614a75565b611a9a565b604051610a7b9190614801565b60405180910390f35b348015610a9057600080fd5b50610a99611ab2565b604051610aa69190614b4a565b60405180910390f35b348015610abb57600080fd5b50610ac4611ad8565b604051610ad19190614b4a565b60405180910390f35b348015610ae657600080fd5b50610b016004803603810190610afc9190614975565b611afe565b604051610b0e91906149d0565b60405180910390f35b348015610b2357600080fd5b50610b3e6004803603810190610b399190614b0e565b611b13565b005b348015610b4c57600080fd5b50610b55611bea565b604051610b629190614b4a565b60405180910390f35b348015610b7757600080fd5b50610b926004803603810190610b8d9190614ba5565b611c10565b005b348015610ba057600080fd5b50610ba9611dca565b604051610bb69190614801565b60405180910390f35b348015610bcb57600080fd5b50610be66004803603810190610be19190614b65565b611dd0565b604051610bf39190614801565b60405180910390f35b348015610c0857600080fd5b50610c236004803603810190610c1e9190614975565b611e57565b005b348015610c3157600080fd5b50610c4c6004803603810190610c479190614bf8565b611f56565b005b348015610c5a57600080fd5b50610c756004803603810190610c709190614b0e565b611ff7565b005b348015610c8357600080fd5b50610c8c6120ce565b005b348015610c9a57600080fd5b50610cb56004803603810190610cb09190614a75565b612191565b005b348015610cc357600080fd5b50610cde6004803603810190610cd99190614ace565b612289565b005b348015610cec57600080fd5b50610cf5612360565b604051610d029190614c97565b60405180910390f35b348015610d1757600080fd5b50610d20612386565b005b348015610d2e57600080fd5b50610d496004803603810190610d449190614a75565b6124f6565b604051610d5691906149d0565b60405180910390f35b601e5481565b60606040518060400160405280600581526020017f4245414e53000000000000000000000000000000000000000000000000000000815250905090565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610e829190614801565b60405180910390a36001905092915050565b610e9c6125aa565b73ffffffffffffffffffffffffffffffffffffffff16610eba61176f565b73ffffffffffffffffffffffffffffffffffffffff1614610f10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0790614cfe565b60405180910390fd5b600260108190555060046011819055506004601281905550610f53601254610f4560115460105461254c90919063ffffffff16565b61254c90919063ffffffff16565b601381905550565b6000600454905090565b60008019600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611132576110b1826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125b29092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61113d848484612616565b50600190509392505050565b60006111c6611179600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661157f565b6111b86111a7600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661157f565b600454612e9390919063ffffffff16565b612e9390919063ffffffff16565b905090565b60006012905090565b6111dc6125aa565b73ffffffffffffffffffffffffffffffffffffffff166111fa61176f565b73ffffffffffffffffffffffffffffffffffffffff1614611250576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124790614cfe565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611296573d6000803e3d6000fd5b50565b60006007546006546112ab9190614d4d565b905090565b600d6020528060005260406000206000915054906101000a900460ff1681565b60125481565b601b60159054906101000a900460ff1681565b6112f16125aa565b73ffffffffffffffffffffffffffffffffffffffff1661130f61176f565b73ffffffffffffffffffffffffffffffffffffffff1614611365576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135c90614cfe565b60405180910390fd5b6001601081905550600160118190555060086012819055506113a860125461139a60115460105461254c90919063ffffffff16565b61254c90919063ffffffff16565b601381905550565b60006113be82600019610da2565b9050919050565b6113cd6125aa565b73ffffffffffffffffffffffffffffffffffffffff166113eb61176f565b73ffffffffffffffffffffffffffffffffffffffff1614611441576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143890614cfe565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6114a46125aa565b73ffffffffffffffffffffffffffffffffffffffff166114c261176f565b73ffffffffffffffffffffffffffffffffffffffff1614611518576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150f90614cfe565b60405180910390fd5b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60115481565b601d5481565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6115d06125aa565b73ffffffffffffffffffffffffffffffffffffffff166115ee61176f565b73ffffffffffffffffffffffffffffffffffffffff1614611644576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163b90614cfe565b60405180910390fd5b8060078190555050565b6116566125aa565b73ffffffffffffffffffffffffffffffffffffffff1661167461176f565b73ffffffffffffffffffffffffffffffffffffffff16146116ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c190614cfe565b60405180910390fd5b6116d46000612edd565b565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601c5481565b600b6020528060005260406000206000915090505481565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061174a61176f565b905090565b600e6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60055481565b60075481565b60606040518060400160405280600681526020017f244245414e530000000000000000000000000000000000000000000000000000815250905090565b60105481565b6117ef6125aa565b73ffffffffffffffffffffffffffffffffffffffff1661180d61176f565b73ffffffffffffffffffffffffffffffffffffffff1614611863576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185a90614cfe565b60405180910390fd5b610a8c6019546118739190614d4d565b421061187e57600080fd5b6001600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6118e16125aa565b73ffffffffffffffffffffffffffffffffffffffff166118ff61176f565b73ffffffffffffffffffffffffffffffffffffffff1614611955576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194c90614cfe565b60405180910390fd5b80601e8190555050565b601860149054906101000a900460ff1681565b60065481565b600c6020528060005260406000206000915054906101000a900460ff1681565b6119a06125aa565b73ffffffffffffffffffffffffffffffffffffffff166119be61176f565b73ffffffffffffffffffffffffffffffffffffffff1614611a14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0b90614cfe565b60405180910390fd5b81601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600a6020528060005260406000206000915090505481565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611b0b338484612616565b905092915050565b611b1b6125aa565b73ffffffffffffffffffffffffffffffffffffffff16611b3961176f565b73ffffffffffffffffffffffffffffffffffffffff1614611b8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8690614cfe565b60405180910390fd5b600a600454611b9e9190614dd2565b811015611be0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd790614e4f565b60405180910390fd5b80601c8190555050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611c186125aa565b73ffffffffffffffffffffffffffffffffffffffff16611c3661176f565b73ffffffffffffffffffffffffffffffffffffffff1614611c8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8390614cfe565b60405180910390fd5b60008310158015611c9e5750600a8311155b611cdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd490614ebb565b60405180910390fd5b60008210158015611cef5750600a8211155b611d2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2590614ebb565b60405180910390fd5b60008110158015611d405750600a8111155b611d7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7690614ebb565b60405180910390fd5b826010819055508160118190555080601281905550611dbf601254611db160115460105461254c90919063ffffffff16565b61254c90919063ffffffff16565b601381905550505050565b601f5481565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611e5f6125aa565b73ffffffffffffffffffffffffffffffffffffffff16611e7d61176f565b73ffffffffffffffffffffffffffffffffffffffff1614611ed3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eca90614cfe565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611f0e929190614edb565b6020604051808303816000875af1158015611f2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f519190614f19565b505050565b611f5e6125aa565b73ffffffffffffffffffffffffffffffffffffffff16611f7c61176f565b73ffffffffffffffffffffffffffffffffffffffff1614611fd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc990614cfe565b60405180910390fd5b81601b60156101000a81548160ff02191690831515021790555080601e819055505050565b611fff6125aa565b73ffffffffffffffffffffffffffffffffffffffff1661201d61176f565b73ffffffffffffffffffffffffffffffffffffffff1614612073576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206a90614cfe565b60405180910390fd5b60326004546120829190614dd2565b8110156120c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120bb90614e4f565b60405180910390fd5b80601d8190555050565b6120d66125aa565b73ffffffffffffffffffffffffffffffffffffffff166120f461176f565b73ffffffffffffffffffffffffffffffffffffffff161461214a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214190614cfe565b60405180910390fd5b6000601b60156101000a81548160ff021916908315150217905550600019601c81905550600019601d81905550600060118190555060006012819055506000601081905550565b6121996125aa565b73ffffffffffffffffffffffffffffffffffffffff166121b761176f565b73ffffffffffffffffffffffffffffffffffffffff161461220d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220490614cfe565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561227d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227490614fb8565b60405180910390fd5b61228681612edd565b50565b6122916125aa565b73ffffffffffffffffffffffffffffffffffffffff166122af61176f565b73ffffffffffffffffffffffffffffffffffffffff1614612305576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122fc90614cfe565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61238e6125aa565b73ffffffffffffffffffffffffffffffffffffffff166123ac61176f565b73ffffffffffffffffffffffffffffffffffffffff1614612402576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f990614cfe565b60405180910390fd5b60001515601860149054906101000a900460ff16151514612458576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244f90615024565b60405180910390fd5b6001601860146101000a81548160ff02191690831515021790555042601981905550601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600581905550600460128190555042600681905550565b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600080828461255b9190614d4d565b9050838110156125a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259790615090565b60405180910390fd5b8091505092915050565b600033905090565b60008383111582906125fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f191906148b5565b60405180910390fd5b506000838561260991906150b0565b9050809150509392505050565b600060011515600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141580156126ca575060011515600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514155b612709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270090615130565b60405180910390fd5b601b60149054906101000a900460ff161561273057612729848484612fa1565b9050612e8c565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561279b5750601b60149054906101000a900460ff16155b80156127b35750601b60159054906101000a900460ff165b80156128005750601e54600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b1561280e5761280d613174565b5b6128198484846138cf565b61282384846142d6565b15612863576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285a9061519c565b60405180910390fd5b6000600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156129095750600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612913578261291f565b61291e858585614449565b5b905060011515601860149054906101000a900460ff161515141580156129935750601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156129d257506129a261176f565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612a1157506129e161176f565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15612b4e57612a6881600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461254c90919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612afd83600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e9390919063ffffffff16565b600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612b49846145f1565b612e21565b612b5661176f565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480612bc15750612b9261176f565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b15612cf557612c1881600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461254c90919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612cad83600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e9390919063ffffffff16565b600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612e20565b612d4781600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461254c90919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612ddc83600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e9390919063ffffffff16565b600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612e7e9190614801565b60405180910390a360019150505b9392505050565b6000612ed583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506125b2565b905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600061302c826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125b29092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506130c182600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461254c90919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516131619190614801565b60405180910390a3600190509392505050565b6001601b60146101000a81548160ff0219169083151502179055506000601e54905060006131d460026131c66013546131b86010548761464c90919063ffffffff16565b6146c790919063ffffffff16565b6146c790919063ffffffff16565b905060006131eb8284612e9390919063ffffffff16565b90506000600267ffffffffffffffff81111561320a576132096151bc565b5b6040519080825280602002602001820160405280156132385781602001602082028036833780820191505090505b50905030816000815181106132505761324f6151eb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156132f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061331b919061522f565b8160018151811061332f5761332e6151eb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016133cd959493929190615355565b600060405180830381600087803b1580156133e757600080fd5b505af11580156133fb573d6000803e3d6000fd5b505050506000479050600061343061341f60026010546146c790919063ffffffff16565b601354612e9390919063ffffffff16565b9050600061345b8261344d6011548661464c90919063ffffffff16565b6146c790919063ffffffff16565b90506000613486836134786012548761464c90919063ffffffff16565b6146c790919063ffffffff16565b905060006134c460026134b6866134a86010548a61464c90919063ffffffff16565b6146c790919063ffffffff16565b6146c790919063ffffffff16565b90506000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168461753090604051613512906153e0565b600060405180830381858888f193505050503d8060008114613550576040519150601f19603f3d011682016040523d82523d6000602084013e613555565b606091505b505090506000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684617530906040516135a5906153e0565b600060405180830381858888f193505050503d80600081146135e3576040519150601f19603f3d011682016040523d82523d6000602084013e6135e8565b606091505b5050905083600b6000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600c6000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555042600a6000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f887dd9f57395c2e1e0dea455ae76bf56410b19b3131f2a590aab0b29b3683632601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685604051613785929190614edb565b60405180910390a1600091506000905060008a11156138a757601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308d600080601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401613827969594939291906153f5565b60606040518083038185885af1158015613845573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061386a919061546b565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506838b60405161389e9291906154be565b60405180910390a15b50505050505050505050506000601b60146101000a81548160ff021916908315150217905550565b600754600654426138e091906150b0565b11156138ef576138ee614711565b5b6138f761176f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015613965575061393561176f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156139bb5750600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015613a155750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015613a6f5750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015613ac95750601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015613b0157503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561406c57601c54811115613b4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b4290615533565b60405180910390fd5b6000613b568361157f565b9050601d548282613b679190614d4d565b1115613ba8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b9f906155c5565b60405180910390fd5b6000600267ffffffffffffffff811115613bc557613bc46151bc565b5b604051908082528060200260200182016040528015613bf35781602001602082028036833780820191505090505b509050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613c63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c87919061522f565b81600081518110613c9b57613c9a6151eb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250503081600181518110613cea57613ce96151eb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631f00ca7485846040518363ffffffff1660e01b8152600401613d839291906155e5565b600060405180830381865afa158015613da0573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190613dc9919061572e565b600081518110613ddc57613ddb6151eb565b5b6020026020010151905060011515600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515148015613e91575042612a30600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613e8f9190614d4d565b105b8015613e9e575060055481115b15613f545784601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600581905550426006819055507f735208e3a5b6390fd1d199ec98f6689564f9d7fef06323849704a8856eeed5f4601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600554604051613f47929190614edb565b60405180910390a1614068565b60001515600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515148015613fb5575060055481115b156140675784601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600581905550426006819055507f735208e3a5b6390fd1d199ec98f6689564f9d7fef06323849704a8856eeed5f4601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660055460405161405e929190614edb565b60405180910390a15b5b5050505b61407461176f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156140e257506140b261176f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156141385750600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156141925750601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156141ca57503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156142d157601c54811115614214576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161420b90615533565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff16601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156142d0577fec798f0f5328ec01f1d48922c12f488ecde2dae7402c814510a37d505cbdbb2a601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166005546040516142bf929190614edb565b60405180910390a16142cf614711565b5b5b505050565b6000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806143795750600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156143875760009050614443565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806144305750601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b1561443e5760009050614443565b600190505b92915050565b6000808373ffffffffffffffffffffffffffffffffffffffff16601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146144a9576013546144ad565b6014545b905060006144d760646144c9848761464c90919063ffffffff16565b6146c790919063ffffffff16565b905061452b81600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461254c90919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516145cb9190614801565b60405180910390a36145e68185612e9390919063ffffffff16565b925050509392505050565b6001600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008083141561465f57600090506146c1565b6000828461466d9190615777565b905082848261467c9190614dd2565b146146bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016146b390615843565b60405180910390fd5b809150505b92915050565b600061470983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614785565b905092915050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600060058190555042600681905550565b600080831182906147cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016147c391906148b5565b60405180910390fd5b50600083856147db9190614dd2565b9050809150509392505050565b6000819050919050565b6147fb816147e8565b82525050565b600060208201905061481660008301846147f2565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561485657808201518184015260208101905061483b565b83811115614865576000848401525b50505050565b6000601f19601f8301169050919050565b60006148878261481c565b6148918185614827565b93506148a1818560208601614838565b6148aa8161486b565b840191505092915050565b600060208201905081810360008301526148cf818461487c565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000614916826148eb565b9050919050565b6149268161490b565b811461493157600080fd5b50565b6000813590506149438161491d565b92915050565b614952816147e8565b811461495d57600080fd5b50565b60008135905061496f81614949565b92915050565b6000806040838503121561498c5761498b6148e1565b5b600061499a85828601614934565b92505060206149ab85828601614960565b9150509250929050565b60008115159050919050565b6149ca816149b5565b82525050565b60006020820190506149e560008301846149c1565b92915050565b600080600060608486031215614a0457614a036148e1565b5b6000614a1286828701614934565b9350506020614a2386828701614934565b9250506040614a3486828701614960565b9150509250925092565b600060ff82169050919050565b614a5481614a3e565b82525050565b6000602082019050614a6f6000830184614a4b565b92915050565b600060208284031215614a8b57614a8a6148e1565b5b6000614a9984828501614934565b91505092915050565b614aab816149b5565b8114614ab657600080fd5b50565b600081359050614ac881614aa2565b92915050565b60008060408385031215614ae557614ae46148e1565b5b6000614af385828601614934565b9250506020614b0485828601614ab9565b9150509250929050565b600060208284031215614b2457614b236148e1565b5b6000614b3284828501614960565b91505092915050565b614b448161490b565b82525050565b6000602082019050614b5f6000830184614b3b565b92915050565b60008060408385031215614b7c57614b7b6148e1565b5b6000614b8a85828601614934565b9250506020614b9b85828601614934565b9150509250929050565b600080600060608486031215614bbe57614bbd6148e1565b5b6000614bcc86828701614960565b9350506020614bdd86828701614960565b9250506040614bee86828701614960565b9150509250925092565b60008060408385031215614c0f57614c0e6148e1565b5b6000614c1d85828601614ab9565b9250506020614c2e85828601614960565b9150509250929050565b6000819050919050565b6000614c5d614c58614c53846148eb565b614c38565b6148eb565b9050919050565b6000614c6f82614c42565b9050919050565b6000614c8182614c64565b9050919050565b614c9181614c76565b82525050565b6000602082019050614cac6000830184614c88565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614ce8602083614827565b9150614cf382614cb2565b602082019050919050565b60006020820190508181036000830152614d1781614cdb565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614d58826147e8565b9150614d63836147e8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614d9857614d97614d1e565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614ddd826147e8565b9150614de8836147e8565b925082614df857614df7614da3565b5b828204905092915050565b7f4d61782077616c6c65742073697a6520697320746f6f206c6f77000000000000600082015250565b6000614e39601a83614827565b9150614e4482614e03565b602082019050919050565b60006020820190508181036000830152614e6881614e2c565b9050919050565b7f496e76616c696420666565000000000000000000000000000000000000000000600082015250565b6000614ea5600b83614827565b9150614eb082614e6f565b602082019050919050565b60006020820190508181036000830152614ed481614e98565b9050919050565b6000604082019050614ef06000830185614b3b565b614efd60208301846147f2565b9392505050565b600081519050614f1381614aa2565b92915050565b600060208284031215614f2f57614f2e6148e1565b5b6000614f3d84828501614f04565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614fa2602683614827565b9150614fad82614f46565b604082019050919050565b60006020820190508181036000830152614fd181614f95565b9050919050565b7f416c7265616479206c61756e6368656400000000000000000000000000000000600082015250565b600061500e601083614827565b915061501982614fd8565b602082019050919050565b6000602082019050818103600083015261503d81615001565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061507a601b83614827565b915061508582615044565b602082019050919050565b600060208201905081810360008301526150a98161506d565b9050919050565b60006150bb826147e8565b91506150c6836147e8565b9250828210156150d9576150d8614d1e565b5b828203905092915050565b7f426c61636b6c6973746564000000000000000000000000000000000000000000600082015250565b600061511a600b83614827565b9150615125826150e4565b602082019050919050565b600060208201905081810360008301526151498161510d565b9050919050565b7f446f6e2774206368656174000000000000000000000000000000000000000000600082015250565b6000615186600b83614827565b915061519182615150565b602082019050919050565b600060208201905081810360008301526151b581615179565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506152298161491d565b92915050565b600060208284031215615245576152446148e1565b5b60006152538482850161521a565b91505092915050565b6000819050919050565b600061528161527c6152778461525c565b614c38565b6147e8565b9050919050565b61529181615266565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6152cc8161490b565b82525050565b60006152de83836152c3565b60208301905092915050565b6000602082019050919050565b600061530282615297565b61530c81856152a2565b9350615317836152b3565b8060005b8381101561534857815161532f88826152d2565b975061533a836152ea565b92505060018101905061531b565b5085935050505092915050565b600060a08201905061536a60008301886147f2565b6153776020830187615288565b818103604083015261538981866152f7565b90506153986060830185614b3b565b6153a560808301846147f2565b9695505050505050565b600081905092915050565b50565b60006153ca6000836153af565b91506153d5826153ba565b600082019050919050565b60006153eb826153bd565b9150819050919050565b600060c08201905061540a6000830189614b3b565b61541760208301886147f2565b6154246040830187615288565b6154316060830186615288565b61543e6080830185614b3b565b61544b60a08301846147f2565b979650505050505050565b60008151905061546581614949565b92915050565b600080600060608486031215615484576154836148e1565b5b600061549286828701615456565b93505060206154a386828701615456565b92505060406154b486828701615456565b9150509250925092565b60006040820190506154d360008301856147f2565b6154e060208301846147f2565b9392505050565b7f4d41582054580000000000000000000000000000000000000000000000000000600082015250565b600061551d600683614827565b9150615528826154e7565b602082019050919050565b6000602082019050818103600083015261554c81615510565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f60008201527f756e740000000000000000000000000000000000000000000000000000000000602082015250565b60006155af602383614827565b91506155ba82615553565b604082019050919050565b600060208201905081810360008301526155de816155a2565b9050919050565b60006040820190506155fa60008301856147f2565b818103602083015261560c81846152f7565b90509392505050565b600080fd5b6156238261486b565b810181811067ffffffffffffffff82111715615642576156416151bc565b5b80604052505050565b60006156556148d7565b9050615661828261561a565b919050565b600067ffffffffffffffff821115615681576156806151bc565b5b602082029050602081019050919050565b600080fd5b60006156aa6156a584615666565b61564b565b905080838252602082019050602084028301858111156156cd576156cc615692565b5b835b818110156156f657806156e28882615456565b8452602084019350506020810190506156cf565b5050509392505050565b600082601f83011261571557615714615615565b5b8151615725848260208601615697565b91505092915050565b600060208284031215615744576157436148e1565b5b600082015167ffffffffffffffff811115615762576157616148e6565b5b61576e84828501615700565b91505092915050565b6000615782826147e8565b915061578d836147e8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156157c6576157c5614d1e565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061582d602183614827565b9150615838826157d1565b604082019050919050565b6000602082019050818103600083015261585c81615820565b905091905056fea2646970667358221220adbd43410942646d0dfd6b26e43535b52db4677a5b7df03bf27a6ca65cca117264736f6c634300080c0033

Deployed Bytecode

0x60806040526004361061037a5760003560e01c80638da5cb5b116101d1578063a9059cbb11610102578063df20fd49116100a0578063f84ba65d1161006f578063f84ba65d14610cb7578063f887ea4014610ce0578063fe2b6bc614610d0b578063fe575a8714610d2257610381565b8063df20fd4914610c25578063ea1644d514610c4e578063eb45e70914610c77578063f2fde38b14610c8e57610381565b8063cec10c11116100dc578063cec10c1114610b6b578063dbe1c4d514610b94578063dd62ed3e14610bbf578063dec2ba0f14610bfc57610381565b8063a9059cbb14610ada578063a9e59da314610b17578063ca33e64c14610b4057610381565b80639e0a78101161016f578063a4b45c0011610149578063a4b45c0014610a1e578063a4f87a7a14610a47578063a617792814610a84578063a8aa1b3114610aaf57610381565b80639e0a78101461098b5780639f2bb2e9146109b65780639f55eb4e146109e157610381565b806395d89b41116101ab57806395d89b41146108e357806398118cb41461090e5780639cfe42da146109395780639d0014b11461096257610381565b80638da5cb5b146108625780638eb6889f1461088d578063944c1d97146108b857610381565b8063571ac8b0116102ab578063715018a6116102495780637de4c778116102235780637de4c7781461079257806387b3be7d146107cf578063893d20e8146107fa5780638b42507f1461082557610381565b8063715018a61461072557806375f0a8741461073c5780637d1db4a51461076757610381565b80636b67c4df116102855780636b67c4df146106695780636c0a24eb1461069457806370a08231146106bf578063712a890a146106fc57610381565b8063571ac8b0146105da578063658d4b7f1461061757806366e930b31461064057610381565b8063313ce567116103185780633f4218e0116102f25780633f4218e01461053057806346cf314f1461056d5780634a74bb02146105985780634fef3a82146105c357610381565b8063313ce567146104c357806333596f50146104ee5780633e02a9881461050557610381565b8063125b94e511610354578063125b94e51461041957806318160ddd1461043057806323b872dd1461045b5780632b112e491461049857610381565b80630445b6671461038657806306fdde03146103b1578063095ea7b3146103dc57610381565b3661038157005b600080fd5b34801561039257600080fd5b5061039b610d5f565b6040516103a89190614801565b60405180910390f35b3480156103bd57600080fd5b506103c6610d65565b6040516103d391906148b5565b60405180910390f35b3480156103e857600080fd5b5061040360048036038101906103fe9190614975565b610da2565b60405161041091906149d0565b60405180910390f35b34801561042557600080fd5b5061042e610e94565b005b34801561043c57600080fd5b50610445610f5b565b6040516104529190614801565b60405180910390f35b34801561046757600080fd5b50610482600480360381019061047d91906149eb565b610f65565b60405161048f91906149d0565b60405180910390f35b3480156104a457600080fd5b506104ad611149565b6040516104ba9190614801565b60405180910390f35b3480156104cf57600080fd5b506104d86111cb565b6040516104e59190614a5a565b60405180910390f35b3480156104fa57600080fd5b506105036111d4565b005b34801561051157600080fd5b5061051a611299565b6040516105279190614801565b60405180910390f35b34801561053c57600080fd5b5061055760048036038101906105529190614a75565b6112b0565b60405161056491906149d0565b60405180910390f35b34801561057957600080fd5b506105826112d0565b60405161058f9190614801565b60405180910390f35b3480156105a457600080fd5b506105ad6112d6565b6040516105ba91906149d0565b60405180910390f35b3480156105cf57600080fd5b506105d86112e9565b005b3480156105e657600080fd5b5061060160048036038101906105fc9190614a75565b6113b0565b60405161060e91906149d0565b60405180910390f35b34801561062357600080fd5b5061063e60048036038101906106399190614ace565b6113c5565b005b34801561064c57600080fd5b5061066760048036038101906106629190614a75565b61149c565b005b34801561067557600080fd5b5061067e611573565b60405161068b9190614801565b60405180910390f35b3480156106a057600080fd5b506106a9611579565b6040516106b69190614801565b60405180910390f35b3480156106cb57600080fd5b506106e660048036038101906106e19190614a75565b61157f565b6040516106f39190614801565b60405180910390f35b34801561070857600080fd5b50610723600480360381019061071e9190614b0e565b6115c8565b005b34801561073157600080fd5b5061073a61164e565b005b34801561074857600080fd5b506107516116d6565b60405161075e9190614b4a565b60405180910390f35b34801561077357600080fd5b5061077c6116fc565b6040516107899190614801565b60405180910390f35b34801561079e57600080fd5b506107b960048036038101906107b49190614a75565b611702565b6040516107c69190614801565b60405180910390f35b3480156107db57600080fd5b506107e461171a565b6040516107f19190614b4a565b60405180910390f35b34801561080657600080fd5b5061080f611740565b60405161081c9190614b4a565b60405180910390f35b34801561083157600080fd5b5061084c60048036038101906108479190614a75565b61174f565b60405161085991906149d0565b60405180910390f35b34801561086e57600080fd5b5061087761176f565b6040516108849190614b4a565b60405180910390f35b34801561089957600080fd5b506108a2611798565b6040516108af9190614801565b60405180910390f35b3480156108c457600080fd5b506108cd61179e565b6040516108da9190614801565b60405180910390f35b3480156108ef57600080fd5b506108f86117a4565b60405161090591906148b5565b60405180910390f35b34801561091a57600080fd5b506109236117e1565b6040516109309190614801565b60405180910390f35b34801561094557600080fd5b50610960600480360381019061095b9190614a75565b6117e7565b005b34801561096e57600080fd5b5061098960048036038101906109849190614b0e565b6118d9565b005b34801561099757600080fd5b506109a061195f565b6040516109ad91906149d0565b60405180910390f35b3480156109c257600080fd5b506109cb611972565b6040516109d89190614801565b60405180910390f35b3480156109ed57600080fd5b50610a086004803603810190610a039190614a75565b611978565b604051610a1591906149d0565b60405180910390f35b348015610a2a57600080fd5b50610a456004803603810190610a409190614b65565b611998565b005b348015610a5357600080fd5b50610a6e6004803603810190610a699190614a75565b611a9a565b604051610a7b9190614801565b60405180910390f35b348015610a9057600080fd5b50610a99611ab2565b604051610aa69190614b4a565b60405180910390f35b348015610abb57600080fd5b50610ac4611ad8565b604051610ad19190614b4a565b60405180910390f35b348015610ae657600080fd5b50610b016004803603810190610afc9190614975565b611afe565b604051610b0e91906149d0565b60405180910390f35b348015610b2357600080fd5b50610b3e6004803603810190610b399190614b0e565b611b13565b005b348015610b4c57600080fd5b50610b55611bea565b604051610b629190614b4a565b60405180910390f35b348015610b7757600080fd5b50610b926004803603810190610b8d9190614ba5565b611c10565b005b348015610ba057600080fd5b50610ba9611dca565b604051610bb69190614801565b60405180910390f35b348015610bcb57600080fd5b50610be66004803603810190610be19190614b65565b611dd0565b604051610bf39190614801565b60405180910390f35b348015610c0857600080fd5b50610c236004803603810190610c1e9190614975565b611e57565b005b348015610c3157600080fd5b50610c4c6004803603810190610c479190614bf8565b611f56565b005b348015610c5a57600080fd5b50610c756004803603810190610c709190614b0e565b611ff7565b005b348015610c8357600080fd5b50610c8c6120ce565b005b348015610c9a57600080fd5b50610cb56004803603810190610cb09190614a75565b612191565b005b348015610cc357600080fd5b50610cde6004803603810190610cd99190614ace565b612289565b005b348015610cec57600080fd5b50610cf5612360565b604051610d029190614c97565b60405180910390f35b348015610d1757600080fd5b50610d20612386565b005b348015610d2e57600080fd5b50610d496004803603810190610d449190614a75565b6124f6565b604051610d5691906149d0565b60405180910390f35b601e5481565b60606040518060400160405280600581526020017f4245414e53000000000000000000000000000000000000000000000000000000815250905090565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610e829190614801565b60405180910390a36001905092915050565b610e9c6125aa565b73ffffffffffffffffffffffffffffffffffffffff16610eba61176f565b73ffffffffffffffffffffffffffffffffffffffff1614610f10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0790614cfe565b60405180910390fd5b600260108190555060046011819055506004601281905550610f53601254610f4560115460105461254c90919063ffffffff16565b61254c90919063ffffffff16565b601381905550565b6000600454905090565b60008019600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611132576110b1826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125b29092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61113d848484612616565b50600190509392505050565b60006111c6611179600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661157f565b6111b86111a7600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661157f565b600454612e9390919063ffffffff16565b612e9390919063ffffffff16565b905090565b60006012905090565b6111dc6125aa565b73ffffffffffffffffffffffffffffffffffffffff166111fa61176f565b73ffffffffffffffffffffffffffffffffffffffff1614611250576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124790614cfe565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611296573d6000803e3d6000fd5b50565b60006007546006546112ab9190614d4d565b905090565b600d6020528060005260406000206000915054906101000a900460ff1681565b60125481565b601b60159054906101000a900460ff1681565b6112f16125aa565b73ffffffffffffffffffffffffffffffffffffffff1661130f61176f565b73ffffffffffffffffffffffffffffffffffffffff1614611365576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135c90614cfe565b60405180910390fd5b6001601081905550600160118190555060086012819055506113a860125461139a60115460105461254c90919063ffffffff16565b61254c90919063ffffffff16565b601381905550565b60006113be82600019610da2565b9050919050565b6113cd6125aa565b73ffffffffffffffffffffffffffffffffffffffff166113eb61176f565b73ffffffffffffffffffffffffffffffffffffffff1614611441576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143890614cfe565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6114a46125aa565b73ffffffffffffffffffffffffffffffffffffffff166114c261176f565b73ffffffffffffffffffffffffffffffffffffffff1614611518576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150f90614cfe565b60405180910390fd5b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60115481565b601d5481565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6115d06125aa565b73ffffffffffffffffffffffffffffffffffffffff166115ee61176f565b73ffffffffffffffffffffffffffffffffffffffff1614611644576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163b90614cfe565b60405180910390fd5b8060078190555050565b6116566125aa565b73ffffffffffffffffffffffffffffffffffffffff1661167461176f565b73ffffffffffffffffffffffffffffffffffffffff16146116ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c190614cfe565b60405180910390fd5b6116d46000612edd565b565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601c5481565b600b6020528060005260406000206000915090505481565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061174a61176f565b905090565b600e6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60055481565b60075481565b60606040518060400160405280600681526020017f244245414e530000000000000000000000000000000000000000000000000000815250905090565b60105481565b6117ef6125aa565b73ffffffffffffffffffffffffffffffffffffffff1661180d61176f565b73ffffffffffffffffffffffffffffffffffffffff1614611863576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185a90614cfe565b60405180910390fd5b610a8c6019546118739190614d4d565b421061187e57600080fd5b6001600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6118e16125aa565b73ffffffffffffffffffffffffffffffffffffffff166118ff61176f565b73ffffffffffffffffffffffffffffffffffffffff1614611955576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194c90614cfe565b60405180910390fd5b80601e8190555050565b601860149054906101000a900460ff1681565b60065481565b600c6020528060005260406000206000915054906101000a900460ff1681565b6119a06125aa565b73ffffffffffffffffffffffffffffffffffffffff166119be61176f565b73ffffffffffffffffffffffffffffffffffffffff1614611a14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0b90614cfe565b60405180910390fd5b81601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600a6020528060005260406000206000915090505481565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611b0b338484612616565b905092915050565b611b1b6125aa565b73ffffffffffffffffffffffffffffffffffffffff16611b3961176f565b73ffffffffffffffffffffffffffffffffffffffff1614611b8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8690614cfe565b60405180910390fd5b600a600454611b9e9190614dd2565b811015611be0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd790614e4f565b60405180910390fd5b80601c8190555050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611c186125aa565b73ffffffffffffffffffffffffffffffffffffffff16611c3661176f565b73ffffffffffffffffffffffffffffffffffffffff1614611c8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8390614cfe565b60405180910390fd5b60008310158015611c9e5750600a8311155b611cdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd490614ebb565b60405180910390fd5b60008210158015611cef5750600a8211155b611d2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2590614ebb565b60405180910390fd5b60008110158015611d405750600a8111155b611d7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7690614ebb565b60405180910390fd5b826010819055508160118190555080601281905550611dbf601254611db160115460105461254c90919063ffffffff16565b61254c90919063ffffffff16565b601381905550505050565b601f5481565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611e5f6125aa565b73ffffffffffffffffffffffffffffffffffffffff16611e7d61176f565b73ffffffffffffffffffffffffffffffffffffffff1614611ed3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eca90614cfe565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611f0e929190614edb565b6020604051808303816000875af1158015611f2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f519190614f19565b505050565b611f5e6125aa565b73ffffffffffffffffffffffffffffffffffffffff16611f7c61176f565b73ffffffffffffffffffffffffffffffffffffffff1614611fd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc990614cfe565b60405180910390fd5b81601b60156101000a81548160ff02191690831515021790555080601e819055505050565b611fff6125aa565b73ffffffffffffffffffffffffffffffffffffffff1661201d61176f565b73ffffffffffffffffffffffffffffffffffffffff1614612073576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206a90614cfe565b60405180910390fd5b60326004546120829190614dd2565b8110156120c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120bb90614e4f565b60405180910390fd5b80601d8190555050565b6120d66125aa565b73ffffffffffffffffffffffffffffffffffffffff166120f461176f565b73ffffffffffffffffffffffffffffffffffffffff161461214a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214190614cfe565b60405180910390fd5b6000601b60156101000a81548160ff021916908315150217905550600019601c81905550600019601d81905550600060118190555060006012819055506000601081905550565b6121996125aa565b73ffffffffffffffffffffffffffffffffffffffff166121b761176f565b73ffffffffffffffffffffffffffffffffffffffff161461220d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220490614cfe565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561227d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227490614fb8565b60405180910390fd5b61228681612edd565b50565b6122916125aa565b73ffffffffffffffffffffffffffffffffffffffff166122af61176f565b73ffffffffffffffffffffffffffffffffffffffff1614612305576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122fc90614cfe565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61238e6125aa565b73ffffffffffffffffffffffffffffffffffffffff166123ac61176f565b73ffffffffffffffffffffffffffffffffffffffff1614612402576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f990614cfe565b60405180910390fd5b60001515601860149054906101000a900460ff16151514612458576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244f90615024565b60405180910390fd5b6001601860146101000a81548160ff02191690831515021790555042601981905550601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600581905550600460128190555042600681905550565b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600080828461255b9190614d4d565b9050838110156125a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259790615090565b60405180910390fd5b8091505092915050565b600033905090565b60008383111582906125fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f191906148b5565b60405180910390fd5b506000838561260991906150b0565b9050809150509392505050565b600060011515600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141580156126ca575060011515600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514155b612709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270090615130565b60405180910390fd5b601b60149054906101000a900460ff161561273057612729848484612fa1565b9050612e8c565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561279b5750601b60149054906101000a900460ff16155b80156127b35750601b60159054906101000a900460ff165b80156128005750601e54600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b1561280e5761280d613174565b5b6128198484846138cf565b61282384846142d6565b15612863576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285a9061519c565b60405180910390fd5b6000600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156129095750600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612913578261291f565b61291e858585614449565b5b905060011515601860149054906101000a900460ff161515141580156129935750601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156129d257506129a261176f565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612a1157506129e161176f565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15612b4e57612a6881600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461254c90919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612afd83600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e9390919063ffffffff16565b600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612b49846145f1565b612e21565b612b5661176f565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480612bc15750612b9261176f565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b15612cf557612c1881600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461254c90919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612cad83600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e9390919063ffffffff16565b600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612e20565b612d4781600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461254c90919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612ddc83600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e9390919063ffffffff16565b600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612e7e9190614801565b60405180910390a360019150505b9392505050565b6000612ed583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506125b2565b905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600061302c826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125b29092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506130c182600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461254c90919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516131619190614801565b60405180910390a3600190509392505050565b6001601b60146101000a81548160ff0219169083151502179055506000601e54905060006131d460026131c66013546131b86010548761464c90919063ffffffff16565b6146c790919063ffffffff16565b6146c790919063ffffffff16565b905060006131eb8284612e9390919063ffffffff16565b90506000600267ffffffffffffffff81111561320a576132096151bc565b5b6040519080825280602002602001820160405280156132385781602001602082028036833780820191505090505b50905030816000815181106132505761324f6151eb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156132f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061331b919061522f565b8160018151811061332f5761332e6151eb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016133cd959493929190615355565b600060405180830381600087803b1580156133e757600080fd5b505af11580156133fb573d6000803e3d6000fd5b505050506000479050600061343061341f60026010546146c790919063ffffffff16565b601354612e9390919063ffffffff16565b9050600061345b8261344d6011548661464c90919063ffffffff16565b6146c790919063ffffffff16565b90506000613486836134786012548761464c90919063ffffffff16565b6146c790919063ffffffff16565b905060006134c460026134b6866134a86010548a61464c90919063ffffffff16565b6146c790919063ffffffff16565b6146c790919063ffffffff16565b90506000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168461753090604051613512906153e0565b600060405180830381858888f193505050503d8060008114613550576040519150601f19603f3d011682016040523d82523d6000602084013e613555565b606091505b505090506000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684617530906040516135a5906153e0565b600060405180830381858888f193505050503d80600081146135e3576040519150601f19603f3d011682016040523d82523d6000602084013e6135e8565b606091505b5050905083600b6000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600c6000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555042600a6000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f887dd9f57395c2e1e0dea455ae76bf56410b19b3131f2a590aab0b29b3683632601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685604051613785929190614edb565b60405180910390a1600091506000905060008a11156138a757601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308d600080601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401613827969594939291906153f5565b60606040518083038185885af1158015613845573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061386a919061546b565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506838b60405161389e9291906154be565b60405180910390a15b50505050505050505050506000601b60146101000a81548160ff021916908315150217905550565b600754600654426138e091906150b0565b11156138ef576138ee614711565b5b6138f761176f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015613965575061393561176f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156139bb5750600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015613a155750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015613a6f5750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015613ac95750601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015613b0157503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561406c57601c54811115613b4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b4290615533565b60405180910390fd5b6000613b568361157f565b9050601d548282613b679190614d4d565b1115613ba8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b9f906155c5565b60405180910390fd5b6000600267ffffffffffffffff811115613bc557613bc46151bc565b5b604051908082528060200260200182016040528015613bf35781602001602082028036833780820191505090505b509050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613c63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c87919061522f565b81600081518110613c9b57613c9a6151eb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250503081600181518110613cea57613ce96151eb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631f00ca7485846040518363ffffffff1660e01b8152600401613d839291906155e5565b600060405180830381865afa158015613da0573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190613dc9919061572e565b600081518110613ddc57613ddb6151eb565b5b6020026020010151905060011515600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515148015613e91575042612a30600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613e8f9190614d4d565b105b8015613e9e575060055481115b15613f545784601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600581905550426006819055507f735208e3a5b6390fd1d199ec98f6689564f9d7fef06323849704a8856eeed5f4601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600554604051613f47929190614edb565b60405180910390a1614068565b60001515600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515148015613fb5575060055481115b156140675784601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600581905550426006819055507f735208e3a5b6390fd1d199ec98f6689564f9d7fef06323849704a8856eeed5f4601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660055460405161405e929190614edb565b60405180910390a15b5b5050505b61407461176f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156140e257506140b261176f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156141385750600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156141925750601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156141ca57503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156142d157601c54811115614214576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161420b90615533565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff16601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156142d0577fec798f0f5328ec01f1d48922c12f488ecde2dae7402c814510a37d505cbdbb2a601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166005546040516142bf929190614edb565b60405180910390a16142cf614711565b5b5b505050565b6000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806143795750600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156143875760009050614443565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806144305750601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b1561443e5760009050614443565b600190505b92915050565b6000808373ffffffffffffffffffffffffffffffffffffffff16601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146144a9576013546144ad565b6014545b905060006144d760646144c9848761464c90919063ffffffff16565b6146c790919063ffffffff16565b905061452b81600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461254c90919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516145cb9190614801565b60405180910390a36145e68185612e9390919063ffffffff16565b925050509392505050565b6001600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008083141561465f57600090506146c1565b6000828461466d9190615777565b905082848261467c9190614dd2565b146146bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016146b390615843565b60405180910390fd5b809150505b92915050565b600061470983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614785565b905092915050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600060058190555042600681905550565b600080831182906147cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016147c391906148b5565b60405180910390fd5b50600083856147db9190614dd2565b9050809150509392505050565b6000819050919050565b6147fb816147e8565b82525050565b600060208201905061481660008301846147f2565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561485657808201518184015260208101905061483b565b83811115614865576000848401525b50505050565b6000601f19601f8301169050919050565b60006148878261481c565b6148918185614827565b93506148a1818560208601614838565b6148aa8161486b565b840191505092915050565b600060208201905081810360008301526148cf818461487c565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000614916826148eb565b9050919050565b6149268161490b565b811461493157600080fd5b50565b6000813590506149438161491d565b92915050565b614952816147e8565b811461495d57600080fd5b50565b60008135905061496f81614949565b92915050565b6000806040838503121561498c5761498b6148e1565b5b600061499a85828601614934565b92505060206149ab85828601614960565b9150509250929050565b60008115159050919050565b6149ca816149b5565b82525050565b60006020820190506149e560008301846149c1565b92915050565b600080600060608486031215614a0457614a036148e1565b5b6000614a1286828701614934565b9350506020614a2386828701614934565b9250506040614a3486828701614960565b9150509250925092565b600060ff82169050919050565b614a5481614a3e565b82525050565b6000602082019050614a6f6000830184614a4b565b92915050565b600060208284031215614a8b57614a8a6148e1565b5b6000614a9984828501614934565b91505092915050565b614aab816149b5565b8114614ab657600080fd5b50565b600081359050614ac881614aa2565b92915050565b60008060408385031215614ae557614ae46148e1565b5b6000614af385828601614934565b9250506020614b0485828601614ab9565b9150509250929050565b600060208284031215614b2457614b236148e1565b5b6000614b3284828501614960565b91505092915050565b614b448161490b565b82525050565b6000602082019050614b5f6000830184614b3b565b92915050565b60008060408385031215614b7c57614b7b6148e1565b5b6000614b8a85828601614934565b9250506020614b9b85828601614934565b9150509250929050565b600080600060608486031215614bbe57614bbd6148e1565b5b6000614bcc86828701614960565b9350506020614bdd86828701614960565b9250506040614bee86828701614960565b9150509250925092565b60008060408385031215614c0f57614c0e6148e1565b5b6000614c1d85828601614ab9565b9250506020614c2e85828601614960565b9150509250929050565b6000819050919050565b6000614c5d614c58614c53846148eb565b614c38565b6148eb565b9050919050565b6000614c6f82614c42565b9050919050565b6000614c8182614c64565b9050919050565b614c9181614c76565b82525050565b6000602082019050614cac6000830184614c88565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614ce8602083614827565b9150614cf382614cb2565b602082019050919050565b60006020820190508181036000830152614d1781614cdb565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614d58826147e8565b9150614d63836147e8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614d9857614d97614d1e565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614ddd826147e8565b9150614de8836147e8565b925082614df857614df7614da3565b5b828204905092915050565b7f4d61782077616c6c65742073697a6520697320746f6f206c6f77000000000000600082015250565b6000614e39601a83614827565b9150614e4482614e03565b602082019050919050565b60006020820190508181036000830152614e6881614e2c565b9050919050565b7f496e76616c696420666565000000000000000000000000000000000000000000600082015250565b6000614ea5600b83614827565b9150614eb082614e6f565b602082019050919050565b60006020820190508181036000830152614ed481614e98565b9050919050565b6000604082019050614ef06000830185614b3b565b614efd60208301846147f2565b9392505050565b600081519050614f1381614aa2565b92915050565b600060208284031215614f2f57614f2e6148e1565b5b6000614f3d84828501614f04565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614fa2602683614827565b9150614fad82614f46565b604082019050919050565b60006020820190508181036000830152614fd181614f95565b9050919050565b7f416c7265616479206c61756e6368656400000000000000000000000000000000600082015250565b600061500e601083614827565b915061501982614fd8565b602082019050919050565b6000602082019050818103600083015261503d81615001565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061507a601b83614827565b915061508582615044565b602082019050919050565b600060208201905081810360008301526150a98161506d565b9050919050565b60006150bb826147e8565b91506150c6836147e8565b9250828210156150d9576150d8614d1e565b5b828203905092915050565b7f426c61636b6c6973746564000000000000000000000000000000000000000000600082015250565b600061511a600b83614827565b9150615125826150e4565b602082019050919050565b600060208201905081810360008301526151498161510d565b9050919050565b7f446f6e2774206368656174000000000000000000000000000000000000000000600082015250565b6000615186600b83614827565b915061519182615150565b602082019050919050565b600060208201905081810360008301526151b581615179565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506152298161491d565b92915050565b600060208284031215615245576152446148e1565b5b60006152538482850161521a565b91505092915050565b6000819050919050565b600061528161527c6152778461525c565b614c38565b6147e8565b9050919050565b61529181615266565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6152cc8161490b565b82525050565b60006152de83836152c3565b60208301905092915050565b6000602082019050919050565b600061530282615297565b61530c81856152a2565b9350615317836152b3565b8060005b8381101561534857815161532f88826152d2565b975061533a836152ea565b92505060018101905061531b565b5085935050505092915050565b600060a08201905061536a60008301886147f2565b6153776020830187615288565b818103604083015261538981866152f7565b90506153986060830185614b3b565b6153a560808301846147f2565b9695505050505050565b600081905092915050565b50565b60006153ca6000836153af565b91506153d5826153ba565b600082019050919050565b60006153eb826153bd565b9150819050919050565b600060c08201905061540a6000830189614b3b565b61541760208301886147f2565b6154246040830187615288565b6154316060830186615288565b61543e6080830185614b3b565b61544b60a08301846147f2565b979650505050505050565b60008151905061546581614949565b92915050565b600080600060608486031215615484576154836148e1565b5b600061549286828701615456565b93505060206154a386828701615456565b92505060406154b486828701615456565b9150509250925092565b60006040820190506154d360008301856147f2565b6154e060208301846147f2565b9392505050565b7f4d41582054580000000000000000000000000000000000000000000000000000600082015250565b600061551d600683614827565b9150615528826154e7565b602082019050919050565b6000602082019050818103600083015261554c81615510565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f60008201527f756e740000000000000000000000000000000000000000000000000000000000602082015250565b60006155af602383614827565b91506155ba82615553565b604082019050919050565b600060208201905081810360008301526155de816155a2565b9050919050565b60006040820190506155fa60008301856147f2565b818103602083015261560c81846152f7565b90509392505050565b600080fd5b6156238261486b565b810181811067ffffffffffffffff82111715615642576156416151bc565b5b80604052505050565b60006156556148d7565b9050615661828261561a565b919050565b600067ffffffffffffffff821115615681576156806151bc565b5b602082029050602081019050919050565b600080fd5b60006156aa6156a584615666565b61564b565b905080838252602082019050602084028301858111156156cd576156cc615692565b5b835b818110156156f657806156e28882615456565b8452602084019350506020810190506156cf565b5050509392505050565b600082601f83011261571557615714615615565b5b8151615725848260208601615697565b91505092915050565b600060208284031215615744576157436148e1565b5b600082015167ffffffffffffffff811115615762576157616148e6565b5b61576e84828501615700565b91505092915050565b6000615782826147e8565b915061578d836147e8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156157c6576157c5614d1e565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061582d602183614827565b9150615838826157d1565b604082019050919050565b6000602082019050818103600083015261585c81615820565b905091905056fea2646970667358221220adbd43410942646d0dfd6b26e43535b52db4677a5b7df03bf27a6ca65cca117264736f6c634300080c0033

Deployed Bytecode Sourcemap

6872:16236:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8646:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9953:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11855:248;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13495:200;;;;;;;;;;;;;:::i;:::-;;10365:102;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17385:423;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10475:142;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10161:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22817:115;;;;;;;;;;;;;:::i;:::-;;13171:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7791:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8082:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8492:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13287:200;;;;;;;;;;;;;:::i;:::-;;12111:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12227:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14561:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8043:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8588:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10625:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12873:146;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6125:94;;;;;;;;;;;;;:::i;:::-;;8238:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8539:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7685;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8275:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10263:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7841:47;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5474:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7397:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7473:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10055:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8004:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14388:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12512:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8339:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7433:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7734:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12628:237;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7629:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8301:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8436:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17189:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14198:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8195:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10978:673;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8702:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11659:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22940:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16963:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14008:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10752:218;;;;;;;;;;;;;:::i;:::-;;6374:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12354:150;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8405:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13703:297;;;;;;;;;;;;;:::i;:::-;;14675:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8646:49;;;;:::o;9953:94::-;10001:13;10034:5;;;;;;;;;;;;;;;;;10027:12;;9953:94;:::o;11855:248::-;11957:4;12014:6;11979:11;:23;11991:10;11979:23;;;;;;;;;;;;;;;:32;12003:7;11979:32;;;;;;;;;;;;;;;:41;;;;12057:7;12036:37;;12045:10;12036:37;;;12066:6;12036:37;;;;;;:::i;:::-;;;;;;;;12091:4;12084:11;;11855:248;;;;:::o;13495:200::-;5705:12;:10;:12::i;:::-;5694:23;;:7;:5;:7::i;:::-;:23;;;5686:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13572:1:::1;13557:12;:16;;;;13599:1;13584:12;:16;;;;13621:1;13611:7;:11;;;;13644:43;13679:7;;13644:30;13661:12;;13644;;:16;;:30;;;;:::i;:::-;:34;;:43;;;;:::i;:::-;13633:8;:54;;;;13495:200::o:0;10365:102::-;10420:7;10447:12;;10440:19;;10365:102;:::o;17385:423::-;17519:4;7993:1;7984:11;17540;:19;17552:6;17540:19;;;;;;;;;;;;;;;:31;17560:10;17540:31;;;;;;;;;;;;;;;;:38;17536:192;;17629:87;17683:6;17629:87;;;;;;;;;;;;;;;;;:11;:19;17641:6;17629:19;;;;;;;;;;;;;;;:31;17649:10;17629:31;;;;;;;;;;;;;;;;:53;;:87;;;;;:::i;:::-;17595:11;:19;17607:6;17595:19;;;;;;;;;;;;;;;:31;17615:10;17595:31;;;;;;;;;;;;;;;:121;;;;17536:192;17738:40;17752:6;17760:9;17771:6;17738:13;:40::i;:::-;;17796:4;17789:11;;17385:423;;;;;:::o;10475:142::-;10528:7;10555:54;10593:15;10603:4;;;;;;;;;;;10593:9;:15::i;:::-;10555:33;10572:15;10582:4;;;;;;;;;;;10572:9;:15::i;:::-;10555:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;10548:61;;10475:142;:::o;10161:94::-;10213:5;7054:2;10231:16;;10161:94;:::o;22817:115::-;5705:12;:10;:12::i;:::-;5694:23;;:7;:5;:7::i;:::-;:23;;;5686:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22881:10:::1;22873:28;;:51;22902:21;22873:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;22817:115::o:0;13171:108::-;13216:7;13260:11;;13243:14;;:28;;;;:::i;:::-;13236:35;;13171:108;:::o;7791:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;8082:26::-;;;;:::o;8492:40::-;;;;;;;;;;;;;:::o;13287:200::-;5705:12;:10;:12::i;:::-;5694:23;;:7;:5;:7::i;:::-;:23;;;5686:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13364:1:::1;13349:12;:16;;;;13391:1;13376:12;:16;;;;13413:1;13403:7;:11;;;;13436:43;13471:7;;13436:30;13453:12;;13436;;:16;;:30;;;;:::i;:::-;:34;;:43;;;;:::i;:::-;13425:8;:54;;;;13287:200::o:0;12111:108::-;12166:4;12190:21;12198:7;7993:1;7984:11;12190:7;:21::i;:::-;12183:28;;12111:108;;;:::o;12227:119::-;5705:12;:10;:12::i;:::-;5694:23;;:7;:5;:7::i;:::-;:23;;;5686:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12332:6:::1;12310:11;:19;12322:6;12310:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;12227:119:::0;;:::o;14561:106::-;5705:12;:10;:12::i;:::-;5694:23;;:7;:5;:7::i;:::-;:23;;;5686:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14654:5:::1;14631:16;:22;14648:4;14631:22;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;14561:106:::0;:::o;8043:32::-;;;;:::o;8588:51::-;;;;:::o;10625:119::-;10691:7;10718:9;:18;10728:7;10718:18;;;;;;;;;;;;;;;;10711:25;;10625:119;;;:::o;12873:146::-;5705:12;:10;:12::i;:::-;5694:23;;:7;:5;:7::i;:::-;:23;;;5686:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12997:14:::1;12983:11;:28;;;;12873:146:::0;:::o;6125:94::-;5705:12;:10;:12::i;:::-;5694:23;;:7;:5;:7::i;:::-;:23;;;5686:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6190:21:::1;6208:1;6190:9;:21::i;:::-;6125:94::o:0;8238:30::-;;;;;;;;;;;;;:::o;8539:42::-;;;;:::o;7685:::-;;;;;;;;;;;;;;;;;:::o;8275:19::-;;;;;;;;;;;;;:::o;10263:94::-;10315:7;10342;:5;:7::i;:::-;10335:14;;10263:94;:::o;7841:47::-;;;;;;;;;;;;;;;;;;;;;;:::o;5474:87::-;5520:7;5547:6;;;;;;;;;;;5540:13;;5474:87;:::o;7397:29::-;;;;:::o;7473:39::-;;;;:::o;10055:98::-;10105:13;10138:7;;;;;;;;;;;;;;;;;10131:14;;10055:98;:::o;8004:32::-;;;;:::o;14388:165::-;5705:12;:10;:12::i;:::-;5694:23;;:7;:5;:7::i;:::-;:23;;;5686:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14494:10:::1;14480:11;;:24;;;;:::i;:::-;14462:15;:42;14454:51;;;::::0;::::1;;14539:4;14516:16;:22;14533:4;14516:22;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;14388:165:::0;:::o;12512:108::-;5705:12;:10;:12::i;:::-;5694:23;;:7;:5;:7::i;:::-;:23;;;5686:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12603:9:::1;12587:13;:25;;;;12512:108:::0;:::o;8339:31::-;;;;;;;;;;;;;:::o;7433:33::-;;;;:::o;7734:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;12628:237::-;5705:12;:10;:12::i;:::-;5694:23;;:7;:5;:7::i;:::-;:23;;;5686:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12790:20:::1;12766:21;;:44;;;;;;;;;;;;;;;;;;12839:18;12821:15;;:36;;;;;;;;;;;;;;;;;;12628:237:::0;;:::o;7629:49::-;;;;;;;;;;;;;;;;;:::o;8301:29::-;;;;;;;;;;;;;:::o;8436:19::-;;;;;;;;;;;;;:::o;17189:188::-;17296:4;17325:44;17339:10;17351:9;17362:6;17325:13;:44::i;:::-;17318:51;;17189:188;;;;:::o;14198:182::-;5705:12;:10;:12::i;:::-;5694:23;;:7;:5;:7::i;:::-;:23;;;5686:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14305:2:::1;14291:12;;:16;;;;:::i;:::-;14283:6;:24;;14275:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;14364:6;14349:12;:21;;;;14198:182:::0;:::o;8195:36::-;;;;;;;;;;;;;:::o;10978:673::-;5705:12;:10;:12::i;:::-;5694:23;;:7;:5;:7::i;:::-;:23;;;5686:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11170:1:::1;11151:15;:20;;:45;;;;;11194:2;11175:15;:21;;11151:45;11129:106;;;;;;;;;;;;:::i;:::-;;;;;;;;;11289:1;11270:15;:20;;:45;;;;;11313:2;11294:15;:21;;11270:45;11248:106;;;;;;;;;;;;:::i;:::-;;;;;;;;;11403:1;11389:10;:15;;:35;;;;;11422:2;11408:10;:16;;11389:35;11367:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;11491:15;11476:12;:30;;;;11532:15;11517:12;:30;;;;11568:10;11558:7;:20;;;;11600:43;11635:7;;11600:30;11617:12;;11600;;:16;;:30;;;;:::i;:::-;:34;;:43;;;;:::i;:::-;11589:8;:54;;;;10978:673:::0;;;:::o;8702:29::-;;;;:::o;11659:188::-;11779:7;11811:11;:19;11823:6;11811:19;;;;;;;;;;;;;;;:28;11831:7;11811:28;;;;;;;;;;;;;;;;11804:35;;11659:188;;;;:::o;22940:165::-;5705:12;:10;:12::i;:::-;5694:23;;:7;:5;:7::i;:::-;:23;;;5686:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23060:6:::1;23053:23;;;23077:10;23089:7;23053:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22940:165:::0;;:::o;16963:218::-;5705:12;:10;:12::i;:::-;5694:23;;:7;:5;:7::i;:::-;:23;;;5686:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17116:14:::1;17092:21;;:38;;;;;;;;;;;;;;;;;;17157:16;17141:13;:32;;;;16963:218:::0;;:::o;14008:182::-;5705:12;:10;:12::i;:::-;5694:23;;:7;:5;:7::i;:::-;:23;;;5686:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14111:2:::1;14096:12;;:17;;;;:::i;:::-;14088:6;:25;;14080:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;14174:6;14155:16;:25;;;;14008:182:::0;:::o;10752:218::-;5705:12;:10;:12::i;:::-;5694:23;;:7;:5;:7::i;:::-;:23;;;5686:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10829:5:::1;10807:21;;:27;;;;;;;;;;;;;;;;;;7993:1;7984:11;10845:12;:16;;;;7993:1;7984:11;10872:16;:20;;;;10916:1;10903:12;:14;;;;10936:1;10928:7;:9;;;;10961:1;10948:12;:14;;;;10752:218::o:0;6374:192::-;5705:12;:10;:12::i;:::-;5694:23;;:7;:5;:7::i;:::-;:23;;;5686:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6483:1:::1;6463:22;;:8;:22;;;;6455:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;6539:19;6549:8;6539:9;:19::i;:::-;6374:192:::0;:::o;12354:150::-;5705:12;:10;:12::i;:::-;5694:23;;:7;:5;:7::i;:::-;:23;;;5686:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12490:6:::1;12464:15;:23;12480:6;12464:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;12354:150:::0;;:::o;8405:24::-;;;;;;;;;;;;;:::o;13703:297::-;5705:12;:10;:12::i;:::-;5694:23;;:7;:5;:7::i;:::-;:23;;;5686:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13774:5:::1;13759:20;;:11;;;;;;;;;;;:20;;;13750:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;13825:4;13811:11;;:18;;;;;;;;;;;;;;;;;;13854:15;13840:11;:29;;;;13887:15;;;;;;;;;;;13880:4;;:22;;;;;;;;;;;;;;;;;;13926:1;13913:10;:14;;;;13948:1;13938:7;:11;;;;13977:15;13960:14;:32;;;;13703:297::o:0;14675:120::-;14738:4;14762:16;:25;14779:7;14762:25;;;;;;;;;;;;;;;;;;;;;;;;;14755:32;;14675:120;;;:::o;226:179::-;284:7;304:9;320:1;316;:5;;;;:::i;:::-;304:17;;345:1;340;:6;;332:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;396:1;389:8;;;226:179;;;;:::o;4350:98::-;4403:7;4430:10;4423:17;;4350:98;:::o;557:224::-;677:7;710:1;705;:6;;713:12;697:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;737:9;753:1;749;:5;;;;:::i;:::-;737:17;;772:1;765:8;;;557:224;;;;;:::o;17816:1687::-;17942:4;17993;17967:30;;:16;:24;17984:6;17967:24;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;;:67;;;;;18030:4;18001:33;;:16;:27;18018:9;18001:27;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;;17967:67;17959:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;18065:16;;;;;;;;;;;18061:97;;;18105:41;18120:6;18128:9;18139:6;18105:14;:41::i;:::-;18098:48;;;;18061:97;18200:4;;;;;;;;;;;18186:18;;:10;:18;;;;:52;;;;;18222:16;;;;;;;;;;;18221:17;18186:52;:90;;;;;18255:21;;;;;;;;;;;18186:90;:148;;;;;18321:13;;18293:9;:24;18311:4;18293:24;;;;;;;;;;;;;;;;:41;;18186:148;18168:215;;;18361:10;:8;:10::i;:::-;18168:215;18393:40;18407:6;18415:9;18426:6;18393:13;:40::i;:::-;18453:35;18470:6;18478:9;18453:16;:35::i;:::-;18452:36;18444:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;18517:22;18543:11;:19;18555:6;18543:19;;;;;;;;;;;;;;;;;;;;;;;;;18542:20;:47;;;;;18567:11;:22;18579:9;18567:22;;;;;;;;;;;;;;;;;;;;;;;;;18566:23;18542:47;:119;;18655:6;18542:119;;;18605:34;18613:6;18621:9;18632:6;18605:7;:34::i;:::-;18542:119;18517:144;;18692:4;18678:18;;:11;;;;;;;;;;;:18;;;;:38;;;;;18712:4;;;;;;;;;;;18700:16;;:9;:16;;;;18678:38;:57;;;;;18728:7;:5;:7::i;:::-;18720:15;;:6;:15;;;;18678:57;:79;;;;;18750:7;:5;:7::i;:::-;18739:18;;:9;:18;;;;18678:79;18674:737;;;18807:40;18832:14;18807:9;:20;18817:9;18807:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;18784:9;:20;18794:9;18784:20;;;;;;;;;;;;;;;:63;;;;18882:29;18904:6;18882:9;:17;18892:6;18882:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;18862:9;:17;18872:6;18862:17;;;;;;;;;;;;;;;:49;;;;18949:24;18963:9;18949:13;:24::i;:::-;18674:737;;;19012:7;:5;:7::i;:::-;19004:15;;:6;:15;;;:37;;;;19034:7;:5;:7::i;:::-;19023:18;;:9;:18;;;19004:37;19000:411;;;19091:40;19116:14;19091:9;:20;19101:9;19091:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;19068:9;:20;19078:9;19068:20;;;;;;;;;;;;;;;:63;;;;19166:29;19188:6;19166:9;:17;19176:6;19166:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;19146:9;:17;19156:6;19146:17;;;;;;;;;;;;;;;:49;;;;19000:411;;;19294:40;19319:14;19294:9;:20;19304:9;19294:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;19271:9;:20;19281:9;19271:20;;;;;;;;;;;;;;;:63;;;;19370:29;19392:6;19370:9;:17;19380:6;19370:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;19350:9;:17;19360:6;19350:17;;;;;;;;;;;;;;;:49;;;;19000:411;18674:737;19447:9;19426:47;;19435:10;19426:47;;;19458:14;19426:47;;;;;;:::i;:::-;;;;;;;;19491:4;19484:11;;;17816:1687;;;;;;:::o;413:136::-;471:7;498:43;502:1;505;498:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;491:50;;413:136;;;;:::o;6574:173::-;6630:16;6649:6;;;;;;;;;;;6630:25;;6675:8;6666:6;;:17;;;;;;;;;;;;;;;;;;6730:8;6699:40;;6720:8;6699:40;;;;;;;;;;;;6619:128;6574:173;:::o;19511:401::-;19638:4;19675:90;19711:6;19675:90;;;;;;;;;;;;;;;;;:9;:17;19685:6;19675:17;;;;;;;;;;;;;;;;:21;;:90;;;;;:::i;:::-;19655:9;:17;19665:6;19655:17;;;;;;;;;;;;;;;:110;;;;19799:32;19824:6;19799:9;:20;19809:9;19799:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;19776:9;:20;19786:9;19776:20;;;;;;;;;;;;;;;:55;;;;19864:9;19847:35;;19856:6;19847:35;;;19875:6;19847:35;;;;;;:::i;:::-;;;;;;;;19900:4;19893:11;;19511:401;;;;;:::o;20763:2046::-;8793:4;8774:16;;:23;;;;;;;;;;;;;;;;;;20878::::1;20904:13;;20878:39;;20928:23;20954:96;21048:1;20954:75;21020:8;;20954:47;20988:12;;20954:15;:33;;:47;;;;:::i;:::-;:65;;:75;;;;:::i;:::-;:93;;:96;;;;:::i;:::-;20928:122;;21061:20;21084:36;21104:15;21084;:19;;:36;;;;:::i;:::-;21061:59;;21133:21;21171:1;21157:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21133:40;;21202:4;21184;21189:1;21184:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;21228:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21218:4;21223:1;21218:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;21254:6;;;;;;;;;;;:57;;;21326:12;21353:1;21369:4;21396;21416:15;21254:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;21455:17;21475:21;21455:41;;21507:19;21529:33;21542:19;21559:1;21542:12;;:16;;:19;;;;:::i;:::-;21529:8;;:12;;:33;;;;:::i;:::-;21507:55;;21573:26;21602:68;21648:11;21602:27;21616:12;;21602:9;:13;;:27;;;;:::i;:::-;:31;;:68;;;;:::i;:::-;21573:97;;21681:21;21705:39;21732:11;21705:22;21719:7;;21705:9;:13;;:22;;;;:::i;:::-;:26;;:39;;;;:::i;:::-;21681:63;;21755:26;21784:93;21875:1;21784:72;21844:11;21784:41;21812:12;;21784:9;:27;;:41;;;;:::i;:::-;:59;;:72;;;;:::i;:::-;:90;;:93;;;;:::i;:::-;21755:122;;21891:15;21920;;;;;;;;;;;21912:29;;21963:18;22001:5;21912:109;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21890:131;;;22033:16;22063:4;;;;;;;;;;;22055:18;;22095:13;22128:5;22055:93;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22032:116;;;22175:13;22161:7;:13;22169:4;;;;;;;;;;;22161:13;;;;;;;;;;;;;;;:27;;;;22224:4;22199:18;:24;22218:4;;;;;;;;;;;22199:24;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;22262:15;22239:14;:20;22254:4;;;;;;;;;;;22239:20;;;;;;;;;;;;;;;:38;;;;22293:31;22304:4;;;;;;;;;;;22310:13;22293:31;;;;;;;:::i;:::-;;;;;;;;22390:5;22377:18;;22420:5;22406:19;;22460:1;22442:15;:19;22438:364;;;22478:6;;;;;;;;;;;:22;;;22508:18;22554:4;22578:15;22612:1;22632::::0;22652:21:::1;;;;;;;;;;;22692:15;22478:244;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;22742:48;22754:18;22774:15;22742:48;;;;;;;:::i;:::-;;;;;;;;22438:364;20804:2005;;;;;;;;;;;8839:5:::0;8820:16;;:24;;;;;;;;;;;;;;;;;;20763:2046::o;14904:2051::-;15071:11;;15054:14;;15036:15;:32;;;;:::i;:::-;:46;15032:87;;;15099:8;:6;:8::i;:::-;15032:87;15157:7;:5;:7::i;:::-;15147:17;;:6;:17;;;;:54;;;;;15194:7;:5;:7::i;:::-;15181:20;;:9;:20;;;;15147:54;:98;;;;;15219:15;:26;15235:9;15219:26;;;;;;;;;;;;;;;;;;;;;;;;;15218:27;15147:98;:132;;;;;15275:4;;;;;;;;;;;15262:17;;:9;:17;;;;15147:132;:166;;;;;15309:4;;;;;;;;;;;15296:17;;:9;:17;;;;15147:166;:200;;;;;15343:4;;;;;;;;;;;15330:17;;:9;:17;;;;15147:200;:243;;;;;15385:4;15364:26;;:9;:26;;;;15147:243;15129:1412;;;15435:12;;15425:6;:22;;15417:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;15473:32;15508:20;15518:9;15508;:20::i;:::-;15473:55;;15606:16;;15596:6;15569:24;:33;;;;:::i;:::-;:53;;15543:150;;;;;;;;;;;;:::i;:::-;;;;;;;;;15710:21;15748:1;15734:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15710:40;;15775:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15765:4;15770:1;15765:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;15821:4;15803;15808:1;15803:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;15841:15;15859:6;;;;;;;;;;;:19;;;15879:6;15887:4;15859:33;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15893:1;15859:36;;;;;;;;:::i;:::-;;;;;;;;15841:54;;15947:4;15916:35;;:18;:29;15935:9;15916:29;;;;;;;;;;;;;;;;;;;;;;;;;:35;;;:92;;;;;15993:15;15983:7;15955:14;:25;15970:9;15955:25;;;;;;;;;;;;;;;;:35;;;;:::i;:::-;:53;15916:92;:116;;;;;16022:10;;16012:7;:20;15916:116;15912:618;;;16074:9;16067:4;;:16;;;;;;;;;;;;;;;;;;16115:7;16102:10;:20;;;;16158:15;16141:14;:32;;;;16197:25;16205:4;;;;;;;;;;;16211:10;;16197:25;;;;;;;:::i;:::-;;;;;;;;15912:618;;;16294:5;16263:36;;:18;:29;16282:9;16263:29;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;:61;;;;;16314:10;;16304:7;:20;16263:61;16259:271;;;16366:9;16359:4;;:16;;;;;;;;;;;;;;;;;;16407:7;16394:10;:20;;;;16450:15;16433:14;:32;;;;16489:25;16497:4;;;;;;;;;;;16503:10;;16489:25;;;;;;;:::i;:::-;;;;;;;;16259:271;15912:618;15402:1139;;;15129:1412;16579:7;:5;:7::i;:::-;16569:17;;:6;:17;;;;:54;;;;;16616:7;:5;:7::i;:::-;16603:20;;:9;:20;;;;16569:54;:95;;;;;16641:15;:23;16657:6;16641:23;;;;;;;;;;;;;;;;;;;;;;;;;16640:24;16569:95;:126;;;;;16691:4;;;;;;;;;;;16681:14;;:6;:14;;;;16569:126;:169;;;;;16733:4;16712:26;;:9;:26;;;;16569:169;16551:397;;;16783:12;;16773:6;:22;;16765:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;16833:6;16825:14;;:4;;;;;;;;;;;:14;;;16821:113;;;16865:26;16874:4;;;;;;;;;;;16880:10;;16865:26;;;;;;;:::i;:::-;;;;;;;;16910:8;:6;:8::i;:::-;16821:113;16551:397;14904:2051;;;:::o;20413:342::-;20524:4;20550:11;:19;20562:6;20550:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;20573:11;:22;20585:9;20573:22;;;;;;;;;;;;;;;;;;;;;;;;;20550:45;20546:90;;;20619:5;20612:12;;;;20546:90;20660:4;;;;;;;;;;;20650:14;;:6;:14;;;:35;;;;20681:4;;;;;;;;;;;20668:17;;:9;:17;;;20650:35;20646:80;;;20709:5;20702:12;;;;20646:80;20743:4;20736:11;;20413:342;;;;;:::o;19920:485::-;20040:7;20060:21;20092:9;20084:17;;:4;;;;;;;;;;;:17;;;:74;;20150:8;;20084:74;;;20117:17;;20084:74;20060:98;;20169:17;20189:34;20219:3;20189:25;20200:13;20189:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;20169:54;;20261:39;20290:9;20261;:24;20279:4;20261:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;20234:9;:24;20252:4;20234:24;;;;;;;;;;;;;;;:66;;;;20341:4;20316:42;;20325:6;20316:42;;;20348:9;20316:42;;;;;;:::i;:::-;;;;;;;;20376:21;20387:9;20376:6;:10;;:21;;;;:::i;:::-;20369:28;;;;19920:485;;;;;:::o;14803:91::-;14882:4;14859:16;:22;14876:4;14859:22;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;14803:91;:::o;789:246::-;847:7;876:1;871;:6;867:47;;;901:1;894:8;;;;867:47;924:9;940:1;936;:5;;;;:::i;:::-;924:17;;969:1;964;960;:5;;;;:::i;:::-;:10;952:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1026:1;1019:8;;;789:246;;;;;:::o;1043:132::-;1101:7;1128:39;1132:1;1135;1128:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1121:46;;1043:132;;;;:::o;13027:136::-;13072:15;;;;;;;;;;;13065:4;;:22;;;;;;;;;;;;;;;;;;13111:1;13098:10;:14;;;;13140:15;13123:14;:32;;;;13027:136::o;1183:223::-;1303:7;1335:1;1331;:5;1338:12;1323:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1362:9;1378:1;1374;:5;;;;:::i;:::-;1362:17;;1397:1;1390:8;;;1183:223;;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:307::-;790:1;800:113;814:6;811:1;808:13;800:113;;;899:1;894:3;890:11;884:18;880:1;875:3;871:11;864:39;836:2;833:1;829:10;824:15;;800:113;;;931:6;928:1;925:13;922:101;;;1011:1;1002:6;997:3;993:16;986:27;922:101;771:258;722:307;;;:::o;1035:102::-;1076:6;1127:2;1123:7;1118:2;1111:5;1107:14;1103:28;1093:38;;1035:102;;;:::o;1143:364::-;1231:3;1259:39;1292:5;1259:39;:::i;:::-;1314:71;1378:6;1373:3;1314:71;:::i;:::-;1307:78;;1394:52;1439:6;1434:3;1427:4;1420:5;1416:16;1394:52;:::i;:::-;1471:29;1493:6;1471:29;:::i;:::-;1466:3;1462:39;1455:46;;1235:272;1143:364;;;;:::o;1513:313::-;1626:4;1664:2;1653:9;1649:18;1641:26;;1713:9;1707:4;1703:20;1699:1;1688:9;1684:17;1677:47;1741:78;1814:4;1805:6;1741:78;:::i;:::-;1733:86;;1513:313;;;;:::o;1832:75::-;1865:6;1898:2;1892:9;1882:19;;1832:75;:::o;1913:117::-;2022:1;2019;2012:12;2036:117;2145:1;2142;2135:12;2159:126;2196:7;2236:42;2229:5;2225:54;2214:65;;2159:126;;;:::o;2291:96::-;2328:7;2357:24;2375:5;2357:24;:::i;:::-;2346:35;;2291:96;;;:::o;2393:122::-;2466:24;2484:5;2466:24;:::i;:::-;2459:5;2456:35;2446:63;;2505:1;2502;2495:12;2446:63;2393:122;:::o;2521:139::-;2567:5;2605:6;2592:20;2583:29;;2621:33;2648:5;2621:33;:::i;:::-;2521:139;;;;:::o;2666:122::-;2739:24;2757:5;2739:24;:::i;:::-;2732:5;2729:35;2719:63;;2778:1;2775;2768:12;2719:63;2666:122;:::o;2794:139::-;2840:5;2878:6;2865:20;2856:29;;2894:33;2921:5;2894:33;:::i;:::-;2794:139;;;;:::o;2939:474::-;3007:6;3015;3064:2;3052:9;3043:7;3039:23;3035:32;3032:119;;;3070:79;;:::i;:::-;3032:119;3190:1;3215:53;3260:7;3251:6;3240:9;3236:22;3215:53;:::i;:::-;3205:63;;3161:117;3317:2;3343:53;3388:7;3379:6;3368:9;3364:22;3343:53;:::i;:::-;3333:63;;3288:118;2939:474;;;;;:::o;3419:90::-;3453:7;3496:5;3489:13;3482:21;3471:32;;3419:90;;;:::o;3515:109::-;3596:21;3611:5;3596:21;:::i;:::-;3591:3;3584:34;3515:109;;:::o;3630:210::-;3717:4;3755:2;3744:9;3740:18;3732:26;;3768:65;3830:1;3819:9;3815:17;3806:6;3768:65;:::i;:::-;3630:210;;;;:::o;3846:619::-;3923:6;3931;3939;3988:2;3976:9;3967:7;3963:23;3959:32;3956:119;;;3994:79;;:::i;:::-;3956:119;4114:1;4139:53;4184:7;4175:6;4164:9;4160:22;4139:53;:::i;:::-;4129:63;;4085:117;4241:2;4267:53;4312:7;4303:6;4292:9;4288:22;4267:53;:::i;:::-;4257:63;;4212:118;4369:2;4395:53;4440:7;4431:6;4420:9;4416:22;4395:53;:::i;:::-;4385:63;;4340:118;3846:619;;;;;:::o;4471:86::-;4506:7;4546:4;4539:5;4535:16;4524:27;;4471:86;;;:::o;4563:112::-;4646:22;4662:5;4646:22;:::i;:::-;4641:3;4634:35;4563:112;;:::o;4681:214::-;4770:4;4808:2;4797:9;4793:18;4785:26;;4821:67;4885:1;4874:9;4870:17;4861:6;4821:67;:::i;:::-;4681:214;;;;:::o;4901:329::-;4960:6;5009:2;4997:9;4988:7;4984:23;4980:32;4977:119;;;5015:79;;:::i;:::-;4977:119;5135:1;5160:53;5205:7;5196:6;5185:9;5181:22;5160:53;:::i;:::-;5150:63;;5106:117;4901:329;;;;:::o;5236:116::-;5306:21;5321:5;5306:21;:::i;:::-;5299:5;5296:32;5286:60;;5342:1;5339;5332:12;5286:60;5236:116;:::o;5358:133::-;5401:5;5439:6;5426:20;5417:29;;5455:30;5479:5;5455:30;:::i;:::-;5358:133;;;;:::o;5497:468::-;5562:6;5570;5619:2;5607:9;5598:7;5594:23;5590:32;5587:119;;;5625:79;;:::i;:::-;5587:119;5745:1;5770:53;5815:7;5806:6;5795:9;5791:22;5770:53;:::i;:::-;5760:63;;5716:117;5872:2;5898:50;5940:7;5931:6;5920:9;5916:22;5898:50;:::i;:::-;5888:60;;5843:115;5497:468;;;;;:::o;5971:329::-;6030:6;6079:2;6067:9;6058:7;6054:23;6050:32;6047:119;;;6085:79;;:::i;:::-;6047:119;6205:1;6230:53;6275:7;6266:6;6255:9;6251:22;6230:53;:::i;:::-;6220:63;;6176:117;5971:329;;;;:::o;6306:118::-;6393:24;6411:5;6393:24;:::i;:::-;6388:3;6381:37;6306:118;;:::o;6430:222::-;6523:4;6561:2;6550:9;6546:18;6538:26;;6574:71;6642:1;6631:9;6627:17;6618:6;6574:71;:::i;:::-;6430:222;;;;:::o;6658:474::-;6726:6;6734;6783:2;6771:9;6762:7;6758:23;6754:32;6751:119;;;6789:79;;:::i;:::-;6751:119;6909:1;6934:53;6979:7;6970:6;6959:9;6955:22;6934:53;:::i;:::-;6924:63;;6880:117;7036:2;7062:53;7107:7;7098:6;7087:9;7083:22;7062:53;:::i;:::-;7052:63;;7007:118;6658:474;;;;;:::o;7138:619::-;7215:6;7223;7231;7280:2;7268:9;7259:7;7255:23;7251:32;7248:119;;;7286:79;;:::i;:::-;7248:119;7406:1;7431:53;7476:7;7467:6;7456:9;7452:22;7431:53;:::i;:::-;7421:63;;7377:117;7533:2;7559:53;7604:7;7595:6;7584:9;7580:22;7559:53;:::i;:::-;7549:63;;7504:118;7661:2;7687:53;7732:7;7723:6;7712:9;7708:22;7687:53;:::i;:::-;7677:63;;7632:118;7138:619;;;;;:::o;7763:468::-;7828:6;7836;7885:2;7873:9;7864:7;7860:23;7856:32;7853:119;;;7891:79;;:::i;:::-;7853:119;8011:1;8036:50;8078:7;8069:6;8058:9;8054:22;8036:50;:::i;:::-;8026:60;;7982:114;8135:2;8161:53;8206:7;8197:6;8186:9;8182:22;8161:53;:::i;:::-;8151:63;;8106:118;7763:468;;;;;:::o;8237:60::-;8265:3;8286:5;8279:12;;8237:60;;;:::o;8303:142::-;8353:9;8386:53;8404:34;8413:24;8431:5;8413:24;:::i;:::-;8404:34;:::i;:::-;8386:53;:::i;:::-;8373:66;;8303:142;;;:::o;8451:126::-;8501:9;8534:37;8565:5;8534:37;:::i;:::-;8521:50;;8451:126;;;:::o;8583:144::-;8651:9;8684:37;8715:5;8684:37;:::i;:::-;8671:50;;8583:144;;;:::o;8733:167::-;8838:55;8887:5;8838:55;:::i;:::-;8833:3;8826:68;8733:167;;:::o;8906:258::-;9017:4;9055:2;9044:9;9040:18;9032:26;;9068:89;9154:1;9143:9;9139:17;9130:6;9068:89;:::i;:::-;8906:258;;;;:::o;9170:182::-;9310:34;9306:1;9298:6;9294:14;9287:58;9170:182;:::o;9358:366::-;9500:3;9521:67;9585:2;9580:3;9521:67;:::i;:::-;9514:74;;9597:93;9686:3;9597:93;:::i;:::-;9715:2;9710:3;9706:12;9699:19;;9358:366;;;:::o;9730:419::-;9896:4;9934:2;9923:9;9919:18;9911:26;;9983:9;9977:4;9973:20;9969:1;9958:9;9954:17;9947:47;10011:131;10137:4;10011:131;:::i;:::-;10003:139;;9730:419;;;:::o;10155:180::-;10203:77;10200:1;10193:88;10300:4;10297:1;10290:15;10324:4;10321:1;10314:15;10341:305;10381:3;10400:20;10418:1;10400:20;:::i;:::-;10395:25;;10434:20;10452:1;10434:20;:::i;:::-;10429:25;;10588:1;10520:66;10516:74;10513:1;10510:81;10507:107;;;10594:18;;:::i;:::-;10507:107;10638:1;10635;10631:9;10624:16;;10341:305;;;;:::o;10652:180::-;10700:77;10697:1;10690:88;10797:4;10794:1;10787:15;10821:4;10818:1;10811:15;10838:185;10878:1;10895:20;10913:1;10895:20;:::i;:::-;10890:25;;10929:20;10947:1;10929:20;:::i;:::-;10924:25;;10968:1;10958:35;;10973:18;;:::i;:::-;10958:35;11015:1;11012;11008:9;11003:14;;10838:185;;;;:::o;11029:176::-;11169:28;11165:1;11157:6;11153:14;11146:52;11029:176;:::o;11211:366::-;11353:3;11374:67;11438:2;11433:3;11374:67;:::i;:::-;11367:74;;11450:93;11539:3;11450:93;:::i;:::-;11568:2;11563:3;11559:12;11552:19;;11211:366;;;:::o;11583:419::-;11749:4;11787:2;11776:9;11772:18;11764:26;;11836:9;11830:4;11826:20;11822:1;11811:9;11807:17;11800:47;11864:131;11990:4;11864:131;:::i;:::-;11856:139;;11583:419;;;:::o;12008:161::-;12148:13;12144:1;12136:6;12132:14;12125:37;12008:161;:::o;12175:366::-;12317:3;12338:67;12402:2;12397:3;12338:67;:::i;:::-;12331:74;;12414:93;12503:3;12414:93;:::i;:::-;12532:2;12527:3;12523:12;12516:19;;12175:366;;;:::o;12547:419::-;12713:4;12751:2;12740:9;12736:18;12728:26;;12800:9;12794:4;12790:20;12786:1;12775:9;12771:17;12764:47;12828:131;12954:4;12828:131;:::i;:::-;12820:139;;12547:419;;;:::o;12972:332::-;13093:4;13131:2;13120:9;13116:18;13108:26;;13144:71;13212:1;13201:9;13197:17;13188:6;13144:71;:::i;:::-;13225:72;13293:2;13282:9;13278:18;13269:6;13225:72;:::i;:::-;12972:332;;;;;:::o;13310:137::-;13364:5;13395:6;13389:13;13380:22;;13411:30;13435:5;13411:30;:::i;:::-;13310:137;;;;:::o;13453:345::-;13520:6;13569:2;13557:9;13548:7;13544:23;13540:32;13537:119;;;13575:79;;:::i;:::-;13537:119;13695:1;13720:61;13773:7;13764:6;13753:9;13749:22;13720:61;:::i;:::-;13710:71;;13666:125;13453:345;;;;:::o;13804:225::-;13944:34;13940:1;13932:6;13928:14;13921:58;14013:8;14008:2;14000:6;13996:15;13989:33;13804:225;:::o;14035:366::-;14177:3;14198:67;14262:2;14257:3;14198:67;:::i;:::-;14191:74;;14274:93;14363:3;14274:93;:::i;:::-;14392:2;14387:3;14383:12;14376:19;;14035:366;;;:::o;14407:419::-;14573:4;14611:2;14600:9;14596:18;14588:26;;14660:9;14654:4;14650:20;14646:1;14635:9;14631:17;14624:47;14688:131;14814:4;14688:131;:::i;:::-;14680:139;;14407:419;;;:::o;14832:166::-;14972:18;14968:1;14960:6;14956:14;14949:42;14832:166;:::o;15004:366::-;15146:3;15167:67;15231:2;15226:3;15167:67;:::i;:::-;15160:74;;15243:93;15332:3;15243:93;:::i;:::-;15361:2;15356:3;15352:12;15345:19;;15004:366;;;:::o;15376:419::-;15542:4;15580:2;15569:9;15565:18;15557:26;;15629:9;15623:4;15619:20;15615:1;15604:9;15600:17;15593:47;15657:131;15783:4;15657:131;:::i;:::-;15649:139;;15376:419;;;:::o;15801:177::-;15941:29;15937:1;15929:6;15925:14;15918:53;15801:177;:::o;15984:366::-;16126:3;16147:67;16211:2;16206:3;16147:67;:::i;:::-;16140:74;;16223:93;16312:3;16223:93;:::i;:::-;16341:2;16336:3;16332:12;16325:19;;15984:366;;;:::o;16356:419::-;16522:4;16560:2;16549:9;16545:18;16537:26;;16609:9;16603:4;16599:20;16595:1;16584:9;16580:17;16573:47;16637:131;16763:4;16637:131;:::i;:::-;16629:139;;16356:419;;;:::o;16781:191::-;16821:4;16841:20;16859:1;16841:20;:::i;:::-;16836:25;;16875:20;16893:1;16875:20;:::i;:::-;16870:25;;16914:1;16911;16908:8;16905:34;;;16919:18;;:::i;:::-;16905:34;16964:1;16961;16957:9;16949:17;;16781:191;;;;:::o;16978:161::-;17118:13;17114:1;17106:6;17102:14;17095:37;16978:161;:::o;17145:366::-;17287:3;17308:67;17372:2;17367:3;17308:67;:::i;:::-;17301:74;;17384:93;17473:3;17384:93;:::i;:::-;17502:2;17497:3;17493:12;17486:19;;17145:366;;;:::o;17517:419::-;17683:4;17721:2;17710:9;17706:18;17698:26;;17770:9;17764:4;17760:20;17756:1;17745:9;17741:17;17734:47;17798:131;17924:4;17798:131;:::i;:::-;17790:139;;17517:419;;;:::o;17942:161::-;18082:13;18078:1;18070:6;18066:14;18059:37;17942:161;:::o;18109:366::-;18251:3;18272:67;18336:2;18331:3;18272:67;:::i;:::-;18265:74;;18348:93;18437:3;18348:93;:::i;:::-;18466:2;18461:3;18457:12;18450:19;;18109:366;;;:::o;18481:419::-;18647:4;18685:2;18674:9;18670:18;18662:26;;18734:9;18728:4;18724:20;18720:1;18709:9;18705:17;18698:47;18762:131;18888:4;18762:131;:::i;:::-;18754:139;;18481:419;;;:::o;18906:180::-;18954:77;18951:1;18944:88;19051:4;19048:1;19041:15;19075:4;19072:1;19065:15;19092:180;19140:77;19137:1;19130:88;19237:4;19234:1;19227:15;19261:4;19258:1;19251:15;19278:143;19335:5;19366:6;19360:13;19351:22;;19382:33;19409:5;19382:33;:::i;:::-;19278:143;;;;:::o;19427:351::-;19497:6;19546:2;19534:9;19525:7;19521:23;19517:32;19514:119;;;19552:79;;:::i;:::-;19514:119;19672:1;19697:64;19753:7;19744:6;19733:9;19729:22;19697:64;:::i;:::-;19687:74;;19643:128;19427:351;;;;:::o;19784:85::-;19829:7;19858:5;19847:16;;19784:85;;;:::o;19875:158::-;19933:9;19966:61;19984:42;19993:32;20019:5;19993:32;:::i;:::-;19984:42;:::i;:::-;19966:61;:::i;:::-;19953:74;;19875:158;;;:::o;20039:147::-;20134:45;20173:5;20134:45;:::i;:::-;20129:3;20122:58;20039:147;;:::o;20192:114::-;20259:6;20293:5;20287:12;20277:22;;20192:114;;;:::o;20312:184::-;20411:11;20445:6;20440:3;20433:19;20485:4;20480:3;20476:14;20461:29;;20312:184;;;;:::o;20502:132::-;20569:4;20592:3;20584:11;;20622:4;20617:3;20613:14;20605:22;;20502:132;;;:::o;20640:108::-;20717:24;20735:5;20717:24;:::i;:::-;20712:3;20705:37;20640:108;;:::o;20754:179::-;20823:10;20844:46;20886:3;20878:6;20844:46;:::i;:::-;20922:4;20917:3;20913:14;20899:28;;20754:179;;;;:::o;20939:113::-;21009:4;21041;21036:3;21032:14;21024:22;;20939:113;;;:::o;21088:732::-;21207:3;21236:54;21284:5;21236:54;:::i;:::-;21306:86;21385:6;21380:3;21306:86;:::i;:::-;21299:93;;21416:56;21466:5;21416:56;:::i;:::-;21495:7;21526:1;21511:284;21536:6;21533:1;21530:13;21511:284;;;21612:6;21606:13;21639:63;21698:3;21683:13;21639:63;:::i;:::-;21632:70;;21725:60;21778:6;21725:60;:::i;:::-;21715:70;;21571:224;21558:1;21555;21551:9;21546:14;;21511:284;;;21515:14;21811:3;21804:10;;21212:608;;;21088:732;;;;:::o;21826:831::-;22089:4;22127:3;22116:9;22112:19;22104:27;;22141:71;22209:1;22198:9;22194:17;22185:6;22141:71;:::i;:::-;22222:80;22298:2;22287:9;22283:18;22274:6;22222:80;:::i;:::-;22349:9;22343:4;22339:20;22334:2;22323:9;22319:18;22312:48;22377:108;22480:4;22471:6;22377:108;:::i;:::-;22369:116;;22495:72;22563:2;22552:9;22548:18;22539:6;22495:72;:::i;:::-;22577:73;22645:3;22634:9;22630:19;22621:6;22577:73;:::i;:::-;21826:831;;;;;;;;:::o;22663:147::-;22764:11;22801:3;22786:18;;22663:147;;;;:::o;22816:114::-;;:::o;22936:398::-;23095:3;23116:83;23197:1;23192:3;23116:83;:::i;:::-;23109:90;;23208:93;23297:3;23208:93;:::i;:::-;23326:1;23321:3;23317:11;23310:18;;22936:398;;;:::o;23340:379::-;23524:3;23546:147;23689:3;23546:147;:::i;:::-;23539:154;;23710:3;23703:10;;23340:379;;;:::o;23725:807::-;23974:4;24012:3;24001:9;23997:19;23989:27;;24026:71;24094:1;24083:9;24079:17;24070:6;24026:71;:::i;:::-;24107:72;24175:2;24164:9;24160:18;24151:6;24107:72;:::i;:::-;24189:80;24265:2;24254:9;24250:18;24241:6;24189:80;:::i;:::-;24279;24355:2;24344:9;24340:18;24331:6;24279:80;:::i;:::-;24369:73;24437:3;24426:9;24422:19;24413:6;24369:73;:::i;:::-;24452;24520:3;24509:9;24505:19;24496:6;24452:73;:::i;:::-;23725:807;;;;;;;;;:::o;24538:143::-;24595:5;24626:6;24620:13;24611:22;;24642:33;24669:5;24642:33;:::i;:::-;24538:143;;;;:::o;24687:663::-;24775:6;24783;24791;24840:2;24828:9;24819:7;24815:23;24811:32;24808:119;;;24846:79;;:::i;:::-;24808:119;24966:1;24991:64;25047:7;25038:6;25027:9;25023:22;24991:64;:::i;:::-;24981:74;;24937:128;25104:2;25130:64;25186:7;25177:6;25166:9;25162:22;25130:64;:::i;:::-;25120:74;;25075:129;25243:2;25269:64;25325:7;25316:6;25305:9;25301:22;25269:64;:::i;:::-;25259:74;;25214:129;24687:663;;;;;:::o;25356:332::-;25477:4;25515:2;25504:9;25500:18;25492:26;;25528:71;25596:1;25585:9;25581:17;25572:6;25528:71;:::i;:::-;25609:72;25677:2;25666:9;25662:18;25653:6;25609:72;:::i;:::-;25356:332;;;;;:::o;25694:156::-;25834:8;25830:1;25822:6;25818:14;25811:32;25694:156;:::o;25856:365::-;25998:3;26019:66;26083:1;26078:3;26019:66;:::i;:::-;26012:73;;26094:93;26183:3;26094:93;:::i;:::-;26212:2;26207:3;26203:12;26196:19;;25856:365;;;:::o;26227:419::-;26393:4;26431:2;26420:9;26416:18;26408:26;;26480:9;26474:4;26470:20;26466:1;26455:9;26451:17;26444:47;26508:131;26634:4;26508:131;:::i;:::-;26500:139;;26227:419;;;:::o;26652:222::-;26792:34;26788:1;26780:6;26776:14;26769:58;26861:5;26856:2;26848:6;26844:15;26837:30;26652:222;:::o;26880:366::-;27022:3;27043:67;27107:2;27102:3;27043:67;:::i;:::-;27036:74;;27119:93;27208:3;27119:93;:::i;:::-;27237:2;27232:3;27228:12;27221:19;;26880:366;;;:::o;27252:419::-;27418:4;27456:2;27445:9;27441:18;27433:26;;27505:9;27499:4;27495:20;27491:1;27480:9;27476:17;27469:47;27533:131;27659:4;27533:131;:::i;:::-;27525:139;;27252:419;;;:::o;27677:483::-;27848:4;27886:2;27875:9;27871:18;27863:26;;27899:71;27967:1;27956:9;27952:17;27943:6;27899:71;:::i;:::-;28017:9;28011:4;28007:20;28002:2;27991:9;27987:18;27980:48;28045:108;28148:4;28139:6;28045:108;:::i;:::-;28037:116;;27677:483;;;;;:::o;28166:117::-;28275:1;28272;28265:12;28289:281;28372:27;28394:4;28372:27;:::i;:::-;28364:6;28360:40;28502:6;28490:10;28487:22;28466:18;28454:10;28451:34;28448:62;28445:88;;;28513:18;;:::i;:::-;28445:88;28553:10;28549:2;28542:22;28332:238;28289:281;;:::o;28576:129::-;28610:6;28637:20;;:::i;:::-;28627:30;;28666:33;28694:4;28686:6;28666:33;:::i;:::-;28576:129;;;:::o;28711:311::-;28788:4;28878:18;28870:6;28867:30;28864:56;;;28900:18;;:::i;:::-;28864:56;28950:4;28942:6;28938:17;28930:25;;29010:4;29004;29000:15;28992:23;;28711:311;;;:::o;29028:117::-;29137:1;29134;29127:12;29168:732;29275:5;29300:81;29316:64;29373:6;29316:64;:::i;:::-;29300:81;:::i;:::-;29291:90;;29401:5;29430:6;29423:5;29416:21;29464:4;29457:5;29453:16;29446:23;;29517:4;29509:6;29505:17;29497:6;29493:30;29546:3;29538:6;29535:15;29532:122;;;29565:79;;:::i;:::-;29532:122;29680:6;29663:231;29697:6;29692:3;29689:15;29663:231;;;29772:3;29801:48;29845:3;29833:10;29801:48;:::i;:::-;29796:3;29789:61;29879:4;29874:3;29870:14;29863:21;;29739:155;29723:4;29718:3;29714:14;29707:21;;29663:231;;;29667:21;29281:619;;29168:732;;;;;:::o;29923:385::-;30005:5;30054:3;30047:4;30039:6;30035:17;30031:27;30021:122;;30062:79;;:::i;:::-;30021:122;30172:6;30166:13;30197:105;30298:3;30290:6;30283:4;30275:6;30271:17;30197:105;:::i;:::-;30188:114;;30011:297;29923:385;;;;:::o;30314:554::-;30409:6;30458:2;30446:9;30437:7;30433:23;30429:32;30426:119;;;30464:79;;:::i;:::-;30426:119;30605:1;30594:9;30590:17;30584:24;30635:18;30627:6;30624:30;30621:117;;;30657:79;;:::i;:::-;30621:117;30762:89;30843:7;30834:6;30823:9;30819:22;30762:89;:::i;:::-;30752:99;;30555:306;30314:554;;;;:::o;30874:348::-;30914:7;30937:20;30955:1;30937:20;:::i;:::-;30932:25;;30971:20;30989:1;30971:20;:::i;:::-;30966:25;;31159:1;31091:66;31087:74;31084:1;31081:81;31076:1;31069:9;31062:17;31058:105;31055:131;;;31166:18;;:::i;:::-;31055:131;31214:1;31211;31207:9;31196:20;;30874:348;;;;:::o;31228:220::-;31368:34;31364:1;31356:6;31352:14;31345:58;31437:3;31432:2;31424:6;31420:15;31413:28;31228:220;:::o;31454:366::-;31596:3;31617:67;31681:2;31676:3;31617:67;:::i;:::-;31610:74;;31693:93;31782:3;31693:93;:::i;:::-;31811:2;31806:3;31802:12;31795:19;;31454:366;;;:::o;31826:419::-;31992:4;32030:2;32019:9;32015:18;32007:26;;32079:9;32073:4;32069:20;32065:1;32054:9;32050:17;32043:47;32107:131;32233:4;32107:131;:::i;:::-;32099:139;;31826:419;;;:::o

Swarm Source

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