ETH Price: $2,532.81 (+2.92%)

Token

Feather (Feather)
 

Overview

Max Total Supply

100,000,000 Feather

Holders

68

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
232,707.241256483 Feather

Value
$0.00
0xd16CF6cC98e62786fB5a72B96D41Fd1798241772
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
Feather

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-04-18
*/

/**
 *
*/

//SPDX-License-Identifier: MIT
pragma solidity ^0.8.10;
/**
 *
*/
library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

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

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

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

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

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }
}

/**
 * BEP20 standard interface.
 */
interface IBEP20 {
    function totalSupply() external view returns (uint256);

    function decimals() external view returns (uint8);

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

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

    function getOwner() external view returns (address);

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

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

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

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

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

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

/**
 * Allows for contract ownership along with multi-address authorization
 */
abstract contract Auth {
    address internal owner;
    mapping(address => bool) internal authorizations;

    constructor(address _owner) {
        owner = _owner;
        authorizations[_owner] = true;
    }

    /**
     * Function modifier to require caller to be contract owner
     */
    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER");
        _;
    }

    /**
     * Function modifier to require caller to be authorized
     */
    modifier authorized() {
        require(isAuthorized(msg.sender), "!AUTHORIZED");
        _;
    }

    /**
     * Authorize address. Owner only
     */
    function authorize(address adr) public onlyOwner {
        authorizations[adr] = true;
    }

    /**
     * Remove address' authorization. Owner only
     */
    function unauthorize(address adr) public onlyOwner {
        authorizations[adr] = false;
    }

    /**
     * Check if address is owner
     */
    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    /**
     * Return address' authorization status
     */
    function isAuthorized(address adr) public view returns (bool) {
        return authorizations[adr];
    }

    /**
     * Transfer ownership to new address. Caller must be owner. Leaves old owner authorized
     */
    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        authorizations[adr] = true;
        emit OwnershipTransferred(adr);
    }

    event OwnershipTransferred(address owner);
}

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

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

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

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

