S Price: $0.531635 (-10.94%)

Token

FARMER (FARM)

Overview

Max Total Supply

1,000,000 FARM

Holders

7

Market

Price

$0.00 @ 0.000000 S

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
7,750.61783918357232377 FARM

Value
$0.00
0xe68bd755c87749f6144f6762283698742e0daa0c
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information

Contract Source Code Verified (Exact Match)

Contract Name:
FARMER

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 SonicScan.org on 2025-03-02
*/

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

// OpenZeppelin Contracts v5.0.1

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address to, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address from, address to, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

/**
 * @dev Contract module that helps prevent reentrant calls to a function.
 */
abstract contract ReentrancyGuard {
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;
    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }

    modifier nonReentrant() {
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");
        _status = _ENTERED;
        _;
        _status = _NOT_ENTERED;
    }
}

/**
 * @dev Contract module which provides a basic access control mechanism
 */
abstract contract Ownable {
    address private _owner;

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

    constructor(address initialOwner) {
        if (initialOwner == address(0)) {
            revert("Ownable: new owner is the zero address");
        }
        _transferOwnership(initialOwner);
    }

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

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

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

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

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

/**
 * @dev Implementation of the {IERC20} interface.
 */
abstract contract ERC20 is IERC20 {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

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

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

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

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

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

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

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

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

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

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

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

    function _transfer(address from, address to, uint256 amount) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        _beforeTokenTransfer(from, to, amount);
        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
            _balances[to] += amount;
        }
        emit Transfer(from, to, amount);
        _afterTokenTransfer(from, to, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");
        _beforeTokenTransfer(address(0), account, amount);
        _totalSupply += amount;
        unchecked {
            _balances[account] += amount;
        }
        emit Transfer(address(0), account, amount);
        _afterTokenTransfer(address(0), account, amount);
    }

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

    function _spendAllowance(address owner, address spender, uint256 amount) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

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

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

interface IMetropolisRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);

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

