ETH Price: $2,520.11 (-0.10%)
Gas: 0.78 Gwei

Token

WALLY AI (WALLY)
 

Overview

Max Total Supply

1,000,000,000 WALLY

Holders

120

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
908,906 WALLY

Value
$0.00
0x79ead86b38fc5ad4259951830b5aeb026431bc56
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x640D1D47...B0339aF0A
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
wally

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-03-27
*/

/**
 *Submitted for verification at Etherscan.io on 2023-12-14
*/

pragma solidity 0.8.20;

// SPDX-License-Identifier: MIT

/* 

TELEGRAM: https://t.me/wallyai
WEBSITE: https://wallyeth.com/
TWITTER: https://twitter.com/WallyAiEth

*/


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

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

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

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

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

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

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

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

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

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

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

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

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

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

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

    function contractEthBalance() external view returns (uint256) {
        return address(this).balance;
    }


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

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5.05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the default value returned by this function, unless
     * it's overridden.
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

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

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

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

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

    /**
     * @dev See {IERC20-approve}.
     *
     * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on
     * `transferFrom`. This is semantically equivalent to an infinite approval.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * NOTE: Does not update the allowance if the current allowance
     * is the maximum `uint256`.
     *
     * Requirements:
     *
     * - `from` and `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     * - the caller must have allowance for ``from``'s tokens of at least
     * `amount`.
     */
    function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, spender) + addedValue);
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        address owner = _msgSender();
        uint256 currentAllowance = allowance(owner, spender);
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `from` to `to`.
     *
     * This internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     */
    function _transfer(address from, address to, uint256 amount) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
            // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by
            // decrementing then incrementing.
            _balances[to] += amount;
        }

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

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

        _totalSupply += amount;
        unchecked {
            // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.
            _balances[account] += amount;
        }
        emit Transfer(address(0), account, amount);

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

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

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

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
            // Overflow not possible: amount <= accountBalance <= totalSupply.
            _totalSupply -= amount;
        }

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

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

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(address owner, address spender, uint256 amount) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

    /**
     * @dev Updates `owner` s allowance for `spender` based on spent `amount`.
     *
     * Does not update the allowance amount in case of infinite allowance.
     * Revert if not enough allowance is available.
     *
     * Might emit an {Approval} event.
     */
    function _spendAllowance(address owner, address spender, uint256 amount) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {}

    /**
     * @dev Hook that is called after any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * has been transferred to `to`.
     * - when `from` is zero, `amount` tokens have been minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens have been burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {}
}

contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() external virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

interface IDexRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external;
}

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

contract wally is ERC20, Ownable {

    mapping (address => bool) public exemptFromFees;
    mapping (address => bool) public exemptFromLimits;

    bool public tradingActive;

    mapping (address => bool) public isAMMPair;

    uint256 public maxTransaction;
    uint256 public maxWallet;

    address public operationsAddress;

    uint256 public buyTax;
    uint256 public sellTax;

    mapping(address => uint256) private _holderLastTransferBlock; // to hold last Transfers temporarily during launch
    bool public transferDelayEnabled = true;
    bool public limitsInEffect = true;

    bool private swapping;
    uint256 public swapTokensAtAmt;

    address public lpPair;
    IDexRouter public dexRouter;

    uint256 public constant FEE_DIVISOR = 10000;

    // events

    event UpdatedMaxTransaction(uint256 newMax);
    event UpdatedMaxWallet(uint256 newMax);
    event SetExemptFromFees(address _address, bool _isExempt);
    event SetExemptFromLimits(address _address, bool _isExempt);
    event RemovedLimits();
    event UpdatedBuyTax(uint256 newAmt);
    event UpdatedSellTax(uint256 newAmt);

    // constructor

    constructor(string memory _name, string memory _symbol)
        ERC20(_name, _symbol)
    {   
        address newOwner = 0xc4A5e340d9C76BE7815Db49124eF6BAFADD5C584;
        _mint(newOwner, 1_000_000_000 * 1e18);
        uint256 _totalSupply = totalSupply();

        address _v2Router;

        // @dev assumes WETH pair
        if(block.chainid == 1){
            _v2Router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
        } else if(block.chainid == 5){
            _v2Router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
        } else {
            revert("Chain not configured");
        }

        dexRouter = IDexRouter(_v2Router);

        maxTransaction = _totalSupply * 20 / 1000;
        maxWallet = _totalSupply * 20 / 1000;
        swapTokensAtAmt = _totalSupply * 25 / 100000;

        operationsAddress = 0x2Ed04BBea3E26Dea63180f97068cD945e270D6c2;

        buyTax = 4900; // 1% = 100
        sellTax = 6000; // 1% = 100

        lpPair = IDexFactory(dexRouter.factory()).createPair(address(this), dexRouter.WETH());

        isAMMPair[lpPair] = true;

        exemptFromLimits[lpPair] = true;
        exemptFromLimits[newOwner] = true;
        exemptFromLimits[address(this)] = true;
        exemptFromLimits[address(dexRouter)] = true;
        

        exemptFromFees[newOwner] = true;
        exemptFromFees[address(this)] = true;
        exemptFromFees[address(dexRouter)] = true;
        
 
        _approve(address(this), address(dexRouter), type(uint256).max);
        transferOwnership(newOwner);
    }

    receive() external payable {}

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual override {
        
        if(exemptFromFees[from] || exemptFromFees[to] || swapping){
            super._transfer(from,to,amount);
            return;
        }

        require(tradingActive, "Trading not active");

        if(limitsInEffect){
            checkLimits(from, to, amount);
        }

        amount -= handleTax(from, to, amount);

        super._transfer(from,to,amount);
    }

    function checkLimits(address from, address to, uint256 amount) internal {
        if (transferDelayEnabled){
            if (to != address(dexRouter) && !isAMMPair[to]){
                require(_holderLastTransferBlock[tx.origin] < block.number, "Transfer Delay enabled.");
                _holderLastTransferBlock[tx.origin] = block.number;
            }
        }

        // buy
        if (isAMMPair[from] && !exemptFromLimits[to]) {
            require(amount <= maxTransaction, "Max tx exceeded.");
            require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
        } 
        // sell
        else if (isAMMPair[to] && !exemptFromLimits[from]) {
            require(amount <= maxTransaction, "Max tx exceeded.");
        }
        else if(!exemptFromLimits[to]) {
            require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
        }
    }

    function handleTax(address from, address to, uint256 amount) internal returns (uint256){
        if(balanceOf(address(this)) >= swapTokensAtAmt && !swapping && !isAMMPair[from]) {
            swapping = true;
            swapBack();
            swapping = false;
        }
        
        uint256 tax = 0;

        // on sell
        if (isAMMPair[to] && sellTax > 0){
            tax = amount * sellTax / FEE_DIVISOR;
        }
        // on buy
        else if(isAMMPair[from] && buyTax > 0) {
            tax = amount * buyTax / FEE_DIVISOR;
        }
        
        if(tax > 0){    
            super._transfer(from, address(this), tax);
        }
        
        return tax;
    }

    function swapTokensForETH(uint256 tokenAmt) private {

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

        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmt,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function swapBack() private {

        uint256 contractBalance = balanceOf(address(this));
        
        if(contractBalance == 0) {return;}

        if(contractBalance > swapTokensAtAmt * 40){
            contractBalance = swapTokensAtAmt * 40;
        }
        
        swapTokensForETH(contractBalance);
            
        if(address(this).balance > 0){
            bool success;
            (success, ) = operationsAddress.call{value: address(this).balance}("");
        }
    }

    // owner functions

    function setExemptFromFees(address _address, bool _isExempt) external onlyOwner {
        require(_address != address(0), "Zero Address");
        exemptFromFees[_address] = _isExempt;
        emit SetExemptFromFees(_address, _isExempt);
    }

    function setExemptFromLimits(address _address, bool _isExempt) external onlyOwner {
        require(_address != address(0), "Zero Address");
        if(!_isExempt){
            require(_address != lpPair, "Pair");
        }
        exemptFromLimits[_address] = _isExempt;
        emit SetExemptFromLimits(_address, _isExempt);
    }

    function updateMaxTransaction(uint256 newNumInTokens) external onlyOwner {
        require(newNumInTokens >= (totalSupply() * 5 / 1000)/(10**decimals()), "Too low");
        maxTransaction = newNumInTokens * (10**decimals());
        emit UpdatedMaxTransaction(maxTransaction);
    }

    function updateMaxWallet(uint256 newNumInTokens) external onlyOwner {
        require(newNumInTokens >= (totalSupply() * 1 / 100)/(10**decimals()), "Too low");
        maxWallet = newNumInTokens * (10**decimals());
        emit UpdatedMaxWallet(maxWallet);
    }

    function updateTaxes(uint256 _buyTax, uint256 _sellTax) external onlyOwner {
        buyTax = _buyTax;
        emit UpdatedBuyTax(buyTax);
        sellTax = _sellTax;
        emit UpdatedSellTax(sellTax);
    }

    function enableTrading() external onlyOwner {
        require(!tradingActive, "Trading active");
        tradingActive = true;
    }

    function removeLimits() external onlyOwner {
        limitsInEffect = false;
        transferDelayEnabled = false;
        maxTransaction = totalSupply();
        maxWallet = totalSupply();
        emit RemovedLimits();
    }

    function disableTransferDelay() external onlyOwner {
        transferDelayEnabled = false;
    }

    function updateOperationsAddress(address _address) external onlyOwner {
        require(_address != address(0), "zero address");
        operationsAddress = _address;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"RemovedLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"_isExempt","type":"bool"}],"name":"SetExemptFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"_isExempt","type":"bool"}],"name":"SetExemptFromLimits","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmt","type":"uint256"}],"name":"UpdatedBuyTax","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newMax","type":"uint256"}],"name":"UpdatedMaxTransaction","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newMax","type":"uint256"}],"name":"UpdatedMaxWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmt","type":"uint256"}],"name":"UpdatedSellTax","type":"event"},{"inputs":[],"name":"FEE_DIVISOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractEthBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"exemptFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"exemptFromLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isAMMPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operationsAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_isExempt","type":"bool"}],"name":"setExemptFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_isExempt","type":"bool"}],"name":"setExemptFromLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokensAtAmt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNumInTokens","type":"uint256"}],"name":"updateMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNumInTokens","type":"uint256"}],"name":"updateMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"updateOperationsAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyTax","type":"uint256"},{"internalType":"uint256","name":"_sellTax","type":"uint256"}],"name":"updateTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600160105f6101000a81548160ff0219169083151502179055506001601060016101000a81548160ff02191690831515021790555034801562000045575f80fd5b50604051620055b4380380620055b483398181016040528101906200006b919062000f42565b818181600390816200007e9190620011fc565b508060049081620000909190620011fc565b5050505f620000a4620008a360201b60201c565b90508060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505f73c4a5e340d9c76be7815db49124ef6bafadd5c584905062000177816b033b2e3c9fd0803ce8000000620008aa60201b60201c565b5f6200018862000a0f60201b60201c565b90505f60014603620001b157737a250d5630b4cf539739df2c5dacb4c659f2488d905062000215565b60054603620001d757737a250d5630b4cf539739df2c5dacb4c659f2488d905062000214565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200020b906200133e565b60405180910390fd5b5b8060135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506103e86014836200026791906200138b565b62000273919062001402565b600a819055506103e86014836200028b91906200138b565b62000297919062001402565b600b81905550620186a0601983620002b091906200138b565b620002bc919062001402565b601181905550732ed04bbea3e26dea63180f97068cd945e270d6c2600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611324600d81905550611770600e8190555060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000393573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003b991906200149a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000440573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200046691906200149a565b6040518363ffffffff1660e01b815260040162000485929190620014db565b6020604051808303815f875af1158015620004a2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620004c891906200149a565b60125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160095f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160075f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160075f60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620008873060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62000a1860201b60201c565b620008988362000be360201b60201c565b505050505062001804565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200091b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009129062001554565b60405180910390fd5b6200092e5f838362000db360201b60201c565b8060025f82825462000941919062001574565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620009f09190620015bf565b60405180910390a362000a0b5f838362000db860201b60201c565b5050565b5f600254905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000a89576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a80906200164e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000afa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000af190620016e2565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000bd69190620015bf565b60405180910390a3505050565b62000bf3620008a360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000c84576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c7b9062001750565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000cf5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000cec90620017e4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b505050565b505050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b62000e1e8262000dd6565b810181811067ffffffffffffffff8211171562000e405762000e3f62000de6565b5b80604052505050565b5f62000e5462000dbd565b905062000e62828262000e13565b919050565b5f67ffffffffffffffff82111562000e845762000e8362000de6565b5b62000e8f8262000dd6565b9050602081019050919050565b5f5b8381101562000ebb57808201518184015260208101905062000e9e565b5f8484015250505050565b5f62000edc62000ed68462000e67565b62000e49565b90508281526020810184848401111562000efb5762000efa62000dd2565b5b62000f0884828562000e9c565b509392505050565b5f82601f83011262000f275762000f2662000dce565b5b815162000f3984826020860162000ec6565b91505092915050565b5f806040838503121562000f5b5762000f5a62000dc6565b5b5f83015167ffffffffffffffff81111562000f7b5762000f7a62000dca565b5b62000f898582860162000f10565b925050602083015167ffffffffffffffff81111562000fad5762000fac62000dca565b5b62000fbb8582860162000f10565b9150509250929050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200101457607f821691505b6020821081036200102a576200102962000fcf565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026200108e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262001051565b6200109a868362001051565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620010e4620010de620010d884620010b2565b620010bb565b620010b2565b9050919050565b5f819050919050565b620010ff83620010c4565b620011176200110e82620010eb565b8484546200105d565b825550505050565b5f90565b6200112d6200111f565b6200113a818484620010f4565b505050565b5b818110156200116157620011555f8262001123565b60018101905062001140565b5050565b601f821115620011b0576200117a8162001030565b620011858462001042565b8101602085101562001195578190505b620011ad620011a48562001042565b8301826200113f565b50505b505050565b5f82821c905092915050565b5f620011d25f1984600802620011b5565b1980831691505092915050565b5f620011ec8383620011c1565b9150826002028217905092915050565b620012078262000fc5565b67ffffffffffffffff81111562001223576200122262000de6565b5b6200122f825462000ffc565b6200123c82828562001165565b5f60209050601f83116001811462001272575f84156200125d578287015190505b620012698582620011df565b865550620012d8565b601f198416620012828662001030565b5f5b82811015620012ab5784890151825560018201915060208501945060208101905062001284565b86831015620012cb5784890151620012c7601f891682620011c1565b8355505b6001600288020188555050505b505050505050565b5f82825260208201905092915050565b7f436861696e206e6f7420636f6e666967757265640000000000000000000000005f82015250565b5f62001326601483620012e0565b91506200133382620012f0565b602082019050919050565b5f6020820190508181035f830152620013578162001318565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6200139782620010b2565b9150620013a483620010b2565b9250828202620013b481620010b2565b91508282048414831517620013ce57620013cd6200135e565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6200140e82620010b2565b91506200141b83620010b2565b9250826200142e576200142d620013d5565b5b828204905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620014648262001439565b9050919050565b620014768162001458565b811462001481575f80fd5b50565b5f8151905062001494816200146b565b92915050565b5f60208284031215620014b257620014b162000dc6565b5b5f620014c18482850162001484565b91505092915050565b620014d58162001458565b82525050565b5f604082019050620014f05f830185620014ca565b620014ff6020830184620014ca565b9392505050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f6200153c601f83620012e0565b9150620015498262001506565b602082019050919050565b5f6020820190508181035f8301526200156d816200152e565b9050919050565b5f6200158082620010b2565b91506200158d83620010b2565b9250828201905080821115620015a857620015a76200135e565b5b92915050565b620015b981620010b2565b82525050565b5f602082019050620015d45f830184620015ae565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f62001636602483620012e0565b91506200164382620015da565b604082019050919050565b5f6020820190508181035f830152620016678162001628565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f620016ca602283620012e0565b9150620016d7826200166e565b604082019050919050565b5f6020820190508181035f830152620016fb81620016bc565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f62001738602083620012e0565b9150620017458262001702565b602082019050919050565b5f6020820190508181035f83015262001769816200172a565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f620017cc602683620012e0565b9150620017d98262001770565b604082019050919050565b5f6020820190508181035f830152620017fd81620017be565b9050919050565b613da280620018125f395ff3fe608060405260043610610233575f3560e01c80638a8c523c1161012d578063c3f70b52116100aa578063e884f2601161006e578063e884f26014610840578063ea4cfe1214610856578063ea6debd014610880578063f2fde38b146108a8578063f8b45b05146108d05761023a565b8063c3f70b521461075c578063c78d0fa014610786578063c876d0b9146107b0578063cc1776d3146107da578063dd62ed3e146108045761023a565b8063a13d1a2b116100f1578063a13d1a2b14610656578063a457c2d71461067e578063a9059cbb146106ba578063b0249cc6146106f6578063bbc0c742146107325761023a565b80638a8c523c146105865780638d3e6e401461059c5780638da5cb5b146105d857806395d89b41146106025780639e93ad8e1461062c5761023a565b806339509351116101bb5780635d58ce361161017f5780635d58ce36146104cc57806370a08231146104f6578063715018a614610532578063751039fc1461054857806377b27d1f1461055e5761023a565b806339509351146103d6578063452ed4f1146104125780634a62bb651461043c5780634f7041a5146104665780635a90a49e146104905761023a565b80631006ee0c116102025780631006ee0c146102f657806318160ddd1461031e5780631c499ab01461034857806323b872dd14610370578063313ce567146103ac5761023a565b80630517d13d1461023e57806306fdde03146102665780630758d92414610290578063095ea7b3146102ba5761023a565b3661023a57005b5f80fd5b348015610249575f80fd5b50610264600480360381019061025f9190612bcb565b6108fa565b005b348015610271575f80fd5b5061027a610a72565b6040516102879190612c80565b60405180910390f35b34801561029b575f80fd5b506102a4610b02565b6040516102b19190612d1a565b60405180910390f35b3480156102c5575f80fd5b506102e060048036038101906102db9190612d6e565b610b27565b6040516102ed9190612dc6565b60405180910390f35b348015610301575f80fd5b5061031c60048036038101906103179190612ddf565b610b49565b005b348015610329575f80fd5b50610332610c63565b60405161033f9190612e2c565b60405180910390f35b348015610353575f80fd5b5061036e60048036038101906103699190612bcb565b610c6c565b005b34801561037b575f80fd5b5061039660048036038101906103919190612e45565b610de3565b6040516103a39190612dc6565b60405180910390f35b3480156103b7575f80fd5b506103c0610e11565b6040516103cd9190612eb0565b60405180910390f35b3480156103e1575f80fd5b506103fc60048036038101906103f79190612d6e565b610e19565b6040516104099190612dc6565b60405180910390f35b34801561041d575f80fd5b50610426610e4f565b6040516104339190612ed8565b60405180910390f35b348015610447575f80fd5b50610450610e74565b60405161045d9190612dc6565b60405180910390f35b348015610471575f80fd5b5061047a610e87565b6040516104879190612e2c565b60405180910390f35b34801561049b575f80fd5b506104b660048036038101906104b19190612ef1565b610e8d565b6040516104c39190612dc6565b60405180910390f35b3480156104d7575f80fd5b506104e0610eaa565b6040516104ed9190612e2c565b60405180910390f35b348015610501575f80fd5b5061051c60048036038101906105179190612ef1565b610eb1565b6040516105299190612e2c565b60405180910390f35b34801561053d575f80fd5b50610546610ef6565b005b348015610553575f80fd5b5061055c611049565b005b348015610569575f80fd5b50610584600480360381019061057f9190612f46565b61115c565b005b348015610591575f80fd5b5061059a6112f1565b005b3480156105a7575f80fd5b506105c260048036038101906105bd9190612ef1565b6113f2565b6040516105cf9190612dc6565b60405180910390f35b3480156105e3575f80fd5b506105ec61140f565b6040516105f99190612ed8565b60405180910390f35b34801561060d575f80fd5b50610616611437565b6040516106239190612c80565b60405180910390f35b348015610637575f80fd5b506106406114c7565b60405161064d9190612e2c565b60405180910390f35b348015610661575f80fd5b5061067c60048036038101906106779190612f46565b6114cd565b005b348015610689575f80fd5b506106a4600480360381019061069f9190612d6e565b6116f7565b6040516106b19190612dc6565b60405180910390f35b3480156106c5575f80fd5b506106e060048036038101906106db9190612d6e565b61176c565b6040516106ed9190612dc6565b60405180910390f35b348015610701575f80fd5b5061071c60048036038101906107179190612ef1565b61178e565b6040516107299190612dc6565b60405180910390f35b34801561073d575f80fd5b506107466117ab565b6040516107539190612dc6565b60405180910390f35b348015610767575f80fd5b506107706117bd565b60405161077d9190612e2c565b60405180910390f35b348015610791575f80fd5b5061079a6117c3565b6040516107a79190612e2c565b60405180910390f35b3480156107bb575f80fd5b506107c46117c9565b6040516107d19190612dc6565b60405180910390f35b3480156107e5575f80fd5b506107ee6117db565b6040516107fb9190612e2c565b60405180910390f35b34801561080f575f80fd5b5061082a60048036038101906108259190612f84565b6117e1565b6040516108379190612e2c565b60405180910390f35b34801561084b575f80fd5b50610854611863565b005b348015610861575f80fd5b5061086a611914565b6040516108779190612ed8565b60405180910390f35b34801561088b575f80fd5b506108a660048036038101906108a19190612ef1565b611939565b005b3480156108b3575f80fd5b506108ce60048036038101906108c99190612ef1565b611a80565b005b3480156108db575f80fd5b506108e4611c42565b6040516108f19190612e2c565b60405180910390f35b610902611c48565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610990576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109879061300c565b60405180910390fd5b610998610e11565b600a6109a49190613186565b6103e860056109b1610c63565b6109bb91906131d0565b6109c5919061323e565b6109cf919061323e565b811015610a11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a08906132b8565b60405180910390fd5b610a19610e11565b600a610a259190613186565b81610a3091906131d0565b600a819055507f76a9278644b7300961aa0e7e86f10934585987f1daf1c6ecc971c18376691574600a54604051610a679190612e2c565b60405180910390a150565b606060038054610a8190613303565b80601f0160208091040260200160405190810160405280929190818152602001828054610aad90613303565b8015610af85780601f10610acf57610100808354040283529160200191610af8565b820191905f5260205f20905b815481529060010190602001808311610adb57829003601f168201915b5050505050905090565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f80610b31611c48565b9050610b3e818585611c4f565b600191505092915050565b610b51611c48565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd69061300c565b60405180910390fd5b81600d819055507f5380a61520019ce8270d583f62f1b2b9f4f4372e1acaaf708f4865cecece0508600d54604051610c179190612e2c565b60405180910390a180600e819055507fa02824f65350567bc405e202b741e7ca6274004a9feeb44149df72b8bd599c97600e54604051610c579190612e2c565b60405180910390a15050565b5f600254905090565b610c74611c48565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf99061300c565b60405180910390fd5b610d0a610e11565b600a610d169190613186565b60646001610d22610c63565b610d2c91906131d0565b610d36919061323e565b610d40919061323e565b811015610d82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d79906132b8565b60405180910390fd5b610d8a610e11565b600a610d969190613186565b81610da191906131d0565b600b819055507f3046ad62de8b70d396246aaed19ff2559ff20df8706520cbde58320766c42762600b54604051610dd89190612e2c565b60405180910390a150565b5f80610ded611c48565b9050610dfa858285611e12565b610e05858585611e9d565b60019150509392505050565b5f6012905090565b5f80610e23611c48565b9050610e44818585610e3585896117e1565b610e3f9190613333565b611c4f565b600191505092915050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601060019054906101000a900460ff1681565b600d5481565b6006602052805f5260405f205f915054906101000a900460ff1681565b5f47905090565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610efe611c48565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f839061300c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611051611c48565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d69061300c565b60405180910390fd5b5f601060016101000a81548160ff0219169083151502179055505f60105f6101000a81548160ff02191690831515021790555061111a610c63565b600a81905550611128610c63565b600b819055507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c60405160405180910390a1565b611164611c48565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e99061300c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611260576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611257906133b0565b60405180910390fd5b8060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507f998cce27cbf44405c67eb636a634d5e2f2e6ff248b3d71fbbbb022f3c4c6dd2d82826040516112e59291906133ce565b60405180910390a15050565b6112f9611c48565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611387576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137e9061300c565b60405180910390fd5b60085f9054906101000a900460ff16156113d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cd9061343f565b60405180910390fd5b600160085f6101000a81548160ff021916908315150217905550565b6007602052805f5260405f205f915054906101000a900460ff1681565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461144690613303565b80601f016020809104026020016040519081016040528092919081815260200182805461147290613303565b80156114bd5780601f10611494576101008083540402835291602001916114bd565b820191905f5260205f20905b8154815290600101906020018083116114a057829003601f168201915b5050505050905090565b61271081565b6114d5611c48565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611563576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155a9061300c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c8906133b0565b60405180910390fd5b806116665760125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611665576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165c906134a7565b60405180910390fd5b5b8060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507f8f9f40630a1d139e6cf69b4f447ca47a36f10a017524efaa38252e516fa227ce82826040516116eb9291906133ce565b60405180910390a15050565b5f80611701611c48565b90505f61170e82866117e1565b905083811015611753576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174a90613535565b60405180910390fd5b6117608286868403611c4f565b60019250505092915050565b5f80611776611c48565b9050611783818585611e9d565b600191505092915050565b6009602052805f5260405f205f915054906101000a900460ff1681565b60085f9054906101000a900460ff1681565b600a5481565b60115481565b60105f9054906101000a900460ff1681565b600e5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61186b611c48565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f09061300c565b60405180910390fd5b5f60105f6101000a81548160ff021916908315150217905550565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611941611c48565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c69061300c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a349061359d565b60405180910390fd5b80600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611a88611c48565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0d9061300c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7b9061362b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b5481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611cbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb4906136b9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2290613747565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e059190612e2c565b60405180910390a3505050565b5f611e1d84846117e1565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611e975781811015611e89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e80906137af565b60405180910390fd5b611e968484848403611c4f565b5b50505050565b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611f38575060065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611f4f5750601060029054906101000a900460ff165b15611f6457611f5f838383611ffc565b611ff7565b60085f9054906101000a900460ff16611fb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa990613817565b60405180910390fd5b601060019054906101000a900460ff1615611fd357611fd2838383612268565b5b611fde8383836126c6565b81611fe99190613835565b9050611ff6838383611ffc565b5b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361206a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612061906138d8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120cf90613966565b60405180910390fd5b6120e383838361289d565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612166576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215d906139f4565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161224f9190612e2c565b60405180910390a36122628484846128a2565b50505050565b60105f9054906101000a900460ff16156123e85760135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612320575060095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156123e75743600f5f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054106123a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239b90613a5c565b60405180910390fd5b43600f5f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612485575060075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561252c57600a548111156124cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124c690613ac4565b60405180910390fd5b600b546124db83610eb1565b826124e69190613333565b1115612527576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251e90613b2c565b60405180910390fd5b6126c1565b60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156125c9575060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561261857600a54811115612613576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260a90613ac4565b60405180910390fd5b6126c0565b60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166126bf57600b5461267283610eb1565b8261267d9190613333565b11156126be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b590613b2c565b60405180910390fd5b5b5b5b505050565b5f6011546126d330610eb1565b101580156126ee5750601060029054906101000a900460ff16155b8015612741575060095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612784576001601060026101000a81548160ff0219169083151502179055506127696128a7565b5f601060026101000a81548160ff0219169083151502179055505b5f60095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156127dc57505f600e54115b1561280357612710600e54846127f291906131d0565b6127fc919061323e565b905061287e565b60095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561285a57505f600d54115b1561287d57612710600d548461287091906131d0565b61287a919061323e565b90505b5b5f81111561289257612891853083611ffc565b5b809150509392505050565b505050565b505050565b5f6128b130610eb1565b90505f81036128c05750612988565b60286011546128cf91906131d0565b8111156128e85760286011546128e591906131d0565b90505b6128f18161298a565b5f471115612986575f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161293f90613b77565b5f6040518083038185875af1925050503d805f8114612979576040519150601f19603f3d011682016040523d82523d5f602084013e61297e565b606091505b505080915050505b505b565b5f600267ffffffffffffffff8111156129a6576129a5613b8b565b5b6040519080825280602002602001820160405280156129d45781602001602082028036833780820191505090505b50905030815f815181106129eb576129ea613bb8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a8f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ab39190613bf9565b81600181518110612ac757612ac6613bb8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612b63959493929190613d14565b5f604051808303815f87803b158015612b7a575f80fd5b505af1158015612b8c573d5f803e3d5ffd5b505050505050565b5f80fd5b5f819050919050565b612baa81612b98565b8114612bb4575f80fd5b50565b5f81359050612bc581612ba1565b92915050565b5f60208284031215612be057612bdf612b94565b5b5f612bed84828501612bb7565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612c2d578082015181840152602081019050612c12565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612c5282612bf6565b612c5c8185612c00565b9350612c6c818560208601612c10565b612c7581612c38565b840191505092915050565b5f6020820190508181035f830152612c988184612c48565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f612ce2612cdd612cd884612ca0565b612cbf565b612ca0565b9050919050565b5f612cf382612cc8565b9050919050565b5f612d0482612ce9565b9050919050565b612d1481612cfa565b82525050565b5f602082019050612d2d5f830184612d0b565b92915050565b5f612d3d82612ca0565b9050919050565b612d4d81612d33565b8114612d57575f80fd5b50565b5f81359050612d6881612d44565b92915050565b5f8060408385031215612d8457612d83612b94565b5b5f612d9185828601612d5a565b9250506020612da285828601612bb7565b9150509250929050565b5f8115159050919050565b612dc081612dac565b82525050565b5f602082019050612dd95f830184612db7565b92915050565b5f8060408385031215612df557612df4612b94565b5b5f612e0285828601612bb7565b9250506020612e1385828601612bb7565b9150509250929050565b612e2681612b98565b82525050565b5f602082019050612e3f5f830184612e1d565b92915050565b5f805f60608486031215612e5c57612e5b612b94565b5b5f612e6986828701612d5a565b9350506020612e7a86828701612d5a565b9250506040612e8b86828701612bb7565b9150509250925092565b5f60ff82169050919050565b612eaa81612e95565b82525050565b5f602082019050612ec35f830184612ea1565b92915050565b612ed281612d33565b82525050565b5f602082019050612eeb5f830184612ec9565b92915050565b5f60208284031215612f0657612f05612b94565b5b5f612f1384828501612d5a565b91505092915050565b612f2581612dac565b8114612f2f575f80fd5b50565b5f81359050612f4081612f1c565b92915050565b5f8060408385031215612f5c57612f5b612b94565b5b5f612f6985828601612d5a565b9250506020612f7a85828601612f32565b9150509250929050565b5f8060408385031215612f9a57612f99612b94565b5b5f612fa785828601612d5a565b9250506020612fb885828601612d5a565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612ff6602083612c00565b915061300182612fc2565b602082019050919050565b5f6020820190508181035f83015261302381612fea565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156130ac578086048111156130885761308761302a565b5b60018516156130975780820291505b80810290506130a585613057565b945061306c565b94509492505050565b5f826130c4576001905061317f565b816130d1575f905061317f565b81600181146130e757600281146130f157613120565b600191505061317f565b60ff8411156131035761310261302a565b5b8360020a91508482111561311a5761311961302a565b5b5061317f565b5060208310610133831016604e8410600b84101617156131555782820a9050838111156131505761314f61302a565b5b61317f565b6131628484846001613063565b925090508184048111156131795761317861302a565b5b81810290505b9392505050565b5f61319082612b98565b915061319b83612e95565b92506131c87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846130b5565b905092915050565b5f6131da82612b98565b91506131e583612b98565b92508282026131f381612b98565b9150828204841483151761320a5761320961302a565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61324882612b98565b915061325383612b98565b92508261326357613262613211565b5b828204905092915050565b7f546f6f206c6f77000000000000000000000000000000000000000000000000005f82015250565b5f6132a2600783612c00565b91506132ad8261326e565b602082019050919050565b5f6020820190508181035f8301526132cf81613296565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061331a57607f821691505b60208210810361332d5761332c6132d6565b5b50919050565b5f61333d82612b98565b915061334883612b98565b92508282019050808211156133605761335f61302a565b5b92915050565b7f5a65726f204164647265737300000000000000000000000000000000000000005f82015250565b5f61339a600c83612c00565b91506133a582613366565b602082019050919050565b5f6020820190508181035f8301526133c78161338e565b9050919050565b5f6040820190506133e15f830185612ec9565b6133ee6020830184612db7565b9392505050565b7f54726164696e67206163746976650000000000000000000000000000000000005f82015250565b5f613429600e83612c00565b9150613434826133f5565b602082019050919050565b5f6020820190508181035f8301526134568161341d565b9050919050565b7f50616972000000000000000000000000000000000000000000000000000000005f82015250565b5f613491600483612c00565b915061349c8261345d565b602082019050919050565b5f6020820190508181035f8301526134be81613485565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f61351f602583612c00565b915061352a826134c5565b604082019050919050565b5f6020820190508181035f83015261354c81613513565b9050919050565b7f7a65726f206164647265737300000000000000000000000000000000000000005f82015250565b5f613587600c83612c00565b915061359282613553565b602082019050919050565b5f6020820190508181035f8301526135b48161357b565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613615602683612c00565b9150613620826135bb565b604082019050919050565b5f6020820190508181035f83015261364281613609565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6136a3602483612c00565b91506136ae82613649565b604082019050919050565b5f6020820190508181035f8301526136d081613697565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613731602283612c00565b915061373c826136d7565b604082019050919050565b5f6020820190508181035f83015261375e81613725565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f613799601d83612c00565b91506137a482613765565b602082019050919050565b5f6020820190508181035f8301526137c68161378d565b9050919050565b7f54726164696e67206e6f742061637469766500000000000000000000000000005f82015250565b5f613801601283612c00565b915061380c826137cd565b602082019050919050565b5f6020820190508181035f83015261382e816137f5565b9050919050565b5f61383f82612b98565b915061384a83612b98565b92508282039050818111156138625761386161302a565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6138c2602583612c00565b91506138cd82613868565b604082019050919050565b5f6020820190508181035f8301526138ef816138b6565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613950602383612c00565b915061395b826138f6565b604082019050919050565b5f6020820190508181035f83015261397d81613944565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6139de602683612c00565b91506139e982613984565b604082019050919050565b5f6020820190508181035f830152613a0b816139d2565b9050919050565b7f5472616e736665722044656c617920656e61626c65642e0000000000000000005f82015250565b5f613a46601783612c00565b9150613a5182613a12565b602082019050919050565b5f6020820190508181035f830152613a7381613a3a565b9050919050565b7f4d61782074782065786365656465642e000000000000000000000000000000005f82015250565b5f613aae601083612c00565b9150613ab982613a7a565b602082019050919050565b5f6020820190508181035f830152613adb81613aa2565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f613b16601383612c00565b9150613b2182613ae2565b602082019050919050565b5f6020820190508181035f830152613b4381613b0a565b9050919050565b5f81905092915050565b50565b5f613b625f83613b4a565b9150613b6d82613b54565b5f82019050919050565b5f613b8182613b57565b9150819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050613bf381612d44565b92915050565b5f60208284031215613c0e57613c0d612b94565b5b5f613c1b84828501613be5565b91505092915050565b5f819050919050565b5f613c47613c42613c3d84613c24565b612cbf565b612b98565b9050919050565b613c5781613c2d565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613c8f81612d33565b82525050565b5f613ca08383613c86565b60208301905092915050565b5f602082019050919050565b5f613cc282613c5d565b613ccc8185613c67565b9350613cd783613c77565b805f5b83811015613d07578151613cee8882613c95565b9750613cf983613cac565b925050600181019050613cda565b5085935050505092915050565b5f60a082019050613d275f830188612e1d565b613d346020830187613c4e565b8181036040830152613d468186613cb8565b9050613d556060830185612ec9565b613d626080830184612e1d565b969550505050505056fea26469706673582212202c1d1bcc5d56dfe7aab1d42b113c9fc2b27781a523f8efaea9d9283a6482e0e764736f6c6343000814003300000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000857616c6c79204169000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000557414c4c59000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405260043610610233575f3560e01c80638a8c523c1161012d578063c3f70b52116100aa578063e884f2601161006e578063e884f26014610840578063ea4cfe1214610856578063ea6debd014610880578063f2fde38b146108a8578063f8b45b05146108d05761023a565b8063c3f70b521461075c578063c78d0fa014610786578063c876d0b9146107b0578063cc1776d3146107da578063dd62ed3e146108045761023a565b8063a13d1a2b116100f1578063a13d1a2b14610656578063a457c2d71461067e578063a9059cbb146106ba578063b0249cc6146106f6578063bbc0c742146107325761023a565b80638a8c523c146105865780638d3e6e401461059c5780638da5cb5b146105d857806395d89b41146106025780639e93ad8e1461062c5761023a565b806339509351116101bb5780635d58ce361161017f5780635d58ce36146104cc57806370a08231146104f6578063715018a614610532578063751039fc1461054857806377b27d1f1461055e5761023a565b806339509351146103d6578063452ed4f1146104125780634a62bb651461043c5780634f7041a5146104665780635a90a49e146104905761023a565b80631006ee0c116102025780631006ee0c146102f657806318160ddd1461031e5780631c499ab01461034857806323b872dd14610370578063313ce567146103ac5761023a565b80630517d13d1461023e57806306fdde03146102665780630758d92414610290578063095ea7b3146102ba5761023a565b3661023a57005b5f80fd5b348015610249575f80fd5b50610264600480360381019061025f9190612bcb565b6108fa565b005b348015610271575f80fd5b5061027a610a72565b6040516102879190612c80565b60405180910390f35b34801561029b575f80fd5b506102a4610b02565b6040516102b19190612d1a565b60405180910390f35b3480156102c5575f80fd5b506102e060048036038101906102db9190612d6e565b610b27565b6040516102ed9190612dc6565b60405180910390f35b348015610301575f80fd5b5061031c60048036038101906103179190612ddf565b610b49565b005b348015610329575f80fd5b50610332610c63565b60405161033f9190612e2c565b60405180910390f35b348015610353575f80fd5b5061036e60048036038101906103699190612bcb565b610c6c565b005b34801561037b575f80fd5b5061039660048036038101906103919190612e45565b610de3565b6040516103a39190612dc6565b60405180910390f35b3480156103b7575f80fd5b506103c0610e11565b6040516103cd9190612eb0565b60405180910390f35b3480156103e1575f80fd5b506103fc60048036038101906103f79190612d6e565b610e19565b6040516104099190612dc6565b60405180910390f35b34801561041d575f80fd5b50610426610e4f565b6040516104339190612ed8565b60405180910390f35b348015610447575f80fd5b50610450610e74565b60405161045d9190612dc6565b60405180910390f35b348015610471575f80fd5b5061047a610e87565b6040516104879190612e2c565b60405180910390f35b34801561049b575f80fd5b506104b660048036038101906104b19190612ef1565b610e8d565b6040516104c39190612dc6565b60405180910390f35b3480156104d7575f80fd5b506104e0610eaa565b6040516104ed9190612e2c565b60405180910390f35b348015610501575f80fd5b5061051c60048036038101906105179190612ef1565b610eb1565b6040516105299190612e2c565b60405180910390f35b34801561053d575f80fd5b50610546610ef6565b005b348015610553575f80fd5b5061055c611049565b005b348015610569575f80fd5b50610584600480360381019061057f9190612f46565b61115c565b005b348015610591575f80fd5b5061059a6112f1565b005b3480156105a7575f80fd5b506105c260048036038101906105bd9190612ef1565b6113f2565b6040516105cf9190612dc6565b60405180910390f35b3480156105e3575f80fd5b506105ec61140f565b6040516105f99190612ed8565b60405180910390f35b34801561060d575f80fd5b50610616611437565b6040516106239190612c80565b60405180910390f35b348015610637575f80fd5b506106406114c7565b60405161064d9190612e2c565b60405180910390f35b348015610661575f80fd5b5061067c60048036038101906106779190612f46565b6114cd565b005b348015610689575f80fd5b506106a4600480360381019061069f9190612d6e565b6116f7565b6040516106b19190612dc6565b60405180910390f35b3480156106c5575f80fd5b506106e060048036038101906106db9190612d6e565b61176c565b6040516106ed9190612dc6565b60405180910390f35b348015610701575f80fd5b5061071c60048036038101906107179190612ef1565b61178e565b6040516107299190612dc6565b60405180910390f35b34801561073d575f80fd5b506107466117ab565b6040516107539190612dc6565b60405180910390f35b348015610767575f80fd5b506107706117bd565b60405161077d9190612e2c565b60405180910390f35b348015610791575f80fd5b5061079a6117c3565b6040516107a79190612e2c565b60405180910390f35b3480156107bb575f80fd5b506107c46117c9565b6040516107d19190612dc6565b60405180910390f35b3480156107e5575f80fd5b506107ee6117db565b6040516107fb9190612e2c565b60405180910390f35b34801561080f575f80fd5b5061082a60048036038101906108259190612f84565b6117e1565b6040516108379190612e2c565b60405180910390f35b34801561084b575f80fd5b50610854611863565b005b348015610861575f80fd5b5061086a611914565b6040516108779190612ed8565b60405180910390f35b34801561088b575f80fd5b506108a660048036038101906108a19190612ef1565b611939565b005b3480156108b3575f80fd5b506108ce60048036038101906108c99190612ef1565b611a80565b005b3480156108db575f80fd5b506108e4611c42565b6040516108f19190612e2c565b60405180910390f35b610902611c48565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610990576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109879061300c565b60405180910390fd5b610998610e11565b600a6109a49190613186565b6103e860056109b1610c63565b6109bb91906131d0565b6109c5919061323e565b6109cf919061323e565b811015610a11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a08906132b8565b60405180910390fd5b610a19610e11565b600a610a259190613186565b81610a3091906131d0565b600a819055507f76a9278644b7300961aa0e7e86f10934585987f1daf1c6ecc971c18376691574600a54604051610a679190612e2c565b60405180910390a150565b606060038054610a8190613303565b80601f0160208091040260200160405190810160405280929190818152602001828054610aad90613303565b8015610af85780601f10610acf57610100808354040283529160200191610af8565b820191905f5260205f20905b815481529060010190602001808311610adb57829003601f168201915b5050505050905090565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f80610b31611c48565b9050610b3e818585611c4f565b600191505092915050565b610b51611c48565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd69061300c565b60405180910390fd5b81600d819055507f5380a61520019ce8270d583f62f1b2b9f4f4372e1acaaf708f4865cecece0508600d54604051610c179190612e2c565b60405180910390a180600e819055507fa02824f65350567bc405e202b741e7ca6274004a9feeb44149df72b8bd599c97600e54604051610c579190612e2c565b60405180910390a15050565b5f600254905090565b610c74611c48565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf99061300c565b60405180910390fd5b610d0a610e11565b600a610d169190613186565b60646001610d22610c63565b610d2c91906131d0565b610d36919061323e565b610d40919061323e565b811015610d82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d79906132b8565b60405180910390fd5b610d8a610e11565b600a610d969190613186565b81610da191906131d0565b600b819055507f3046ad62de8b70d396246aaed19ff2559ff20df8706520cbde58320766c42762600b54604051610dd89190612e2c565b60405180910390a150565b5f80610ded611c48565b9050610dfa858285611e12565b610e05858585611e9d565b60019150509392505050565b5f6012905090565b5f80610e23611c48565b9050610e44818585610e3585896117e1565b610e3f9190613333565b611c4f565b600191505092915050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601060019054906101000a900460ff1681565b600d5481565b6006602052805f5260405f205f915054906101000a900460ff1681565b5f47905090565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610efe611c48565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f839061300c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611051611c48565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d69061300c565b60405180910390fd5b5f601060016101000a81548160ff0219169083151502179055505f60105f6101000a81548160ff02191690831515021790555061111a610c63565b600a81905550611128610c63565b600b819055507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c60405160405180910390a1565b611164611c48565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e99061300c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611260576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611257906133b0565b60405180910390fd5b8060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507f998cce27cbf44405c67eb636a634d5e2f2e6ff248b3d71fbbbb022f3c4c6dd2d82826040516112e59291906133ce565b60405180910390a15050565b6112f9611c48565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611387576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137e9061300c565b60405180910390fd5b60085f9054906101000a900460ff16156113d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cd9061343f565b60405180910390fd5b600160085f6101000a81548160ff021916908315150217905550565b6007602052805f5260405f205f915054906101000a900460ff1681565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461144690613303565b80601f016020809104026020016040519081016040528092919081815260200182805461147290613303565b80156114bd5780601f10611494576101008083540402835291602001916114bd565b820191905f5260205f20905b8154815290600101906020018083116114a057829003601f168201915b5050505050905090565b61271081565b6114d5611c48565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611563576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155a9061300c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c8906133b0565b60405180910390fd5b806116665760125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611665576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165c906134a7565b60405180910390fd5b5b8060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507f8f9f40630a1d139e6cf69b4f447ca47a36f10a017524efaa38252e516fa227ce82826040516116eb9291906133ce565b60405180910390a15050565b5f80611701611c48565b90505f61170e82866117e1565b905083811015611753576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174a90613535565b60405180910390fd5b6117608286868403611c4f565b60019250505092915050565b5f80611776611c48565b9050611783818585611e9d565b600191505092915050565b6009602052805f5260405f205f915054906101000a900460ff1681565b60085f9054906101000a900460ff1681565b600a5481565b60115481565b60105f9054906101000a900460ff1681565b600e5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61186b611c48565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f09061300c565b60405180910390fd5b5f60105f6101000a81548160ff021916908315150217905550565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611941611c48565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c69061300c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a349061359d565b60405180910390fd5b80600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611a88611c48565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0d9061300c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7b9061362b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b5481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611cbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb4906136b9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2290613747565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e059190612e2c565b60405180910390a3505050565b5f611e1d84846117e1565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611e975781811015611e89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e80906137af565b60405180910390fd5b611e968484848403611c4f565b5b50505050565b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611f38575060065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611f4f5750601060029054906101000a900460ff165b15611f6457611f5f838383611ffc565b611ff7565b60085f9054906101000a900460ff16611fb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa990613817565b60405180910390fd5b601060019054906101000a900460ff1615611fd357611fd2838383612268565b5b611fde8383836126c6565b81611fe99190613835565b9050611ff6838383611ffc565b5b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361206a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612061906138d8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120cf90613966565b60405180910390fd5b6120e383838361289d565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612166576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215d906139f4565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161224f9190612e2c565b60405180910390a36122628484846128a2565b50505050565b60105f9054906101000a900460ff16156123e85760135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612320575060095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156123e75743600f5f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054106123a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239b90613a5c565b60405180910390fd5b43600f5f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612485575060075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561252c57600a548111156124cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124c690613ac4565b60405180910390fd5b600b546124db83610eb1565b826124e69190613333565b1115612527576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251e90613b2c565b60405180910390fd5b6126c1565b60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156125c9575060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561261857600a54811115612613576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260a90613ac4565b60405180910390fd5b6126c0565b60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166126bf57600b5461267283610eb1565b8261267d9190613333565b11156126be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b590613b2c565b60405180910390fd5b5b5b5b505050565b5f6011546126d330610eb1565b101580156126ee5750601060029054906101000a900460ff16155b8015612741575060095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612784576001601060026101000a81548160ff0219169083151502179055506127696128a7565b5f601060026101000a81548160ff0219169083151502179055505b5f60095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156127dc57505f600e54115b1561280357612710600e54846127f291906131d0565b6127fc919061323e565b905061287e565b60095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561285a57505f600d54115b1561287d57612710600d548461287091906131d0565b61287a919061323e565b90505b5b5f81111561289257612891853083611ffc565b5b809150509392505050565b505050565b505050565b5f6128b130610eb1565b90505f81036128c05750612988565b60286011546128cf91906131d0565b8111156128e85760286011546128e591906131d0565b90505b6128f18161298a565b5f471115612986575f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161293f90613b77565b5f6040518083038185875af1925050503d805f8114612979576040519150601f19603f3d011682016040523d82523d5f602084013e61297e565b606091505b505080915050505b505b565b5f600267ffffffffffffffff8111156129a6576129a5613b8b565b5b6040519080825280602002602001820160405280156129d45781602001602082028036833780820191505090505b50905030815f815181106129eb576129ea613bb8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a8f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ab39190613bf9565b81600181518110612ac757612ac6613bb8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612b63959493929190613d14565b5f604051808303815f87803b158015612b7a575f80fd5b505af1158015612b8c573d5f803e3d5ffd5b505050505050565b5f80fd5b5f819050919050565b612baa81612b98565b8114612bb4575f80fd5b50565b5f81359050612bc581612ba1565b92915050565b5f60208284031215612be057612bdf612b94565b5b5f612bed84828501612bb7565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612c2d578082015181840152602081019050612c12565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612c5282612bf6565b612c5c8185612c00565b9350612c6c818560208601612c10565b612c7581612c38565b840191505092915050565b5f6020820190508181035f830152612c988184612c48565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f612ce2612cdd612cd884612ca0565b612cbf565b612ca0565b9050919050565b5f612cf382612cc8565b9050919050565b5f612d0482612ce9565b9050919050565b612d1481612cfa565b82525050565b5f602082019050612d2d5f830184612d0b565b92915050565b5f612d3d82612ca0565b9050919050565b612d4d81612d33565b8114612d57575f80fd5b50565b5f81359050612d6881612d44565b92915050565b5f8060408385031215612d8457612d83612b94565b5b5f612d9185828601612d5a565b9250506020612da285828601612bb7565b9150509250929050565b5f8115159050919050565b612dc081612dac565b82525050565b5f602082019050612dd95f830184612db7565b92915050565b5f8060408385031215612df557612df4612b94565b5b5f612e0285828601612bb7565b9250506020612e1385828601612bb7565b9150509250929050565b612e2681612b98565b82525050565b5f602082019050612e3f5f830184612e1d565b92915050565b5f805f60608486031215612e5c57612e5b612b94565b5b5f612e6986828701612d5a565b9350506020612e7a86828701612d5a565b9250506040612e8b86828701612bb7565b9150509250925092565b5f60ff82169050919050565b612eaa81612e95565b82525050565b5f602082019050612ec35f830184612ea1565b92915050565b612ed281612d33565b82525050565b5f602082019050612eeb5f830184612ec9565b92915050565b5f60208284031215612f0657612f05612b94565b5b5f612f1384828501612d5a565b91505092915050565b612f2581612dac565b8114612f2f575f80fd5b50565b5f81359050612f4081612f1c565b92915050565b5f8060408385031215612f5c57612f5b612b94565b5b5f612f6985828601612d5a565b9250506020612f7a85828601612f32565b9150509250929050565b5f8060408385031215612f9a57612f99612b94565b5b5f612fa785828601612d5a565b9250506020612fb885828601612d5a565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612ff6602083612c00565b915061300182612fc2565b602082019050919050565b5f6020820190508181035f83015261302381612fea565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156130ac578086048111156130885761308761302a565b5b60018516156130975780820291505b80810290506130a585613057565b945061306c565b94509492505050565b5f826130c4576001905061317f565b816130d1575f905061317f565b81600181146130e757600281146130f157613120565b600191505061317f565b60ff8411156131035761310261302a565b5b8360020a91508482111561311a5761311961302a565b5b5061317f565b5060208310610133831016604e8410600b84101617156131555782820a9050838111156131505761314f61302a565b5b61317f565b6131628484846001613063565b925090508184048111156131795761317861302a565b5b81810290505b9392505050565b5f61319082612b98565b915061319b83612e95565b92506131c87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846130b5565b905092915050565b5f6131da82612b98565b91506131e583612b98565b92508282026131f381612b98565b9150828204841483151761320a5761320961302a565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61324882612b98565b915061325383612b98565b92508261326357613262613211565b5b828204905092915050565b7f546f6f206c6f77000000000000000000000000000000000000000000000000005f82015250565b5f6132a2600783612c00565b91506132ad8261326e565b602082019050919050565b5f6020820190508181035f8301526132cf81613296565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061331a57607f821691505b60208210810361332d5761332c6132d6565b5b50919050565b5f61333d82612b98565b915061334883612b98565b92508282019050808211156133605761335f61302a565b5b92915050565b7f5a65726f204164647265737300000000000000000000000000000000000000005f82015250565b5f61339a600c83612c00565b91506133a582613366565b602082019050919050565b5f6020820190508181035f8301526133c78161338e565b9050919050565b5f6040820190506133e15f830185612ec9565b6133ee6020830184612db7565b9392505050565b7f54726164696e67206163746976650000000000000000000000000000000000005f82015250565b5f613429600e83612c00565b9150613434826133f5565b602082019050919050565b5f6020820190508181035f8301526134568161341d565b9050919050565b7f50616972000000000000000000000000000000000000000000000000000000005f82015250565b5f613491600483612c00565b915061349c8261345d565b602082019050919050565b5f6020820190508181035f8301526134be81613485565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f61351f602583612c00565b915061352a826134c5565b604082019050919050565b5f6020820190508181035f83015261354c81613513565b9050919050565b7f7a65726f206164647265737300000000000000000000000000000000000000005f82015250565b5f613587600c83612c00565b915061359282613553565b602082019050919050565b5f6020820190508181035f8301526135b48161357b565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613615602683612c00565b9150613620826135bb565b604082019050919050565b5f6020820190508181035f83015261364281613609565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6136a3602483612c00565b91506136ae82613649565b604082019050919050565b5f6020820190508181035f8301526136d081613697565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613731602283612c00565b915061373c826136d7565b604082019050919050565b5f6020820190508181035f83015261375e81613725565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f613799601d83612c00565b91506137a482613765565b602082019050919050565b5f6020820190508181035f8301526137c68161378d565b9050919050565b7f54726164696e67206e6f742061637469766500000000000000000000000000005f82015250565b5f613801601283612c00565b915061380c826137cd565b602082019050919050565b5f6020820190508181035f83015261382e816137f5565b9050919050565b5f61383f82612b98565b915061384a83612b98565b92508282039050818111156138625761386161302a565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6138c2602583612c00565b91506138cd82613868565b604082019050919050565b5f6020820190508181035f8301526138ef816138b6565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613950602383612c00565b915061395b826138f6565b604082019050919050565b5f6020820190508181035f83015261397d81613944565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6139de602683612c00565b91506139e982613984565b604082019050919050565b5f6020820190508181035f830152613a0b816139d2565b9050919050565b7f5472616e736665722044656c617920656e61626c65642e0000000000000000005f82015250565b5f613a46601783612c00565b9150613a5182613a12565b602082019050919050565b5f6020820190508181035f830152613a7381613a3a565b9050919050565b7f4d61782074782065786365656465642e000000000000000000000000000000005f82015250565b5f613aae601083612c00565b9150613ab982613a7a565b602082019050919050565b5f6020820190508181035f830152613adb81613aa2565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f613b16601383612c00565b9150613b2182613ae2565b602082019050919050565b5f6020820190508181035f830152613b4381613b0a565b9050919050565b5f81905092915050565b50565b5f613b625f83613b4a565b9150613b6d82613b54565b5f82019050919050565b5f613b8182613b57565b9150819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050613bf381612d44565b92915050565b5f60208284031215613c0e57613c0d612b94565b5b5f613c1b84828501613be5565b91505092915050565b5f819050919050565b5f613c47613c42613c3d84613c24565b612cbf565b612b98565b9050919050565b613c5781613c2d565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613c8f81612d33565b82525050565b5f613ca08383613c86565b60208301905092915050565b5f602082019050919050565b5f613cc282613c5d565b613ccc8185613c67565b9350613cd783613c77565b805f5b83811015613d07578151613cee8882613c95565b9750613cf983613cac565b925050600181019050613cda565b5085935050505092915050565b5f60a082019050613d275f830188612e1d565b613d346020830187613c4e565b8181036040830152613d468186613cb8565b9050613d556060830185612ec9565b613d626080830184612e1d565b969550505050505056fea26469706673582212202c1d1bcc5d56dfe7aab1d42b113c9fc2b27781a523f8efaea9d9283a6482e0e764736f6c63430008140033

Deployed Bytecode Sourcemap

16862:7955:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23359:287;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4382:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17572:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6861:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23928:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5630:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23654:266;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7642:261;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5472:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8312:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17544:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17435:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17211:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16904:47;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4490:109;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5801:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16032:150;;;;;;;;;;;;;:::i;:::-;;24294:231;;;;;;;;;;;;;:::i;:::-;;22757:247;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24151:135;;;;;;;;;;;;;:::i;:::-;;16958:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15818:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4720:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17608:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23012:339;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9053:436;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6134:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17050:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17016:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17101:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17505:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17389:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17239:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6390:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24533:98;;;;;;;;;;;;;:::i;:::-;;17170:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24639:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16190:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17137:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23359:287;15955:12;:10;:12::i;:::-;15945:22;;:6;;;;;;;;;;;:22;;;15937:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23501:10:::1;:8;:10::i;:::-;23497:2;:14;;;;:::i;:::-;23490:4;23486:1;23470:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;23469:43;;;;:::i;:::-;23451:14;:61;;23443:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;23574:10;:8;:10::i;:::-;23570:2;:14;;;;:::i;:::-;23552;:33;;;;:::i;:::-;23535:14;:50;;;;23601:37;23623:14;;23601:37;;;;;;:::i;:::-;;;;;;;;23359:287:::0;:::o;4382:100::-;4436:13;4469:5;4462:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4382:100;:::o;17572:27::-;;;;;;;;;;;;;:::o;6861:201::-;6944:4;6961:13;6977:12;:10;:12::i;:::-;6961:28;;7000:32;7009:5;7016:7;7025:6;7000:8;:32::i;:::-;7050:4;7043:11;;;6861:201;;;;:::o;23928:215::-;15955:12;:10;:12::i;:::-;15945:22;;:6;;;;;;;;;;;:22;;;15937:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24023:7:::1;24014:6;:16;;;;24046:21;24060:6;;24046:21;;;;;;:::i;:::-;;;;;;;;24088:8;24078:7;:18;;;;24112:23;24127:7;;24112:23;;;;;;:::i;:::-;;;;;;;;23928:215:::0;;:::o;5630:108::-;5691:7;5718:12;;5711:19;;5630:108;:::o;23654:266::-;15955:12;:10;:12::i;:::-;15945:22;;:6;;;;;;;;;;;:22;;;15937:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23790:10:::1;:8;:10::i;:::-;23786:2;:14;;;;:::i;:::-;23780:3;23776:1;23760:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:23;;;;:::i;:::-;23759:42;;;;:::i;:::-;23741:14;:60;;23733:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;23858:10;:8;:10::i;:::-;23854:2;:14;;;;:::i;:::-;23836;:33;;;;:::i;:::-;23824:9;:45;;;;23885:27;23902:9;;23885:27;;;;;;:::i;:::-;;;;;;;;23654:266:::0;:::o;7642:261::-;7739:4;7756:15;7774:12;:10;:12::i;:::-;7756:30;;7797:38;7813:4;7819:7;7828:6;7797:15;:38::i;:::-;7846:27;7856:4;7862:2;7866:6;7846:9;:27::i;:::-;7891:4;7884:11;;;7642:261;;;;;:::o;5472:93::-;5530:5;5555:2;5548:9;;5472:93;:::o;8312:238::-;8400:4;8417:13;8433:12;:10;:12::i;:::-;8417:28;;8456:64;8465:5;8472:7;8509:10;8481:25;8491:5;8498:7;8481:9;:25::i;:::-;:38;;;;:::i;:::-;8456:8;:64::i;:::-;8538:4;8531:11;;;8312:238;;;;:::o;17544:21::-;;;;;;;;;;;;;:::o;17435:33::-;;;;;;;;;;;;;:::o;17211:21::-;;;;:::o;16904:47::-;;;;;;;;;;;;;;;;;;;;;;:::o;4490:109::-;4543:7;4570:21;4563:28;;4490:109;:::o;5801:127::-;5875:7;5902:9;:18;5912:7;5902:18;;;;;;;;;;;;;;;;5895:25;;5801:127;;;:::o;16032:150::-;15955:12;:10;:12::i;:::-;15945:22;;:6;;;;;;;;;;;:22;;;15937:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16141:1:::1;16104:40;;16125:6;;;;;;;;;;;16104:40;;;;;;;;;;;;16172:1;16155:6;;:19;;;;;;;;;;;;;;;;;;16032:150::o:0;24294:231::-;15955:12;:10;:12::i;:::-;15945:22;;:6;;;;;;;;;;;:22;;;15937:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24365:5:::1;24348:14;;:22;;;;;;;;;;;;;;;;;;24404:5;24381:20;;:28;;;;;;;;;;;;;;;;;;24437:13;:11;:13::i;:::-;24420:14;:30;;;;24473:13;:11;:13::i;:::-;24461:9;:25;;;;24502:15;;;;;;;;;;24294:231::o:0;22757:247::-;15955:12;:10;:12::i;:::-;15945:22;;:6;;;;;;;;;;;:22;;;15937:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22876:1:::1;22856:22;;:8;:22;;::::0;22848:47:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;22933:9;22906:14;:24;22921:8;22906:24;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;22958:38;22976:8;22986:9;22958:38;;;;;;;:::i;:::-;;;;;;;;22757:247:::0;;:::o;24151:135::-;15955:12;:10;:12::i;:::-;15945:22;;:6;;;;;;;;;;;:22;;;15937:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24215:13:::1;;;;;;;;;;;24214:14;24206:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;24274:4;24258:13;;:20;;;;;;;;;;;;;;;;;;24151:135::o:0;16958:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;15818:79::-;15856:7;15883:6;;;;;;;;;;;15876:13;;15818:79;:::o;4720:104::-;4776:13;4809:7;4802:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4720:104;:::o;17608:43::-;17646:5;17608:43;:::o;23012:339::-;15955:12;:10;:12::i;:::-;15945:22;;:6;;;;;;;;;;;:22;;;15937:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23133:1:::1;23113:22;;:8;:22;;::::0;23105:47:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;23167:9;23163:76;;23212:6;;;;;;;;;;;23200:18;;:8;:18;;::::0;23192:35:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;23163:76;23278:9;23249:16;:26;23266:8;23249:26;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;23303:40;23323:8;23333:9;23303:40;;;;;;;:::i;:::-;;;;;;;;23012:339:::0;;:::o;9053:436::-;9146:4;9163:13;9179:12;:10;:12::i;:::-;9163:28;;9202:24;9229:25;9239:5;9246:7;9229:9;:25::i;:::-;9202:52;;9293:15;9273:16;:35;;9265:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;9386:60;9395:5;9402:7;9430:15;9411:16;:34;9386:8;:60::i;:::-;9477:4;9470:11;;;;9053:436;;;;:::o;6134:193::-;6213:4;6230:13;6246:12;:10;:12::i;:::-;6230:28;;6269;6279:5;6286:2;6290:6;6269:9;:28::i;:::-;6315:4;6308:11;;;6134:193;;;;:::o;17050:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;17016:25::-;;;;;;;;;;;;;:::o;17101:29::-;;;;:::o;17505:30::-;;;;:::o;17389:39::-;;;;;;;;;;;;;:::o;17239:22::-;;;;:::o;6390:151::-;6479:7;6506:11;:18;6518:5;6506:18;;;;;;;;;;;;;;;:27;6525:7;6506:27;;;;;;;;;;;;;;;;6499:34;;6390:151;;;;:::o;24533:98::-;15955:12;:10;:12::i;:::-;15945:22;;:6;;;;;;;;;;;:22;;;15937:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24618:5:::1;24595:20;;:28;;;;;;;;;;;;;;;;;;24533:98::o:0;17170:32::-;;;;;;;;;;;;;:::o;24639:175::-;15955:12;:10;:12::i;:::-;15945:22;;:6;;;;;;;;;;;:22;;;15937:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24748:1:::1;24728:22;;:8;:22;;::::0;24720:47:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;24798:8;24778:17;;:28;;;;;;;;;;;;;;;;;;24639:175:::0;:::o;16190:244::-;15955:12;:10;:12::i;:::-;15945:22;;:6;;;;;;;;;;;:22;;;15937:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16299:1:::1;16279:22;;:8;:22;;::::0;16271:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;16389:8;16360:38;;16381:6;;;;;;;;;;;16360:38;;;;;;;;;;;;16418:8;16409:6;;:17;;;;;;;;;;;;;;;;;;16190:244:::0;:::o;17137:24::-;;;;:::o;288:98::-;341:7;368:10;361:17;;288:98;:::o;13046:346::-;13165:1;13148:19;;:5;:19;;;13140:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13246:1;13227:21;;:7;:21;;;13219:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13330:6;13300:11;:18;13312:5;13300:18;;;;;;;;;;;;;;;:27;13319:7;13300:27;;;;;;;;;;;;;;;:36;;;;13368:7;13352:32;;13361:5;13352:32;;;13377:6;13352:32;;;;;;:::i;:::-;;;;;;;;13046:346;;;:::o;13683:419::-;13784:24;13811:25;13821:5;13828:7;13811:9;:25::i;:::-;13784:52;;13871:17;13851:16;:37;13847:248;;13933:6;13913:16;:26;;13905:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14017:51;14026:5;14033:7;14061:6;14042:16;:25;14017:8;:51::i;:::-;13847:248;13773:329;13683:419;;;:::o;19661:523::-;19806:14;:20;19821:4;19806:20;;;;;;;;;;;;;;;;;;;;;;;;;:42;;;;19830:14;:18;19845:2;19830:18;;;;;;;;;;;;;;;;;;;;;;;;;19806:42;:54;;;;19852:8;;;;;;;;;;;19806:54;19803:137;;;19876:31;19892:4;19897:2;19900:6;19876:15;:31::i;:::-;19922:7;;19803:137;19960:13;;;;;;;;;;;19952:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;20012:14;;;;;;;;;;;20009:74;;;20042:29;20054:4;20060:2;20064:6;20042:11;:29::i;:::-;20009:74;20105:27;20115:4;20121:2;20125:6;20105:9;:27::i;:::-;20095:37;;;;;:::i;:::-;;;20145:31;20161:4;20166:2;20169:6;20145:15;:31::i;:::-;19661:523;;;;:::o;9959:806::-;10072:1;10056:18;;:4;:18;;;10048:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10149:1;10135:16;;:2;:16;;;10127:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10204:38;10225:4;10231:2;10235:6;10204:20;:38::i;:::-;10255:19;10277:9;:15;10287:4;10277:15;;;;;;;;;;;;;;;;10255:37;;10326:6;10311:11;:21;;10303:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10443:6;10429:11;:20;10411:9;:15;10421:4;10411:15;;;;;;;;;;;;;;;:38;;;;10646:6;10629:9;:13;10639:2;10629:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;10696:2;10681:26;;10690:4;10681:26;;;10700:6;10681:26;;;;;;:::i;:::-;;;;;;;;10720:37;10740:4;10746:2;10750:6;10720:19;:37::i;:::-;10037:728;9959:806;;;:::o;20192:908::-;20279:20;;;;;;;;;;;20275:288;;;20333:9;;;;;;;;;;;20319:24;;:2;:24;;;;:42;;;;;20348:9;:13;20358:2;20348:13;;;;;;;;;;;;;;;;;;;;;;;;;20347:14;20319:42;20315:237;;;20427:12;20389:24;:35;20414:9;20389:35;;;;;;;;;;;;;;;;:50;20381:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;20524:12;20486:24;:35;20511:9;20486:35;;;;;;;;;;;;;;;:50;;;;20315:237;20275:288;20595:9;:15;20605:4;20595:15;;;;;;;;;;;;;;;;;;;;;;;;;:40;;;;;20615:16;:20;20632:2;20615:20;;;;;;;;;;;;;;;;;;;;;;;;;20614:21;20595:40;20591:502;;;20670:14;;20660:6;:24;;20652:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;20754:9;;20737:13;20747:2;20737:9;:13::i;:::-;20728:6;:22;;;;:::i;:::-;:35;;20720:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20591:502;;;20836:9;:13;20846:2;20836:13;;;;;;;;;;;;;;;;;;;;;;;;;:40;;;;;20854:16;:22;20871:4;20854:22;;;;;;;;;;;;;;;;;;;;;;;;;20853:23;20836:40;20832:261;;;20911:14;;20901:6;:24;;20893:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;20832:261;;;20977:16;:20;20994:2;20977:20;;;;;;;;;;;;;;;;;;;;;;;;;20973:120;;21048:9;;21031:13;21041:2;21031:9;:13::i;:::-;21022:6;:22;;;;:::i;:::-;:35;;21014:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20973:120;20832:261;20591:502;20192:908;;;:::o;21108:712::-;21187:7;21237:15;;21209:24;21227:4;21209:9;:24::i;:::-;:43;;:56;;;;;21257:8;;;;;;;;;;;21256:9;21209:56;:76;;;;;21270:9;:15;21280:4;21270:15;;;;;;;;;;;;;;;;;;;;;;;;;21269:16;21209:76;21206:179;;;21313:4;21302:8;;:15;;;;;;;;;;;;;;;;;;21332:10;:8;:10::i;:::-;21368:5;21357:8;;:16;;;;;;;;;;;;;;;;;;21206:179;21405:11;21457:9;:13;21467:2;21457:13;;;;;;;;;;;;;;;;;;;;;;;;;:28;;;;;21484:1;21474:7;;:11;21457:28;21453:226;;;17646:5;21516:7;;21507:6;:16;;;;:::i;:::-;:30;;;;:::i;:::-;21501:36;;21453:226;;;21586:9;:15;21596:4;21586:15;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;;;21614:1;21605:6;;:10;21586:29;21583:96;;;17646:5;21647:6;;21638;:15;;;;:::i;:::-;:29;;;;:::i;:::-;21632:35;;21583:96;21453:226;21708:1;21702:3;:7;21699:83;;;21729:41;21745:4;21759;21766:3;21729:15;:41::i;:::-;21699:83;21809:3;21802:10;;;21108:712;;;;;:::o;14702:91::-;;;;:::o;15397:90::-;;;;:::o;22220:503::-;22261:23;22287:24;22305:4;22287:9;:24::i;:::-;22261:50;;22354:1;22335:15;:20;22332:34;;22358:7;;;22332:34;22417:2;22399:15;;:20;;;;:::i;:::-;22381:15;:38;22378:107;;;22471:2;22453:15;;:20;;;;:::i;:::-;22435:38;;22378:107;22505:33;22522:15;22505:16;:33::i;:::-;22590:1;22566:21;:25;22563:153;;;22607:12;22648:17;;;;;;;;;;;:22;;22678:21;22648:56;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22634:70;;;;;22592:124;22563:153;22248:475;22220:503;:::o;21828:384::-;21893:21;21931:1;21917:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21893:40;;21962:4;21944;21949:1;21944:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;21988:9;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21978:4;21983:1;21978:7;;;;;;;;:::i;:::-;;;;;;;:26;;;;;;;;;;;22017:9;;;;;;;;;;;:60;;;22092:8;22115:1;22131:4;22158;22178:15;22017:187;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21880:332;21828:384;:::o;88:117:1:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:99::-;1077:6;1111:5;1105:12;1095:22;;1025:99;;;:::o;1130:169::-;1214:11;1248:6;1243:3;1236:19;1288:4;1283:3;1279:14;1264:29;;1130:169;;;;:::o;1305:246::-;1386:1;1396:113;1410:6;1407:1;1404:13;1396:113;;;1495:1;1490:3;1486:11;1480:18;1476:1;1471:3;1467:11;1460:39;1432:2;1429:1;1425:10;1420:15;;1396:113;;;1543:1;1534:6;1529:3;1525:16;1518:27;1367:184;1305:246;;;:::o;1557:102::-;1598:6;1649:2;1645:7;1640:2;1633:5;1629:14;1625:28;1615:38;;1557:102;;;:::o;1665:377::-;1753:3;1781:39;1814:5;1781:39;:::i;:::-;1836:71;1900:6;1895:3;1836:71;:::i;:::-;1829:78;;1916:65;1974:6;1969:3;1962:4;1955:5;1951:16;1916:65;:::i;:::-;2006:29;2028:6;2006:29;:::i;:::-;2001:3;1997:39;1990:46;;1757:285;1665:377;;;;:::o;2048:313::-;2161:4;2199:2;2188:9;2184:18;2176:26;;2248:9;2242:4;2238:20;2234:1;2223:9;2219:17;2212:47;2276:78;2349:4;2340:6;2276:78;:::i;:::-;2268:86;;2048:313;;;;:::o;2367:126::-;2404:7;2444:42;2437:5;2433:54;2422:65;;2367:126;;;:::o;2499:60::-;2527:3;2548:5;2541:12;;2499:60;;;:::o;2565:142::-;2615:9;2648:53;2666:34;2675:24;2693:5;2675:24;:::i;:::-;2666:34;:::i;:::-;2648:53;:::i;:::-;2635:66;;2565:142;;;:::o;2713:126::-;2763:9;2796:37;2827:5;2796:37;:::i;:::-;2783:50;;2713:126;;;:::o;2845:144::-;2913:9;2946:37;2977:5;2946:37;:::i;:::-;2933:50;;2845:144;;;:::o;2995:167::-;3100:55;3149:5;3100:55;:::i;:::-;3095:3;3088:68;2995:167;;:::o;3168:258::-;3279:4;3317:2;3306:9;3302:18;3294:26;;3330:89;3416:1;3405:9;3401:17;3392:6;3330:89;:::i;:::-;3168:258;;;;:::o;3432:96::-;3469:7;3498:24;3516:5;3498:24;:::i;:::-;3487:35;;3432:96;;;:::o;3534:122::-;3607:24;3625:5;3607:24;:::i;:::-;3600:5;3597:35;3587:63;;3646:1;3643;3636:12;3587:63;3534:122;:::o;3662:139::-;3708:5;3746:6;3733:20;3724:29;;3762:33;3789:5;3762:33;:::i;:::-;3662:139;;;;:::o;3807:474::-;3875:6;3883;3932:2;3920:9;3911:7;3907:23;3903:32;3900:119;;;3938:79;;:::i;:::-;3900:119;4058:1;4083:53;4128:7;4119:6;4108:9;4104:22;4083:53;:::i;:::-;4073:63;;4029:117;4185:2;4211:53;4256:7;4247:6;4236:9;4232:22;4211:53;:::i;:::-;4201:63;;4156:118;3807:474;;;;;:::o;4287:90::-;4321:7;4364:5;4357:13;4350:21;4339:32;;4287:90;;;:::o;4383:109::-;4464:21;4479:5;4464:21;:::i;:::-;4459:3;4452:34;4383:109;;:::o;4498:210::-;4585:4;4623:2;4612:9;4608:18;4600:26;;4636:65;4698:1;4687:9;4683:17;4674:6;4636:65;:::i;:::-;4498:210;;;;:::o;4714:474::-;4782:6;4790;4839:2;4827:9;4818:7;4814:23;4810:32;4807:119;;;4845:79;;:::i;:::-;4807:119;4965:1;4990:53;5035:7;5026:6;5015:9;5011:22;4990:53;:::i;:::-;4980:63;;4936:117;5092:2;5118:53;5163:7;5154:6;5143:9;5139:22;5118:53;:::i;:::-;5108:63;;5063:118;4714:474;;;;;:::o;5194:118::-;5281:24;5299:5;5281:24;:::i;:::-;5276:3;5269:37;5194:118;;:::o;5318:222::-;5411:4;5449:2;5438:9;5434:18;5426:26;;5462:71;5530:1;5519:9;5515:17;5506:6;5462:71;:::i;:::-;5318:222;;;;:::o;5546:619::-;5623:6;5631;5639;5688:2;5676:9;5667:7;5663:23;5659:32;5656:119;;;5694:79;;:::i;:::-;5656:119;5814:1;5839:53;5884:7;5875:6;5864:9;5860:22;5839:53;:::i;:::-;5829:63;;5785:117;5941:2;5967:53;6012:7;6003:6;5992:9;5988:22;5967:53;:::i;:::-;5957:63;;5912:118;6069:2;6095:53;6140:7;6131:6;6120:9;6116:22;6095:53;:::i;:::-;6085:63;;6040:118;5546:619;;;;;:::o;6171:86::-;6206:7;6246:4;6239:5;6235:16;6224:27;;6171:86;;;:::o;6263:112::-;6346:22;6362:5;6346:22;:::i;:::-;6341:3;6334:35;6263:112;;:::o;6381:214::-;6470:4;6508:2;6497:9;6493:18;6485:26;;6521:67;6585:1;6574:9;6570:17;6561:6;6521:67;:::i;:::-;6381:214;;;;:::o;6601:118::-;6688:24;6706:5;6688:24;:::i;:::-;6683:3;6676:37;6601:118;;:::o;6725:222::-;6818:4;6856:2;6845:9;6841:18;6833:26;;6869:71;6937:1;6926:9;6922:17;6913:6;6869:71;:::i;:::-;6725:222;;;;:::o;6953:329::-;7012:6;7061:2;7049:9;7040:7;7036:23;7032:32;7029:119;;;7067:79;;:::i;:::-;7029:119;7187:1;7212:53;7257:7;7248:6;7237:9;7233:22;7212:53;:::i;:::-;7202:63;;7158:117;6953:329;;;;:::o;7288:116::-;7358:21;7373:5;7358:21;:::i;:::-;7351:5;7348:32;7338:60;;7394:1;7391;7384:12;7338:60;7288:116;:::o;7410:133::-;7453:5;7491:6;7478:20;7469:29;;7507:30;7531:5;7507:30;:::i;:::-;7410:133;;;;:::o;7549:468::-;7614:6;7622;7671:2;7659:9;7650:7;7646:23;7642:32;7639:119;;;7677:79;;:::i;:::-;7639:119;7797:1;7822:53;7867:7;7858:6;7847:9;7843:22;7822:53;:::i;:::-;7812:63;;7768:117;7924:2;7950:50;7992:7;7983:6;7972:9;7968:22;7950:50;:::i;:::-;7940:60;;7895:115;7549:468;;;;;:::o;8023:474::-;8091:6;8099;8148:2;8136:9;8127:7;8123:23;8119:32;8116:119;;;8154:79;;:::i;:::-;8116:119;8274:1;8299:53;8344:7;8335:6;8324:9;8320:22;8299:53;:::i;:::-;8289:63;;8245:117;8401:2;8427:53;8472:7;8463:6;8452:9;8448:22;8427:53;:::i;:::-;8417:63;;8372:118;8023:474;;;;;:::o;8503:182::-;8643:34;8639:1;8631:6;8627:14;8620:58;8503:182;:::o;8691:366::-;8833:3;8854:67;8918:2;8913:3;8854:67;:::i;:::-;8847:74;;8930:93;9019:3;8930:93;:::i;:::-;9048:2;9043:3;9039:12;9032:19;;8691:366;;;:::o;9063:419::-;9229:4;9267:2;9256:9;9252:18;9244:26;;9316:9;9310:4;9306:20;9302:1;9291:9;9287:17;9280:47;9344:131;9470:4;9344:131;:::i;:::-;9336:139;;9063:419;;;:::o;9488:180::-;9536:77;9533:1;9526:88;9633:4;9630:1;9623:15;9657:4;9654:1;9647:15;9674:102;9716:8;9763:5;9760:1;9756:13;9735:34;;9674:102;;;:::o;9782:848::-;9843:5;9850:4;9874:6;9865:15;;9898:5;9889:14;;9912:712;9933:1;9923:8;9920:15;9912:712;;;10028:4;10023:3;10019:14;10013:4;10010:24;10007:50;;;10037:18;;:::i;:::-;10007:50;10087:1;10077:8;10073:16;10070:451;;;10502:4;10495:5;10491:16;10482:25;;10070:451;10552:4;10546;10542:15;10534:23;;10582:32;10605:8;10582:32;:::i;:::-;10570:44;;9912:712;;;9782:848;;;;;;;:::o;10636:1073::-;10690:5;10881:8;10871:40;;10902:1;10893:10;;10904:5;;10871:40;10930:4;10920:36;;10947:1;10938:10;;10949:5;;10920:36;11016:4;11064:1;11059:27;;;;11100:1;11095:191;;;;11009:277;;11059:27;11077:1;11068:10;;11079:5;;;11095:191;11140:3;11130:8;11127:17;11124:43;;;11147:18;;:::i;:::-;11124:43;11196:8;11193:1;11189:16;11180:25;;11231:3;11224:5;11221:14;11218:40;;;11238:18;;:::i;:::-;11218:40;11271:5;;;11009:277;;11395:2;11385:8;11382:16;11376:3;11370:4;11367:13;11363:36;11345:2;11335:8;11332:16;11327:2;11321:4;11318:12;11314:35;11298:111;11295:246;;;11451:8;11445:4;11441:19;11432:28;;11486:3;11479:5;11476:14;11473:40;;;11493:18;;:::i;:::-;11473:40;11526:5;;11295:246;11566:42;11604:3;11594:8;11588:4;11585:1;11566:42;:::i;:::-;11551:57;;;;11640:4;11635:3;11631:14;11624:5;11621:25;11618:51;;;11649:18;;:::i;:::-;11618:51;11698:4;11691:5;11687:16;11678:25;;10636:1073;;;;;;:::o;11715:281::-;11773:5;11797:23;11815:4;11797:23;:::i;:::-;11789:31;;11841:25;11857:8;11841:25;:::i;:::-;11829:37;;11885:104;11922:66;11912:8;11906:4;11885:104;:::i;:::-;11876:113;;11715:281;;;;:::o;12002:410::-;12042:7;12065:20;12083:1;12065:20;:::i;:::-;12060:25;;12099:20;12117:1;12099:20;:::i;:::-;12094:25;;12154:1;12151;12147:9;12176:30;12194:11;12176:30;:::i;:::-;12165:41;;12355:1;12346:7;12342:15;12339:1;12336:22;12316:1;12309:9;12289:83;12266:139;;12385:18;;:::i;:::-;12266:139;12050:362;12002:410;;;;:::o;12418:180::-;12466:77;12463:1;12456:88;12563:4;12560:1;12553:15;12587:4;12584:1;12577:15;12604:185;12644:1;12661:20;12679:1;12661:20;:::i;:::-;12656:25;;12695:20;12713:1;12695:20;:::i;:::-;12690:25;;12734:1;12724:35;;12739:18;;:::i;:::-;12724:35;12781:1;12778;12774:9;12769:14;;12604:185;;;;:::o;12795:157::-;12935:9;12931:1;12923:6;12919:14;12912:33;12795:157;:::o;12958:365::-;13100:3;13121:66;13185:1;13180:3;13121:66;:::i;:::-;13114:73;;13196:93;13285:3;13196:93;:::i;:::-;13314:2;13309:3;13305:12;13298:19;;12958:365;;;:::o;13329:419::-;13495:4;13533:2;13522:9;13518:18;13510:26;;13582:9;13576:4;13572:20;13568:1;13557:9;13553:17;13546:47;13610:131;13736:4;13610:131;:::i;:::-;13602:139;;13329:419;;;:::o;13754:180::-;13802:77;13799:1;13792:88;13899:4;13896:1;13889:15;13923:4;13920:1;13913:15;13940:320;13984:6;14021:1;14015:4;14011:12;14001:22;;14068:1;14062:4;14058:12;14089:18;14079:81;;14145:4;14137:6;14133:17;14123:27;;14079:81;14207:2;14199:6;14196:14;14176:18;14173:38;14170:84;;14226:18;;:::i;:::-;14170:84;13991:269;13940:320;;;:::o;14266:191::-;14306:3;14325:20;14343:1;14325:20;:::i;:::-;14320:25;;14359:20;14377:1;14359:20;:::i;:::-;14354:25;;14402:1;14399;14395:9;14388:16;;14423:3;14420:1;14417:10;14414:36;;;14430:18;;:::i;:::-;14414:36;14266:191;;;;:::o;14463:162::-;14603:14;14599:1;14591:6;14587:14;14580:38;14463:162;:::o;14631:366::-;14773:3;14794:67;14858:2;14853:3;14794:67;:::i;:::-;14787:74;;14870:93;14959:3;14870:93;:::i;:::-;14988:2;14983:3;14979:12;14972:19;;14631:366;;;:::o;15003:419::-;15169:4;15207:2;15196:9;15192:18;15184:26;;15256:9;15250:4;15246:20;15242:1;15231:9;15227:17;15220:47;15284:131;15410:4;15284:131;:::i;:::-;15276:139;;15003:419;;;:::o;15428:320::-;15543:4;15581:2;15570:9;15566:18;15558:26;;15594:71;15662:1;15651:9;15647:17;15638:6;15594:71;:::i;:::-;15675:66;15737:2;15726:9;15722:18;15713:6;15675:66;:::i;:::-;15428:320;;;;;:::o;15754:164::-;15894:16;15890:1;15882:6;15878:14;15871:40;15754:164;:::o;15924:366::-;16066:3;16087:67;16151:2;16146:3;16087:67;:::i;:::-;16080:74;;16163:93;16252:3;16163:93;:::i;:::-;16281:2;16276:3;16272:12;16265:19;;15924:366;;;:::o;16296:419::-;16462:4;16500:2;16489:9;16485:18;16477:26;;16549:9;16543:4;16539:20;16535:1;16524:9;16520:17;16513:47;16577:131;16703:4;16577:131;:::i;:::-;16569:139;;16296:419;;;:::o;16721:154::-;16861:6;16857:1;16849:6;16845:14;16838:30;16721:154;:::o;16881:365::-;17023:3;17044:66;17108:1;17103:3;17044:66;:::i;:::-;17037:73;;17119:93;17208:3;17119:93;:::i;:::-;17237:2;17232:3;17228:12;17221:19;;16881:365;;;:::o;17252:419::-;17418:4;17456:2;17445:9;17441:18;17433:26;;17505:9;17499:4;17495:20;17491:1;17480:9;17476:17;17469:47;17533:131;17659:4;17533:131;:::i;:::-;17525:139;;17252:419;;;:::o;17677:224::-;17817:34;17813:1;17805:6;17801:14;17794:58;17886:7;17881:2;17873:6;17869:15;17862:32;17677:224;:::o;17907:366::-;18049:3;18070:67;18134:2;18129:3;18070:67;:::i;:::-;18063:74;;18146:93;18235:3;18146:93;:::i;:::-;18264:2;18259:3;18255:12;18248:19;;17907:366;;;:::o;18279:419::-;18445:4;18483:2;18472:9;18468:18;18460:26;;18532:9;18526:4;18522:20;18518:1;18507:9;18503:17;18496:47;18560:131;18686:4;18560:131;:::i;:::-;18552:139;;18279:419;;;:::o;18704:162::-;18844:14;18840:1;18832:6;18828:14;18821:38;18704:162;:::o;18872:366::-;19014:3;19035:67;19099:2;19094:3;19035:67;:::i;:::-;19028:74;;19111:93;19200:3;19111:93;:::i;:::-;19229:2;19224:3;19220:12;19213:19;;18872:366;;;:::o;19244:419::-;19410:4;19448:2;19437:9;19433:18;19425:26;;19497:9;19491:4;19487:20;19483:1;19472:9;19468:17;19461:47;19525:131;19651:4;19525:131;:::i;:::-;19517:139;;19244:419;;;:::o;19669:225::-;19809:34;19805:1;19797:6;19793:14;19786:58;19878:8;19873:2;19865:6;19861:15;19854:33;19669:225;:::o;19900:366::-;20042:3;20063:67;20127:2;20122:3;20063:67;:::i;:::-;20056:74;;20139:93;20228:3;20139:93;:::i;:::-;20257:2;20252:3;20248:12;20241:19;;19900:366;;;:::o;20272:419::-;20438:4;20476:2;20465:9;20461:18;20453:26;;20525:9;20519:4;20515:20;20511:1;20500:9;20496:17;20489:47;20553:131;20679:4;20553:131;:::i;:::-;20545:139;;20272:419;;;:::o;20697:223::-;20837:34;20833:1;20825:6;20821:14;20814:58;20906:6;20901:2;20893:6;20889:15;20882:31;20697:223;:::o;20926:366::-;21068:3;21089:67;21153:2;21148:3;21089:67;:::i;:::-;21082:74;;21165:93;21254:3;21165:93;:::i;:::-;21283:2;21278:3;21274:12;21267:19;;20926:366;;;:::o;21298:419::-;21464:4;21502:2;21491:9;21487:18;21479:26;;21551:9;21545:4;21541:20;21537:1;21526:9;21522:17;21515:47;21579:131;21705:4;21579:131;:::i;:::-;21571:139;;21298:419;;;:::o;21723:221::-;21863:34;21859:1;21851:6;21847:14;21840:58;21932:4;21927:2;21919:6;21915:15;21908:29;21723:221;:::o;21950:366::-;22092:3;22113:67;22177:2;22172:3;22113:67;:::i;:::-;22106:74;;22189:93;22278:3;22189:93;:::i;:::-;22307:2;22302:3;22298:12;22291:19;;21950:366;;;:::o;22322:419::-;22488:4;22526:2;22515:9;22511:18;22503:26;;22575:9;22569:4;22565:20;22561:1;22550:9;22546:17;22539:47;22603:131;22729:4;22603:131;:::i;:::-;22595:139;;22322:419;;;:::o;22747:179::-;22887:31;22883:1;22875:6;22871:14;22864:55;22747:179;:::o;22932:366::-;23074:3;23095:67;23159:2;23154:3;23095:67;:::i;:::-;23088:74;;23171:93;23260:3;23171:93;:::i;:::-;23289:2;23284:3;23280:12;23273:19;;22932:366;;;:::o;23304:419::-;23470:4;23508:2;23497:9;23493:18;23485:26;;23557:9;23551:4;23547:20;23543:1;23532:9;23528:17;23521:47;23585:131;23711:4;23585:131;:::i;:::-;23577:139;;23304:419;;;:::o;23729:168::-;23869:20;23865:1;23857:6;23853:14;23846:44;23729:168;:::o;23903:366::-;24045:3;24066:67;24130:2;24125:3;24066:67;:::i;:::-;24059:74;;24142:93;24231:3;24142:93;:::i;:::-;24260:2;24255:3;24251:12;24244:19;;23903:366;;;:::o;24275:419::-;24441:4;24479:2;24468:9;24464:18;24456:26;;24528:9;24522:4;24518:20;24514:1;24503:9;24499:17;24492:47;24556:131;24682:4;24556:131;:::i;:::-;24548:139;;24275:419;;;:::o;24700:194::-;24740:4;24760:20;24778:1;24760:20;:::i;:::-;24755:25;;24794:20;24812:1;24794:20;:::i;:::-;24789:25;;24838:1;24835;24831:9;24823:17;;24862:1;24856:4;24853:11;24850:37;;;24867:18;;:::i;:::-;24850:37;24700:194;;;;:::o;24900:224::-;25040:34;25036:1;25028:6;25024:14;25017:58;25109:7;25104:2;25096:6;25092:15;25085:32;24900:224;:::o;25130:366::-;25272:3;25293:67;25357:2;25352:3;25293:67;:::i;:::-;25286:74;;25369:93;25458:3;25369:93;:::i;:::-;25487:2;25482:3;25478:12;25471:19;;25130:366;;;:::o;25502:419::-;25668:4;25706:2;25695:9;25691:18;25683:26;;25755:9;25749:4;25745:20;25741:1;25730:9;25726:17;25719:47;25783:131;25909:4;25783:131;:::i;:::-;25775:139;;25502:419;;;:::o;25927:222::-;26067:34;26063:1;26055:6;26051:14;26044:58;26136:5;26131:2;26123:6;26119:15;26112:30;25927:222;:::o;26155:366::-;26297:3;26318:67;26382:2;26377:3;26318:67;:::i;:::-;26311:74;;26394:93;26483:3;26394:93;:::i;:::-;26512:2;26507:3;26503:12;26496:19;;26155:366;;;:::o;26527:419::-;26693:4;26731:2;26720:9;26716:18;26708:26;;26780:9;26774:4;26770:20;26766:1;26755:9;26751:17;26744:47;26808:131;26934:4;26808:131;:::i;:::-;26800:139;;26527:419;;;:::o;26952:225::-;27092:34;27088:1;27080:6;27076:14;27069:58;27161:8;27156:2;27148:6;27144:15;27137:33;26952:225;:::o;27183:366::-;27325:3;27346:67;27410:2;27405:3;27346:67;:::i;:::-;27339:74;;27422:93;27511:3;27422:93;:::i;:::-;27540:2;27535:3;27531:12;27524:19;;27183:366;;;:::o;27555:419::-;27721:4;27759:2;27748:9;27744:18;27736:26;;27808:9;27802:4;27798:20;27794:1;27783:9;27779:17;27772:47;27836:131;27962:4;27836:131;:::i;:::-;27828:139;;27555:419;;;:::o;27980:173::-;28120:25;28116:1;28108:6;28104:14;28097:49;27980:173;:::o;28159:366::-;28301:3;28322:67;28386:2;28381:3;28322:67;:::i;:::-;28315:74;;28398:93;28487:3;28398:93;:::i;:::-;28516:2;28511:3;28507:12;28500:19;;28159:366;;;:::o;28531:419::-;28697:4;28735:2;28724:9;28720:18;28712:26;;28784:9;28778:4;28774:20;28770:1;28759:9;28755:17;28748:47;28812:131;28938:4;28812:131;:::i;:::-;28804:139;;28531:419;;;:::o;28956:166::-;29096:18;29092:1;29084:6;29080:14;29073:42;28956:166;:::o;29128:366::-;29270:3;29291:67;29355:2;29350:3;29291:67;:::i;:::-;29284:74;;29367:93;29456:3;29367:93;:::i;:::-;29485:2;29480:3;29476:12;29469:19;;29128:366;;;:::o;29500:419::-;29666:4;29704:2;29693:9;29689:18;29681:26;;29753:9;29747:4;29743:20;29739:1;29728:9;29724:17;29717:47;29781:131;29907:4;29781:131;:::i;:::-;29773:139;;29500:419;;;:::o;29925:169::-;30065:21;30061:1;30053:6;30049:14;30042:45;29925:169;:::o;30100:366::-;30242:3;30263:67;30327:2;30322:3;30263:67;:::i;:::-;30256:74;;30339:93;30428:3;30339:93;:::i;:::-;30457:2;30452:3;30448:12;30441:19;;30100:366;;;:::o;30472:419::-;30638:4;30676:2;30665:9;30661:18;30653:26;;30725:9;30719:4;30715:20;30711:1;30700:9;30696:17;30689:47;30753:131;30879:4;30753:131;:::i;:::-;30745:139;;30472:419;;;:::o;30897:147::-;30998:11;31035:3;31020:18;;30897:147;;;;:::o;31050:114::-;;:::o;31170:398::-;31329:3;31350:83;31431:1;31426:3;31350:83;:::i;:::-;31343:90;;31442:93;31531:3;31442:93;:::i;:::-;31560:1;31555:3;31551:11;31544:18;;31170:398;;;:::o;31574:379::-;31758:3;31780:147;31923:3;31780:147;:::i;:::-;31773:154;;31944:3;31937:10;;31574:379;;;:::o;31959:180::-;32007:77;32004:1;31997:88;32104:4;32101:1;32094:15;32128:4;32125:1;32118:15;32145:180;32193:77;32190:1;32183:88;32290:4;32287:1;32280:15;32314:4;32311:1;32304:15;32331:143;32388:5;32419:6;32413:13;32404:22;;32435:33;32462:5;32435:33;:::i;:::-;32331:143;;;;:::o;32480:351::-;32550:6;32599:2;32587:9;32578:7;32574:23;32570:32;32567:119;;;32605:79;;:::i;:::-;32567:119;32725:1;32750:64;32806:7;32797:6;32786:9;32782:22;32750:64;:::i;:::-;32740:74;;32696:128;32480:351;;;;:::o;32837:85::-;32882:7;32911:5;32900:16;;32837:85;;;:::o;32928:158::-;32986:9;33019:61;33037:42;33046:32;33072:5;33046:32;:::i;:::-;33037:42;:::i;:::-;33019:61;:::i;:::-;33006:74;;32928:158;;;:::o;33092:147::-;33187:45;33226:5;33187:45;:::i;:::-;33182:3;33175:58;33092:147;;:::o;33245:114::-;33312:6;33346:5;33340:12;33330:22;;33245:114;;;:::o;33365:184::-;33464:11;33498:6;33493:3;33486:19;33538:4;33533:3;33529:14;33514:29;;33365:184;;;;:::o;33555:132::-;33622:4;33645:3;33637:11;;33675:4;33670:3;33666:14;33658:22;;33555:132;;;:::o;33693:108::-;33770:24;33788:5;33770:24;:::i;:::-;33765:3;33758:37;33693:108;;:::o;33807:179::-;33876:10;33897:46;33939:3;33931:6;33897:46;:::i;:::-;33975:4;33970:3;33966:14;33952:28;;33807:179;;;;:::o;33992:113::-;34062:4;34094;34089:3;34085:14;34077:22;;33992:113;;;:::o;34141:732::-;34260:3;34289:54;34337:5;34289:54;:::i;:::-;34359:86;34438:6;34433:3;34359:86;:::i;:::-;34352:93;;34469:56;34519:5;34469:56;:::i;:::-;34548:7;34579:1;34564:284;34589:6;34586:1;34583:13;34564:284;;;34665:6;34659:13;34692:63;34751:3;34736:13;34692:63;:::i;:::-;34685:70;;34778:60;34831:6;34778:60;:::i;:::-;34768:70;;34624:224;34611:1;34608;34604:9;34599:14;;34564:284;;;34568:14;34864:3;34857:10;;34265:608;;;34141:732;;;;:::o;34879:831::-;35142:4;35180:3;35169:9;35165:19;35157:27;;35194:71;35262:1;35251:9;35247:17;35238:6;35194:71;:::i;:::-;35275:80;35351:2;35340:9;35336:18;35327:6;35275:80;:::i;:::-;35402:9;35396:4;35392:20;35387:2;35376:9;35372:18;35365:48;35430:108;35533:4;35524:6;35430:108;:::i;:::-;35422:116;;35548:72;35616:2;35605:9;35601:18;35592:6;35548:72;:::i;:::-;35630:73;35698:3;35687:9;35683:19;35674:6;35630:73;:::i;:::-;34879:831;;;;;;;;:::o

Swarm Source

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