contract Feather is IBEP20, Auth {
    using SafeMath for uint256;

    address WBNB = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;

    string constant _name = "Feather";
    string constant _symbol = "Feather";
    uint8 constant _decimals = 9;

    uint256 _totalSupply = 1 * 10**8 * (10**_decimals);

    //max wallet holding of 1% supply
    uint256 public _maxWalletToken = (_totalSupply * 1) / 100;

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

    // diff pairs which will be taxed
    mapping(address => bool) pairs;
    mapping(address => bool) isFeeExempt;
    //whitelist CEX which list us to hold more than max wallet
    mapping(address => bool) isMaxWalletExempt;

    // this fee is what is used after contract sells
    uint256 public marketingAmount = 3;
    uint256 public devAmount = 2;
    uint256 public totalAmountDivider = 5;
    bool public feesOn = true;
    uint256 launchBlock;
    uint256 deadBlocks = 10;
    bool public tradingEnabled = false;

    //buying fee
    uint256 public totalFee = 4;
    // selling fee
    uint256 public totalSellFee = 4;
    uint256 public totalTransferFee = 5;
    uint256 feeDenominator = 100;

    address public marketingAmountReceiver;
    address public projectMaintenanceReceiver;

    IDEXRouter public router;
    address public pair;

    uint256 public launchedAt;

    bool public swapEnabled = true;
    uint256 public swapThreshold = (_totalSupply * 2) / 1000; // 0.2% of supply
    //burn is always less than swap threshold.
    uint256 public taxBurnAmount = swapThreshold.div(10); // 0.02% of the supply

    bool inSwap;
    modifier swapping() {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() Auth(msg.sender) {
        launchedAt = block.timestamp;

        marketingAmountReceiver = 0xbd54122d57f679AfD6e3181434e7ef4E78572f42;
        projectMaintenanceReceiver = 0x78cEDF8A94f1d1Fa026A09cAdAF90558f7cF556B;

        //Testnet: 0xD99D1c33F9fC3444f8101754aBC46c52416550D1
        //Mainet: 0x10ED43C718714eb63d5aA57B78B54704E256024E
        // Eth: 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        pair = IDEXFactory(router.factory()).createPair(WBNB, address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;

        // exempted from tax
        isFeeExempt[msg.sender] = true;
        isFeeExempt[marketingAmountReceiver] = true;
        isFeeExempt[projectMaintenanceReceiver] = true;
        isFeeExempt[DEAD] = true;
        isFeeExempt[address(this)] = true;

        // exempted for max wallet
        isMaxWalletExempt[msg.sender] = true;
        isMaxWalletExempt[marketingAmountReceiver] = true;
        isMaxWalletExempt[projectMaintenanceReceiver] = true;
        isMaxWalletExempt[DEAD] = true;
        isMaxWalletExempt[address(this)] = true;
        isMaxWalletExempt[pair] = true;

        // add to pairs for taxes.
        pairs[pair] = true;

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable {}

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

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

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

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

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

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

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

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

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

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

    function _transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        if (inSwap) {
            return _basicTransfer(sender, recipient, amount);
        }

        if (!tradingEnabled) {
            require(authorizations[sender], "Trading not open yet");
        }

        // max wallet code
        if (!isMaxWalletExempt[recipient]) {
            uint256 heldTokens = balanceOf(recipient);
            require(
                (heldTokens + amount) <= _maxWalletToken,
                "Max wallet reached."
            );
        }

        if (shouldSwapBack()) {
            swapBack();
            //burn extra tax
            uint256 taxUnsold = balanceOf(address(this));
            if (taxUnsold > taxBurnAmount) {
                _basicTransfer(address(this), DEAD, taxBurnAmount);
            }
        }

        //Exchange tokens
        _balances[sender] = _balances[sender].sub(
            amount,
            "Insufficient Balance"
        );

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

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }

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

    function takeFee(
        address sender,
        uint256 amount,
        address recipient
    ) internal returns (uint256) {
        uint256 feeAmount;

        if (launchBlock.add(deadBlocks) >= block.number) {
            feeAmount = amount.mul(99).div(100);
        } else {
            //buying
            if (pairs[sender]) {
                feeAmount = amount.mul(totalFee).div(feeDenominator);
            }
            //selling
            else if (pairs[recipient]) {
                feeAmount = amount.mul(totalSellFee).div(feeDenominator);
            }
            // transfer 1% tax
            else {
                feeAmount = amount.mul(totalTransferFee).div(feeDenominator);
            }
        }

        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);

        return amount.sub(feeAmount);
    }

    /**
     * Only swaps back if these conditions are met, during sells and when the
     * threshold is reached or when the time has reached for the swap.
     */
    function shouldSwapBack() internal view returns (bool) {
        return
            msg.sender != pair &&
            !inSwap &&
            swapEnabled &&
            _balances[address(this)] >= swapThreshold.mul(2);
    }

    /**
     * Swaps the tax collected for fees sent to marketing and dev. The swap only swaps the threshold amount.
     */
    function swapBack() internal swapping {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WBNB;

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

        uint256 amountBNB = address(this).balance;
        uint256 amountBNBMarketing = amountBNB.mul(marketingAmount).div(
            totalAmountDivider
        );
        (bool tmpSuccess, ) = payable(marketingAmountReceiver).call{
            value: amountBNBMarketing
        }("");
        (bool tmpSuccess2, ) = payable(projectMaintenanceReceiver).call{
            value: amountBNB.sub(amountBNBMarketing)
        }("");
        // suppresses warning
        tmpSuccess2 = false;
        tmpSuccess = false;
    }

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

    function addPairTax(address pairAddress, bool taxed) external authorized {
        pairs[pairAddress] = taxed;
    }

    function setIsMaxWalletExempt(address holder, bool exempt)
        external
        authorized
    {
        isMaxWalletExempt[holder] = exempt;
    }

    /**
     * Setup the fee recevers for marketing and dev
     */
    function setFeeReceivers(
        address _marketingAmountReceiver,
        address _projectMaintenanceReceiver
    ) external onlyOwner {
        marketingAmountReceiver = _marketingAmountReceiver;
        projectMaintenanceReceiver = _projectMaintenanceReceiver;
    }

    /**
     * Sets if tokens collected in tax should be sold for marketing and dev fees, 
     and burn amount to burn extra tax. Amounts are in token amounts without decimals.
     */
    function setSwapBackSettings(
        bool _enabled,
        uint256 _amount,
        uint256 _taxBurnAmount
    ) external authorized {
        require(
            _amount > _taxBurnAmount,
            "Swap threshold must be more than amount burned"
        );
        swapEnabled = _enabled;
        swapThreshold = _amount * 10**9;
        taxBurnAmount = _taxBurnAmount * 10**9;
    }

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

    function setMaxWalletPercent(uint256 percent) external onlyOwner {
        //prevent hp
        require(percent > 1, "Max wallet can only be more than 1%");
        _maxWalletToken = _totalSupply.mul(percent).div(100);
    }

    function setFeesOn(bool _feesOn) external onlyOwner {
        feesOn = _feesOn;
    }

    function setFees(
        uint256 _totalFee,
        uint256 _totalSellFee,
        uint256 _totalTransferFee
    ) external onlyOwner {
        require(_totalFee <= feeDenominator / 5);
        require(_totalSellFee <= feeDenominator / 5);
        require(_totalTransferFee <= feeDenominator / 10);
        totalFee = _totalFee;
        totalSellFee = _totalSellFee;
        totalTransferFee = _totalTransferFee;
    }

    function enableTrading() external onlyOwner {
        require(!tradingEnabled, "Trading already enabled");
        launchBlock = block.number;
        tradingEnabled = true;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pairAddress","type":"address"},{"internalType":"bool","name":"taxed","type":"bool"}],"name":"addPairTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"devAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feesOn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingAmountReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"projectMaintenanceReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingAmountReceiver","type":"address"},{"internalType":"address","name":"_projectMaintenanceReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_totalFee","type":"uint256"},{"internalType":"uint256","name":"_totalSellFee","type":"uint256"},{"internalType":"uint256","name":"_totalTransferFee","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_feesOn","type":"bool"}],"name":"setFeesOn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsMaxWalletExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"setMaxWalletPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_taxBurnAmount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"taxBurnAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalAmountDivider","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalTransferFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a620000ee919062000e02565b6305f5e100620000ff919062000e53565b6005556064600160055462000115919062000e53565b62000121919062000ee3565b6006556003600c556002600d556005600e556001600f60006101000a81548160ff021916908315150217905550600a6011556000601260006101000a81548160ff02191690831515021790555060046013556004601455600560155560646016556001601c60006101000a81548160ff0219169083151502179055506103e86002600554620001b1919062000e53565b620001bd919062000ee3565b601d55620001dd600a601d5462000bae60201b620019081790919060201c565b601e55348015620001ed57600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505042601b8190555073bd54122d57f679afd6e3181434e7ef4e78572f42601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507378cedf8a94f1d1fa026a09cadaf90558f7cf556b601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000421919062000f85565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b81526004016200047f92919062000fc8565b6020604051808303816000875af11580156200049f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004c5919062000f85565b601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600554600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60055460405162000ba0919062001006565b60405180910390a3620010eb565b600062000bf883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000c0060201b60201c565b905092915050565b6000808311829062000c4a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c419190620010c7565b60405180910390fd5b506000838562000c5b919062000ee3565b9050809150509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000cf65780860481111562000cce5762000ccd62000c68565b5b600185161562000cde5780820291505b808102905062000cee8562000c97565b945062000cae565b94509492505050565b60008262000d11576001905062000de4565b8162000d21576000905062000de4565b816001811462000d3a576002811462000d455762000d7b565b600191505062000de4565b60ff84111562000d5a5762000d5962000c68565b5b8360020a91508482111562000d745762000d7362000c68565b5b5062000de4565b5060208310610133831016604e8410600b841016171562000db55782820a90508381111562000daf5762000dae62000c68565b5b62000de4565b62000dc4848484600162000ca4565b9250905081840481111562000dde5762000ddd62000c68565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000e0f8262000deb565b915062000e1c8362000df5565b925062000e4b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000cff565b905092915050565b600062000e608262000deb565b915062000e6d8362000deb565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000ea95762000ea862000c68565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000ef08262000deb565b915062000efd8362000deb565b92508262000f105762000f0f62000eb4565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000f4d8262000f20565b9050919050565b62000f5f8162000f40565b811462000f6b57600080fd5b50565b60008151905062000f7f8162000f54565b92915050565b60006020828403121562000f9e5762000f9d62000f1b565b5b600062000fae8482850162000f6e565b91505092915050565b62000fc28162000f40565b82525050565b600060408201905062000fdf600083018562000fb7565b62000fee602083018462000fb7565b9392505050565b620010008162000deb565b82525050565b60006020820190506200101d600083018462000ff5565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156200105f57808201518184015260208101905062001042565b838111156200106f576000848401525b50505050565b6000601f19601f8301169050919050565b6000620010938262001023565b6200109f81856200102e565b9350620010b18185602086016200103f565b620010bc8162001075565b840191505092915050565b60006020820190508181036000830152620010e3818462001086565b905092915050565b61358780620010fb6000396000f3fe6080604052600436106102555760003560e01c806378109e5411610139578063b6a5d7de116100b6578063d08893581161007a578063d0889358146108a3578063dd62ed3e146108cc578063f0b37c0414610909578063f2fde38b14610932578063f887ea401461095b578063fe9fbb80146109865761025c565b8063b6a5d7de146107d2578063bf56b371146107fb578063c04a78ad14610826578063cd653ee61461084f578063cec10c111461087a5761025c565b806395d89b41116100fd57806395d89b41146106eb5780639d9241ec14610716578063a4b45c0014610741578063a8aa1b311461076a578063a9059cbb146107955761025c565b806378109e541461062a57806382bf293c14610655578063893d20e81461067e5780638a8c523c146106a957806391917d74146106c05761025c565b80632b345964116101d2578063532ce9fd11610196578063532ce9fd1461051a57806357dbb86914610545578063658d4b7f14610570578063675ef65c146105995780636ddd1713146105c257806370a08231146105ed5761025c565b80632b345964146104315780632f54bf6e1461045c578063313ce56714610499578063360bfd54146104c45780634ada218b146104ef5761025c565b806318160ddd1161021957806318160ddd146103485780631df4ccfc1461037357806323b872dd1461039e57806326c97eed146103db5780632b112e49146104065761025c565b80630445b6671461026157806306fdde031461028c578063095ea7b3146102b757806309f19ed2146102f45780630e2249321461031d5761025c565b3661025c57005b600080fd5b34801561026d57600080fd5b506102766109c3565b6040516102839190612820565b60405180910390f35b34801561029857600080fd5b506102a16109c9565b6040516102ae91906128d4565b60405180910390f35b3480156102c357600080fd5b506102de60048036038101906102d99190612985565b610a06565b6040516102eb91906129e0565b60405180910390f35b34801561030057600080fd5b5061031b60048036038101906103169190612a27565b610af8565b005b34801561032957600080fd5b50610332610b9b565b60405161033f9190612820565b60405180910390f35b34801561035457600080fd5b5061035d610ba1565b60405161036a9190612820565b60405180910390f35b34801561037f57600080fd5b50610388610bab565b6040516103959190612820565b60405180910390f35b3480156103aa57600080fd5b506103c560048036038101906103c09190612a67565b610bb1565b6040516103d291906129e0565b60405180910390f35b3480156103e757600080fd5b506103f0610db1565b6040516103fd9190612820565b60405180910390f35b34801561041257600080fd5b5061041b610db7565b6040516104289190612820565b60405180910390f35b34801561043d57600080fd5b50610446610e39565b6040516104539190612820565b60405180910390f35b34801561046857600080fd5b50610483600480360381019061047e9190612aba565b610e3f565b60405161049091906129e0565b60405180910390f35b3480156104a557600080fd5b506104ae610e98565b6040516104bb9190612b03565b60405180910390f35b3480156104d057600080fd5b506104d9610ea1565b6040516104e69190612820565b60405180910390f35b3480156104fb57600080fd5b50610504610ea7565b60405161051191906129e0565b60405180910390f35b34801561052657600080fd5b5061052f610eba565b60405161053c9190612b2d565b60405180910390f35b34801561055157600080fd5b5061055a610ee0565b6040516105679190612b2d565b60405180910390f35b34801561057c57600080fd5b5061059760048036038101906105929190612a27565b610f06565b005b3480156105a557600080fd5b506105c060048036038101906105bb9190612b48565b610fa9565b005b3480156105ce57600080fd5b506105d761100e565b6040516105e491906129e0565b60405180910390f35b3480156105f957600080fd5b50610614600480360381019061060f9190612aba565b611021565b6040516106219190612820565b60405180910390f35b34801561063657600080fd5b5061063f61106a565b60405161064c9190612820565b60405180910390f35b34801561066157600080fd5b5061067c60048036038101906106779190612b75565b611070565b005b34801561068a57600080fd5b5061069361112c565b6040516106a09190612b2d565b60405180910390f35b3480156106b557600080fd5b506106be611155565b005b3480156106cc57600080fd5b506106d5611211565b6040516106e29190612820565b60405180910390f35b3480156106f757600080fd5b50610700611217565b60405161070d91906128d4565b60405180910390f35b34801561072257600080fd5b5061072b611254565b6040516107389190612820565b60405180910390f35b34801561074d57600080fd5b5061076860048036038101906107639190612ba2565b61125a565b005b34801561077657600080fd5b5061077f611328565b60405161078c9190612b2d565b60405180910390f35b3480156107a157600080fd5b506107bc60048036038101906107b79190612985565b61134e565b6040516107c991906129e0565b60405180910390f35b3480156107de57600080fd5b506107f960048036038101906107f49190612aba565b611363565b005b34801561080757600080fd5b50610810611405565b60405161081d9190612820565b60405180910390f35b34801561083257600080fd5b5061084d60048036038101906108489190612a27565b61140b565b005b34801561085b57600080fd5b506108646114ae565b60405161087191906129e0565b60405180910390f35b34801561088657600080fd5b506108a1600480360381019061089c9190612be2565b6114c1565b005b3480156108af57600080fd5b506108ca60048036038101906108c59190612c35565b611574565b005b3480156108d857600080fd5b506108f360048036038101906108ee9190612ba2565b611649565b6040516109009190612820565b60405180910390f35b34801561091557600080fd5b50610930600480360381019061092b9190612aba565b6116d0565b005b34801561093e57600080fd5b5061095960048036038101906109549190612cc6565b611773565b005b34801561096757600080fd5b5061097061188c565b60405161097d9190612d52565b60405180910390f35b34801561099257600080fd5b506109ad60048036038101906109a89190612aba565b6118b2565b6040516109ba91906129e0565b60405180910390f35b601d5481565b60606040518060400160405280600781526020017f4665617468657200000000000000000000000000000000000000000000000000815250905090565b600081600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610ae69190612820565b60405180910390a36001905092915050565b610b01336118b2565b610b40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3790612db9565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60155481565b6000600554905090565b60135481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610d9d57610d1c826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119529092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610da88484846119b6565b90509392505050565b600e5481565b6000610e34610de7600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611021565b610e26610e15600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611021565b600554611de290919063ffffffff16565b611de290919063ffffffff16565b905090565b600d5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b600c5481565b601260009054906101000a900460ff1681565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610f0f336118b2565b610f4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4590612db9565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610fb233610e3f565b610ff1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe890612e25565b60405180910390fd5b80600f60006101000a81548160ff02191690831515021790555050565b601c60009054906101000a900460ff1681565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60065481565b61107933610e3f565b6110b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110af90612e25565b60405180910390fd5b600181116110fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f290612eb7565b60405180910390fd5b611123606461111583600554611e2c90919063ffffffff16565b61190890919063ffffffff16565b60068190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61115e33610e3f565b61119d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119490612e25565b60405180910390fd5b601260009054906101000a900460ff16156111ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e490612f23565b60405180910390fd5b436010819055506001601260006101000a81548160ff021916908315150217905550565b601e5481565b60606040518060400160405280600781526020017f4665617468657200000000000000000000000000000000000000000000000000815250905090565b60145481565b61126333610e3f565b6112a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129990612e25565b60405180910390fd5b81601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061135b3384846119b6565b905092915050565b61136c33610e3f565b6113ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a290612e25565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601b5481565b611414336118b2565b611453576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144a90612db9565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600f60009054906101000a900460ff1681565b6114ca33610e3f565b611509576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150090612e25565b60405180910390fd5b60056016546115189190612fa1565b83111561152457600080fd5b60056016546115339190612fa1565b82111561153f57600080fd5b600a60165461154e9190612fa1565b81111561155a57600080fd5b826013819055508160148190555080601581905550505050565b61157d336118b2565b6115bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b390612db9565b60405180910390fd5b8082116115fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f590613044565b60405180910390fd5b82601c60006101000a81548160ff021916908315150217905550633b9aca00826116289190613064565b601d81905550633b9aca008161163e9190613064565b601e81905550505050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6116d933610e3f565b611718576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170f90612e25565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61177c33610e3f565b6117bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b290612e25565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861638160405161188191906130df565b60405180910390a150565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600061194a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611ea7565b905092915050565b600083831115829061199a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199191906128d4565b60405180910390fd5b50600083856119a991906130fa565b9050809150509392505050565b6000601f60009054906101000a900460ff16156119df576119d8848484611f0a565b9050611ddb565b601260009054906101000a900460ff16611a8057600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611a7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a769061317a565b60405180910390fd5b5b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611b30576000611adc84611021565b90506006548382611aed919061319a565b1115611b2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b259061323c565b60405180910390fd5b505b611b386120dd565b15611b8f57611b456121c7565b6000611b5030611021565b9050601e54811115611b8d57611b8b30600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601e54611f0a565b505b505b611c18826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119529092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611cc35750600f60009054906101000a900460ff165b611ccd5782611cd9565b611cd8858486612512565b5b9050611d2d81600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127a990919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611dcd9190612820565b60405180910390a360019150505b9392505050565b6000611e2483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611952565b905092915050565b600080831415611e3f5760009050611ea1565b60008284611e4d9190613064565b9050828482611e5c9190612fa1565b14611e9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e93906132ce565b60405180910390fd5b809150505b92915050565b60008083118290611eee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee591906128d4565b60405180910390fd5b5060008385611efd9190612fa1565b9050809150509392505050565b6000611f95826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119529092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061202a82600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127a990919063ffffffff16565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516120ca9190612820565b60405180910390a3600190509392505050565b6000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561214a5750601f60009054906101000a900460ff16155b80156121625750601c60009054906101000a900460ff165b80156121c2575061217f6002601d54611e2c90919063ffffffff16565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601f60006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156121ff576121fe6132ee565b5b60405190808252806020026020018201604052801561222d5781602001602082028036833780820191505090505b50905030816000815181106122455761224461331d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106122b6576122b561331d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947601d5460008430426040518663ffffffff1660e01b8152600401612356959493929190613445565b600060405180830381600087803b15801561237057600080fd5b505af1158015612384573d6000803e3d6000fd5b50505050600047905060006123b8600e546123aa600c5485611e2c90919063ffffffff16565b61190890919063ffffffff16565b90506000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612402906134d0565b60006040518083038185875af1925050503d806000811461243f576040519150601f19603f3d011682016040523d82523d6000602084013e612444565b606091505b505090506000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166124968486611de290919063ffffffff16565b6040516124a2906134d0565b60006040518083038185875af1925050503d80600081146124df576040519150601f19603f3d011682016040523d82523d6000602084013e6124e4565b606091505b50509050600090506000915050505050506000601f60006101000a81548160ff021916908315150217905550565b6000804361252d6011546010546127a990919063ffffffff16565b1061256057612559606461254b606387611e2c90919063ffffffff16565b61190890919063ffffffff16565b9050612692565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156125e2576125db6016546125cd60135487611e2c90919063ffffffff16565b61190890919063ffffffff16565b9050612691565b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156126645761265d60165461264f60145487611e2c90919063ffffffff16565b61190890919063ffffffff16565b9050612690565b61268d60165461267f60155487611e2c90919063ffffffff16565b61190890919063ffffffff16565b90505b5b5b6126e481600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127a990919063ffffffff16565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516127849190612820565b60405180910390a361279f8185611de290919063ffffffff16565b9150509392505050565b60008082846127b8919061319a565b9050838110156127fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127f490613531565b60405180910390fd5b8091505092915050565b6000819050919050565b61281a81612807565b82525050565b60006020820190506128356000830184612811565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561287557808201518184015260208101905061285a565b83811115612884576000848401525b50505050565b6000601f19601f8301169050919050565b60006128a68261283b565b6128b08185612846565b93506128c0818560208601612857565b6128c98161288a565b840191505092915050565b600060208201905081810360008301526128ee818461289b565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612926826128fb565b9050919050565b6129368161291b565b811461294157600080fd5b50565b6000813590506129538161292d565b92915050565b61296281612807565b811461296d57600080fd5b50565b60008135905061297f81612959565b92915050565b6000806040838503121561299c5761299b6128f6565b5b60006129aa85828601612944565b92505060206129bb85828601612970565b9150509250929050565b60008115159050919050565b6129da816129c5565b82525050565b60006020820190506129f560008301846129d1565b92915050565b612a04816129c5565b8114612a0f57600080fd5b50565b600081359050612a21816129fb565b92915050565b60008060408385031215612a3e57612a3d6128f6565b5b6000612a4c85828601612944565b9250506020612a5d85828601612a12565b9150509250929050565b600080600060608486031215612a8057612a7f6128f6565b5b6000612a8e86828701612944565b9350506020612a9f86828701612944565b9250506040612ab086828701612970565b9150509250925092565b600060208284031215612ad057612acf6128f6565b5b6000612ade84828501612944565b91505092915050565b600060ff82169050919050565b612afd81612ae7565b82525050565b6000602082019050612b186000830184612af4565b92915050565b612b278161291b565b82525050565b6000602082019050612b426000830184612b1e565b92915050565b600060208284031215612b5e57612b5d6128f6565b5b6000612b6c84828501612a12565b91505092915050565b600060208284031215612b8b57612b8a6128f6565b5b6000612b9984828501612970565b91505092915050565b60008060408385031215612bb957612bb86128f6565b5b6000612bc785828601612944565b9250506020612bd885828601612944565b9150509250929050565b600080600060608486031215612bfb57612bfa6128f6565b5b6000612c0986828701612970565b9350506020612c1a86828701612970565b9250506040612c2b86828701612970565b9150509250925092565b600080600060608486031215612c4e57612c4d6128f6565b5b6000612c5c86828701612a12565b9350506020612c6d86828701612970565b9250506040612c7e86828701612970565b9150509250925092565b6000612c93826128fb565b9050919050565b612ca381612c88565b8114612cae57600080fd5b50565b600081359050612cc081612c9a565b92915050565b600060208284031215612cdc57612cdb6128f6565b5b6000612cea84828501612cb1565b91505092915050565b6000819050919050565b6000612d18612d13612d0e846128fb565b612cf3565b6128fb565b9050919050565b6000612d2a82612cfd565b9050919050565b6000612d3c82612d1f565b9050919050565b612d4c81612d31565b82525050565b6000602082019050612d676000830184612d43565b92915050565b7f21415554484f52495a4544000000000000000000000000000000000000000000600082015250565b6000612da3600b83612846565b9150612dae82612d6d565b602082019050919050565b60006020820190508181036000830152612dd281612d96565b9050919050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000612e0f600683612846565b9150612e1a82612dd9565b602082019050919050565b60006020820190508181036000830152612e3e81612e02565b9050919050565b7f4d61782077616c6c65742063616e206f6e6c79206265206d6f7265207468616e60008201527f2031250000000000000000000000000000000000000000000000000000000000602082015250565b6000612ea1602383612846565b9150612eac82612e45565b604082019050919050565b60006020820190508181036000830152612ed081612e94565b9050919050565b7f54726164696e6720616c726561647920656e61626c6564000000000000000000600082015250565b6000612f0d601783612846565b9150612f1882612ed7565b602082019050919050565b60006020820190508181036000830152612f3c81612f00565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612fac82612807565b9150612fb783612807565b925082612fc757612fc6612f43565b5b828204905092915050565b7f53776170207468726573686f6c64206d757374206265206d6f7265207468616e60008201527f20616d6f756e74206275726e6564000000000000000000000000000000000000602082015250565b600061302e602e83612846565b915061303982612fd2565b604082019050919050565b6000602082019050818103600083015261305d81613021565b9050919050565b600061306f82612807565b915061307a83612807565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156130b3576130b2612f72565b5b828202905092915050565b60006130c982612d1f565b9050919050565b6130d9816130be565b82525050565b60006020820190506130f460008301846130d0565b92915050565b600061310582612807565b915061311083612807565b92508282101561312357613122612f72565b5b828203905092915050565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b6000613164601483612846565b915061316f8261312e565b602082019050919050565b6000602082019050818103600083015261319381613157565b9050919050565b60006131a582612807565b91506131b083612807565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156131e5576131e4612f72565b5b828201905092915050565b7f4d61782077616c6c657420726561636865642e00000000000000000000000000600082015250565b6000613226601383612846565b9150613231826131f0565b602082019050919050565b6000602082019050818103600083015261325581613219565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006132b8602183612846565b91506132c38261325c565b604082019050919050565b600060208201905081810360008301526132e7816132ab565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b600061337161336c6133678461334c565b612cf3565b612807565b9050919050565b61338181613356565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6133bc8161291b565b82525050565b60006133ce83836133b3565b60208301905092915050565b6000602082019050919050565b60006133f282613387565b6133fc8185613392565b9350613407836133a3565b8060005b8381101561343857815161341f88826133c2565b975061342a836133da565b92505060018101905061340b565b5085935050505092915050565b600060a08201905061345a6000830188612811565b6134676020830187613378565b818103604083015261347981866133e7565b90506134886060830185612b1e565b6134956080830184612811565b9695505050505050565b600081905092915050565b50565b60006134ba60008361349f565b91506134c5826134aa565b600082019050919050565b60006134db826134ad565b9150819050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061351b601b83612846565b9150613526826134e5565b602082019050919050565b6000602082019050818103600083015261354a8161350e565b905091905056fea26469706673582212202ef0faff6c8a33b8da3e13666b9425ec25e52f0f5184a279121205d54e54631764736f6c634300080a0033

Deployed Bytecode

0x6080604052600436106102555760003560e01c806378109e5411610139578063b6a5d7de116100b6578063d08893581161007a578063d0889358146108a3578063dd62ed3e146108cc578063f0b37c0414610909578063f2fde38b14610932578063f887ea401461095b578063fe9fbb80146109865761025c565b8063b6a5d7de146107d2578063bf56b371146107fb578063c04a78ad14610826578063cd653ee61461084f578063cec10c111461087a5761025c565b806395d89b41116100fd57806395d89b41146106eb5780639d9241ec14610716578063a4b45c0014610741578063a8aa1b311461076a578063a9059cbb146107955761025c565b806378109e541461062a57806382bf293c14610655578063893d20e81461067e5780638a8c523c146106a957806391917d74146106c05761025c565b80632b345964116101d2578063532ce9fd11610196578063532ce9fd1461051a57806357dbb86914610545578063658d4b7f14610570578063675ef65c146105995780636ddd1713146105c257806370a08231146105ed5761025c565b80632b345964146104315780632f54bf6e1461045c578063313ce56714610499578063360bfd54146104c45780634ada218b146104ef5761025c565b806318160ddd1161021957806318160ddd146103485780631df4ccfc1461037357806323b872dd1461039e57806326c97eed146103db5780632b112e49146104065761025c565b80630445b6671461026157806306fdde031461028c578063095ea7b3146102b757806309f19ed2146102f45780630e2249321461031d5761025c565b3661025c57005b600080fd5b34801561026d57600080fd5b506102766109c3565b6040516102839190612820565b60405180910390f35b34801561029857600080fd5b506102a16109c9565b6040516102ae91906128d4565b60405180910390f35b3480156102c357600080fd5b506102de60048036038101906102d99190612985565b610a06565b6040516102eb91906129e0565b60405180910390f35b34801561030057600080fd5b5061031b60048036038101906103169190612a27565b610af8565b005b34801561032957600080fd5b50610332610b9b565b60405161033f9190612820565b60405180910390f35b34801561035457600080fd5b5061035d610ba1565b60405161036a9190612820565b60405180910390f35b34801561037f57600080fd5b50610388610bab565b6040516103959190612820565b60405180910390f35b3480156103aa57600080fd5b506103c560048036038101906103c09190612a67565b610bb1565b6040516103d291906129e0565b60405180910390f35b3480156103e757600080fd5b506103f0610db1565b6040516103fd9190612820565b60405180910390f35b34801561041257600080fd5b5061041b610db7565b6040516104289190612820565b60405180910390f35b34801561043d57600080fd5b50610446610e39565b6040516104539190612820565b60405180910390f35b34801561046857600080fd5b50610483600480360381019061047e9190612aba565b610e3f565b60405161049091906129e0565b60405180910390f35b3480156104a557600080fd5b506104ae610e98565b6040516104bb9190612b03565b60405180910390f35b3480156104d057600080fd5b506104d9610ea1565b6040516104e69190612820565b60405180910390f35b3480156104fb57600080fd5b50610504610ea7565b60405161051191906129e0565b60405180910390f35b34801561052657600080fd5b5061052f610eba565b60405161053c9190612b2d565b60405180910390f35b34801561055157600080fd5b5061055a610ee0565b6040516105679190612b2d565b60405180910390f35b34801561057c57600080fd5b5061059760048036038101906105929190612a27565b610f06565b005b3480156105a557600080fd5b506105c060048036038101906105bb9190612b48565b610fa9565b005b3480156105ce57600080fd5b506105d761100e565b6040516105e491906129e0565b60405180910390f35b3480156105f957600080fd5b50610614600480360381019061060f9190612aba565b611021565b6040516106219190612820565b60405180910390f35b34801561063657600080fd5b5061063f61106a565b60405161064c9190612820565b60405180910390f35b34801561066157600080fd5b5061067c60048036038101906106779190612b75565b611070565b005b34801561068a57600080fd5b5061069361112c565b6040516106a09190612b2d565b60405180910390f35b3480156106b557600080fd5b506106be611155565b005b3480156106cc57600080fd5b506106d5611211565b6040516106e29190612820565b60405180910390f35b3480156106f757600080fd5b50610700611217565b60405161070d91906128d4565b60405180910390f35b34801561072257600080fd5b5061072b611254565b6040516107389190612820565b60405180910390f35b34801561074d57600080fd5b5061076860048036038101906107639190612ba2565b61125a565b005b34801561077657600080fd5b5061077f611328565b60405161078c9190612b2d565b60405180910390f35b3480156107a157600080fd5b506107bc60048036038101906107b79190612985565b61134e565b6040516107c991906129e0565b60405180910390f35b3480156107de57600080fd5b506107f960048036038101906107f49190612aba565b611363565b005b34801561080757600080fd5b50610810611405565b60405161081d9190612820565b60405180910390f35b34801561083257600080fd5b5061084d60048036038101906108489190612a27565b61140b565b005b34801561085b57600080fd5b506108646114ae565b60405161087191906129e0565b60405180910390f35b34801561088657600080fd5b506108a1600480360381019061089c9190612be2565b6114c1565b005b3480156108af57600080fd5b506108ca60048036038101906108c59190612c35565b611574565b005b3480156108d857600080fd5b506108f360048036038101906108ee9190612ba2565b611649565b6040516109009190612820565b60405180910390f35b34801561091557600080fd5b50610930600480360381019061092b9190612aba565b6116d0565b005b34801561093e57600080fd5b5061095960048036038101906109549190612cc6565b611773565b005b34801561096757600080fd5b5061097061188c565b60405161097d9190612d52565b60405180910390f35b34801561099257600080fd5b506109ad60048036038101906109a89190612aba565b6118b2565b6040516109ba91906129e0565b60405180910390f35b601d5481565b60606040518060400160405280600781526020017f4665617468657200000000000000000000000000000000000000000000000000815250905090565b600081600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610ae69190612820565b60405180910390a36001905092915050565b610b01336118b2565b610b40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3790612db9565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60155481565b6000600554905090565b60135481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610d9d57610d1c826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119529092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610da88484846119b6565b90509392505050565b600e5481565b6000610e34610de7600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611021565b610e26610e15600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611021565b600554611de290919063ffffffff16565b611de290919063ffffffff16565b905090565b600d5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b600c5481565b601260009054906101000a900460ff1681565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610f0f336118b2565b610f4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4590612db9565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610fb233610e3f565b610ff1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe890612e25565b60405180910390fd5b80600f60006101000a81548160ff02191690831515021790555050565b601c60009054906101000a900460ff1681565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60065481565b61107933610e3f565b6110b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110af90612e25565b60405180910390fd5b600181116110fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f290612eb7565b60405180910390fd5b611123606461111583600554611e2c90919063ffffffff16565b61190890919063ffffffff16565b60068190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61115e33610e3f565b61119d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119490612e25565b60405180910390fd5b601260009054906101000a900460ff16156111ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e490612f23565b60405180910390fd5b436010819055506001601260006101000a81548160ff021916908315150217905550565b601e5481565b60606040518060400160405280600781526020017f4665617468657200000000000000000000000000000000000000000000000000815250905090565b60145481565b61126333610e3f565b6112a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129990612e25565b60405180910390fd5b81601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061135b3384846119b6565b905092915050565b61136c33610e3f565b6113ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a290612e25565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601b5481565b611414336118b2565b611453576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144a90612db9565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600f60009054906101000a900460ff1681565b6114ca33610e3f565b611509576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150090612e25565b60405180910390fd5b60056016546115189190612fa1565b83111561152457600080fd5b60056016546115339190612fa1565b82111561153f57600080fd5b600a60165461154e9190612fa1565b81111561155a57600080fd5b826013819055508160148190555080601581905550505050565b61157d336118b2565b6115bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b390612db9565b60405180910390fd5b8082116115fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f590613044565b60405180910390fd5b82601c60006101000a81548160ff021916908315150217905550633b9aca00826116289190613064565b601d81905550633b9aca008161163e9190613064565b601e81905550505050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6116d933610e3f565b611718576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170f90612e25565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61177c33610e3f565b6117bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b290612e25565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861638160405161188191906130df565b60405180910390a150565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600061194a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611ea7565b905092915050565b600083831115829061199a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199191906128d4565b60405180910390fd5b50600083856119a991906130fa565b9050809150509392505050565b6000601f60009054906101000a900460ff16156119df576119d8848484611f0a565b9050611ddb565b601260009054906101000a900460ff16611a8057600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611a7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a769061317a565b60405180910390fd5b5b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611b30576000611adc84611021565b90506006548382611aed919061319a565b1115611b2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b259061323c565b60405180910390fd5b505b611b386120dd565b15611b8f57611b456121c7565b6000611b5030611021565b9050601e54811115611b8d57611b8b30600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601e54611f0a565b505b505b611c18826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119529092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611cc35750600f60009054906101000a900460ff165b611ccd5782611cd9565b611cd8858486612512565b5b9050611d2d81600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127a990919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611dcd9190612820565b60405180910390a360019150505b9392505050565b6000611e2483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611952565b905092915050565b600080831415611e3f5760009050611ea1565b60008284611e4d9190613064565b9050828482611e5c9190612fa1565b14611e9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e93906132ce565b60405180910390fd5b809150505b92915050565b60008083118290611eee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee591906128d4565b60405180910390fd5b5060008385611efd9190612fa1565b9050809150509392505050565b6000611f95826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119529092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061202a82600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127a990919063ffffffff16565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516120ca9190612820565b60405180910390a3600190509392505050565b6000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561214a5750601f60009054906101000a900460ff16155b80156121625750601c60009054906101000a900460ff165b80156121c2575061217f6002601d54611e2c90919063ffffffff16565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601f60006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156121ff576121fe6132ee565b5b60405190808252806020026020018201604052801561222d5781602001602082028036833780820191505090505b50905030816000815181106122455761224461331d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106122b6576122b561331d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947601d5460008430426040518663ffffffff1660e01b8152600401612356959493929190613445565b600060405180830381600087803b15801561237057600080fd5b505af1158015612384573d6000803e3d6000fd5b50505050600047905060006123b8600e546123aa600c5485611e2c90919063ffffffff16565b61190890919063ffffffff16565b90506000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612402906134d0565b60006040518083038185875af1925050503d806000811461243f576040519150601f19603f3d011682016040523d82523d6000602084013e612444565b606091505b505090506000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166124968486611de290919063ffffffff16565b6040516124a2906134d0565b60006040518083038185875af1925050503d80600081146124df576040519150601f19603f3d011682016040523d82523d6000602084013e6124e4565b606091505b50509050600090506000915050505050506000601f60006101000a81548160ff021916908315150217905550565b6000804361252d6011546010546127a990919063ffffffff16565b1061256057612559606461254b606387611e2c90919063ffffffff16565b61190890919063ffffffff16565b9050612692565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156125e2576125db6016546125cd60135487611e2c90919063ffffffff16565b61190890919063ffffffff16565b9050612691565b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156126645761265d60165461264f60145487611e2c90919063ffffffff16565b61190890919063ffffffff16565b9050612690565b61268d60165461267f60155487611e2c90919063ffffffff16565b61190890919063ffffffff16565b90505b5b5b6126e481600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127a990919063ffffffff16565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516127849190612820565b60405180910390a361279f8185611de290919063ffffffff16565b9150509392505050565b60008082846127b8919061319a565b9050838110156127fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127f490613531565b60405180910390fd5b8091505092915050565b6000819050919050565b61281a81612807565b82525050565b60006020820190506128356000830184612811565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561287557808201518184015260208101905061285a565b83811115612884576000848401525b50505050565b6000601f19601f8301169050919050565b60006128a68261283b565b6128b08185612846565b93506128c0818560208601612857565b6128c98161288a565b840191505092915050565b600060208201905081810360008301526128ee818461289b565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612926826128fb565b9050919050565b6129368161291b565b811461294157600080fd5b50565b6000813590506129538161292d565b92915050565b61296281612807565b811461296d57600080fd5b50565b60008135905061297f81612959565b92915050565b6000806040838503121561299c5761299b6128f6565b5b60006129aa85828601612944565b92505060206129bb85828601612970565b9150509250929050565b60008115159050919050565b6129da816129c5565b82525050565b60006020820190506129f560008301846129d1565b92915050565b612a04816129c5565b8114612a0f57600080fd5b50565b600081359050612a21816129fb565b92915050565b60008060408385031215612a3e57612a3d6128f6565b5b6000612a4c85828601612944565b9250506020612a5d85828601612a12565b9150509250929050565b600080600060608486031215612a8057612a7f6128f6565b5b6000612a8e86828701612944565b9350506020612a9f86828701612944565b9250506040612ab086828701612970565b9150509250925092565b600060208284031215612ad057612acf6128f6565b5b6000612ade84828501612944565b91505092915050565b600060ff82169050919050565b612afd81612ae7565b82525050565b6000602082019050612b186000830184612af4565b92915050565b612b278161291b565b82525050565b6000602082019050612b426000830184612b1e565b92915050565b600060208284031215612b5e57612b5d6128f6565b5b6000612b6c84828501612a12565b91505092915050565b600060208284031215612b8b57612b8a6128f6565b5b6000612b9984828501612970565b91505092915050565b60008060408385031215612bb957612bb86128f6565b5b6000612bc785828601612944565b9250506020612bd885828601612944565b9150509250929050565b600080600060608486031215612bfb57612bfa6128f6565b5b6000612c0986828701612970565b9350506020612c1a86828701612970565b9250506040612c2b86828701612970565b9150509250925092565b600080600060608486031215612c4e57612c4d6128f6565b5b6000612c5c86828701612a12565b9350506020612c6d86828701612970565b9250506040612c7e86828701612970565b9150509250925092565b6000612c93826128fb565b9050919050565b612ca381612c88565b8114612cae57600080fd5b50565b600081359050612cc081612c9a565b92915050565b600060208284031215612cdc57612cdb6128f6565b5b6000612cea84828501612cb1565b91505092915050565b6000819050919050565b6000612d18612d13612d0e846128fb565b612cf3565b6128fb565b9050919050565b6000612d2a82612cfd565b9050919050565b6000612d3c82612d1f565b9050919050565b612d4c81612d31565b82525050565b6000602082019050612d676000830184612d43565b92915050565b7f21415554484f52495a4544000000000000000000000000000000000000000000600082015250565b6000612da3600b83612846565b9150612dae82612d6d565b602082019050919050565b60006020820190508181036000830152612dd281612d96565b9050919050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000612e0f600683612846565b9150612e1a82612dd9565b602082019050919050565b60006020820190508181036000830152612e3e81612e02565b9050919050565b7f4d61782077616c6c65742063616e206f6e6c79206265206d6f7265207468616e60008201527f2031250000000000000000000000000000000000000000000000000000000000602082015250565b6000612ea1602383612846565b9150612eac82612e45565b604082019050919050565b60006020820190508181036000830152612ed081612e94565b9050919050565b7f54726164696e6720616c726561647920656e61626c6564000000000000000000600082015250565b6000612f0d601783612846565b9150612f1882612ed7565b602082019050919050565b60006020820190508181036000830152612f3c81612f00565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612fac82612807565b9150612fb783612807565b925082612fc757612fc6612f43565b5b828204905092915050565b7f53776170207468726573686f6c64206d757374206265206d6f7265207468616e60008201527f20616d6f756e74206275726e6564000000000000000000000000000000000000602082015250565b600061302e602e83612846565b915061303982612fd2565b604082019050919050565b6000602082019050818103600083015261305d81613021565b9050919050565b600061306f82612807565b915061307a83612807565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156130b3576130b2612f72565b5b828202905092915050565b60006130c982612d1f565b9050919050565b6130d9816130be565b82525050565b60006020820190506130f460008301846130d0565b92915050565b600061310582612807565b915061311083612807565b92508282101561312357613122612f72565b5b828203905092915050565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b6000613164601483612846565b915061316f8261312e565b602082019050919050565b6000602082019050818103600083015261319381613157565b9050919050565b60006131a582612807565b91506131b083612807565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156131e5576131e4612f72565b5b828201905092915050565b7f4d61782077616c6c657420726561636865642e00000000000000000000000000600082015250565b6000613226601383612846565b9150613231826131f0565b602082019050919050565b6000602082019050818103600083015261325581613219565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006132b8602183612846565b91506132c38261325c565b604082019050919050565b600060208201905081810360008301526132e7816132ab565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b600061337161336c6133678461334c565b612cf3565b612807565b9050919050565b61338181613356565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6133bc8161291b565b82525050565b60006133ce83836133b3565b60208301905092915050565b6000602082019050919050565b60006133f282613387565b6133fc8185613392565b9350613407836133a3565b8060005b8381101561343857815161341f88826133c2565b975061342a836133da565b92505060018101905061340b565b5085935050505092915050565b600060a08201905061345a6000830188612811565b6134676020830187613378565b818103604083015261347981866133e7565b90506134886060830185612b1e565b6134956080830184612811565b9695505050505050565b600081905092915050565b50565b60006134ba60008361349f565b91506134c5826134aa565b600082019050919050565b60006134db826134ad565b9150819050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061351b601b83612846565b9150613526826134e5565b602082019050919050565b6000602082019050818103600083015261354a8161350e565b905091905056fea26469706673582212202ef0faff6c8a33b8da3e13666b9425ec25e52f0f5184a279121205d54e54631764736f6c634300080a0033

Deployed Bytecode Sourcemap

4891:11779:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6508:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8635:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9160:248;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14321:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6204:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8317:102;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6112:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9612:422;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5919:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15565:142;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5884:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3608:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8427:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5843:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6051;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6283:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6328:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14193:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15951:87;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6471:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8837:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5377:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15715:228;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8737:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16484:183;;;;;;;;;;;;;:::i;:::-;;6637:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8529:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6166:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14681:276;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6409:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9416:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3281:94;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6437:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14447:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5963:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16046:430;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15155:402;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8964:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3451:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4008:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6378:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3782:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6508:56;;;;:::o;8635:94::-;8683:13;8716:5;;;;;;;;;;;;;;;;;8709:12;;8635:94;:::o;9160:248::-;9262:4;9319:6;9284:11;:23;9296:10;9284:23;;;;;;;;;;;;;;;:32;9308:7;9284:32;;;;;;;;;;;;;;;:41;;;;9362:7;9341:37;;9350:10;9341:37;;;9371:6;9341:37;;;;;;:::i;:::-;;;;;;;;9396:4;9389:11;;9160:248;;;;:::o;14321:118::-;3157:24;3170:10;3157:12;:24::i;:::-;3149:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;14426:5:::1;14405;:18;14411:11;14405:18;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;14321:118:::0;;:::o;6204:35::-;;;;:::o;8317:102::-;8372:7;8399:12;;8392:19;;8317:102;:::o;6112:27::-;;;;:::o;9612:422::-;9746:4;9802:17;9767:11;:19;9779:6;9767:19;;;;;;;;;;;;;;;:31;9787:10;9767:31;;;;;;;;;;;;;;;;:52;9763:206;;9870:87;9924:6;9870:87;;;;;;;;;;;;;;;;;:11;:19;9882:6;9870:19;;;;;;;;;;;;;;;:31;9890:10;9870:31;;;;;;;;;;;;;;;;:53;;:87;;;;;:::i;:::-;9836:11;:19;9848:6;9836:19;;;;;;;;;;;;;;;:31;9856:10;9836:31;;;;;;;;;;;;;;;:121;;;;9763:206;9986:40;10000:6;10008:9;10019:6;9986:13;:40::i;:::-;9979:47;;9612:422;;;;;:::o;5919:37::-;;;;:::o;15565:142::-;15618:7;15645:54;15683:15;15693:4;;;;;;;;;;;15683:9;:15::i;:::-;15645:33;15662:15;15672:4;;;;;;;;;;;15662:9;:15::i;:::-;15645:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;15638:61;;15565:142;:::o;5884:28::-;;;;:::o;3608:103::-;3663:4;3698:5;;;;;;;;;;;3687:16;;:7;:16;;;3680:23;;3608:103;;;:::o;8427:94::-;8479:5;5269:1;8497:16;;8427:94;:::o;5843:34::-;;;;:::o;6051:::-;;;;;;;;;;;;;:::o;6283:38::-;;;;;;;;;;;;;:::o;6328:41::-;;;;;;;;;;;;;:::o;14193:120::-;3157:24;3170:10;3157:12;:24::i;:::-;3149:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;14299:6:::1;14277:11;:19;14289:6;14277:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;14193:120:::0;;:::o;15951:87::-;2979:19;2987:10;2979:7;:19::i;:::-;2971:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;16023:7:::1;16014:6;;:16;;;;;;;;;;;;;;;;;;15951:87:::0;:::o;6471:30::-;;;;;;;;;;;;;:::o;8837:119::-;8903:7;8930:9;:18;8940:7;8930:18;;;;;;;;;;;;;;;;8923:25;;8837:119;;;:::o;5377:57::-;;;;:::o;15715:228::-;2979:19;2987:10;2979:7;:19::i;:::-;2971:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;15831:1:::1;15821:7;:11;15813:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;15901:34;15931:3;15901:25;15918:7;15901:12;;:16;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;15883:15;:52;;;;15715:228:::0;:::o;8737:92::-;8789:7;8816:5;;;;;;;;;;;8809:12;;8737:92;:::o;16484:183::-;2979:19;2987:10;2979:7;:19::i;:::-;2971:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;16548:14:::1;;;;;;;;;;;16547:15;16539:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;16615:12;16601:11;:26;;;;16655:4;16638:14;;:21;;;;;;;;;;;;;;;;;;16484:183::o:0;6637:52::-;;;;:::o;8529:98::-;8579:13;8612:7;;;;;;;;;;;;;;;;;8605:14;;8529:98;:::o;6166:31::-;;;;:::o;14681:276::-;2979:19;2987:10;2979:7;:19::i;:::-;2971:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14858:24:::1;14832:23;;:50;;;;;;;;;;;;;;;;;;14922:27;14893:26;;:56;;;;;;;;;;;;;;;;;;14681:276:::0;;:::o;6409:19::-;;;;;;;;;;;;;:::o;9416:188::-;9523:4;9552:44;9566:10;9578:9;9589:6;9552:13;:44::i;:::-;9545:51;;9416:188;;;;:::o;3281:94::-;2979:19;2987:10;2979:7;:19::i;:::-;2971:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3363:4:::1;3341:14:::0;:19:::1;3356:3;3341:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;3281:94:::0;:::o;6437:25::-;;;;:::o;14447:155::-;3157:24;3170:10;3157:12;:24::i;:::-;3149:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;14588:6:::1;14560:17;:25;14578:6;14560:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;14447:155:::0;;:::o;5963:25::-;;;;;;;;;;;;;:::o;16046:430::-;2979:19;2987:10;2979:7;:19::i;:::-;2971:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;16234:1:::1;16217:14;;:18;;;;:::i;:::-;16204:9;:31;;16196:40;;;::::0;::::1;;16289:1;16272:14;;:18;;;;:::i;:::-;16255:13;:35;;16247:44;;;::::0;::::1;;16348:2;16331:14;;:19;;;;:::i;:::-;16310:17;:40;;16302:49;;;::::0;::::1;;16373:9;16362:8;:20;;;;16408:13;16393:12;:28;;;;16451:17;16432:16;:36;;;;16046:430:::0;;;:::o;15155:402::-;3157:24;3170:10;3157:12;:24::i;:::-;3149:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;15337:14:::1;15327:7;:24;15305:120;;;;;;;;;;;;:::i;:::-;;;;;;;;;15450:8;15436:11;;:22;;;;;;;;;;;;;;;;;;15495:5;15485:7;:15;;;;:::i;:::-;15469:13;:31;;;;15544:5;15527:14;:22;;;;:::i;:::-;15511:13;:38;;;;15155:402:::0;;;:::o;8964:188::-;9084:7;9116:11;:19;9128:6;9116:19;;;;;;;;;;;;;;;:28;9136:7;9116:28;;;;;;;;;;;;;;;;9109:35;;8964:188;;;;:::o;3451:97::-;2979:19;2987:10;2979:7;:19::i;:::-;2971:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3535:5:::1;3513:14;:19;3528:3;3513:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;3451:97:::0;:::o;4008:173::-;2979:19;2987:10;2979:7;:19::i;:::-;2971:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;4092:3:::1;4084:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;4128:4;4106:14:::0;:19:::1;4121:3;4106:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;4148:25;4169:3;4148:25;;;;;;:::i;:::-;;;;;;;;4008:173:::0;:::o;6378:24::-;;;;;;;;;;;;;:::o;3782:107::-;3838:4;3862:14;:19;3877:3;3862:19;;;;;;;;;;;;;;;;;;;;;;;;;3855:26;;3782:107;;;:::o;935:132::-;993:7;1020:39;1024:1;1027;1020:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1013:46;;935:132;;;;:::o;443:226::-;563:7;596:1;591;:6;;599:12;583:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;623:9;639:1;635;:5;;;;:::i;:::-;623:17;;660:1;653:8;;;443:226;;;;;:::o;10042:1368::-;10168:4;10189:6;;;;;;;;;;;10185:87;;;10219:41;10234:6;10242:9;10253:6;10219:14;:41::i;:::-;10212:48;;;;10185:87;10289:14;;;;;;;;;;;10284:103;;10328:14;:22;10343:6;10328:22;;;;;;;;;;;;;;;;;;;;;;;;;10320:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;10284:103;10432:17;:28;10450:9;10432:28;;;;;;;;;;;;;;;;;;;;;;;;;10427:239;;10477:18;10498:20;10508:9;10498;:20::i;:::-;10477:41;;10584:15;;10573:6;10560:10;:19;;;;:::i;:::-;10559:40;;10533:121;;;;;;;;;;;;:::i;:::-;;;;;;;;;10462:204;10427:239;10682:16;:14;:16::i;:::-;10678:278;;;10715:10;:8;:10::i;:::-;10770:17;10790:24;10808:4;10790:9;:24::i;:::-;10770:44;;10845:13;;10833:9;:25;10829:116;;;10879:50;10902:4;10909;;;;;;;;;;;10915:13;;10879:14;:50::i;:::-;;10829:116;10700:256;10678:278;11015:90;11051:6;11015:90;;;;;;;;;;;;;;;;;:9;:17;11025:6;11015:17;;;;;;;;;;;;;;;;:21;;:90;;;;;:::i;:::-;10995:9;:17;11005:6;10995:17;;;;;;;;;;;;;;;:110;;;;11118:22;11144:11;:19;11156:6;11144:19;;;;;;;;;;;;;;;;;;;;;;;;;11143:20;:30;;;;;11167:6;;;;;;;;;;;11143:30;:102;;11239:6;11143:102;;;11189:34;11197:6;11205;11213:9;11189:7;:34::i;:::-;11143:102;11118:127;;11279:40;11304:14;11279:9;:20;11289:9;11279:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;11256:9;:20;11266:9;11256:20;;;;;;;;;;;;;;;:63;;;;11354:9;11337:43;;11346:6;11337:43;;;11365:14;11337:43;;;;;;:::i;:::-;;;;;;;;11398:4;11391:11;;;10042:1368;;;;;;:::o;299:136::-;357:7;384:43;388:1;391;384:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;377:50;;299:136;;;;:::o;677:250::-;735:7;764:1;759;:6;755:47;;;789:1;782:8;;;;755:47;814:9;830:1;826;:5;;;;:::i;:::-;814:17;;859:1;854;850;:5;;;;:::i;:::-;:10;842:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;918:1;911:8;;;677:250;;;;;:::o;1075:379::-;1195:7;1294:1;1290;:5;1297:12;1282:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1321:9;1337:1;1333;:5;;;;:::i;:::-;1321:17;;1445:1;1438:8;;;1075:379;;;;;:::o;11418:401::-;11545:4;11582:90;11618:6;11582:90;;;;;;;;;;;;;;;;;:9;:17;11592:6;11582:17;;;;;;;;;;;;;;;;:21;;:90;;;;;:::i;:::-;11562:9;:17;11572:6;11562:17;;;;;;;;;;;;;;;:110;;;;11706:32;11731:6;11706:9;:20;11716:9;11706:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;11683:9;:20;11693:9;11683:20;;;;;;;;;;;;;;;:55;;;;11771:9;11754:35;;11763:6;11754:35;;;11782:6;11754:35;;;;;;:::i;:::-;;;;;;;;11807:4;11800:11;;11418:401;;;;;:::o;12931:229::-;12980:4;13031;;;;;;;;;;;13017:18;;:10;:18;;;;:42;;;;;13053:6;;;;;;;;;;;13052:7;13017:42;:70;;;;;13076:11;;;;;;;;;;;13017:70;:135;;;;;13132:20;13150:1;13132:13;;:17;;:20;;;;:::i;:::-;13104:9;:24;13122:4;13104:24;;;;;;;;;;;;;;;;:48;;13017:135;12997:155;;12931:229;:::o;13296:889::-;6779:4;6770:6;;:13;;;;;;;;;;;;;;;;;;13345:21:::1;13383:1;13369:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13345:40;;13414:4;13396;13401:1;13396:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;13440:4;;;;;;;;;;;13430;13435:1;13430:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;::::0;::::1;13457:6;;;;;;;;;;;:57;;;13529:13;;13557:1;13573:4;13600;13620:15;13457:189;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13659:17;13679:21;13659:41;;13711:26;13740:78;13789:18;;13740:30;13754:15;;13740:9;:13;;:30;;;;:::i;:::-;:34;;:78;;;;:::i;:::-;13711:107;;13830:15;13859:23;;;;;;;;;;;13851:37;;13910:18;13851:92;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13829:114;;;13955:16;13985:26;;;;;;;;;;;13977:40;;14039:33;14053:18;14039:9;:13;;:33;;;;:::i;:::-;13977:110;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13954:133;;;14143:5;14129:19;;14172:5;14159:18;;13334:851;;;;;6815:5:::0;6806:6;;:14;;;;;;;;;;;;;;;;;;13296:889::o;11827:927::-;11947:7;11967:17;12032:12;12001:27;12017:10;;12001:11;;:15;;:27;;;;:::i;:::-;:43;11997:572;;12073:23;12092:3;12073:14;12084:2;12073:6;:10;;:14;;;;:::i;:::-;:18;;:23;;;;:::i;:::-;12061:35;;11997:572;;;12155:5;:13;12161:6;12155:13;;;;;;;;;;;;;;;;;;;;;;;;;12151:407;;;12201:40;12226:14;;12201:20;12212:8;;12201:6;:10;;:20;;;;:::i;:::-;:24;;:40;;;;:::i;:::-;12189:52;;12151:407;;;12303:5;:16;12309:9;12303:16;;;;;;;;;;;;;;;;;;;;;;;;;12299:259;;;12352:44;12381:14;;12352:24;12363:12;;12352:6;:10;;:24;;;;:::i;:::-;:28;;:44;;;;:::i;:::-;12340:56;;12299:259;;;12494:48;12527:14;;12494:28;12505:16;;12494:6;:10;;:28;;;;:::i;:::-;:32;;:48;;;;:::i;:::-;12482:60;;12299:259;12151:407;11997:572;12608:39;12637:9;12608;:24;12626:4;12608:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;12581:9;:24;12599:4;12581:24;;;;;;;;;;;;;;;:66;;;;12688:4;12663:42;;12672:6;12663:42;;;12695:9;12663:42;;;;;;:::i;:::-;;;;;;;;12725:21;12736:9;12725:6;:10;;:21;;;;:::i;:::-;12718:28;;;11827:927;;;;;:::o;110:181::-;168:7;188:9;204:1;200;:5;;;;:::i;:::-;188:17;;229:1;224;:6;;216:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;282:1;275:8;;;110:181;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:307::-;790:1;800:113;814:6;811:1;808:13;800:113;;;899:1;894:3;890:11;884:18;880:1;875:3;871:11;864:39;836:2;833:1;829:10;824:15;;800:113;;;931:6;928:1;925:13;922:101;;;1011:1;1002:6;997:3;993:16;986:27;922:101;771:258;722:307;;;:::o;1035:102::-;1076:6;1127:2;1123:7;1118:2;1111:5;1107:14;1103:28;1093:38;;1035:102;;;:::o;1143:364::-;1231:3;1259:39;1292:5;1259:39;:::i;:::-;1314:71;1378:6;1373:3;1314:71;:::i;:::-;1307:78;;1394:52;1439:6;1434:3;1427:4;1420:5;1416:16;1394:52;:::i;:::-;1471:29;1493:6;1471:29;:::i;:::-;1466:3;1462:39;1455:46;;1235:272;1143:364;;;;:::o;1513:313::-;1626:4;1664:2;1653:9;1649:18;1641:26;;1713:9;1707:4;1703:20;1699:1;1688:9;1684:17;1677:47;1741:78;1814:4;1805:6;1741:78;:::i;:::-;1733:86;;1513:313;;;;:::o;1913:117::-;2022:1;2019;2012:12;2159:126;2196:7;2236:42;2229:5;2225:54;2214:65;;2159:126;;;:::o;2291:96::-;2328:7;2357:24;2375:5;2357:24;:::i;:::-;2346:35;;2291:96;;;:::o;2393:122::-;2466:24;2484:5;2466:24;:::i;:::-;2459:5;2456:35;2446:63;;2505:1;2502;2495:12;2446:63;2393:122;:::o;2521:139::-;2567:5;2605:6;2592:20;2583:29;;2621:33;2648:5;2621:33;:::i;:::-;2521:139;;;;:::o;2666:122::-;2739:24;2757:5;2739:24;:::i;:::-;2732:5;2729:35;2719:63;;2778:1;2775;2768:12;2719:63;2666:122;:::o;2794:139::-;2840:5;2878:6;2865:20;2856:29;;2894:33;2921:5;2894:33;:::i;:::-;2794:139;;;;:::o;2939:474::-;3007:6;3015;3064:2;3052:9;3043:7;3039:23;3035:32;3032:119;;;3070:79;;:::i;:::-;3032:119;3190:1;3215:53;3260:7;3251:6;3240:9;3236:22;3215:53;:::i;:::-;3205:63;;3161:117;3317:2;3343:53;3388:7;3379:6;3368:9;3364:22;3343:53;:::i;:::-;3333:63;;3288:118;2939:474;;;;;:::o;3419:90::-;3453:7;3496:5;3489:13;3482:21;3471:32;;3419:90;;;:::o;3515:109::-;3596:21;3611:5;3596:21;:::i;:::-;3591:3;3584:34;3515:109;;:::o;3630:210::-;3717:4;3755:2;3744:9;3740:18;3732:26;;3768:65;3830:1;3819:9;3815:17;3806:6;3768:65;:::i;:::-;3630:210;;;;:::o;3846:116::-;3916:21;3931:5;3916:21;:::i;:::-;3909:5;3906:32;3896:60;;3952:1;3949;3942:12;3896:60;3846:116;:::o;3968:133::-;4011:5;4049:6;4036:20;4027:29;;4065:30;4089:5;4065:30;:::i;:::-;3968:133;;;;:::o;4107:468::-;4172:6;4180;4229:2;4217:9;4208:7;4204:23;4200:32;4197:119;;;4235:79;;:::i;:::-;4197:119;4355:1;4380:53;4425:7;4416:6;4405:9;4401:22;4380:53;:::i;:::-;4370:63;;4326:117;4482:2;4508:50;4550:7;4541:6;4530:9;4526:22;4508:50;:::i;:::-;4498:60;;4453:115;4107:468;;;;;:::o;4581:619::-;4658:6;4666;4674;4723:2;4711:9;4702:7;4698:23;4694:32;4691:119;;;4729:79;;:::i;:::-;4691:119;4849:1;4874:53;4919:7;4910:6;4899:9;4895:22;4874:53;:::i;:::-;4864:63;;4820:117;4976:2;5002:53;5047:7;5038:6;5027:9;5023:22;5002:53;:::i;:::-;4992:63;;4947:118;5104:2;5130:53;5175:7;5166:6;5155:9;5151:22;5130:53;:::i;:::-;5120:63;;5075:118;4581:619;;;;;:::o;5206:329::-;5265:6;5314:2;5302:9;5293:7;5289:23;5285:32;5282:119;;;5320:79;;:::i;:::-;5282:119;5440:1;5465:53;5510:7;5501:6;5490:9;5486:22;5465:53;:::i;:::-;5455:63;;5411:117;5206:329;;;;:::o;5541:86::-;5576:7;5616:4;5609:5;5605:16;5594:27;;5541:86;;;:::o;5633:112::-;5716:22;5732:5;5716:22;:::i;:::-;5711:3;5704:35;5633:112;;:::o;5751:214::-;5840:4;5878:2;5867:9;5863:18;5855:26;;5891:67;5955:1;5944:9;5940:17;5931:6;5891:67;:::i;:::-;5751:214;;;;:::o;5971:118::-;6058:24;6076:5;6058:24;:::i;:::-;6053:3;6046:37;5971:118;;:::o;6095:222::-;6188:4;6226:2;6215:9;6211:18;6203:26;;6239:71;6307:1;6296:9;6292:17;6283:6;6239:71;:::i;:::-;6095:222;;;;:::o;6323:323::-;6379:6;6428:2;6416:9;6407:7;6403:23;6399:32;6396:119;;;6434:79;;:::i;:::-;6396:119;6554:1;6579:50;6621:7;6612:6;6601:9;6597:22;6579:50;:::i;:::-;6569:60;;6525:114;6323:323;;;;:::o;6652:329::-;6711:6;6760:2;6748:9;6739:7;6735:23;6731:32;6728:119;;;6766:79;;:::i;:::-;6728:119;6886:1;6911:53;6956:7;6947:6;6936:9;6932:22;6911:53;:::i;:::-;6901:63;;6857:117;6652:329;;;;:::o;6987:474::-;7055:6;7063;7112:2;7100:9;7091:7;7087:23;7083:32;7080:119;;;7118:79;;:::i;:::-;7080:119;7238:1;7263:53;7308:7;7299:6;7288:9;7284:22;7263:53;:::i;:::-;7253:63;;7209:117;7365:2;7391:53;7436:7;7427:6;7416:9;7412:22;7391:53;:::i;:::-;7381:63;;7336:118;6987:474;;;;;:::o;7467:619::-;7544:6;7552;7560;7609:2;7597:9;7588:7;7584:23;7580:32;7577:119;;;7615:79;;:::i;:::-;7577:119;7735:1;7760:53;7805:7;7796:6;7785:9;7781:22;7760:53;:::i;:::-;7750:63;;7706:117;7862:2;7888:53;7933:7;7924:6;7913:9;7909:22;7888:53;:::i;:::-;7878:63;;7833:118;7990:2;8016:53;8061:7;8052:6;8041:9;8037:22;8016:53;:::i;:::-;8006:63;;7961:118;7467:619;;;;;:::o;8092:613::-;8166:6;8174;8182;8231:2;8219:9;8210:7;8206:23;8202:32;8199:119;;;8237:79;;:::i;:::-;8199:119;8357:1;8382:50;8424:7;8415:6;8404:9;8400:22;8382:50;:::i;:::-;8372:60;;8328:114;8481:2;8507:53;8552:7;8543:6;8532:9;8528:22;8507:53;:::i;:::-;8497:63;;8452:118;8609:2;8635:53;8680:7;8671:6;8660:9;8656:22;8635:53;:::i;:::-;8625:63;;8580:118;8092:613;;;;;:::o;8711:104::-;8756:7;8785:24;8803:5;8785:24;:::i;:::-;8774:35;;8711:104;;;:::o;8821:138::-;8902:32;8928:5;8902:32;:::i;:::-;8895:5;8892:43;8882:71;;8949:1;8946;8939:12;8882:71;8821:138;:::o;8965:155::-;9019:5;9057:6;9044:20;9035:29;;9073:41;9108:5;9073:41;:::i;:::-;8965:155;;;;:::o;9126:345::-;9193:6;9242:2;9230:9;9221:7;9217:23;9213:32;9210:119;;;9248:79;;:::i;:::-;9210:119;9368:1;9393:61;9446:7;9437:6;9426:9;9422:22;9393:61;:::i;:::-;9383:71;;9339:125;9126:345;;;;:::o;9477:60::-;9505:3;9526:5;9519:12;;9477:60;;;:::o;9543:142::-;9593:9;9626:53;9644:34;9653:24;9671:5;9653:24;:::i;:::-;9644:34;:::i;:::-;9626:53;:::i;:::-;9613:66;;9543:142;;;:::o;9691:126::-;9741:9;9774:37;9805:5;9774:37;:::i;:::-;9761:50;;9691:126;;;:::o;9823:144::-;9891:9;9924:37;9955:5;9924:37;:::i;:::-;9911:50;;9823:144;;;:::o;9973:167::-;10078:55;10127:5;10078:55;:::i;:::-;10073:3;10066:68;9973:167;;:::o;10146:258::-;10257:4;10295:2;10284:9;10280:18;10272:26;;10308:89;10394:1;10383:9;10379:17;10370:6;10308:89;:::i;:::-;10146:258;;;;:::o;10410:161::-;10550:13;10546:1;10538:6;10534:14;10527:37;10410:161;:::o;10577:366::-;10719:3;10740:67;10804:2;10799:3;10740:67;:::i;:::-;10733:74;;10816:93;10905:3;10816:93;:::i;:::-;10934:2;10929:3;10925:12;10918:19;;10577:366;;;:::o;10949:419::-;11115:4;11153:2;11142:9;11138:18;11130:26;;11202:9;11196:4;11192:20;11188:1;11177:9;11173:17;11166:47;11230:131;11356:4;11230:131;:::i;:::-;11222:139;;10949:419;;;:::o;11374:156::-;11514:8;11510:1;11502:6;11498:14;11491:32;11374:156;:::o;11536:365::-;11678:3;11699:66;11763:1;11758:3;11699:66;:::i;:::-;11692:73;;11774:93;11863:3;11774:93;:::i;:::-;11892:2;11887:3;11883:12;11876:19;;11536:365;;;:::o;11907:419::-;12073:4;12111:2;12100:9;12096:18;12088:26;;12160:9;12154:4;12150:20;12146:1;12135:9;12131:17;12124:47;12188:131;12314:4;12188:131;:::i;:::-;12180:139;;11907:419;;;:::o;12332:222::-;12472:34;12468:1;12460:6;12456:14;12449:58;12541:5;12536:2;12528:6;12524:15;12517:30;12332:222;:::o;12560:366::-;12702:3;12723:67;12787:2;12782:3;12723:67;:::i;:::-;12716:74;;12799:93;12888:3;12799:93;:::i;:::-;12917:2;12912:3;12908:12;12901:19;;12560:366;;;:::o;12932:419::-;13098:4;13136:2;13125:9;13121:18;13113:26;;13185:9;13179:4;13175:20;13171:1;13160:9;13156:17;13149:47;13213:131;13339:4;13213:131;:::i;:::-;13205:139;;12932:419;;;:::o;13357:173::-;13497:25;13493:1;13485:6;13481:14;13474:49;13357:173;:::o;13536:366::-;13678:3;13699:67;13763:2;13758:3;13699:67;:::i;:::-;13692:74;;13775:93;13864:3;13775:93;:::i;:::-;13893:2;13888:3;13884:12;13877:19;;13536:366;;;:::o;13908:419::-;14074:4;14112:2;14101:9;14097:18;14089:26;;14161:9;14155:4;14151:20;14147:1;14136:9;14132:17;14125:47;14189:131;14315:4;14189:131;:::i;:::-;14181:139;;13908:419;;;:::o;14333:180::-;14381:77;14378:1;14371:88;14478:4;14475:1;14468:15;14502:4;14499:1;14492:15;14519:180;14567:77;14564:1;14557:88;14664:4;14661:1;14654:15;14688:4;14685:1;14678:15;14705:185;14745:1;14762:20;14780:1;14762:20;:::i;:::-;14757:25;;14796:20;14814:1;14796:20;:::i;:::-;14791:25;;14835:1;14825:35;;14840:18;;:::i;:::-;14825:35;14882:1;14879;14875:9;14870:14;;14705:185;;;;:::o;14896:233::-;15036:34;15032:1;15024:6;15020:14;15013:58;15105:16;15100:2;15092:6;15088:15;15081:41;14896:233;:::o;15135:366::-;15277:3;15298:67;15362:2;15357:3;15298:67;:::i;:::-;15291:74;;15374:93;15463:3;15374:93;:::i;:::-;15492:2;15487:3;15483:12;15476:19;;15135:366;;;:::o;15507:419::-;15673:4;15711:2;15700:9;15696:18;15688:26;;15760:9;15754:4;15750:20;15746:1;15735:9;15731:17;15724:47;15788:131;15914:4;15788:131;:::i;:::-;15780:139;;15507:419;;;:::o;15932:348::-;15972:7;15995:20;16013:1;15995:20;:::i;:::-;15990:25;;16029:20;16047:1;16029:20;:::i;:::-;16024:25;;16217:1;16149:66;16145:74;16142:1;16139:81;16134:1;16127:9;16120:17;16116:105;16113:131;;;16224:18;;:::i;:::-;16113:131;16272:1;16269;16265:9;16254:20;;15932:348;;;;:::o;16286:134::-;16344:9;16377:37;16408:5;16377:37;:::i;:::-;16364:50;;16286:134;;;:::o;16426:147::-;16521:45;16560:5;16521:45;:::i;:::-;16516:3;16509:58;16426:147;;:::o;16579:238::-;16680:4;16718:2;16707:9;16703:18;16695:26;;16731:79;16807:1;16796:9;16792:17;16783:6;16731:79;:::i;:::-;16579:238;;;;:::o;16823:191::-;16863:4;16883:20;16901:1;16883:20;:::i;:::-;16878:25;;16917:20;16935:1;16917:20;:::i;:::-;16912:25;;16956:1;16953;16950:8;16947:34;;;16961:18;;:::i;:::-;16947:34;17006:1;17003;16999:9;16991:17;;16823:191;;;;:::o;17020:170::-;17160:22;17156:1;17148:6;17144:14;17137:46;17020:170;:::o;17196:366::-;17338:3;17359:67;17423:2;17418:3;17359:67;:::i;:::-;17352:74;;17435:93;17524:3;17435:93;:::i;:::-;17553:2;17548:3;17544:12;17537:19;;17196:366;;;:::o;17568:419::-;17734:4;17772:2;17761:9;17757:18;17749:26;;17821:9;17815:4;17811:20;17807:1;17796:9;17792:17;17785:47;17849:131;17975:4;17849:131;:::i;:::-;17841:139;;17568:419;;;:::o;17993:305::-;18033:3;18052:20;18070:1;18052:20;:::i;:::-;18047:25;;18086:20;18104:1;18086:20;:::i;:::-;18081:25;;18240:1;18172:66;18168:74;18165:1;18162:81;18159:107;;;18246:18;;:::i;:::-;18159:107;18290:1;18287;18283:9;18276:16;;17993:305;;;;:::o;18304:169::-;18444:21;18440:1;18432:6;18428:14;18421:45;18304:169;:::o;18479:366::-;18621:3;18642:67;18706:2;18701:3;18642:67;:::i;:::-;18635:74;;18718:93;18807:3;18718:93;:::i;:::-;18836:2;18831:3;18827:12;18820:19;;18479:366;;;:::o;18851:419::-;19017:4;19055:2;19044:9;19040:18;19032:26;;19104:9;19098:4;19094:20;19090:1;19079:9;19075:17;19068:47;19132:131;19258:4;19132:131;:::i;:::-;19124:139;;18851:419;;;:::o;19276:220::-;19416:34;19412:1;19404:6;19400:14;19393:58;19485:3;19480:2;19472:6;19468:15;19461:28;19276:220;:::o;19502:366::-;19644:3;19665:67;19729:2;19724:3;19665:67;:::i;:::-;19658:74;;19741:93;19830:3;19741:93;:::i;:::-;19859:2;19854:3;19850:12;19843:19;;19502:366;;;:::o;19874:419::-;20040:4;20078:2;20067:9;20063:18;20055:26;;20127:9;20121:4;20117:20;20113:1;20102:9;20098:17;20091:47;20155:131;20281:4;20155:131;:::i;:::-;20147:139;;19874:419;;;:::o;20299:180::-;20347:77;20344:1;20337:88;20444:4;20441:1;20434:15;20468:4;20465:1;20458:15;20485:180;20533:77;20530:1;20523:88;20630:4;20627:1;20620:15;20654:4;20651:1;20644:15;20671:85;20716:7;20745:5;20734:16;;20671:85;;;:::o;20762:158::-;20820:9;20853:61;20871:42;20880:32;20906:5;20880:32;:::i;:::-;20871:42;:::i;:::-;20853:61;:::i;:::-;20840:74;;20762:158;;;:::o;20926:147::-;21021:45;21060:5;21021:45;:::i;:::-;21016:3;21009:58;20926:147;;:::o;21079:114::-;21146:6;21180:5;21174:12;21164:22;;21079:114;;;:::o;21199:184::-;21298:11;21332:6;21327:3;21320:19;21372:4;21367:3;21363:14;21348:29;;21199:184;;;;:::o;21389:132::-;21456:4;21479:3;21471:11;;21509:4;21504:3;21500:14;21492:22;;21389:132;;;:::o;21527:108::-;21604:24;21622:5;21604:24;:::i;:::-;21599:3;21592:37;21527:108;;:::o;21641:179::-;21710:10;21731:46;21773:3;21765:6;21731:46;:::i;:::-;21809:4;21804:3;21800:14;21786:28;;21641:179;;;;:::o;21826:113::-;21896:4;21928;21923:3;21919:14;21911:22;;21826:113;;;:::o;21975:732::-;22094:3;22123:54;22171:5;22123:54;:::i;:::-;22193:86;22272:6;22267:3;22193:86;:::i;:::-;22186:93;;22303:56;22353:5;22303:56;:::i;:::-;22382:7;22413:1;22398:284;22423:6;22420:1;22417:13;22398:284;;;22499:6;22493:13;22526:63;22585:3;22570:13;22526:63;:::i;:::-;22519:70;;22612:60;22665:6;22612:60;:::i;:::-;22602:70;;22458:224;22445:1;22442;22438:9;22433:14;;22398:284;;;22402:14;22698:3;22691:10;;22099:608;;;21975:732;;;;:::o;22713:831::-;22976:4;23014:3;23003:9;22999:19;22991:27;;23028:71;23096:1;23085:9;23081:17;23072:6;23028:71;:::i;:::-;23109:80;23185:2;23174:9;23170:18;23161:6;23109:80;:::i;:::-;23236:9;23230:4;23226:20;23221:2;23210:9;23206:18;23199:48;23264:108;23367:4;23358:6;23264:108;:::i;:::-;23256:116;;23382:72;23450:2;23439:9;23435:18;23426:6;23382:72;:::i;:::-;23464:73;23532:3;23521:9;23517:19;23508:6;23464:73;:::i;:::-;22713:831;;;;;;;;:::o;23550:147::-;23651:11;23688:3;23673:18;;23550:147;;;;:::o;23703:114::-;;:::o;23823:398::-;23982:3;24003:83;24084:1;24079:3;24003:83;:::i;:::-;23996:90;;24095:93;24184:3;24095:93;:::i;:::-;24213:1;24208:3;24204:11;24197:18;;23823:398;;;:::o;24227:379::-;24411:3;24433:147;24576:3;24433:147;:::i;:::-;24426:154;;24597:3;24590:10;;24227:379;;;:::o;24612:177::-;24752:29;24748:1;24740:6;24736:14;24729:53;24612:177;:::o;24795:366::-;24937:3;24958:67;25022:2;25017:3;24958:67;:::i;:::-;24951:74;;25034:93;25123:3;25034:93;:::i;:::-;25152:2;25147:3;25143:12;25136:19;;24795:366;;;:::o;25167:419::-;25333:4;25371:2;25360:9;25356:18;25348:26;;25420:9;25414:4;25410:20;25406:1;25395:9;25391:17;25384:47;25448:131;25574:4;25448:131;:::i;:::-;25440:139;;25167:419;;;:::o

Swarm Source

ipfs://2ef0faff6c8a33b8da3e13666b9425ec25e52f0f5184a279121205d54e546317
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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