interface IMetropolisFactory {
    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

// FARMER Token Contract
contract FARMER is ERC20, ReentrancyGuard, Ownable {
    // Constants
    uint256 public constant TOTAL_SUPPLY = 1_000_000 * 10**18;
    uint256 public constant TAX_RATE = 5; // 5%
    uint256 public constant LIQUIDITY_TAX = 25; // 2.5%
    uint256 public constant AIRDROP_TAX = 25; // 2.5%
    uint256 public constant MIN_HOLDER_AMOUNT = 10 * 10**18; // 10 tokens
    uint256 public constant MIN_TOKENS_FOR_PROCESS = 100 * 10**18; // 100 token minimum for both operations

    // Metropolis DEX addresses
    IMetropolisRouter public metropolisRouter;
    IMetropolisFactory public immutable metropolisFactory;
    address public immutable sonicToken;
    address public liquidityPair;

    // Holder tracking
    mapping(address => bool) public isHolder;
    address[] public holders;

    // Events
    event LiquidityAdded(uint256 tokenAmount, uint256 sonicAmount);
    event AirdropDistributed(uint256 amount, uint256 holdersCount);
    event SwapFailed(string reason);
    event LiquidityAddFailed(string reason);
    event AirdropFailed(string reason);
    event ProcessStarted(uint256 tokensForLiquidity, uint256 tokensForAirdrop);
    event SwapSuccessful(uint256 tokensSwapped, uint256 wethReceived);

    uint256 private _pendingLiquidityTokens;
    uint256 private _pendingAirdropTokens;

    constructor() ERC20("FARMER", "FARM") Ownable(msg.sender) {
        metropolisRouter = IMetropolisRouter(0x95a7e403d7cF20F675fF9273D66e94d35ba49fA3);
        metropolisFactory = IMetropolisFactory(0x1570300e9cFEC66c9Fb0C8bc14366C86EB170Ad0);
        sonicToken = 0x039e2fB66102314Ce7b64Ce5Ce3E5183bc94aD38; // Doğru WETH adresi

        // Mint all tokens to contract first
        _mint(address(this), TOTAL_SUPPLY);
        
        // Create pair
        liquidityPair = metropolisFactory.createPair(address(this), sonicToken);
        
        // Approve router for full supply
        _approve(address(this), address(metropolisRouter), TOTAL_SUPPLY);
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual override {
        super._beforeTokenTransfer(from, to, amount);
    }

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual override {
        super._afterTokenTransfer(from, to, amount);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual override {
        if (from == owner() || to == owner() || from == address(this) || to == address(this)) {
            super._transfer(from, to, amount);
            _updateHolder(from);
            _updateHolder(to);
        } else {
            bool isSellOrBuy = to == liquidityPair || from == liquidityPair;
            
            if (isSellOrBuy) {
                uint256 totalTax = (amount * TAX_RATE) / 100;  // %5
                uint256 liquidityTax = (amount * LIQUIDITY_TAX) / 1000;  // %2.5 (25/1000)
                uint256 airdropTax = (amount * AIRDROP_TAX) / 1000;     // %2.5 (25/1000)
                uint256 transferAmount = amount - totalTax;
                
                // Transfer the tax to contract
                super._transfer(from, address(this), totalTax);
                // Transfer the remaining amount
                super._transfer(from, to, transferAmount);

                // Accumulate tokens for liquidity and airdrop
                _pendingLiquidityTokens += liquidityTax;
                _pendingAirdropTokens += airdropTax;

                // Process when either liquidity or airdrop tokens reach minimum
                if ((_pendingLiquidityTokens >= MIN_TOKENS_FOR_PROCESS || _pendingAirdropTokens >= MIN_TOKENS_FOR_PROCESS) && 
                    holders.length > 0) {
                    _processLiquidityAndAirdrop();
                }
            } else {
                super._transfer(from, to, amount);
            }
            
            _updateHolder(from);
            _updateHolder(to);
        }
    }

    function _updateHolder(address account) private {
        if (account != liquidityPair && account != address(this)) {
            uint256 balance = balanceOf(account);
            bool isCurrentlyHolder = isHolder[account];
            
            if (balance >= MIN_HOLDER_AMOUNT && !isCurrentlyHolder) {
                isHolder[account] = true;
                holders.push(account);
            } else if (balance < MIN_HOLDER_AMOUNT && isCurrentlyHolder) {
                isHolder[account] = false;
                _removeHolder(account);
            }
        }
    }

    function _removeHolder(address account) private {
        for (uint256 i = 0; i < holders.length; i++) {
            if (holders[i] == account) {
                holders[i] = holders[holders.length - 1];
                holders.pop();
                break;
            }
        }
    }

    function _processSwap(uint256 totalTokens) private returns (uint256) {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = sonicToken;

        // Router onayını kontrol et
        uint256 currentAllowance = IERC20(address(this)).allowance(address(this), address(metropolisRouter));
        if (currentAllowance < totalTokens) {
            _approve(address(this), address(metropolisRouter), 0);
            _approve(address(this), address(metropolisRouter), type(uint256).max);
        }

        try metropolisRouter.swapExactTokensForTokens(
            totalTokens,
            0,  // minimum çıktı miktarı
            path,
            address(this),  // WETH'leri kontrata gönder
            block.timestamp + 300
        ) returns (uint[] memory) {
            uint256 wethBalance = IERC20(sonicToken).balanceOf(address(this));
            emit SwapSuccessful(totalTokens, wethBalance);
            return wethBalance;
        } catch Error(string memory reason) {
            emit SwapFailed(reason);
            return 0;
        } catch {
            emit SwapFailed("Unknown error in swap");
            return 0;
        }
    }

    function _processLiquidity(uint256 tokensForLiquidity, uint256 wethForLiquidity) private {
        if (wethForLiquidity > 0) {
            uint256 wethAllowance = IERC20(sonicToken).allowance(address(this), address(metropolisRouter));
            if (wethAllowance < wethForLiquidity) {
                IERC20(sonicToken).approve(address(metropolisRouter), type(uint256).max);
            }
            
            try metropolisRouter.addLiquidity(
                address(this),
                sonicToken,
                tokensForLiquidity / 2,
                wethForLiquidity,
                0,
                0,
                address(this),
                block.timestamp
            ) {
                emit LiquidityAdded(tokensForLiquidity / 2, wethForLiquidity);
            } catch Error(string memory reason) {
                emit LiquidityAddFailed(reason);
                _pendingLiquidityTokens = tokensForLiquidity;
            } catch {
                emit LiquidityAddFailed("Unknown error in addLiquidity");
                _pendingLiquidityTokens = tokensForLiquidity;
            }
        }
    }

    function _processAirdrop(uint256 wethForAirdrop) private {
        if (wethForAirdrop > 0 && holders.length > 0) {
            uint256 amountPerHolder = wethForAirdrop / holders.length;
            
            if (amountPerHolder > 0) {
                for (uint256 i = 0; i < holders.length && i < 100; i++) {
                    try IERC20(sonicToken).transfer(holders[i], amountPerHolder) {
                        // Transfer successful
                    } catch Error(string memory reason) {
                        emit AirdropFailed(reason);
                        continue;
                    } catch {
                        emit AirdropFailed("Unknown error in WETH transfer");
                        continue;
                    }
                }
                
                emit AirdropDistributed(wethForAirdrop, holders.length);
            }
        }
    }

    function _processLiquidityAndAirdrop() private {
        uint256 tokensForLiquidity = _pendingLiquidityTokens;
        uint256 tokensForAirdrop = _pendingAirdropTokens;
        uint256 totalTokens = tokensForLiquidity + tokensForAirdrop;
        
        emit ProcessStarted(tokensForLiquidity, tokensForAirdrop);

        // Önce kontrat bakiyesini kontrol et
        uint256 contractBalance = IERC20(address(this)).balanceOf(address(this));
        require(contractBalance >= totalTokens, "Insufficient token balance for swap");

        _pendingLiquidityTokens = 0;
        _pendingAirdropTokens = 0;
        
        // Router approval kontrolü
        uint256 currentAllowance = IERC20(address(this)).allowance(address(this), address(metropolisRouter));
        if (currentAllowance < totalTokens) {
            _approve(address(this), address(metropolisRouter), 0);
            _approve(address(this), address(metropolisRouter), TOTAL_SUPPLY);
        }

        // Likidite havuzu kontrolü
        address pair = IMetropolisFactory(metropolisRouter.factory()).getPair(address(this), sonicToken);
        require(pair != address(0), "Liquidity pair does not exist");
        require(pair == liquidityPair, "Invalid liquidity pair");

        // Process swap
        uint256 wethBalance = _processSwap(totalTokens);
        if (wethBalance > 0) {
            // Calculate proportions
            uint256 wethForLiquidity = (wethBalance * tokensForLiquidity) / totalTokens;
            uint256 wethForAirdrop = wethBalance - wethForLiquidity;

            // Process liquidity
            _processLiquidity(tokensForLiquidity, wethForLiquidity);

            // Process airdrop
            _processAirdrop(wethForAirdrop);
        } else {
            // If swap failed, restore pending amounts
            _pendingLiquidityTokens = tokensForLiquidity;
            _pendingAirdropTokens = tokensForAirdrop;
        }
    }

    // View functions
    function getHolderCount() external view returns (uint256) {
        return holders.length;
    }
    
    function getHolders() external view returns (address[] memory) {
        return holders;
    }

    // Initial liquidity function (must be called by owner with ETH)
    function addInitialLiquidity(uint256 tokenAmount) external payable onlyOwner {
        require(msg.value > 0, "Must provide ETH for initial liquidity");
        require(tokenAmount > 0, "Must provide token amount for initial liquidity");
        
        // Check contract balance
        require(
            IERC20(address(this)).balanceOf(address(this)) >= tokenAmount,
            "Insufficient token balance in contract"
        );

        // Approve router to spend tokens directly from contract
        _approve(address(this), address(metropolisRouter), tokenAmount);

        // Add liquidity with minimal checks
        try metropolisRouter.addLiquidityETH{value: msg.value}(
            address(this),
            tokenAmount,
            0,              // No minimum token amount
            0,              // No minimum ETH amount
            msg.sender,     // LP tokens will go to owner directly
            block.timestamp // Immediate execution
        ) {
            emit LiquidityAdded(tokenAmount, msg.value);
        } catch {
            // If failed, revert the approval
            _approve(address(this), address(metropolisRouter), 0);
            revert("Failed to add liquidity");
        }

        // Return any unused ETH
        uint256 remainingETH = address(this).balance;
        if (remainingETH > 0) {
            payable(msg.sender).transfer(remainingETH);
        }
    }

    function setRouter(address _router) external onlyOwner {
        require(_router != address(0), "Invalid router address");
        metropolisRouter = IMetropolisRouter(_router);
    }

    function rescueTokens(address _token, uint256 _amount) external onlyOwner {
        require(_token != address(this), "Cannot rescue FARMER tokens");
        IERC20(_token).transfer(owner(), _amount);
    }

    // Transfer tokens to owner
    function withdrawTokensToOwner(uint256 amount) external onlyOwner {
        require(
            IERC20(address(this)).balanceOf(address(this)) >= amount,
            "Insufficient balance"
        );
        _transfer(address(this), msg.sender, amount);
    }

    // View functions for pending amounts
    function getPendingLiquidityTokens() external view returns (uint256) {
        return _pendingLiquidityTokens;
    }

    function getPendingAirdropTokens() external view returns (uint256) {
        return _pendingAirdropTokens;
    }

    // Process liquidity and airdrop manually if needed
    function processLiquidityAndAirdrop() external onlyOwner {
        require(_pendingLiquidityTokens > 0 || _pendingAirdropTokens > 0, "No pending tokens");
        require(holders.length > 0, "No holders");
        _processLiquidityAndAirdrop();
    }

    function checkAndRefreshAllowances() external onlyOwner {
        // Check and refresh FARM approval for router
        uint256 farmAllowance = IERC20(address(this)).allowance(address(this), address(metropolisRouter));
        if (farmAllowance < TOTAL_SUPPLY) {
            _approve(address(this), address(metropolisRouter), TOTAL_SUPPLY);
        }

        // Check and refresh WETH approval for router
        uint256 wethBalance = IERC20(sonicToken).balanceOf(address(this));
        if (wethBalance > 0) {
            uint256 wethAllowance = IERC20(sonicToken).allowance(address(this), address(metropolisRouter));
            if (wethAllowance < wethBalance) {
                IERC20(sonicToken).approve(address(metropolisRouter), type(uint256).max);
            }
        }
    }

    // Debug function
    function getSwapInfo() external view returns (
        uint256 contractBalance,
        uint256 routerAllowance,
        bool pairExists,
        address pair,
        uint256 pendingLiq,
        uint256 pendingAirdrop
    ) {
        contractBalance = IERC20(address(this)).balanceOf(address(this));
        routerAllowance = IERC20(address(this)).allowance(address(this), address(metropolisRouter));
        pair = IMetropolisFactory(metropolisRouter.factory()).getPair(address(this), sonicToken);
        pairExists = pair != address(0);
        pendingLiq = _pendingLiquidityTokens;
        pendingAirdrop = _pendingAirdropTokens;
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"holdersCount","type":"uint256"}],"name":"AirdropDistributed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"AirdropFailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"LiquidityAddFailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sonicAmount","type":"uint256"}],"name":"LiquidityAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensForLiquidity","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensForAirdrop","type":"uint256"}],"name":"ProcessStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"SwapFailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"wethReceived","type":"uint256"}],"name":"SwapSuccessful","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"AIRDROP_TAX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LIQUIDITY_TAX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MIN_HOLDER_AMOUNT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MIN_TOKENS_FOR_PROCESS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TAX_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TOTAL_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"addInitialLiquidity","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkAndRefreshAllowances","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getHolderCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getHolders","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPendingAirdropTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPendingLiquidityTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSwapInfo","outputs":[{"internalType":"uint256","name":"contractBalance","type":"uint256"},{"internalType":"uint256","name":"routerAllowance","type":"uint256"},{"internalType":"bool","name":"pairExists","type":"bool"},{"internalType":"address","name":"pair","type":"address"},{"internalType":"uint256","name":"pendingLiq","type":"uint256"},{"internalType":"uint256","name":"pendingAirdrop","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"holders","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isHolder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"metropolisFactory","outputs":[{"internalType":"contract IMetropolisFactory","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"metropolisRouter","outputs":[{"internalType":"contract IMetropolisRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"processLiquidityAndAirdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_router","type":"address"}],"name":"setRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sonicToken","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawTokensToOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c060405234801562000010575f80fd5b50336040518060400160405280600681526020017f4641524d455200000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f4641524d0000000000000000000000000000000000000000000000000000000081525081600390816200008f9190620009c7565b508060049081620000a19190620009c7565b50505060016005819055505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200011d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001149062000b2f565b60405180910390fd5b6200012e816200033660201b60201c565b507395a7e403d7cf20f675ff9273d66e94d35ba49fa360075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550731570300e9cfec66c9fb0c8bc14366c86eb170ad073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505073039e2fb66102314ce7b64ce5ce3e5183bc94ad3873ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200022f3069d3c21bcecceda1000000620003f960201b60201c565b60805173ffffffffffffffffffffffffffffffffffffffff1663c9c653963060a0516040518363ffffffff1660e01b81526004016200027092919062000b92565b6020604051808303815f875af11580156200028d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002b3919062000bf0565b60085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620003303060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1669d3c21bcecceda10000006200055e60201b60201c565b62000e49565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200046a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004619062000c6e565b60405180910390fd5b6200047d5f83836200072960201b60201c565b8060025f82825462000490919062000cbb565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200053f919062000d06565b60405180910390a36200055a5f83836200074160201b60201c565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620005cf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005c69062000d95565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000640576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006379062000e29565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516200071c919062000d06565b60405180910390a3505050565b6200073c8383836200075960201b60201c565b505050565b620007548383836200075e60201b60201c565b505050565b505050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620007df57607f821691505b602082108103620007f557620007f46200079a565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620008597fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200081c565b6200086586836200081c565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620008af620008a9620008a3846200087d565b62000886565b6200087d565b9050919050565b5f819050919050565b620008ca836200088f565b620008e2620008d982620008b6565b84845462000828565b825550505050565b5f90565b620008f8620008ea565b62000905818484620008bf565b505050565b5b818110156200092c57620009205f82620008ee565b6001810190506200090b565b5050565b601f8211156200097b576200094581620007fb565b62000950846200080d565b8101602085101562000960578190505b620009786200096f856200080d565b8301826200090a565b50505b505050565b5f82821c905092915050565b5f6200099d5f198460080262000980565b1980831691505092915050565b5f620009b783836200098c565b9150826002028217905092915050565b620009d28262000763565b67ffffffffffffffff811115620009ee57620009ed6200076d565b5b620009fa8254620007c7565b62000a0782828562000930565b5f60209050601f83116001811462000a3d575f841562000a28578287015190505b62000a348582620009aa565b86555062000aa3565b601f19841662000a4d86620007fb565b5f5b8281101562000a765784890151825560018201915060208501945060208101905062000a4f565b8683101562000a96578489015162000a92601f8916826200098c565b8355505b6001600288020188555050505b505050505050565b5f82825260208201905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f62000b1760268362000aab565b915062000b248262000abb565b604082019050919050565b5f6020820190508181035f83015262000b488162000b09565b9050919050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000b7a8262000b4f565b9050919050565b62000b8c8162000b6e565b82525050565b5f60408201905062000ba75f83018562000b81565b62000bb6602083018462000b81565b9392505050565b5f80fd5b62000bcc8162000b6e565b811462000bd7575f80fd5b50565b5f8151905062000bea8162000bc1565b92915050565b5f6020828403121562000c085762000c0762000bbd565b5b5f62000c178482850162000bda565b91505092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62000c56601f8362000aab565b915062000c638262000c20565b602082019050919050565b5f6020820190508181035f83015262000c878162000c48565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000cc7826200087d565b915062000cd4836200087d565b925082820190508082111562000cef5762000cee62000c8e565b5b92915050565b62000d00816200087d565b82525050565b5f60208201905062000d1b5f83018462000cf5565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f62000d7d60248362000aab565b915062000d8a8262000d21565b604082019050919050565b5f6020820190508181035f83015262000dae8162000d6f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f62000e1160228362000aab565b915062000e1e8262000db5565b604082019050919050565b5f6020820190508181035f83015262000e428162000e03565b9050919050565b60805160a051614b9b62000eb85f395f8181610a6601528181610ea201528181611458015281816114fb015281816115c0015281816121190152818161290901528181612bf301528181612cdc01528181612da101528181612ebd015261309f01525f61188a0152614b9b5ff3fe6080604052600436106101fc575f3560e01c80637ac84fc11161010c578063a9059cbb1161009f578063d4d7b19a1161006e578063d4d7b19a146106ec578063d4e123a614610728578063dd62ed3e14610752578063f2fde38b1461078e578063fd7c9fab146107b657610203565b8063a9059cbb14610648578063bc531dae14610684578063c026d93a146106ae578063c0d78655146106c457610203565b80638da5cb5b116100db5780638da5cb5b146105a0578063902d55a5146105ca57806395a6e254146105f457806395d89b411461061e57610203565b80637ac84fc11461050c578063808a54571461052257806381f0549f1461054c57806383f170be1461057657610203565b806341a22cc21161018f5780635fe8e7cc1161015e5780635fe8e7cc1461042a57806362b6327a1461045457806370a082311461047e5780637136982b146104ba57806379304bec146104e457610203565b806341a22cc214610392578063461a3a95146103ae57806357376198146103d85780635d76b04c1461040057610203565b80631b26c80d116101cb5780631b26c80d146102c157806323b872dd146102f05780632a11ced01461032c578063313ce5671461036857610203565b806306fdde031461020757806308dee2b414610231578063095ea7b31461025b57806318160ddd1461029757610203565b3661020357005b5f80fd5b348015610212575f80fd5b5061021b6107e0565b60405161022891906134a3565b60405180910390f35b34801561023c575f80fd5b50610245610870565b60405161025291906134db565b60405180910390f35b348015610266575f80fd5b50610281600480360381019061027c9190613589565b610879565b60405161028e91906135e1565b60405180910390f35b3480156102a2575f80fd5b506102ab610894565b6040516102b891906134db565b60405180910390f35b3480156102cc575f80fd5b506102d561089d565b6040516102e796959493929190613609565b60405180910390f35b3480156102fb575f80fd5b5061031660048036038101906103119190613668565b610b27565b60405161032391906135e1565b60405180910390f35b348015610337575f80fd5b50610352600480360381019061034d91906136b8565b610b4e565b60405161035f91906136e3565b60405180910390f35b348015610373575f80fd5b5061037c610b89565b6040516103899190613717565b60405180910390f35b6103ac60048036038101906103a791906136b8565b610b91565b005b3480156103b9575f80fd5b506103c2610ea0565b6040516103cf91906136e3565b60405180910390f35b3480156103e3575f80fd5b506103fe60048036038101906103f99190613589565b610ec4565b005b34801561040b575f80fd5b50610414610fc1565b60405161042191906134db565b60405180910390f35b348015610435575f80fd5b5061043e610fca565b60405161044b91906137e7565b60405180910390f35b34801561045f575f80fd5b50610468611055565b6040516104759190613862565b60405180910390f35b348015610489575f80fd5b506104a4600480360381019061049f919061387b565b61107a565b6040516104b191906134db565b60405180910390f35b3480156104c5575f80fd5b506104ce6110bf565b6040516104db91906134db565b60405180910390f35b3480156104ef575f80fd5b5061050a600480360381019061050591906136b8565b6110cb565b005b348015610517575f80fd5b5061052061119b565b005b34801561052d575f80fd5b50610536611244565b60405161054391906136e3565b60405180910390f35b348015610557575f80fd5b50610560611269565b60405161056d91906134db565b60405180910390f35b348015610581575f80fd5b5061058a61126e565b60405161059791906134db565b60405180910390f35b3480156105ab575f80fd5b506105b4611273565b6040516105c191906136e3565b60405180910390f35b3480156105d5575f80fd5b506105de61129b565b6040516105eb91906134db565b60405180910390f35b3480156105ff575f80fd5b506106086112a9565b60405161061591906134db565b60405180910390f35b348015610629575f80fd5b506106326112b6565b60405161063f91906134a3565b60405180910390f35b348015610653575f80fd5b5061066e60048036038101906106699190613589565b611346565b60405161067b91906135e1565b60405180910390f35b34801561068f575f80fd5b50610698611361565b6040516106a591906134db565b60405180910390f35b3480156106b9575f80fd5b506106c2611366565b005b3480156106cf575f80fd5b506106ea60048036038101906106e5919061387b565b6116a2565b005b3480156106f7575f80fd5b50610712600480360381019061070d919061387b565b61175b565b60405161071f91906135e1565b60405180910390f35b348015610733575f80fd5b5061073c611778565b60405161074991906134db565b60405180910390f35b34801561075d575f80fd5b50610778600480360381019061077391906138a6565b611784565b60405161078591906134db565b60405180910390f35b348015610799575f80fd5b506107b460048036038101906107af919061387b565b611806565b005b3480156107c1575f80fd5b506107ca611888565b6040516107d79190613904565b60405180910390f35b6060600380546107ef9061394a565b80601f016020809104026020016040519081016040528092919081815260200182805461081b9061394a565b80156108665780601f1061083d57610100808354040283529160200191610866565b820191905f5260205f20905b81548152906001019060200180831161084957829003601f168201915b5050505050905090565b5f600b54905090565b5f803390506108898185856118ac565b600191505092915050565b5f600254905090565b5f805f805f803073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016108dc91906136e3565b602060405180830381865afa1580156108f7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061091b919061398e565b95503073ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e3060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b81526004016109799291906139b9565b602060405180830381865afa158015610994573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109b8919061398e565b945060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a24573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a4891906139f4565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905307f00000000000000000000000000000000000000000000000000000000000000006040518363ffffffff1660e01b8152600401610aa29291906139b9565b602060405180830381865afa158015610abd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ae191906139f4565b92505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614159350600b549150600c549050909192939495565b5f80339050610b37858285611a6f565b610b42858585611afa565b60019150509392505050565b600a8181548110610b5d575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6012905090565b610b99611dcc565b5f3411610bdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd290613a8f565b60405180910390fd5b5f8111610c1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1490613b1d565b60405180910390fd5b803073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610c5791906136e3565b602060405180830381865afa158015610c72573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c96919061398e565b1015610cd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cce90613bab565b60405180910390fd5b610d033060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836118ac565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7193430845f8033426040518863ffffffff1660e01b8152600401610d6896959493929190613c02565b60606040518083038185885af193505050508015610da457506040513d601f19601f82011682018060405250810190610da19190613c61565b60015b610e0f57610dd43060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165f6118ac565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0690613cfb565b60405180910390fd5b5050507f38f8a0c92f4c5b0b6877f878cb4c0c8d348a47b76d716c8e78f425043df9515b8134604051610e43929190613d19565b60405180910390a15f4790505f811115610e9c573373ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015610e9a573d5f803e3d5ffd5b505b5050565b7f000000000000000000000000000000000000000000000000000000000000000081565b610ecc611dcc565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3190613d8a565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb610f5e611273565b836040518363ffffffff1660e01b8152600401610f7c929190613da8565b6020604051808303815f875af1158015610f98573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fbc9190613df9565b505050565b5f600c54905090565b6060600a80548060200260200160405190810160405280929190818152602001828054801561104b57602002820191905f5260205f20905b815f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611002575b5050505050905090565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f600a80549050905090565b6110d3611dcc565b803073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161110d91906136e3565b602060405180830381865afa158015611128573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061114c919061398e565b101561118d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118490613e6e565b60405180910390fd5b611198303383611afa565b50565b6111a3611dcc565b5f600b5411806111b457505f600c54115b6111f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ea90613ed6565b60405180910390fd5b5f600a805490501161123a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123190613f3e565b60405180910390fd5b611242611e43565b565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601981565b600581565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b69d3c21bcecceda100000081565b68056bc75e2d6310000081565b6060600480546112c59061394a565b80601f01602080910402602001604051908101604052809291908181526020018280546112f19061394a565b801561133c5780601f106113135761010080835404028352916020019161133c565b820191905f5260205f20905b81548152906001019060200180831161131f57829003601f168201915b5050505050905090565b5f80339050611356818585611afa565b600191505092915050565b601981565b61136e611dcc565b5f3073ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e3060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b81526004016113cb9291906139b9565b602060405180830381865afa1580156113e6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061140a919061398e565b905069d3c21bcecceda1000000811015611455576114543060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1669d3c21bcecceda10000006118ac565b5b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016114af91906136e3565b602060405180830381865afa1580156114ca573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114ee919061398e565b90505f81111561169e575f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e3060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b81526004016115759291906139b9565b602060405180830381865afa158015611590573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115b4919061398e565b90508181101561169c577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663095ea7b360075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161165a929190613da8565b6020604051808303815f875af1158015611676573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061169a9190613df9565b505b505b5050565b6116aa611dcc565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611718576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170f90613fa6565b60405180910390fd5b8060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6009602052805f5260405f205f915054906101000a900460ff1681565b678ac7230489e8000081565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61180e611dcc565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361187c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187390614034565b60405180910390fd5b61188581612302565b50565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361191a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611911906140c2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611988576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197f90614150565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611a6291906134db565b60405180910390a3505050565b5f611a7a8484611784565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611af45781811015611ae6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611add906141b8565b60405180910390fd5b611af384848484036118ac565b5b50505050565b611b02611273565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480611b6d5750611b3e611273565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80611ba357503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80611bd957503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15611c0057611be98383836123c5565b611bf283612631565b611bfb82612631565b611dc7565b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480611ca8575060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b90508015611da7575f6064600584611cc09190614203565b611cca9190614271565b90505f6103e8601985611cdd9190614203565b611ce79190614271565b90505f6103e8601986611cfa9190614203565b611d049190614271565b90505f8386611d1391906142a1565b9050611d208830866123c5565b611d2b8888836123c5565b82600b5f828254611d3c91906142d4565b9250508190555081600c5f828254611d5491906142d4565b9250508190555068056bc75e2d63100000600b54101580611d80575068056bc75e2d63100000600c5410155b8015611d9057505f600a80549050115b15611d9e57611d9d611e43565b5b50505050611db3565b611db28484846123c5565b5b611dbc84612631565b611dc583612631565b505b505050565b3373ffffffffffffffffffffffffffffffffffffffff16611deb611273565b73ffffffffffffffffffffffffffffffffffffffff1614611e41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3890614351565b60405180910390fd5b565b5f600b5490505f600c5490505f8183611e5c91906142d4565b90507f6f85944d879d05feade37c54fd09ce05482d063b08c263185a9400ecb991e5cd8383604051611e8f929190613d19565b60405180910390a15f3073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611ed191906136e3565b602060405180830381865afa158015611eec573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f10919061398e565b905081811015611f55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4c906143df565b60405180910390fd5b5f600b819055505f600c819055505f3073ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e3060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401611fc09291906139b9565b602060405180830381865afa158015611fdb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fff919061398e565b90508281101561206c576120353060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165f6118ac565b61206b3060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1669d3c21bcecceda10000006118ac565b5b5f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120d7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120fb91906139f4565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905307f00000000000000000000000000000000000000000000000000000000000000006040518363ffffffff1660e01b81526004016121559291906139b9565b602060405180830381865afa158015612170573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061219491906139f4565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612204576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121fb90614447565b60405180910390fd5b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612293576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228a906144af565b60405180910390fd5b5f61229d8561286b565b90505f8111156122ea575f8588836122b59190614203565b6122bf9190614271565b90505f81836122ce91906142a1565b90506122da8983612cd1565b6122e38161304e565b50506122f9565b86600b8190555085600c819055505b50505050505050565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612433576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242a9061453d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036124a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612498906145cb565b60405180910390fd5b6124ac83838361326c565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561252f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252690614659565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161261891906134db565b60405180910390a361262b84848461327c565b50505050565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156126ba57503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15612868575f6126c98261107a565b90505f60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050678ac7230489e80000821015801561272e575080155b156127ed57600160095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600a83908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612865565b678ac7230489e80000821080156128015750805b15612864575f60095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506128638361328c565b5b5b50505b50565b5f80600267ffffffffffffffff81111561288857612887614677565b5b6040519080825280602002602001820160405280156128b65781602001602082028036833780820191505090505b50905030815f815181106128cd576128cc6146a4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061293c5761293b6146a4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f3073ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e3060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b81526004016129d39291906139b9565b602060405180830381865afa1580156129ee573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a12919061398e565b905083811015612a9557612a483060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165f6118ac565b612a943060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6118ac565b5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166338ed1739855f853061012c42612ae491906142d4565b6040518663ffffffff1660e01b8152600401612b049594939291906146d1565b5f604051808303815f875af1925050508015612b4257506040513d5f823e3d601f19601f82011682018060405250810190612b3f919061483c565b60015b612bf057612b4e61488f565b806308c379a003612baf5750612b626148ae565b80612b6d5750612bb1565b7f4ecb9b6d2e2efee3f1b1b86927f5895fc3f627ac91d5ebfe344df8ae1eec072381604051612b9c91906134a3565b60405180910390a15f9350505050612ccc565b505b7f4ecb9b6d2e2efee3f1b1b86927f5895fc3f627ac91d5ebfe344df8ae1eec0723604051612bde90614987565b60405180910390a15f92505050612ccc565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612c4a91906136e3565b602060405180830381865afa158015612c65573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c89919061398e565b90507fdd819f6d4da11821175805e17c46b8094c817290420e3de00dee96b4d256dc018682604051612cbc929190613d19565b60405180910390a1809450505050505b919050565b5f81111561304a575f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e3060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401612d569291906139b9565b602060405180830381865afa158015612d71573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d95919061398e565b905081811015612e7d577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663095ea7b360075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401612e3b929190613da8565b6020604051808303815f875af1158015612e57573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e7b9190613df9565b505b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e8e33700307f0000000000000000000000000000000000000000000000000000000000000000600287612ee99190614271565b865f8030426040518963ffffffff1660e01b8152600401612f119897969594939291906149a5565b6060604051808303815f875af1925050508015612f4c57506040513d601f19601f82011682018060405250810190612f499190613c61565b60015b612fff57612f5861488f565b806308c379a003612fbb5750612f6c6148ae565b80612f775750612fbd565b7fa31e27a09b547b7d81f05436d3ed82a86121c091c82f730e0ab84b988ae730ad81604051612fa691906134a3565b60405180910390a183600b8190555050612ffa565b505b7fa31e27a09b547b7d81f05436d3ed82a86121c091c82f730e0ab84b988ae730ad604051612fea90614a6b565b60405180910390a182600b819055505b613048565b5050507f38f8a0c92f4c5b0b6877f878cb4c0c8d348a47b76d716c8e78f425043df9515b6002846130309190614271565b8360405161303f929190613d19565b60405180910390a15b505b5050565b5f8111801561306157505f600a80549050115b15613269575f600a80549050826130789190614271565b90505f811115613267575f5b600a80549050811080156130985750606481105b15613227577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600a83815481106130ed576130ec6146a4565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401613133929190613da8565b6020604051808303815f875af192505050801561316e57506040513d601f19601f8201168201806040525081019061316b9190613df9565b60015b6132125761317a61488f565b806308c379a0036131d6575061318e6148ae565b8061319957506131d8565b7fa38bdb001325b55fb77601b29dc4c8f483a0d03519ba5bea9ca2ee06e8b11614816040516131c891906134a3565b60405180910390a150613214565b505b7fa38bdb001325b55fb77601b29dc4c8f483a0d03519ba5bea9ca2ee06e8b1161460405161320590614ad3565b60405180910390a1613214565b505b808061321f90614af1565b915050613084565b507f6570e65a772d8d30d76e42c8d07c41bf88b28ecf39ca57095a61b4a76584c21782600a8054905060405161325e929190613d19565b60405180910390a15b505b50565b61327783838361340f565b505050565b613287838383613414565b505050565b5f5b600a8054905081101561340b578173ffffffffffffffffffffffffffffffffffffffff16600a82815481106132c6576132c56146a4565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036133f857600a6001600a8054905061331d91906142a1565b8154811061332e5761332d6146a4565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a828154811061336a576133696146a4565b5b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a8054806133c1576133c0614b38565b5b600190038181905f5260205f20015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905561340b565b808061340390614af1565b91505061328e565b5050565b505050565b505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015613450578082015181840152602081019050613435565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61347582613419565b61347f8185613423565b935061348f818560208601613433565b6134988161345b565b840191505092915050565b5f6020820190508181035f8301526134bb818461346b565b905092915050565b5f819050919050565b6134d5816134c3565b82525050565b5f6020820190506134ee5f8301846134cc565b92915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61352e82613505565b9050919050565b61353e81613524565b8114613548575f80fd5b50565b5f8135905061355981613535565b92915050565b613568816134c3565b8114613572575f80fd5b50565b5f813590506135838161355f565b92915050565b5f806040838503121561359f5761359e6134fd565b5b5f6135ac8582860161354b565b92505060206135bd85828601613575565b9150509250929050565b5f8115159050919050565b6135db816135c7565b82525050565b5f6020820190506135f45f8301846135d2565b92915050565b61360381613524565b82525050565b5f60c08201905061361c5f8301896134cc565b61362960208301886134cc565b61363660408301876135d2565b61364360608301866135fa565b61365060808301856134cc565b61365d60a08301846134cc565b979650505050505050565b5f805f6060848603121561367f5761367e6134fd565b5b5f61368c8682870161354b565b935050602061369d8682870161354b565b92505060406136ae86828701613575565b9150509250925092565b5f602082840312156136cd576136cc6134fd565b5b5f6136da84828501613575565b91505092915050565b5f6020820190506136f65f8301846135fa565b92915050565b5f60ff82169050919050565b613711816136fc565b82525050565b5f60208201905061372a5f830184613708565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61376281613524565b82525050565b5f6137738383613759565b60208301905092915050565b5f602082019050919050565b5f61379582613730565b61379f818561373a565b93506137aa8361374a565b805f5b838110156137da5781516137c18882613768565b97506137cc8361377f565b9250506001810190506137ad565b5085935050505092915050565b5f6020820190508181035f8301526137ff818461378b565b905092915050565b5f819050919050565b5f61382a61382561382084613505565b613807565b613505565b9050919050565b5f61383b82613810565b9050919050565b5f61384c82613831565b9050919050565b61385c81613842565b82525050565b5f6020820190506138755f830184613853565b92915050565b5f602082840312156138905761388f6134fd565b5b5f61389d8482850161354b565b91505092915050565b5f80604083850312156138bc576138bb6134fd565b5b5f6138c98582860161354b565b92505060206138da8582860161354b565b9150509250929050565b5f6138ee82613831565b9050919050565b6138fe816138e4565b82525050565b5f6020820190506139175f8301846138f5565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061396157607f821691505b6020821081036139745761397361391d565b5b50919050565b5f815190506139888161355f565b92915050565b5f602082840312156139a3576139a26134fd565b5b5f6139b08482850161397a565b91505092915050565b5f6040820190506139cc5f8301856135fa565b6139d960208301846135fa565b9392505050565b5f815190506139ee81613535565b92915050565b5f60208284031215613a0957613a086134fd565b5b5f613a16848285016139e0565b91505092915050565b7f4d7573742070726f766964652045544820666f7220696e697469616c206c69715f8201527f7569646974790000000000000000000000000000000000000000000000000000602082015250565b5f613a79602683613423565b9150613a8482613a1f565b604082019050919050565b5f6020820190508181035f830152613aa681613a6d565b9050919050565b7f4d7573742070726f7669646520746f6b656e20616d6f756e7420666f7220696e5f8201527f697469616c206c69717569646974790000000000000000000000000000000000602082015250565b5f613b07602f83613423565b9150613b1282613aad565b604082019050919050565b5f6020820190508181035f830152613b3481613afb565b9050919050565b7f496e73756666696369656e7420746f6b656e2062616c616e636520696e20636f5f8201527f6e74726163740000000000000000000000000000000000000000000000000000602082015250565b5f613b95602683613423565b9150613ba082613b3b565b604082019050919050565b5f6020820190508181035f830152613bc281613b89565b9050919050565b5f819050919050565b5f613bec613be7613be284613bc9565b613807565b6134c3565b9050919050565b613bfc81613bd2565b82525050565b5f60c082019050613c155f8301896135fa565b613c2260208301886134cc565b613c2f6040830187613bf3565b613c3c6060830186613bf3565b613c4960808301856135fa565b613c5660a08301846134cc565b979650505050505050565b5f805f60608486031215613c7857613c776134fd565b5b5f613c858682870161397a565b9350506020613c968682870161397a565b9250506040613ca78682870161397a565b9150509250925092565b7f4661696c656420746f20616464206c69717569646974790000000000000000005f82015250565b5f613ce5601783613423565b9150613cf082613cb1565b602082019050919050565b5f6020820190508181035f830152613d1281613cd9565b9050919050565b5f604082019050613d2c5f8301856134cc565b613d3960208301846134cc565b9392505050565b7f43616e6e6f7420726573637565204641524d455220746f6b656e7300000000005f82015250565b5f613d74601b83613423565b9150613d7f82613d40565b602082019050919050565b5f6020820190508181035f830152613da181613d68565b9050919050565b5f604082019050613dbb5f8301856135fa565b613dc860208301846134cc565b9392505050565b613dd8816135c7565b8114613de2575f80fd5b50565b5f81519050613df381613dcf565b92915050565b5f60208284031215613e0e57613e0d6134fd565b5b5f613e1b84828501613de5565b91505092915050565b7f496e73756666696369656e742062616c616e63650000000000000000000000005f82015250565b5f613e58601483613423565b9150613e6382613e24565b602082019050919050565b5f6020820190508181035f830152613e8581613e4c565b9050919050565b7f4e6f2070656e64696e6720746f6b656e730000000000000000000000000000005f82015250565b5f613ec0601183613423565b9150613ecb82613e8c565b602082019050919050565b5f6020820190508181035f830152613eed81613eb4565b9050919050565b7f4e6f20686f6c64657273000000000000000000000000000000000000000000005f82015250565b5f613f28600a83613423565b9150613f3382613ef4565b602082019050919050565b5f6020820190508181035f830152613f5581613f1c565b9050919050565b7f496e76616c696420726f757465722061646472657373000000000000000000005f82015250565b5f613f90601683613423565b9150613f9b82613f5c565b602082019050919050565b5f6020820190508181035f830152613fbd81613f84565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61401e602683613423565b915061402982613fc4565b604082019050919050565b5f6020820190508181035f83015261404b81614012565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6140ac602483613423565b91506140b782614052565b604082019050919050565b5f6020820190508181035f8301526140d9816140a0565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61413a602283613423565b9150614145826140e0565b604082019050919050565b5f6020820190508181035f8301526141678161412e565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f6141a2601d83613423565b91506141ad8261416e565b602082019050919050565b5f6020820190508181035f8301526141cf81614196565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61420d826134c3565b9150614218836134c3565b9250828202614226816134c3565b9150828204841483151761423d5761423c6141d6565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61427b826134c3565b9150614286836134c3565b92508261429657614295614244565b5b828204905092915050565b5f6142ab826134c3565b91506142b6836134c3565b92508282039050818111156142ce576142cd6141d6565b5b92915050565b5f6142de826134c3565b91506142e9836134c3565b9250828201905080821115614301576143006141d6565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61433b602083613423565b915061434682614307565b602082019050919050565b5f6020820190508181035f8301526143688161432f565b9050919050565b7f496e73756666696369656e7420746f6b656e2062616c616e636520666f7220735f8201527f7761700000000000000000000000000000000000000000000000000000000000602082015250565b5f6143c9602383613423565b91506143d48261436f565b604082019050919050565b5f6020820190508181035f8301526143f6816143bd565b9050919050565b7f4c6971756964697479207061697220646f6573206e6f742065786973740000005f82015250565b5f614431601d83613423565b915061443c826143fd565b602082019050919050565b5f6020820190508181035f83015261445e81614425565b9050919050565b7f496e76616c6964206c69717569646974792070616972000000000000000000005f82015250565b5f614499601683613423565b91506144a482614465565b602082019050919050565b5f6020820190508181035f8301526144c68161448d565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f614527602583613423565b9150614532826144cd565b604082019050919050565b5f6020820190508181035f8301526145548161451b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6145b5602383613423565b91506145c08261455b565b604082019050919050565b5f6020820190508181035f8301526145e2816145a9565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f614643602683613423565b915061464e826145e9565b604082019050919050565b5f6020820190508181035f83015261467081614637565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60a0820190506146e45f8301886134cc565b6146f16020830187613bf3565b8181036040830152614703818661378b565b905061471260608301856135fa565b61471f60808301846134cc565b9695505050505050565b5f80fd5b6147368261345b565b810181811067ffffffffffffffff8211171561475557614754614677565b5b80604052505050565b5f6147676134f4565b9050614773828261472d565b919050565b5f67ffffffffffffffff82111561479257614791614677565b5b602082029050602081019050919050565b5f80fd5b5f6147b96147b484614778565b61475e565b905080838252602082019050602084028301858111156147dc576147db6147a3565b5b835b8181101561480557806147f1888261397a565b8452602084019350506020810190506147de565b5050509392505050565b5f82601f83011261482357614822614729565b5b81516148338482602086016147a7565b91505092915050565b5f60208284031215614851576148506134fd565b5b5f82015167ffffffffffffffff81111561486e5761486d613501565b5b61487a8482850161480f565b91505092915050565b5f8160e01c9050919050565b5f60033d11156148ab5760045f803e6148a85f51614883565b90505b90565b5f60443d1061493a576148bf6134f4565b60043d036004823e80513d602482011167ffffffffffffffff821117156148e757505061493a565b808201805167ffffffffffffffff811115614905575050505061493a565b80602083010160043d03850181111561492257505050505061493a565b6149318260200185018661472d565b82955050505050505b90565b7f556e6b6e6f776e206572726f7220696e207377617000000000000000000000005f82015250565b5f614971601583613423565b915061497c8261493d565b602082019050919050565b5f6020820190508181035f83015261499e81614965565b9050919050565b5f610100820190506149b95f83018b6135fa565b6149c6602083018a6135fa565b6149d360408301896134cc565b6149e060608301886134cc565b6149ed6080830187613bf3565b6149fa60a0830186613bf3565b614a0760c08301856135fa565b614a1460e08301846134cc565b9998505050505050505050565b7f556e6b6e6f776e206572726f7220696e206164644c69717569646974790000005f82015250565b5f614a55601d83613423565b9150614a6082614a21565b602082019050919050565b5f6020820190508181035f830152614a8281614a49565b9050919050565b7f556e6b6e6f776e206572726f7220696e2057455448207472616e7366657200005f82015250565b5f614abd601e83613423565b9150614ac882614a89565b602082019050919050565b5f6020820190508181035f830152614aea81614ab1565b9050919050565b5f614afb826134c3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614b2d57614b2c6141d6565b5b600182019050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfea26469706673582212200eef5f9f8affe6c0852c557f7bcf64e07fc57a3fab4eb18f2e60f06eeff5c5c964736f6c63430008140033

Deployed Bytecode

0x6080604052600436106101fc575f3560e01c80637ac84fc11161010c578063a9059cbb1161009f578063d4d7b19a1161006e578063d4d7b19a146106ec578063d4e123a614610728578063dd62ed3e14610752578063f2fde38b1461078e578063fd7c9fab146107b657610203565b8063a9059cbb14610648578063bc531dae14610684578063c026d93a146106ae578063c0d78655146106c457610203565b80638da5cb5b116100db5780638da5cb5b146105a0578063902d55a5146105ca57806395a6e254146105f457806395d89b411461061e57610203565b80637ac84fc11461050c578063808a54571461052257806381f0549f1461054c57806383f170be1461057657610203565b806341a22cc21161018f5780635fe8e7cc1161015e5780635fe8e7cc1461042a57806362b6327a1461045457806370a082311461047e5780637136982b146104ba57806379304bec146104e457610203565b806341a22cc214610392578063461a3a95146103ae57806357376198146103d85780635d76b04c1461040057610203565b80631b26c80d116101cb5780631b26c80d146102c157806323b872dd146102f05780632a11ced01461032c578063313ce5671461036857610203565b806306fdde031461020757806308dee2b414610231578063095ea7b31461025b57806318160ddd1461029757610203565b3661020357005b5f80fd5b348015610212575f80fd5b5061021b6107e0565b60405161022891906134a3565b60405180910390f35b34801561023c575f80fd5b50610245610870565b60405161025291906134db565b60405180910390f35b348015610266575f80fd5b50610281600480360381019061027c9190613589565b610879565b60405161028e91906135e1565b60405180910390f35b3480156102a2575f80fd5b506102ab610894565b6040516102b891906134db565b60405180910390f35b3480156102cc575f80fd5b506102d561089d565b6040516102e796959493929190613609565b60405180910390f35b3480156102fb575f80fd5b5061031660048036038101906103119190613668565b610b27565b60405161032391906135e1565b60405180910390f35b348015610337575f80fd5b50610352600480360381019061034d91906136b8565b610b4e565b60405161035f91906136e3565b60405180910390f35b348015610373575f80fd5b5061037c610b89565b6040516103899190613717565b60405180910390f35b6103ac60048036038101906103a791906136b8565b610b91565b005b3480156103b9575f80fd5b506103c2610ea0565b6040516103cf91906136e3565b60405180910390f35b3480156103e3575f80fd5b506103fe60048036038101906103f99190613589565b610ec4565b005b34801561040b575f80fd5b50610414610fc1565b60405161042191906134db565b60405180910390f35b348015610435575f80fd5b5061043e610fca565b60405161044b91906137e7565b60405180910390f35b34801561045f575f80fd5b50610468611055565b6040516104759190613862565b60405180910390f35b348015610489575f80fd5b506104a4600480360381019061049f919061387b565b61107a565b6040516104b191906134db565b60405180910390f35b3480156104c5575f80fd5b506104ce6110bf565b6040516104db91906134db565b60405180910390f35b3480156104ef575f80fd5b5061050a600480360381019061050591906136b8565b6110cb565b005b348015610517575f80fd5b5061052061119b565b005b34801561052d575f80fd5b50610536611244565b60405161054391906136e3565b60405180910390f35b348015610557575f80fd5b50610560611269565b60405161056d91906134db565b60405180910390f35b348015610581575f80fd5b5061058a61126e565b60405161059791906134db565b60405180910390f35b3480156105ab575f80fd5b506105b4611273565b6040516105c191906136e3565b60405180910390f35b3480156105d5575f80fd5b506105de61129b565b6040516105eb91906134db565b60405180910390f35b3480156105ff575f80fd5b506106086112a9565b60405161061591906134db565b60405180910390f35b348015610629575f80fd5b506106326112b6565b60405161063f91906134a3565b60405180910390f35b348015610653575f80fd5b5061066e60048036038101906106699190613589565b611346565b60405161067b91906135e1565b60405180910390f35b34801561068f575f80fd5b50610698611361565b6040516106a591906134db565b60405180910390f35b3480156106b9575f80fd5b506106c2611366565b005b3480156106cf575f80fd5b506106ea60048036038101906106e5919061387b565b6116a2565b005b3480156106f7575f80fd5b50610712600480360381019061070d919061387b565b61175b565b60405161071f91906135e1565b60405180910390f35b348015610733575f80fd5b5061073c611778565b60405161074991906134db565b60405180910390f35b34801561075d575f80fd5b50610778600480360381019061077391906138a6565b611784565b60405161078591906134db565b60405180910390f35b348015610799575f80fd5b506107b460048036038101906107af919061387b565b611806565b005b3480156107c1575f80fd5b506107ca611888565b6040516107d79190613904565b60405180910390f35b6060600380546107ef9061394a565b80601f016020809104026020016040519081016040528092919081815260200182805461081b9061394a565b80156108665780601f1061083d57610100808354040283529160200191610866565b820191905f5260205f20905b81548152906001019060200180831161084957829003601f168201915b5050505050905090565b5f600b54905090565b5f803390506108898185856118ac565b600191505092915050565b5f600254905090565b5f805f805f803073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016108dc91906136e3565b602060405180830381865afa1580156108f7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061091b919061398e565b95503073ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e3060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b81526004016109799291906139b9565b602060405180830381865afa158015610994573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109b8919061398e565b945060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a24573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a4891906139f4565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905307f000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad386040518363ffffffff1660e01b8152600401610aa29291906139b9565b602060405180830381865afa158015610abd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ae191906139f4565b92505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614159350600b549150600c549050909192939495565b5f80339050610b37858285611a6f565b610b42858585611afa565b60019150509392505050565b600a8181548110610b5d575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6012905090565b610b99611dcc565b5f3411610bdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd290613a8f565b60405180910390fd5b5f8111610c1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1490613b1d565b60405180910390fd5b803073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610c5791906136e3565b602060405180830381865afa158015610c72573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c96919061398e565b1015610cd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cce90613bab565b60405180910390fd5b610d033060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836118ac565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7193430845f8033426040518863ffffffff1660e01b8152600401610d6896959493929190613c02565b60606040518083038185885af193505050508015610da457506040513d601f19601f82011682018060405250810190610da19190613c61565b60015b610e0f57610dd43060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165f6118ac565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0690613cfb565b60405180910390fd5b5050507f38f8a0c92f4c5b0b6877f878cb4c0c8d348a47b76d716c8e78f425043df9515b8134604051610e43929190613d19565b60405180910390a15f4790505f811115610e9c573373ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015610e9a573d5f803e3d5ffd5b505b5050565b7f000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad3881565b610ecc611dcc565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3190613d8a565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb610f5e611273565b836040518363ffffffff1660e01b8152600401610f7c929190613da8565b6020604051808303815f875af1158015610f98573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fbc9190613df9565b505050565b5f600c54905090565b6060600a80548060200260200160405190810160405280929190818152602001828054801561104b57602002820191905f5260205f20905b815f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611002575b5050505050905090565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f600a80549050905090565b6110d3611dcc565b803073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161110d91906136e3565b602060405180830381865afa158015611128573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061114c919061398e565b101561118d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118490613e6e565b60405180910390fd5b611198303383611afa565b50565b6111a3611dcc565b5f600b5411806111b457505f600c54115b6111f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ea90613ed6565b60405180910390fd5b5f600a805490501161123a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123190613f3e565b60405180910390fd5b611242611e43565b565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601981565b600581565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b69d3c21bcecceda100000081565b68056bc75e2d6310000081565b6060600480546112c59061394a565b80601f01602080910402602001604051908101604052809291908181526020018280546112f19061394a565b801561133c5780601f106113135761010080835404028352916020019161133c565b820191905f5260205f20905b81548152906001019060200180831161131f57829003601f168201915b5050505050905090565b5f80339050611356818585611afa565b600191505092915050565b601981565b61136e611dcc565b5f3073ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e3060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b81526004016113cb9291906139b9565b602060405180830381865afa1580156113e6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061140a919061398e565b905069d3c21bcecceda1000000811015611455576114543060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1669d3c21bcecceda10000006118ac565b5b5f7f000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad3873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016114af91906136e3565b602060405180830381865afa1580156114ca573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114ee919061398e565b90505f81111561169e575f7f000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad3873ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e3060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b81526004016115759291906139b9565b602060405180830381865afa158015611590573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115b4919061398e565b90508181101561169c577f000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad3873ffffffffffffffffffffffffffffffffffffffff1663095ea7b360075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161165a929190613da8565b6020604051808303815f875af1158015611676573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061169a9190613df9565b505b505b5050565b6116aa611dcc565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611718576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170f90613fa6565b60405180910390fd5b8060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6009602052805f5260405f205f915054906101000a900460ff1681565b678ac7230489e8000081565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61180e611dcc565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361187c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187390614034565b60405180910390fd5b61188581612302565b50565b7f0000000000000000000000001570300e9cfec66c9fb0c8bc14366c86eb170ad081565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361191a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611911906140c2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611988576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197f90614150565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611a6291906134db565b60405180910390a3505050565b5f611a7a8484611784565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611af45781811015611ae6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611add906141b8565b60405180910390fd5b611af384848484036118ac565b5b50505050565b611b02611273565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480611b6d5750611b3e611273565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80611ba357503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80611bd957503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15611c0057611be98383836123c5565b611bf283612631565b611bfb82612631565b611dc7565b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480611ca8575060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b90508015611da7575f6064600584611cc09190614203565b611cca9190614271565b90505f6103e8601985611cdd9190614203565b611ce79190614271565b90505f6103e8601986611cfa9190614203565b611d049190614271565b90505f8386611d1391906142a1565b9050611d208830866123c5565b611d2b8888836123c5565b82600b5f828254611d3c91906142d4565b9250508190555081600c5f828254611d5491906142d4565b9250508190555068056bc75e2d63100000600b54101580611d80575068056bc75e2d63100000600c5410155b8015611d9057505f600a80549050115b15611d9e57611d9d611e43565b5b50505050611db3565b611db28484846123c5565b5b611dbc84612631565b611dc583612631565b505b505050565b3373ffffffffffffffffffffffffffffffffffffffff16611deb611273565b73ffffffffffffffffffffffffffffffffffffffff1614611e41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3890614351565b60405180910390fd5b565b5f600b5490505f600c5490505f8183611e5c91906142d4565b90507f6f85944d879d05feade37c54fd09ce05482d063b08c263185a9400ecb991e5cd8383604051611e8f929190613d19565b60405180910390a15f3073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611ed191906136e3565b602060405180830381865afa158015611eec573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f10919061398e565b905081811015611f55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4c906143df565b60405180910390fd5b5f600b819055505f600c819055505f3073ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e3060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401611fc09291906139b9565b602060405180830381865afa158015611fdb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fff919061398e565b90508281101561206c576120353060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165f6118ac565b61206b3060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1669d3c21bcecceda10000006118ac565b5b5f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120d7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120fb91906139f4565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905307f000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad386040518363ffffffff1660e01b81526004016121559291906139b9565b602060405180830381865afa158015612170573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061219491906139f4565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612204576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121fb90614447565b60405180910390fd5b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612293576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228a906144af565b60405180910390fd5b5f61229d8561286b565b90505f8111156122ea575f8588836122b59190614203565b6122bf9190614271565b90505f81836122ce91906142a1565b90506122da8983612cd1565b6122e38161304e565b50506122f9565b86600b8190555085600c819055505b50505050505050565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612433576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242a9061453d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036124a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612498906145cb565b60405180910390fd5b6124ac83838361326c565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561252f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252690614659565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161261891906134db565b60405180910390a361262b84848461327c565b50505050565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156126ba57503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15612868575f6126c98261107a565b90505f60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050678ac7230489e80000821015801561272e575080155b156127ed57600160095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600a83908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612865565b678ac7230489e80000821080156128015750805b15612864575f60095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506128638361328c565b5b5b50505b50565b5f80600267ffffffffffffffff81111561288857612887614677565b5b6040519080825280602002602001820160405280156128b65781602001602082028036833780820191505090505b50905030815f815181106128cd576128cc6146a4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad388160018151811061293c5761293b6146a4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f3073ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e3060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b81526004016129d39291906139b9565b602060405180830381865afa1580156129ee573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a12919061398e565b905083811015612a9557612a483060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165f6118ac565b612a943060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6118ac565b5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166338ed1739855f853061012c42612ae491906142d4565b6040518663ffffffff1660e01b8152600401612b049594939291906146d1565b5f604051808303815f875af1925050508015612b4257506040513d5f823e3d601f19601f82011682018060405250810190612b3f919061483c565b60015b612bf057612b4e61488f565b806308c379a003612baf5750612b626148ae565b80612b6d5750612bb1565b7f4ecb9b6d2e2efee3f1b1b86927f5895fc3f627ac91d5ebfe344df8ae1eec072381604051612b9c91906134a3565b60405180910390a15f9350505050612ccc565b505b7f4ecb9b6d2e2efee3f1b1b86927f5895fc3f627ac91d5ebfe344df8ae1eec0723604051612bde90614987565b60405180910390a15f92505050612ccc565b5f7f000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad3873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612c4a91906136e3565b602060405180830381865afa158015612c65573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c89919061398e565b90507fdd819f6d4da11821175805e17c46b8094c817290420e3de00dee96b4d256dc018682604051612cbc929190613d19565b60405180910390a1809450505050505b919050565b5f81111561304a575f7f000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad3873ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e3060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401612d569291906139b9565b602060405180830381865afa158015612d71573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d95919061398e565b905081811015612e7d577f000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad3873ffffffffffffffffffffffffffffffffffffffff1663095ea7b360075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401612e3b929190613da8565b6020604051808303815f875af1158015612e57573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e7b9190613df9565b505b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e8e33700307f000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad38600287612ee99190614271565b865f8030426040518963ffffffff1660e01b8152600401612f119897969594939291906149a5565b6060604051808303815f875af1925050508015612f4c57506040513d601f19601f82011682018060405250810190612f499190613c61565b60015b612fff57612f5861488f565b806308c379a003612fbb5750612f6c6148ae565b80612f775750612fbd565b7fa31e27a09b547b7d81f05436d3ed82a86121c091c82f730e0ab84b988ae730ad81604051612fa691906134a3565b60405180910390a183600b8190555050612ffa565b505b7fa31e27a09b547b7d81f05436d3ed82a86121c091c82f730e0ab84b988ae730ad604051612fea90614a6b565b60405180910390a182600b819055505b613048565b5050507f38f8a0c92f4c5b0b6877f878cb4c0c8d348a47b76d716c8e78f425043df9515b6002846130309190614271565b8360405161303f929190613d19565b60405180910390a15b505b5050565b5f8111801561306157505f600a80549050115b15613269575f600a80549050826130789190614271565b90505f811115613267575f5b600a80549050811080156130985750606481105b15613227577f000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad3873ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600a83815481106130ed576130ec6146a4565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401613133929190613da8565b6020604051808303815f875af192505050801561316e57506040513d601f19601f8201168201806040525081019061316b9190613df9565b60015b6132125761317a61488f565b806308c379a0036131d6575061318e6148ae565b8061319957506131d8565b7fa38bdb001325b55fb77601b29dc4c8f483a0d03519ba5bea9ca2ee06e8b11614816040516131c891906134a3565b60405180910390a150613214565b505b7fa38bdb001325b55fb77601b29dc4c8f483a0d03519ba5bea9ca2ee06e8b1161460405161320590614ad3565b60405180910390a1613214565b505b808061321f90614af1565b915050613084565b507f6570e65a772d8d30d76e42c8d07c41bf88b28ecf39ca57095a61b4a76584c21782600a8054905060405161325e929190613d19565b60405180910390a15b505b50565b61327783838361340f565b505050565b613287838383613414565b505050565b5f5b600a8054905081101561340b578173ffffffffffffffffffffffffffffffffffffffff16600a82815481106132c6576132c56146a4565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036133f857600a6001600a8054905061331d91906142a1565b8154811061332e5761332d6146a4565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a828154811061336a576133696146a4565b5b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a8054806133c1576133c0614b38565b5b600190038181905f5260205f20015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905561340b565b808061340390614af1565b91505061328e565b5050565b505050565b505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015613450578082015181840152602081019050613435565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61347582613419565b61347f8185613423565b935061348f818560208601613433565b6134988161345b565b840191505092915050565b5f6020820190508181035f8301526134bb818461346b565b905092915050565b5f819050919050565b6134d5816134c3565b82525050565b5f6020820190506134ee5f8301846134cc565b92915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61352e82613505565b9050919050565b61353e81613524565b8114613548575f80fd5b50565b5f8135905061355981613535565b92915050565b613568816134c3565b8114613572575f80fd5b50565b5f813590506135838161355f565b92915050565b5f806040838503121561359f5761359e6134fd565b5b5f6135ac8582860161354b565b92505060206135bd85828601613575565b9150509250929050565b5f8115159050919050565b6135db816135c7565b82525050565b5f6020820190506135f45f8301846135d2565b92915050565b61360381613524565b82525050565b5f60c08201905061361c5f8301896134cc565b61362960208301886134cc565b61363660408301876135d2565b61364360608301866135fa565b61365060808301856134cc565b61365d60a08301846134cc565b979650505050505050565b5f805f6060848603121561367f5761367e6134fd565b5b5f61368c8682870161354b565b935050602061369d8682870161354b565b92505060406136ae86828701613575565b9150509250925092565b5f602082840312156136cd576136cc6134fd565b5b5f6136da84828501613575565b91505092915050565b5f6020820190506136f65f8301846135fa565b92915050565b5f60ff82169050919050565b613711816136fc565b82525050565b5f60208201905061372a5f830184613708565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61376281613524565b82525050565b5f6137738383613759565b60208301905092915050565b5f602082019050919050565b5f61379582613730565b61379f818561373a565b93506137aa8361374a565b805f5b838110156137da5781516137c18882613768565b97506137cc8361377f565b9250506001810190506137ad565b5085935050505092915050565b5f6020820190508181035f8301526137ff818461378b565b905092915050565b5f819050919050565b5f61382a61382561382084613505565b613807565b613505565b9050919050565b5f61383b82613810565b9050919050565b5f61384c82613831565b9050919050565b61385c81613842565b82525050565b5f6020820190506138755f830184613853565b92915050565b5f602082840312156138905761388f6134fd565b5b5f61389d8482850161354b565b91505092915050565b5f80604083850312156138bc576138bb6134fd565b5b5f6138c98582860161354b565b92505060206138da8582860161354b565b9150509250929050565b5f6138ee82613831565b9050919050565b6138fe816138e4565b82525050565b5f6020820190506139175f8301846138f5565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061396157607f821691505b6020821081036139745761397361391d565b5b50919050565b5f815190506139888161355f565b92915050565b5f602082840312156139a3576139a26134fd565b5b5f6139b08482850161397a565b91505092915050565b5f6040820190506139cc5f8301856135fa565b6139d960208301846135fa565b9392505050565b5f815190506139ee81613535565b92915050565b5f60208284031215613a0957613a086134fd565b5b5f613a16848285016139e0565b91505092915050565b7f4d7573742070726f766964652045544820666f7220696e697469616c206c69715f8201527f7569646974790000000000000000000000000000000000000000000000000000602082015250565b5f613a79602683613423565b9150613a8482613a1f565b604082019050919050565b5f6020820190508181035f830152613aa681613a6d565b9050919050565b7f4d7573742070726f7669646520746f6b656e20616d6f756e7420666f7220696e5f8201527f697469616c206c69717569646974790000000000000000000000000000000000602082015250565b5f613b07602f83613423565b9150613b1282613aad565b604082019050919050565b5f6020820190508181035f830152613b3481613afb565b9050919050565b7f496e73756666696369656e7420746f6b656e2062616c616e636520696e20636f5f8201527f6e74726163740000000000000000000000000000000000000000000000000000602082015250565b5f613b95602683613423565b9150613ba082613b3b565b604082019050919050565b5f6020820190508181035f830152613bc281613b89565b9050919050565b5f819050919050565b5f613bec613be7613be284613bc9565b613807565b6134c3565b9050919050565b613bfc81613bd2565b82525050565b5f60c082019050613c155f8301896135fa565b613c2260208301886134cc565b613c2f6040830187613bf3565b613c3c6060830186613bf3565b613c4960808301856135fa565b613c5660a08301846134cc565b979650505050505050565b5f805f60608486031215613c7857613c776134fd565b5b5f613c858682870161397a565b9350506020613c968682870161397a565b9250506040613ca78682870161397a565b9150509250925092565b7f4661696c656420746f20616464206c69717569646974790000000000000000005f82015250565b5f613ce5601783613423565b9150613cf082613cb1565b602082019050919050565b5f6020820190508181035f830152613d1281613cd9565b9050919050565b5f604082019050613d2c5f8301856134cc565b613d3960208301846134cc565b9392505050565b7f43616e6e6f7420726573637565204641524d455220746f6b656e7300000000005f82015250565b5f613d74601b83613423565b9150613d7f82613d40565b602082019050919050565b5f6020820190508181035f830152613da181613d68565b9050919050565b5f604082019050613dbb5f8301856135fa565b613dc860208301846134cc565b9392505050565b613dd8816135c7565b8114613de2575f80fd5b50565b5f81519050613df381613dcf565b92915050565b5f60208284031215613e0e57613e0d6134fd565b5b5f613e1b84828501613de5565b91505092915050565b7f496e73756666696369656e742062616c616e63650000000000000000000000005f82015250565b5f613e58601483613423565b9150613e6382613e24565b602082019050919050565b5f6020820190508181035f830152613e8581613e4c565b9050919050565b7f4e6f2070656e64696e6720746f6b656e730000000000000000000000000000005f82015250565b5f613ec0601183613423565b9150613ecb82613e8c565b602082019050919050565b5f6020820190508181035f830152613eed81613eb4565b9050919050565b7f4e6f20686f6c64657273000000000000000000000000000000000000000000005f82015250565b5f613f28600a83613423565b9150613f3382613ef4565b602082019050919050565b5f6020820190508181035f830152613f5581613f1c565b9050919050565b7f496e76616c696420726f757465722061646472657373000000000000000000005f82015250565b5f613f90601683613423565b9150613f9b82613f5c565b602082019050919050565b5f6020820190508181035f830152613fbd81613f84565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61401e602683613423565b915061402982613fc4565b604082019050919050565b5f6020820190508181035f83015261404b81614012565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6140ac602483613423565b91506140b782614052565b604082019050919050565b5f6020820190508181035f8301526140d9816140a0565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61413a602283613423565b9150614145826140e0565b604082019050919050565b5f6020820190508181035f8301526141678161412e565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f6141a2601d83613423565b91506141ad8261416e565b602082019050919050565b5f6020820190508181035f8301526141cf81614196565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61420d826134c3565b9150614218836134c3565b9250828202614226816134c3565b9150828204841483151761423d5761423c6141d6565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61427b826134c3565b9150614286836134c3565b92508261429657614295614244565b5b828204905092915050565b5f6142ab826134c3565b91506142b6836134c3565b92508282039050818111156142ce576142cd6141d6565b5b92915050565b5f6142de826134c3565b91506142e9836134c3565b9250828201905080821115614301576143006141d6565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61433b602083613423565b915061434682614307565b602082019050919050565b5f6020820190508181035f8301526143688161432f565b9050919050565b7f496e73756666696369656e7420746f6b656e2062616c616e636520666f7220735f8201527f7761700000000000000000000000000000000000000000000000000000000000602082015250565b5f6143c9602383613423565b91506143d48261436f565b604082019050919050565b5f6020820190508181035f8301526143f6816143bd565b9050919050565b7f4c6971756964697479207061697220646f6573206e6f742065786973740000005f82015250565b5f614431601d83613423565b915061443c826143fd565b602082019050919050565b5f6020820190508181035f83015261445e81614425565b9050919050565b7f496e76616c6964206c69717569646974792070616972000000000000000000005f82015250565b5f614499601683613423565b91506144a482614465565b602082019050919050565b5f6020820190508181035f8301526144c68161448d565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f614527602583613423565b9150614532826144cd565b604082019050919050565b5f6020820190508181035f8301526145548161451b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6145b5602383613423565b91506145c08261455b565b604082019050919050565b5f6020820190508181035f8301526145e2816145a9565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f614643602683613423565b915061464e826145e9565b604082019050919050565b5f6020820190508181035f83015261467081614637565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60a0820190506146e45f8301886134cc565b6146f16020830187613bf3565b8181036040830152614703818661378b565b905061471260608301856135fa565b61471f60808301846134cc565b9695505050505050565b5f80fd5b6147368261345b565b810181811067ffffffffffffffff8211171561475557614754614677565b5b80604052505050565b5f6147676134f4565b9050614773828261472d565b919050565b5f67ffffffffffffffff82111561479257614791614677565b5b602082029050602081019050919050565b5f80fd5b5f6147b96147b484614778565b61475e565b905080838252602082019050602084028301858111156147dc576147db6147a3565b5b835b8181101561480557806147f1888261397a565b8452602084019350506020810190506147de565b5050509392505050565b5f82601f83011261482357614822614729565b5b81516148338482602086016147a7565b91505092915050565b5f60208284031215614851576148506134fd565b5b5f82015167ffffffffffffffff81111561486e5761486d613501565b5b61487a8482850161480f565b91505092915050565b5f8160e01c9050919050565b5f60033d11156148ab5760045f803e6148a85f51614883565b90505b90565b5f60443d1061493a576148bf6134f4565b60043d036004823e80513d602482011167ffffffffffffffff821117156148e757505061493a565b808201805167ffffffffffffffff811115614905575050505061493a565b80602083010160043d03850181111561492257505050505061493a565b6149318260200185018661472d565b82955050505050505b90565b7f556e6b6e6f776e206572726f7220696e207377617000000000000000000000005f82015250565b5f614971601583613423565b915061497c8261493d565b602082019050919050565b5f6020820190508181035f83015261499e81614965565b9050919050565b5f610100820190506149b95f83018b6135fa565b6149c6602083018a6135fa565b6149d360408301896134cc565b6149e060608301886134cc565b6149ed6080830187613bf3565b6149fa60a0830186613bf3565b614a0760c08301856135fa565b614a1460e08301846134cc565b9998505050505050505050565b7f556e6b6e6f776e206572726f7220696e206164644c69717569646974790000005f82015250565b5f614a55601d83613423565b9150614a6082614a21565b602082019050919050565b5f6020820190508181035f830152614a8281614a49565b9050919050565b7f556e6b6e6f776e206572726f7220696e2057455448207472616e7366657200005f82015250565b5f614abd601e83613423565b9150614ac882614a89565b602082019050919050565b5f6020820190508181035f830152614aea81614ab1565b9050919050565b5f614afb826134c3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614b2d57614b2c6141d6565b5b600182019050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfea26469706673582212200eef5f9f8affe6c0852c557f7bcf64e07fc57a3fab4eb18f2e60f06eeff5c5c964736f6c63430008140033

Deployed Bytecode Sourcemap

7514:14956:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2940:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20377:118;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3807:190;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3234:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21776:654;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;4005:250;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8292:24;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3142:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18163:1446;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8142:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19811:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20503:114;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17989:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8034:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3341:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17879:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20060:266;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20682:254;;;;;;;;;;;;;:::i;:::-;;8184:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7703:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7654:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1853:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7590:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7890:61;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3039:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3467:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7760:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20944:801;;;;;;;;;;;;;:::i;:::-;;19617:186;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8245:40;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7815:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3657:142;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2086:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8082:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2940:91;2985:13;3018:5;3011:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2940:91;:::o;20377:118::-;20437:7;20464:23;;20457:30;;20377:118;:::o;3807:190::-;3881:4;3898:13;3914:10;3898:26;;3935:32;3944:5;3951:7;3960:6;3935:8;:32::i;:::-;3985:4;3978:11;;;3807:190;;;;:::o;3234:99::-;3286:7;3313:12;;3306:19;;3234:99;:::o;21776:654::-;21832:23;21866;21900:15;21926:12;21949:18;21978:22;22052:4;22037:31;;;22077:4;22037:46;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22019:64;;22127:4;22112:31;;;22152:4;22167:16;;;;;;;;;;;22112:73;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22094:91;;22222:16;;;;;;;;;;;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22203:54;;;22266:4;22273:10;22203:81;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22196:88;;22324:1;22308:18;;:4;:18;;;;22295:31;;22350:23;;22337:36;;22401:21;;22384:38;;21776:654;;;;;;:::o;4005:250::-;4093:4;4110:15;4128:10;4110:28;;4149:38;4165:4;4171:7;4180:6;4149:15;:38::i;:::-;4198:27;4208:4;4214:2;4218:6;4198:9;:27::i;:::-;4243:4;4236:11;;;4005:250;;;;;:::o;8292:24::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3142:84::-;3191:5;3216:2;3209:9;;3142:84;:::o;18163:1446::-;1812:13;:11;:13::i;:::-;18271:1:::1;18259:9;:13;18251:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;18348:1;18334:11;:15;18326:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;18529:11;18494:4;18479:31;;;18519:4;18479:46;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:61;;18457:149;;;;;;;;;;;;:::i;:::-;;;;;;;;;18685:63;18702:4;18717:16;;;;;;;;;;;18736:11;18685:8;:63::i;:::-;18811:16;;;;;;;;;;;:32;;;18851:9;18884:4;18904:11;18930:1;18986::::0;19040:10:::1;19108:15;18811:346;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;18807:603;;19297:53;19314:4;19329:16;;;;;;;;;;;19348:1;19297:8;:53::i;:::-;19365:33;;;;;;;;;;:::i;:::-;;;;;;;;18807:603;;;;19178:38;19193:11;19206:9;19178:38;;;;;;;:::i;:::-;;;;;;;;19456:20;19479:21;19456:44;;19530:1;19515:12;:16;19511:91;;;19556:10;19548:28;;:42;19577:12;19548:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;19511:91;18240:1369;18163:1446:::0;:::o;8142:35::-;;;:::o;19811:208::-;1812:13;:11;:13::i;:::-;19922:4:::1;19904:23;;:6;:23;;::::0;19896:63:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;19977:6;19970:23;;;19994:7;:5;:7::i;:::-;20003;19970:41;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19811:208:::0;;:::o;20503:114::-;20561:7;20588:21;;20581:28;;20503:114;:::o;17989:96::-;18034:16;18070:7;18063:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17989:96;:::o;8034:41::-;;;;;;;;;;;;;:::o;3341:118::-;3406:7;3433:9;:18;3443:7;3433:18;;;;;;;;;;;;;;;;3426:25;;3341:118;;;:::o;17879:98::-;17928:7;17955;:14;;;;17948:21;;17879:98;:::o;20060:266::-;1812:13;:11;:13::i;:::-;20209:6:::1;20174:4;20159:31;;;20199:4;20159:46;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:56;;20137:126;;;;;;;;;;;;:::i;:::-;;;;;;;;;20274:44;20292:4;20299:10;20311:6;20274:9;:44::i;:::-;20060:266:::0;:::o;20682:254::-;1812:13;:11;:13::i;:::-;20784:1:::1;20758:23;;:27;:56;;;;20813:1;20789:21;;:25;20758:56;20750:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;20872:1;20855:7;:14;;;;:18;20847:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;20899:29;:27;:29::i;:::-;20682:254::o:0;8184:28::-;;;;;;;;;;;;;:::o;7703:42::-;7743:2;7703:42;:::o;7654:36::-;7689:1;7654:36;:::o;1853:87::-;1899:7;1926:6;;;;;;;;;;;1919:13;;1853:87;:::o;7590:57::-;7629:18;7590:57;:::o;7890:61::-;7939:12;7890:61;:::o;3039:95::-;3086:13;3119:7;3112:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3039:95;:::o;3467:182::-;3537:4;3554:13;3570:10;3554:26;;3591:28;3601:5;3608:2;3612:6;3591:9;:28::i;:::-;3637:4;3630:11;;;3467:182;;;;:::o;7760:40::-;7798:2;7760:40;:::o;20944:801::-;1812:13;:11;:13::i;:::-;21066:21:::1;21105:4;21090:31;;;21130:4;21145:16;;;;;;;;;;;21090:73;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21066:97;;7629:18;21178:13;:28;21174:125;;;21223:64;21240:4;21255:16;;;;;;;;;;;7629:18;21223:8;:64::i;:::-;21174:125;21366:19;21395:10;21388:28;;;21425:4;21388:43;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21366:65;;21460:1;21446:11;:15;21442:296;;;21478:21;21509:10;21502:28;;;21539:4;21554:16;;;;;;;;;;;21502:70;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21478:94;;21607:11;21591:13;:27;21587:140;;;21646:10;21639:26;;;21674:16;;;;;;;;;;;21693:17;21639:72;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21587:140;21463:275;21442:296;21000:745;;20944:801::o:0;19617:186::-;1812:13;:11;:13::i;:::-;19710:1:::1;19691:21;;:7;:21;;::::0;19683:56:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;19787:7;19750:16;;:45;;;;;;;;;;;;;;;;;;19617:186:::0;:::o;8245:40::-;;;;;;;;;;;;;;;;;;;;;;:::o;7815:55::-;7859:11;7815:55;:::o;3657:142::-;3737:7;3764:11;:18;3776:5;3764:18;;;;;;;;;;;;;;;:27;3783:7;3764:27;;;;;;;;;;;;;;;;3757:34;;3657:142;;;;:::o;2086:201::-;1812:13;:11;:13::i;:::-;2195:1:::1;2175:22;;:8;:22;;::::0;2167:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2251:28;2270:8;2251:18;:28::i;:::-;2086:201:::0;:::o;8082:53::-;;;:::o;5341:344::-;5460:1;5443:19;;:5;:19;;;5435:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5541:1;5522:21;;:7;:21;;;5514:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5623:6;5593:11;:18;5605:5;5593:18;;;;;;;;;;;;;;;:27;5612:7;5593:27;;;;;;;;;;;;;;;:36;;;;5661:7;5645:32;;5654:5;5645:32;;;5670:6;5645:32;;;;;;:::i;:::-;;;;;;;;5341:344;;;:::o;5693:419::-;5794:24;5821:25;5831:5;5838:7;5821:9;:25::i;:::-;5794:52;;5881:17;5861:16;:37;5857:248;;5943:6;5923:16;:26;;5915:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6027:51;6036:5;6043:7;6071:6;6052:16;:25;6027:8;:51::i;:::-;5857:248;5783:329;5693:419;;;:::o;9937:1722::-;10081:7;:5;:7::i;:::-;10073:15;;:4;:15;;;:32;;;;10098:7;:5;:7::i;:::-;10092:13;;:2;:13;;;10073:32;:57;;;;10125:4;10109:21;;:4;:21;;;10073:57;:80;;;;10148:4;10134:19;;:2;:19;;;10073:80;10069:1583;;;10170:33;10186:4;10192:2;10196:6;10170:15;:33::i;:::-;10218:19;10232:4;10218:13;:19::i;:::-;10252:17;10266:2;10252:13;:17::i;:::-;10069:1583;;;10302:16;10327:13;;;;;;;;;;;10321:19;;:2;:19;;;:44;;;;10352:13;;;;;;;;;;;10344:21;;:4;:21;;;10321:44;10302:63;;10398:11;10394:1167;;;10430:16;10471:3;7689:1;10450:6;:17;;;;:::i;:::-;10449:25;;;;:::i;:::-;10430:44;;10500:20;10550:4;7743:2;10524:6;:22;;;;:::i;:::-;10523:31;;;;:::i;:::-;10500:54;;10592:18;10638:4;7798:2;10614:6;:20;;;;:::i;:::-;10613:29;;;;:::i;:::-;10592:50;;10683:22;10717:8;10708:6;:17;;;;:::i;:::-;10683:42;;10811:46;10827:4;10841;10848:8;10811:15;:46::i;:::-;10926:41;10942:4;10948:2;10952:14;10926:15;:41::i;:::-;11079:12;11052:23;;:39;;;;;;;:::i;:::-;;;;;;;;11135:10;11110:21;;:35;;;;;;;:::i;:::-;;;;;;;;7939:12;11253:23;;:49;;:100;;;;7939:12;11306:21;;:47;;11253:100;11252:146;;;;;11397:1;11380:7;:14;;;;:18;11252:146;11248:224;;;11423:29;:27;:29::i;:::-;11248:224;10411:1076;;;;10394:1167;;;11512:33;11528:4;11534:2;11538:6;11512:15;:33::i;:::-;10394:1167;11589:19;11603:4;11589:13;:19::i;:::-;11623:17;11637:2;11623:13;:17::i;:::-;10287:1365;10069:1583;9937:1722;;;:::o;1948:130::-;2023:10;2012:21;;:7;:5;:7::i;:::-;:21;;;2004:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;1948:130::o;15876:1972::-;15934:26;15963:23;;15934:52;;15997:24;16024:21;;15997:48;;16056:19;16099:16;16078:18;:37;;;;:::i;:::-;16056:59;;16141:52;16156:18;16176:16;16141:52;;;;;;;:::i;:::-;;;;;;;;16254:23;16295:4;16280:31;;;16320:4;16280:46;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16254:72;;16364:11;16345:15;:30;;16337:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;16454:1;16428:23;:27;;;;16490:1;16466:21;:25;;;;16550:24;16592:4;16577:31;;;16617:4;16632:16;;;;;;;;;;;16577:73;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16550:100;;16684:11;16665:16;:30;16661:195;;;16712:53;16729:4;16744:16;;;;;;;;;;;16763:1;16712:8;:53::i;:::-;16780:64;16797:4;16812:16;;;;;;;;;;;7629:18;16780:8;:64::i;:::-;16661:195;16906:12;16940:16;;;;;;;;;;;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16921:54;;;16984:4;16991:10;16921:81;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16906:96;;17037:1;17021:18;;:4;:18;;;17013:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;17100:13;;;;;;;;;;;17092:21;;:4;:21;;;17084:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;17178:19;17200:25;17213:11;17200:12;:25::i;:::-;17178:47;;17254:1;17240:11;:15;17236:605;;;17310:24;17374:11;17352:18;17338:11;:32;;;;:::i;:::-;17337:48;;;;:::i;:::-;17310:75;;17400:22;17439:16;17425:11;:30;;;;:::i;:::-;17400:55;;17506;17524:18;17544:16;17506:17;:55::i;:::-;17610:31;17626:14;17610:15;:31::i;:::-;17257:396;;17236:605;;;17756:18;17730:23;:44;;;;17813:16;17789:21;:40;;;;17236:605;15923:1925;;;;;;;15876:1972::o;2295:191::-;2369:16;2388:6;;;;;;;;;;;2369:25;;2414:8;2405:6;;:17;;;;;;;;;;;;;;;;;;2469:8;2438:40;;2459:8;2438:40;;;;;;;;;;;;2358:128;2295:191;:::o;4263:633::-;4376:1;4360:18;;:4;:18;;;4352:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4453:1;4439:16;;:2;:16;;;4431:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;4506:38;4527:4;4533:2;4537:6;4506:20;:38::i;:::-;4555:19;4577:9;:15;4587:4;4577:15;;;;;;;;;;;;;;;;4555:37;;4626:6;4611:11;:21;;4603:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;4743:6;4729:11;:20;4711:9;:15;4721:4;4711:15;;;;;;;;;;;;;;;:38;;;;4781:6;4764:9;:13;4774:2;4764:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;4829:2;4814:26;;4823:4;4814:26;;;4833:6;4814:26;;;;;;:::i;:::-;;;;;;;;4851:37;4871:4;4877:2;4881:6;4851:19;:37::i;:::-;4341:555;4263:633;;;:::o;11667:588::-;11741:13;;;;;;;;;;;11730:24;;:7;:24;;;;:52;;;;;11777:4;11758:24;;:7;:24;;;;11730:52;11726:522;;;11799:15;11817:18;11827:7;11817:9;:18::i;:::-;11799:36;;11850:22;11875:8;:17;11884:7;11875:17;;;;;;;;;;;;;;;;;;;;;;;;;11850:42;;7859:11;11925:7;:28;;:50;;;;;11958:17;11957:18;11925:50;11921:316;;;12016:4;11996:8;:17;12005:7;11996:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;12039:7;12052;12039:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11921:316;;;7859:11;12086:7;:27;:48;;;;;12117:17;12086:48;12082:155;;;12175:5;12155:8;:17;12164:7;12155:17;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;12199:22;12213:7;12199:13;:22::i;:::-;12082:155;11921:316;11784:464;;11726:522;11667:588;:::o;12566:1225::-;12626:7;12646:21;12684:1;12670:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12646:40;;12715:4;12697;12702:1;12697:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;12741:10;12731:4;12736:1;12731:7;;;;;;;;:::i;:::-;;;;;;;:20;;;;;;;;;;;12804:24;12846:4;12831:31;;;12871:4;12886:16;;;;;;;;;;;12831:73;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12804:100;;12938:11;12919:16;:30;12915:200;;;12966:53;12983:4;12998:16;;;;;;;;;;;13017:1;12966:8;:53::i;:::-;13034:69;13051:4;13066:16;;;;;;;;;;;13085:17;13034:8;:69::i;:::-;12915:200;13131:16;;;;;;;;;;;:41;;;13187:11;13213:1;13259:4;13286;13355:3;13337:15;:21;;;;:::i;:::-;13131:238;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;13127:657;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;13634:18;13645:6;13634:18;;;;;;:::i;:::-;;;;;;;;13674:1;13667:8;;;;;;;13127:657;;;13714:35;;;;;;:::i;:::-;;;;;;;;13771:1;13764:8;;;;;;13127:657;13409:19;13438:10;13431:28;;;13468:4;13431:43;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13409:65;;13494:40;13509:11;13522;13494:40;;;;;;;:::i;:::-;;;;;;;;13556:11;13549:18;;;;;;12566:1225;;;;:::o;13799:1154::-;13922:1;13903:16;:20;13899:1047;;;13940:21;13971:10;13964:28;;;14001:4;14016:16;;;;;;;;;;;13964:70;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13940:94;;14069:16;14053:13;:32;14049:145;;;14113:10;14106:26;;;14141:16;;;;;;;;;;;14160:17;14106:72;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14049:145;14226:16;;;;;;;;;;;:29;;;14282:4;14306:10;14356:1;14335:18;:22;;;;:::i;:::-;14376:16;14411:1;14431;14459:4;14483:15;14226:287;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;14222:713;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;14669:26;14688:6;14669:26;;;;;;:::i;:::-;;;;;;;;14740:18;14714:23;:44;;;;14611:163;14222:713;;;;;14805:51;;;;;;:::i;:::-;;;;;;;;14901:18;14875:23;:44;;;;14222:713;;;;;;;14538:56;14574:1;14553:18;:22;;;;:::i;:::-;14577:16;14538:56;;;;;;;:::i;:::-;;;;;;;;14222:713;13925:1021;13899:1047;13799:1154;;:::o;14961:907::-;15050:1;15033:14;:18;:40;;;;;15072:1;15055:7;:14;;;;:18;15033:40;15029:832;;;15090:23;15133:7;:14;;;;15116;:31;;;;:::i;:::-;15090:57;;15198:1;15180:15;:19;15176:674;;;15225:9;15220:523;15244:7;:14;;;;15240:1;:18;:29;;;;;15266:3;15262:1;:7;15240:29;15220:523;;;15310:10;15303:27;;;15331:7;15339:1;15331:10;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15343:15;15303:56;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;15299:425;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;15499:21;15513:6;15499:21;;;;;;:::i;:::-;;;;;;;;15547:8;;;15299:425;;;15618:47;;;;;;:::i;:::-;;;;;;;;15692:8;;15299:425;;15220:523;15271:3;;;;;:::i;:::-;;;;15220:523;;;;15784:50;15803:14;15819:7;:14;;;;15784:50;;;;;;;:::i;:::-;;;;;;;;15176:674;15075:786;15029:832;14961:907;:::o;9533:195::-;9676:44;9703:4;9709:2;9713:6;9676:26;:44::i;:::-;9533:195;;;:::o;9736:193::-;9878:43;9904:4;9910:2;9914:6;9878:25;:43::i;:::-;9736:193;;;:::o;12263:295::-;12327:9;12322:229;12346:7;:14;;;;12342:1;:18;12322:229;;;12400:7;12386:21;;:7;12394:1;12386:10;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:21;;;12382:158;;12441:7;12466:1;12449:7;:14;;;;:18;;;;:::i;:::-;12441:27;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12428:7;12436:1;12428:10;;;;;;;;:::i;:::-;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;12487:7;:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;12519:5;;12382:158;12362:3;;;;;:::i;:::-;;;;12322:229;;;;12263:295;:::o;6120:91::-;;;;:::o;6219:90::-;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:77::-;1386:7;1415:5;1404:16;;1349:77;;;:::o;1432:118::-;1519:24;1537:5;1519:24;:::i;:::-;1514:3;1507:37;1432:118;;:::o;1556:222::-;1649:4;1687:2;1676:9;1672:18;1664:26;;1700:71;1768:1;1757:9;1753:17;1744:6;1700:71;:::i;:::-;1556:222;;;;:::o;1784:75::-;1817:6;1850:2;1844:9;1834:19;;1784:75;:::o;1865:117::-;1974:1;1971;1964:12;1988:117;2097:1;2094;2087:12;2111:126;2148:7;2188:42;2181:5;2177:54;2166:65;;2111:126;;;:::o;2243:96::-;2280:7;2309:24;2327:5;2309:24;:::i;:::-;2298:35;;2243:96;;;:::o;2345:122::-;2418:24;2436:5;2418:24;:::i;:::-;2411:5;2408:35;2398:63;;2457:1;2454;2447:12;2398:63;2345:122;:::o;2473:139::-;2519:5;2557:6;2544:20;2535:29;;2573:33;2600:5;2573:33;:::i;:::-;2473:139;;;;:::o;2618:122::-;2691:24;2709:5;2691:24;:::i;:::-;2684:5;2681:35;2671:63;;2730:1;2727;2720:12;2671:63;2618:122;:::o;2746:139::-;2792:5;2830:6;2817:20;2808:29;;2846:33;2873:5;2846:33;:::i;:::-;2746:139;;;;:::o;2891:474::-;2959:6;2967;3016:2;3004:9;2995:7;2991:23;2987:32;2984:119;;;3022:79;;:::i;:::-;2984:119;3142:1;3167:53;3212:7;3203:6;3192:9;3188:22;3167:53;:::i;:::-;3157:63;;3113:117;3269:2;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3240:118;2891:474;;;;;:::o;3371:90::-;3405:7;3448:5;3441:13;3434:21;3423:32;;3371:90;;;:::o;3467:109::-;3548:21;3563:5;3548:21;:::i;:::-;3543:3;3536:34;3467:109;;:::o;3582:210::-;3669:4;3707:2;3696:9;3692:18;3684:26;;3720:65;3782:1;3771:9;3767:17;3758:6;3720:65;:::i;:::-;3582:210;;;;:::o;3798:118::-;3885:24;3903:5;3885:24;:::i;:::-;3880:3;3873:37;3798:118;;:::o;3922:763::-;4149:4;4187:3;4176:9;4172:19;4164:27;;4201:71;4269:1;4258:9;4254:17;4245:6;4201:71;:::i;:::-;4282:72;4350:2;4339:9;4335:18;4326:6;4282:72;:::i;:::-;4364:66;4426:2;4415:9;4411:18;4402:6;4364:66;:::i;:::-;4440:72;4508:2;4497:9;4493:18;4484:6;4440:72;:::i;:::-;4522:73;4590:3;4579:9;4575:19;4566:6;4522:73;:::i;:::-;4605;4673:3;4662:9;4658:19;4649:6;4605:73;:::i;:::-;3922:763;;;;;;;;;:::o;4691:619::-;4768:6;4776;4784;4833:2;4821:9;4812:7;4808:23;4804:32;4801:119;;;4839:79;;:::i;:::-;4801:119;4959:1;4984:53;5029:7;5020:6;5009:9;5005:22;4984:53;:::i;:::-;4974:63;;4930:117;5086:2;5112:53;5157:7;5148:6;5137:9;5133:22;5112:53;:::i;:::-;5102:63;;5057:118;5214:2;5240:53;5285:7;5276:6;5265:9;5261:22;5240:53;:::i;:::-;5230:63;;5185:118;4691:619;;;;;:::o;5316:329::-;5375:6;5424:2;5412:9;5403:7;5399:23;5395:32;5392:119;;;5430:79;;:::i;:::-;5392:119;5550:1;5575:53;5620:7;5611:6;5600:9;5596:22;5575:53;:::i;:::-;5565:63;;5521:117;5316:329;;;;:::o;5651:222::-;5744:4;5782:2;5771:9;5767:18;5759:26;;5795:71;5863:1;5852:9;5848:17;5839:6;5795:71;:::i;:::-;5651:222;;;;:::o;5879:86::-;5914:7;5954:4;5947:5;5943:16;5932:27;;5879:86;;;:::o;5971:112::-;6054:22;6070:5;6054:22;:::i;:::-;6049:3;6042:35;5971:112;;:::o;6089:214::-;6178:4;6216:2;6205:9;6201:18;6193:26;;6229:67;6293:1;6282:9;6278:17;6269:6;6229:67;:::i;:::-;6089:214;;;;:::o;6309:114::-;6376:6;6410:5;6404:12;6394:22;;6309:114;;;:::o;6429:184::-;6528:11;6562:6;6557:3;6550:19;6602:4;6597:3;6593:14;6578:29;;6429:184;;;;:::o;6619:132::-;6686:4;6709:3;6701:11;;6739:4;6734:3;6730:14;6722:22;;6619:132;;;:::o;6757:108::-;6834:24;6852:5;6834:24;:::i;:::-;6829:3;6822:37;6757:108;;:::o;6871:179::-;6940:10;6961:46;7003:3;6995:6;6961:46;:::i;:::-;7039:4;7034:3;7030:14;7016:28;;6871:179;;;;:::o;7056:113::-;7126:4;7158;7153:3;7149:14;7141:22;;7056:113;;;:::o;7205:732::-;7324:3;7353:54;7401:5;7353:54;:::i;:::-;7423:86;7502:6;7497:3;7423:86;:::i;:::-;7416:93;;7533:56;7583:5;7533:56;:::i;:::-;7612:7;7643:1;7628:284;7653:6;7650:1;7647:13;7628:284;;;7729:6;7723:13;7756:63;7815:3;7800:13;7756:63;:::i;:::-;7749:70;;7842:60;7895:6;7842:60;:::i;:::-;7832:70;;7688:224;7675:1;7672;7668:9;7663:14;;7628:284;;;7632:14;7928:3;7921:10;;7329:608;;;7205:732;;;;:::o;7943:373::-;8086:4;8124:2;8113:9;8109:18;8101:26;;8173:9;8167:4;8163:20;8159:1;8148:9;8144:17;8137:47;8201:108;8304:4;8295:6;8201:108;:::i;:::-;8193:116;;7943:373;;;;:::o;8322:60::-;8350:3;8371:5;8364:12;;8322:60;;;:::o;8388:142::-;8438:9;8471:53;8489:34;8498:24;8516:5;8498:24;:::i;:::-;8489:34;:::i;:::-;8471:53;:::i;:::-;8458:66;;8388:142;;;:::o;8536:126::-;8586:9;8619:37;8650:5;8619:37;:::i;:::-;8606:50;;8536:126;;;:::o;8668:151::-;8743:9;8776:37;8807:5;8776:37;:::i;:::-;8763:50;;8668:151;;;:::o;8825:181::-;8937:62;8993:5;8937:62;:::i;:::-;8932:3;8925:75;8825:181;;:::o;9012:272::-;9130:4;9168:2;9157:9;9153:18;9145:26;;9181:96;9274:1;9263:9;9259:17;9250:6;9181:96;:::i;:::-;9012:272;;;;:::o;9290:329::-;9349:6;9398:2;9386:9;9377:7;9373:23;9369:32;9366:119;;;9404:79;;:::i;:::-;9366:119;9524:1;9549:53;9594:7;9585:6;9574:9;9570:22;9549:53;:::i;:::-;9539:63;;9495:117;9290:329;;;;:::o;9625:474::-;9693:6;9701;9750:2;9738:9;9729:7;9725:23;9721:32;9718:119;;;9756:79;;:::i;:::-;9718:119;9876:1;9901:53;9946:7;9937:6;9926:9;9922:22;9901:53;:::i;:::-;9891:63;;9847:117;10003:2;10029:53;10074:7;10065:6;10054:9;10050:22;10029:53;:::i;:::-;10019:63;;9974:118;9625:474;;;;;:::o;10105:152::-;10181:9;10214:37;10245:5;10214:37;:::i;:::-;10201:50;;10105:152;;;:::o;10263:183::-;10376:63;10433:5;10376:63;:::i;:::-;10371:3;10364:76;10263:183;;:::o;10452:274::-;10571:4;10609:2;10598:9;10594:18;10586:26;;10622:97;10716:1;10705:9;10701:17;10692:6;10622:97;:::i;:::-;10452:274;;;;:::o;10732:180::-;10780:77;10777:1;10770:88;10877:4;10874:1;10867:15;10901:4;10898:1;10891:15;10918:320;10962:6;10999:1;10993:4;10989:12;10979:22;;11046:1;11040:4;11036:12;11067:18;11057:81;;11123:4;11115:6;11111:17;11101:27;;11057:81;11185:2;11177:6;11174:14;11154:18;11151:38;11148:84;;11204:18;;:::i;:::-;11148:84;10969:269;10918:320;;;:::o;11244:143::-;11301:5;11332:6;11326:13;11317:22;;11348:33;11375:5;11348:33;:::i;:::-;11244:143;;;;:::o;11393:351::-;11463:6;11512:2;11500:9;11491:7;11487:23;11483:32;11480:119;;;11518:79;;:::i;:::-;11480:119;11638:1;11663:64;11719:7;11710:6;11699:9;11695:22;11663:64;:::i;:::-;11653:74;;11609:128;11393:351;;;;:::o;11750:332::-;11871:4;11909:2;11898:9;11894:18;11886:26;;11922:71;11990:1;11979:9;11975:17;11966:6;11922:71;:::i;:::-;12003:72;12071:2;12060:9;12056:18;12047:6;12003:72;:::i;:::-;11750:332;;;;;:::o;12088:143::-;12145:5;12176:6;12170:13;12161:22;;12192:33;12219:5;12192:33;:::i;:::-;12088:143;;;;:::o;12237:351::-;12307:6;12356:2;12344:9;12335:7;12331:23;12327:32;12324:119;;;12362:79;;:::i;:::-;12324:119;12482:1;12507:64;12563:7;12554:6;12543:9;12539:22;12507:64;:::i;:::-;12497:74;;12453:128;12237:351;;;;:::o;12594:225::-;12734:34;12730:1;12722:6;12718:14;12711:58;12803:8;12798:2;12790:6;12786:15;12779:33;12594:225;:::o;12825:366::-;12967:3;12988:67;13052:2;13047:3;12988:67;:::i;:::-;12981:74;;13064:93;13153:3;13064:93;:::i;:::-;13182:2;13177:3;13173:12;13166:19;;12825:366;;;:::o;13197:419::-;13363:4;13401:2;13390:9;13386:18;13378:26;;13450:9;13444:4;13440:20;13436:1;13425:9;13421:17;13414:47;13478:131;13604:4;13478:131;:::i;:::-;13470:139;;13197:419;;;:::o;13622:234::-;13762:34;13758:1;13750:6;13746:14;13739:58;13831:17;13826:2;13818:6;13814:15;13807:42;13622:234;:::o;13862:366::-;14004:3;14025:67;14089:2;14084:3;14025:67;:::i;:::-;14018:74;;14101:93;14190:3;14101:93;:::i;:::-;14219:2;14214:3;14210:12;14203:19;;13862:366;;;:::o;14234:419::-;14400:4;14438:2;14427:9;14423:18;14415:26;;14487:9;14481:4;14477:20;14473:1;14462:9;14458:17;14451:47;14515:131;14641:4;14515:131;:::i;:::-;14507:139;;14234:419;;;:::o;14659:225::-;14799:34;14795:1;14787:6;14783:14;14776:58;14868:8;14863:2;14855:6;14851:15;14844:33;14659:225;:::o;14890:366::-;15032:3;15053:67;15117:2;15112:3;15053:67;:::i;:::-;15046:74;;15129:93;15218:3;15129:93;:::i;:::-;15247:2;15242:3;15238:12;15231:19;;14890:366;;;:::o;15262:419::-;15428:4;15466:2;15455:9;15451:18;15443:26;;15515:9;15509:4;15505:20;15501:1;15490:9;15486:17;15479:47;15543:131;15669:4;15543:131;:::i;:::-;15535:139;;15262:419;;;:::o;15687:85::-;15732:7;15761:5;15750:16;;15687:85;;;:::o;15778:158::-;15836:9;15869:61;15887:42;15896:32;15922:5;15896:32;:::i;:::-;15887:42;:::i;:::-;15869:61;:::i;:::-;15856:74;;15778:158;;;:::o;15942:147::-;16037:45;16076:5;16037:45;:::i;:::-;16032:3;16025:58;15942:147;;:::o;16095:807::-;16344:4;16382:3;16371:9;16367:19;16359:27;;16396:71;16464:1;16453:9;16449:17;16440:6;16396:71;:::i;:::-;16477:72;16545:2;16534:9;16530:18;16521:6;16477:72;:::i;:::-;16559:80;16635:2;16624:9;16620:18;16611:6;16559:80;:::i;:::-;16649;16725:2;16714:9;16710:18;16701:6;16649:80;:::i;:::-;16739:73;16807:3;16796:9;16792:19;16783:6;16739:73;:::i;:::-;16822;16890:3;16879:9;16875:19;16866:6;16822:73;:::i;:::-;16095:807;;;;;;;;;:::o;16908:663::-;16996:6;17004;17012;17061:2;17049:9;17040:7;17036:23;17032:32;17029:119;;;17067:79;;:::i;:::-;17029:119;17187:1;17212:64;17268:7;17259:6;17248:9;17244:22;17212:64;:::i;:::-;17202:74;;17158:128;17325:2;17351:64;17407:7;17398:6;17387:9;17383:22;17351:64;:::i;:::-;17341:74;;17296:129;17464:2;17490:64;17546:7;17537:6;17526:9;17522:22;17490:64;:::i;:::-;17480:74;;17435:129;16908:663;;;;;:::o;17577:173::-;17717:25;17713:1;17705:6;17701:14;17694:49;17577:173;:::o;17756:366::-;17898:3;17919:67;17983:2;17978:3;17919:67;:::i;:::-;17912:74;;17995:93;18084:3;17995:93;:::i;:::-;18113:2;18108:3;18104:12;18097:19;;17756:366;;;:::o;18128:419::-;18294:4;18332:2;18321:9;18317:18;18309:26;;18381:9;18375:4;18371:20;18367:1;18356:9;18352:17;18345:47;18409:131;18535:4;18409:131;:::i;:::-;18401:139;;18128:419;;;:::o;18553:332::-;18674:4;18712:2;18701:9;18697:18;18689:26;;18725:71;18793:1;18782:9;18778:17;18769:6;18725:71;:::i;:::-;18806:72;18874:2;18863:9;18859:18;18850:6;18806:72;:::i;:::-;18553:332;;;;;:::o;18891:177::-;19031:29;19027:1;19019:6;19015:14;19008:53;18891:177;:::o;19074:366::-;19216:3;19237:67;19301:2;19296:3;19237:67;:::i;:::-;19230:74;;19313:93;19402:3;19313:93;:::i;:::-;19431:2;19426:3;19422:12;19415:19;;19074:366;;;:::o;19446:419::-;19612:4;19650:2;19639:9;19635:18;19627:26;;19699:9;19693:4;19689:20;19685:1;19674:9;19670:17;19663:47;19727:131;19853:4;19727:131;:::i;:::-;19719:139;;19446:419;;;:::o;19871:332::-;19992:4;20030:2;20019:9;20015:18;20007:26;;20043:71;20111:1;20100:9;20096:17;20087:6;20043:71;:::i;:::-;20124:72;20192:2;20181:9;20177:18;20168:6;20124:72;:::i;:::-;19871:332;;;;;:::o;20209:116::-;20279:21;20294:5;20279:21;:::i;:::-;20272:5;20269:32;20259:60;;20315:1;20312;20305:12;20259:60;20209:116;:::o;20331:137::-;20385:5;20416:6;20410:13;20401:22;;20432:30;20456:5;20432:30;:::i;:::-;20331:137;;;;:::o;20474:345::-;20541:6;20590:2;20578:9;20569:7;20565:23;20561:32;20558:119;;;20596:79;;:::i;:::-;20558:119;20716:1;20741:61;20794:7;20785:6;20774:9;20770:22;20741:61;:::i;:::-;20731:71;;20687:125;20474:345;;;;:::o;20825:170::-;20965:22;20961:1;20953:6;20949:14;20942:46;20825:170;:::o;21001:366::-;21143:3;21164:67;21228:2;21223:3;21164:67;:::i;:::-;21157:74;;21240:93;21329:3;21240:93;:::i;:::-;21358:2;21353:3;21349:12;21342:19;;21001:366;;;:::o;21373:419::-;21539:4;21577:2;21566:9;21562:18;21554:26;;21626:9;21620:4;21616:20;21612:1;21601:9;21597:17;21590:47;21654:131;21780:4;21654:131;:::i;:::-;21646:139;;21373:419;;;:::o;21798:167::-;21938:19;21934:1;21926:6;21922:14;21915:43;21798:167;:::o;21971:366::-;22113:3;22134:67;22198:2;22193:3;22134:67;:::i;:::-;22127:74;;22210:93;22299:3;22210:93;:::i;:::-;22328:2;22323:3;22319:12;22312:19;;21971:366;;;:::o;22343:419::-;22509:4;22547:2;22536:9;22532:18;22524:26;;22596:9;22590:4;22586:20;22582:1;22571:9;22567:17;22560:47;22624:131;22750:4;22624:131;:::i;:::-;22616:139;;22343:419;;;:::o;22768:160::-;22908:12;22904:1;22896:6;22892:14;22885:36;22768:160;:::o;22934:366::-;23076:3;23097:67;23161:2;23156:3;23097:67;:::i;:::-;23090:74;;23173:93;23262:3;23173:93;:::i;:::-;23291:2;23286:3;23282:12;23275:19;;22934:366;;;:::o;23306:419::-;23472:4;23510:2;23499:9;23495:18;23487:26;;23559:9;23553:4;23549:20;23545:1;23534:9;23530:17;23523:47;23587:131;23713:4;23587:131;:::i;:::-;23579:139;;23306:419;;;:::o;23731:172::-;23871:24;23867:1;23859:6;23855:14;23848:48;23731:172;:::o;23909:366::-;24051:3;24072:67;24136:2;24131:3;24072:67;:::i;:::-;24065:74;;24148:93;24237:3;24148:93;:::i;:::-;24266:2;24261:3;24257:12;24250:19;;23909:366;;;:::o;24281:419::-;24447:4;24485:2;24474:9;24470:18;24462:26;;24534:9;24528:4;24524:20;24520:1;24509:9;24505:17;24498:47;24562:131;24688:4;24562:131;:::i;:::-;24554:139;;24281:419;;;:::o;24706:225::-;24846:34;24842:1;24834:6;24830:14;24823:58;24915:8;24910:2;24902:6;24898:15;24891:33;24706:225;:::o;24937:366::-;25079:3;25100:67;25164:2;25159:3;25100:67;:::i;:::-;25093:74;;25176:93;25265:3;25176:93;:::i;:::-;25294:2;25289:3;25285:12;25278:19;;24937:366;;;:::o;25309:419::-;25475:4;25513:2;25502:9;25498:18;25490:26;;25562:9;25556:4;25552:20;25548:1;25537:9;25533:17;25526:47;25590:131;25716:4;25590:131;:::i;:::-;25582:139;;25309:419;;;:::o;25734:223::-;25874:34;25870:1;25862:6;25858:14;25851:58;25943:6;25938:2;25930:6;25926:15;25919:31;25734:223;:::o;25963:366::-;26105:3;26126:67;26190:2;26185:3;26126:67;:::i;:::-;26119:74;;26202:93;26291:3;26202:93;:::i;:::-;26320:2;26315:3;26311:12;26304:19;;25963:366;;;:::o;26335:419::-;26501:4;26539:2;26528:9;26524:18;26516:26;;26588:9;26582:4;26578:20;26574:1;26563:9;26559:17;26552:47;26616:131;26742:4;26616:131;:::i;:::-;26608:139;;26335:419;;;:::o;26760:221::-;26900:34;26896:1;26888:6;26884:14;26877:58;26969:4;26964:2;26956:6;26952:15;26945:29;26760:221;:::o;26987:366::-;27129:3;27150:67;27214:2;27209:3;27150:67;:::i;:::-;27143:74;;27226:93;27315:3;27226:93;:::i;:::-;27344:2;27339:3;27335:12;27328:19;;26987:366;;;:::o;27359:419::-;27525:4;27563:2;27552:9;27548:18;27540:26;;27612:9;27606:4;27602:20;27598:1;27587:9;27583:17;27576:47;27640:131;27766:4;27640:131;:::i;:::-;27632:139;;27359:419;;;:::o;27784:179::-;27924:31;27920:1;27912:6;27908:14;27901:55;27784:179;:::o;27969:366::-;28111:3;28132:67;28196:2;28191:3;28132:67;:::i;:::-;28125:74;;28208:93;28297:3;28208:93;:::i;:::-;28326:2;28321:3;28317:12;28310:19;;27969:366;;;:::o;28341:419::-;28507:4;28545:2;28534:9;28530:18;28522:26;;28594:9;28588:4;28584:20;28580:1;28569:9;28565:17;28558:47;28622:131;28748:4;28622:131;:::i;:::-;28614:139;;28341:419;;;:::o;28766:180::-;28814:77;28811:1;28804:88;28911:4;28908:1;28901:15;28935:4;28932:1;28925:15;28952:410;28992:7;29015:20;29033:1;29015:20;:::i;:::-;29010:25;;29049:20;29067:1;29049:20;:::i;:::-;29044:25;;29104:1;29101;29097:9;29126:30;29144:11;29126:30;:::i;:::-;29115:41;;29305:1;29296:7;29292:15;29289:1;29286:22;29266:1;29259:9;29239:83;29216:139;;29335:18;;:::i;:::-;29216:139;29000:362;28952:410;;;;:::o;29368:180::-;29416:77;29413:1;29406:88;29513:4;29510:1;29503:15;29537:4;29534:1;29527:15;29554:185;29594:1;29611:20;29629:1;29611:20;:::i;:::-;29606:25;;29645:20;29663:1;29645:20;:::i;:::-;29640:25;;29684:1;29674:35;;29689:18;;:::i;:::-;29674:35;29731:1;29728;29724:9;29719:14;;29554:185;;;;:::o;29745:194::-;29785:4;29805:20;29823:1;29805:20;:::i;:::-;29800:25;;29839:20;29857:1;29839:20;:::i;:::-;29834:25;;29883:1;29880;29876:9;29868:17;;29907:1;29901:4;29898:11;29895:37;;;29912:18;;:::i;:::-;29895:37;29745:194;;;;:::o;29945:191::-;29985:3;30004:20;30022:1;30004:20;:::i;:::-;29999:25;;30038:20;30056:1;30038:20;:::i;:::-;30033:25;;30081:1;30078;30074:9;30067:16;;30102:3;30099:1;30096:10;30093:36;;;30109:18;;:::i;:::-;30093:36;29945:191;;;;:::o;30142:182::-;30282:34;30278:1;30270:6;30266:14;30259:58;30142:182;:::o;30330:366::-;30472:3;30493:67;30557:2;30552:3;30493:67;:::i;:::-;30486:74;;30569:93;30658:3;30569:93;:::i;:::-;30687:2;30682:3;30678:12;30671:19;;30330:366;;;:::o;30702:419::-;30868:4;30906:2;30895:9;30891:18;30883:26;;30955:9;30949:4;30945:20;30941:1;30930:9;30926:17;30919:47;30983:131;31109:4;30983:131;:::i;:::-;30975:139;;30702:419;;;:::o;31127:222::-;31267:34;31263:1;31255:6;31251:14;31244:58;31336:5;31331:2;31323:6;31319:15;31312:30;31127:222;:::o;31355:366::-;31497:3;31518:67;31582:2;31577:3;31518:67;:::i;:::-;31511:74;;31594:93;31683:3;31594:93;:::i;:::-;31712:2;31707:3;31703:12;31696:19;;31355:366;;;:::o;31727:419::-;31893:4;31931:2;31920:9;31916:18;31908:26;;31980:9;31974:4;31970:20;31966:1;31955:9;31951:17;31944:47;32008:131;32134:4;32008:131;:::i;:::-;32000:139;;31727:419;;;:::o;32152:179::-;32292:31;32288:1;32280:6;32276:14;32269:55;32152:179;:::o;32337:366::-;32479:3;32500:67;32564:2;32559:3;32500:67;:::i;:::-;32493:74;;32576:93;32665:3;32576:93;:::i;:::-;32694:2;32689:3;32685:12;32678:19;;32337:366;;;:::o;32709:419::-;32875:4;32913:2;32902:9;32898:18;32890:26;;32962:9;32956:4;32952:20;32948:1;32937:9;32933:17;32926:47;32990:131;33116:4;32990:131;:::i;:::-;32982:139;;32709:419;;;:::o;33134:172::-;33274:24;33270:1;33262:6;33258:14;33251:48;33134:172;:::o;33312:366::-;33454:3;33475:67;33539:2;33534:3;33475:67;:::i;:::-;33468:74;;33551:93;33640:3;33551:93;:::i;:::-;33669:2;33664:3;33660:12;33653:19;;33312:366;;;:::o;33684:419::-;33850:4;33888:2;33877:9;33873:18;33865:26;;33937:9;33931:4;33927:20;33923:1;33912:9;33908:17;33901:47;33965:131;34091:4;33965:131;:::i;:::-;33957:139;;33684:419;;;:::o;34109:224::-;34249:34;34245:1;34237:6;34233:14;34226:58;34318:7;34313:2;34305:6;34301:15;34294:32;34109:224;:::o;34339:366::-;34481:3;34502:67;34566:2;34561:3;34502:67;:::i;:::-;34495:74;;34578:93;34667:3;34578:93;:::i;:::-;34696:2;34691:3;34687:12;34680:19;;34339:366;;;:::o;34711:419::-;34877:4;34915:2;34904:9;34900:18;34892:26;;34964:9;34958:4;34954:20;34950:1;34939:9;34935:17;34928:47;34992:131;35118:4;34992:131;:::i;:::-;34984:139;;34711:419;;;:::o;35136:222::-;35276:34;35272:1;35264:6;35260:14;35253:58;35345:5;35340:2;35332:6;35328:15;35321:30;35136:222;:::o;35364:366::-;35506:3;35527:67;35591:2;35586:3;35527:67;:::i;:::-;35520:74;;35603:93;35692:3;35603:93;:::i;:::-;35721:2;35716:3;35712:12;35705:19;;35364:366;;;:::o;35736:419::-;35902:4;35940:2;35929:9;35925:18;35917:26;;35989:9;35983:4;35979:20;35975:1;35964:9;35960:17;35953:47;36017:131;36143:4;36017:131;:::i;:::-;36009:139;;35736:419;;;:::o;36161:225::-;36301:34;36297:1;36289:6;36285:14;36278:58;36370:8;36365:2;36357:6;36353:15;36346:33;36161:225;:::o;36392:366::-;36534:3;36555:67;36619:2;36614:3;36555:67;:::i;:::-;36548:74;;36631:93;36720:3;36631:93;:::i;:::-;36749:2;36744:3;36740:12;36733:19;;36392:366;;;:::o;36764:419::-;36930:4;36968:2;36957:9;36953:18;36945:26;;37017:9;37011:4;37007:20;37003:1;36992:9;36988:17;36981:47;37045:131;37171:4;37045:131;:::i;:::-;37037:139;;36764:419;;;:::o;37189:180::-;37237:77;37234:1;37227:88;37334:4;37331:1;37324:15;37358:4;37355:1;37348:15;37375:180;37423:77;37420:1;37413:88;37520:4;37517:1;37510:15;37544:4;37541:1;37534:15;37561:831;37824:4;37862:3;37851:9;37847:19;37839:27;;37876:71;37944:1;37933:9;37929:17;37920:6;37876:71;:::i;:::-;37957:80;38033:2;38022:9;38018:18;38009:6;37957:80;:::i;:::-;38084:9;38078:4;38074:20;38069:2;38058:9;38054:18;38047:48;38112:108;38215:4;38206:6;38112:108;:::i;:::-;38104:116;;38230:72;38298:2;38287:9;38283:18;38274:6;38230:72;:::i;:::-;38312:73;38380:3;38369:9;38365:19;38356:6;38312:73;:::i;:::-;37561:831;;;;;;;;:::o;38398:117::-;38507:1;38504;38497:12;38521:281;38604:27;38626:4;38604:27;:::i;:::-;38596:6;38592:40;38734:6;38722:10;38719:22;38698:18;38686:10;38683:34;38680:62;38677:88;;;38745:18;;:::i;:::-;38677:88;38785:10;38781:2;38774:22;38564:238;38521:281;;:::o;38808:129::-;38842:6;38869:20;;:::i;:::-;38859:30;;38898:33;38926:4;38918:6;38898:33;:::i;:::-;38808:129;;;:::o;38943:311::-;39020:4;39110:18;39102:6;39099:30;39096:56;;;39132:18;;:::i;:::-;39096:56;39182:4;39174:6;39170:17;39162:25;;39242:4;39236;39232:15;39224:23;;38943:311;;;:::o;39260:117::-;39369:1;39366;39359:12;39400:732;39507:5;39532:81;39548:64;39605:6;39548:64;:::i;:::-;39532:81;:::i;:::-;39523:90;;39633:5;39662:6;39655:5;39648:21;39696:4;39689:5;39685:16;39678:23;;39749:4;39741:6;39737:17;39729:6;39725:30;39778:3;39770:6;39767:15;39764:122;;;39797:79;;:::i;:::-;39764:122;39912:6;39895:231;39929:6;39924:3;39921:15;39895:231;;;40004:3;40033:48;40077:3;40065:10;40033:48;:::i;:::-;40028:3;40021:61;40111:4;40106:3;40102:14;40095:21;;39971:155;39955:4;39950:3;39946:14;39939:21;;39895:231;;;39899:21;39513:619;;39400:732;;;;;:::o;40155:385::-;40237:5;40286:3;40279:4;40271:6;40267:17;40263:27;40253:122;;40294:79;;:::i;:::-;40253:122;40404:6;40398:13;40429:105;40530:3;40522:6;40515:4;40507:6;40503:17;40429:105;:::i;:::-;40420:114;;40243:297;40155:385;;;;:::o;40546:554::-;40641:6;40690:2;40678:9;40669:7;40665:23;40661:32;40658:119;;;40696:79;;:::i;:::-;40658:119;40837:1;40826:9;40822:17;40816:24;40867:18;40859:6;40856:30;40853:117;;;40889:79;;:::i;:::-;40853:117;40994:89;41075:7;41066:6;41055:9;41051:22;40994:89;:::i;:::-;40984:99;;40787:306;40546:554;;;;:::o;41106:106::-;41150:8;41199:5;41194:3;41190:15;41169:36;;41106:106;;;:::o;41218:183::-;41253:3;41291:1;41273:16;41270:23;41267:128;;;41329:1;41326;41323;41308:23;41351:34;41382:1;41376:8;41351:34;:::i;:::-;41344:41;;41267:128;41218:183;:::o;41407:711::-;41446:3;41484:4;41466:16;41463:26;41492:5;41460:39;41521:20;;:::i;:::-;41596:1;41578:16;41574:24;41571:1;41565:4;41550:49;41629:4;41623:11;41728:16;41721:4;41713:6;41709:17;41706:39;41673:18;41665:6;41662:30;41646:113;41643:146;;;41774:5;;;;41643:146;41820:6;41814:4;41810:17;41856:3;41850:10;41883:18;41875:6;41872:30;41869:43;;;41905:5;;;;;;41869:43;41953:6;41946:4;41941:3;41937:14;41933:27;42012:1;41994:16;41990:24;41984:4;41980:35;41975:3;41972:44;41969:57;;;42019:5;;;;;;;41969:57;42036;42084:6;42078:4;42074:17;42066:6;42062:30;42056:4;42036:57;:::i;:::-;42109:3;42102:10;;41450:668;;;;;41407:711;;:::o;42124:171::-;42264:23;42260:1;42252:6;42248:14;42241:47;42124:171;:::o;42301:366::-;42443:3;42464:67;42528:2;42523:3;42464:67;:::i;:::-;42457:74;;42540:93;42629:3;42540:93;:::i;:::-;42658:2;42653:3;42649:12;42642:19;;42301:366;;;:::o;42673:419::-;42839:4;42877:2;42866:9;42862:18;42854:26;;42926:9;42920:4;42916:20;42912:1;42901:9;42897:17;42890:47;42954:131;43080:4;42954:131;:::i;:::-;42946:139;;42673:419;;;:::o;43098:1029::-;43403:4;43441:3;43430:9;43426:19;43418:27;;43455:71;43523:1;43512:9;43508:17;43499:6;43455:71;:::i;:::-;43536:72;43604:2;43593:9;43589:18;43580:6;43536:72;:::i;:::-;43618;43686:2;43675:9;43671:18;43662:6;43618:72;:::i;:::-;43700;43768:2;43757:9;43753:18;43744:6;43700:72;:::i;:::-;43782:81;43858:3;43847:9;43843:19;43834:6;43782:81;:::i;:::-;43873;43949:3;43938:9;43934:19;43925:6;43873:81;:::i;:::-;43964:73;44032:3;44021:9;44017:19;44008:6;43964:73;:::i;:::-;44047;44115:3;44104:9;44100:19;44091:6;44047:73;:::i;:::-;43098:1029;;;;;;;;;;;:::o;44133:179::-;44273:31;44269:1;44261:6;44257:14;44250:55;44133:179;:::o;44318:366::-;44460:3;44481:67;44545:2;44540:3;44481:67;:::i;:::-;44474:74;;44557:93;44646:3;44557:93;:::i;:::-;44675:2;44670:3;44666:12;44659:19;;44318:366;;;:::o;44690:419::-;44856:4;44894:2;44883:9;44879:18;44871:26;;44943:9;44937:4;44933:20;44929:1;44918:9;44914:17;44907:47;44971:131;45097:4;44971:131;:::i;:::-;44963:139;;44690:419;;;:::o;45115:180::-;45255:32;45251:1;45243:6;45239:14;45232:56;45115:180;:::o;45301:366::-;45443:3;45464:67;45528:2;45523:3;45464:67;:::i;:::-;45457:74;;45540:93;45629:3;45540:93;:::i;:::-;45658:2;45653:3;45649:12;45642:19;;45301:366;;;:::o;45673:419::-;45839:4;45877:2;45866:9;45862:18;45854:26;;45926:9;45920:4;45916:20;45912:1;45901:9;45897:17;45890:47;45954:131;46080:4;45954:131;:::i;:::-;45946:139;;45673:419;;;:::o;46098:233::-;46137:3;46160:24;46178:5;46160:24;:::i;:::-;46151:33;;46206:66;46199:5;46196:77;46193:103;;46276:18;;:::i;:::-;46193:103;46323:1;46316:5;46312:13;46305:20;;46098:233;;;:::o;46337:180::-;46385:77;46382:1;46375:88;46482:4;46479:1;46472:15;46506:4;46503:1;46496:15

Swarm Source

ipfs://0eef5f9f8affe6c0852c557f7bcf64e07fc57a3fab4eb18f2e60f06eeff5c5c9
[ 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.