ETH Price: $2,551.39 (-2.27%)

Token

SCREAM (GHOSTFACE)
 

Overview

Max Total Supply

1,000,000 GHOSTFACE

Holders

20

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
6,120.38954591 GHOSTFACE

Value
$0.00
0x407b7c8c425d3dc0f19fb89564a33614c158869f
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:
GHOSTFACE

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-01-18
*/

/**

    ⣿⣿⣿⣿⣿⣿⣿⣿⠿⠛⠋⠉⠁⠄⠄⠈⠙⠻⣿⣿⣿⣿
    ⣿⣿⣿⣿⣿⣿⠟⠁⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠙⢿⣿
    ⣿⣿⣿⣿⡿⠃⠄⠄⠄⢀⣀⣀⡀⠄⠄⠄⠄⠄⠄⠄⠈⢿
    ⣿⣿⣿⡟⠄⠄⠄⠄⠐⢻⣿⣿⣿⣷⡄⠄⠄⠄⠄⠄⠄⠈
    ⣿⣿⣿⠃⠄⠄⠄⢀⠴⠛⠙⣿⣿⡿⣿⣦⠄⠄⠄⠄⠄⠄
    ⣿⣿⠃⠄⢠⡖⠉⠄⠄⠄⣠⣿⡏⠄⢹⣿⠄⠄⠄⠄⠄⢠
    ⣿⠃⠄⠄⢸⣧⣤⣤⣤⢾⣿⣿⡇⠄⠈⢻⡆⠄⠄⠄⠄⣾
    ⠁⠄⠄⠄⠈⠉⠛⢿⡟⠉⠉⣿⣷⣀⠄⠄⣿⡆⠄⠄⢠⣿
    ⠄⠄⠄⠄⠄⠄⢠⡿⠿⢿⣷⣿⣿⣿⣿⣿⠿⠃⠄⠄⣸⣿
    ⠄⠄⠄⠄⠄⢀⡞⠄⠄⠄⠈⣿⣿⣿⡟⠁⠄⠄⠄⠄⣿⣿
    ⠄⠄⠄⠄⠄⢸⠄⠄⠄⠄⢀⣿⣿⡟⠄⠄⠄⠄⠄⢠⣿⣿
    ⠄⠄⠄⠄⠄⠘⠄⠄⠄⢀⡼⠛⠉⠄⠄⠄⠄⠄⠄⣼⣿⣿
    ⠄⠄⠄⠄⠄⡇⠄⠄⢀⠎⠄⠄⠄⠄.................⠙⢿⣿
    ⠄⠄⠄⠄⢰⠃⠄⢀⠎⠄⠄⠄............................. ⠙

    Web: https://screamboo.com/
    TG: https://t.me/screameth
    FB: https://www.facebook.com/screambooeth

*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.16;

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    function tryAdd(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

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

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

    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

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

    function decimals() external view returns (uint8);

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

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

    function getOwner() external view returns (address);

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

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

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

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

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

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

abstract contract Ownable {
    address internal owner;

    constructor(address _owner) {
        owner = _owner;
    }

    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER");
        _;
    }

    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        emit OwnershipTransferred(adr);
    }

    event OwnershipTransferred(address owner);
}

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

    function getPair(address tokenA, address tokenB)
        external
        view
        returns (address pair);
}

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

    function WETH() external pure returns (address);

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

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountA, uint256 amountB);

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

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

contract GHOSTFACE is IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = "SCREAM";
    string private constant _symbol = "GHOSTFACE";
    uint8 private constant _decimals = 9;
    uint256 private _totalSupply = 1000000 * (10**_decimals);
    uint256 private _maxTxAmountPercent = 200; // 10000;
    uint256 private _maxTransferPercent = 200;
    uint256 private _maxWalletPercent = 200;
    mapping(address => uint256) _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) public isFeeExempt;
    mapping(address => bool) private isBot;
    IRouter router;
    address public pair;
    bool private tradingAllowed = false;
    uint256 private liquidityFee = 100;
    uint256 private marketingFee = 300;
    uint256 private developmentFee = 0;
    uint256 private burnFee = 0;
    uint256 private totalFee = 400;
    uint256 private sellFee = 2000;
    uint256 private transferFee = 400;
    uint256 private denominator = 10000;
    bool private swapEnabled = true;
    uint256 private swapTimes;
    bool private swapping;
    uint256 private swapThreshold = (_totalSupply * 300) / 100000;
    uint256 private _minTokenAmount = (_totalSupply * 10) / 100000;
    modifier lockTheSwap() {
        swapping = true;
        _;
        swapping = false;
    }

    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address internal constant development_receiver =
        0x8207AD7920897c20Facc1DAFF9d521848023600B;
    address internal constant marketing_receiver =
        0x8207AD7920897c20Facc1DAFF9d521848023600B;
    address internal constant liquidity_receiver =
        0x8207AD7920897c20Facc1DAFF9d521848023600B;

    constructor() Ownable(msg.sender) {
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactory(_router.factory()).createPair(
            address(this),
            _router.WETH()
        );
        router = _router;
        pair = _pair;
        isFeeExempt[address(this)] = true;
        isFeeExempt[liquidity_receiver] = true;
        isFeeExempt[marketing_receiver] = true;
        isFeeExempt[msg.sender] = true;
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable {}

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

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

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

    function startTrading() external onlyOwner {
        tradingAllowed = true;
    }

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

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

    function transfer(address recipient, uint256 amount)
        public
        override
        returns (bool)
    {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

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

    function isCont(address addr) internal view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(addr)
        }
        return size > 0;
    }

    function setisBot(address _address, bool _enabled) external onlyOwner {
        isBot[_address] = _enabled;
    }

    function setisExempt(address _address, bool _enabled) external onlyOwner {
        isFeeExempt[_address] = _enabled;
    }

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

    function totalSupply() public view override returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));
    }

    function _maxWalletToken() public view returns (uint256) {
        return (totalSupply() * _maxWalletPercent) / denominator;
    }

    function _maxTxAmount() public view returns (uint256) {
        return (totalSupply() * _maxTxAmountPercent) / denominator;
    }

    function _maxTransferAmount() public view returns (uint256) {
        return (totalSupply() * _maxTransferPercent) / denominator;
    }

    function preTxCheck(
        address sender,
        address recipient,
        uint256 amount
    ) internal view {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(
            amount > uint256(0),
            "Transfer amount must be greater than zero"
        );
        require(
            amount <= balanceOf(sender),
            "You are trying to transfer more than your balance"
        );
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) private {
        preTxCheck(sender, recipient, amount);
        checkTradingAllowed(sender, recipient);
        checkMaxWallet(sender, recipient, amount);
        swapbackCounters(sender, recipient);
        checkTxLimit(sender, recipient, amount);
        swapBack(sender, recipient, amount);
        _balances[sender] = _balances[sender].sub(amount);
        uint256 amountReceived = shouldTakeFee(sender, recipient)
            ? takeFee(sender, recipient, amount)
            : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
    }

    function setStructure(
        uint256 _liquidity,
        uint256 _marketing,
        uint256 _burn,
        uint256 _development,
        uint256 _total,
        uint256 _sell,
        uint256 _trans
    ) external onlyOwner {
        liquidityFee = _liquidity;
        marketingFee = _marketing;
        burnFee = _burn;
        developmentFee = _development;
        totalFee = _total;
        sellFee = _sell;
        transferFee = _trans;
    }

    function setParameters(
        uint256 _buy,
        uint256 _trans,
        uint256 _wallet
    ) external onlyOwner {
        uint256 newTx = (totalSupply() * _buy) / 10000;
        uint256 newTransfer = (totalSupply() * _trans) / 10000;
        uint256 newWallet = (totalSupply() * _wallet) / 10000;
        _maxTxAmountPercent = _buy;
        _maxTransferPercent = _trans;
        _maxWalletPercent = _wallet;
        uint256 limit = totalSupply().mul(5).div(1000);
        require(
            newTx >= limit && newTransfer >= limit && newWallet >= limit,
            "Max TXs and Max Wallet cannot be less than .5%"
        );
    }

    function checkTradingAllowed(address sender, address recipient)
        internal
        view
    {
        if (!isFeeExempt[sender] && !isFeeExempt[recipient]) {
            require(tradingAllowed, "tradingAllowed");
        }
    }

    function checkMaxWallet(
        address sender,
        address recipient,
        uint256 amount
    ) internal view {
        if (
            !isFeeExempt[sender] &&
            !isFeeExempt[recipient] &&
            recipient != address(pair) &&
            recipient != address(DEAD)
        ) {
            require(
                (_balances[recipient].add(amount)) <= _maxWalletToken(),
                "Exceeds maximum wallet amount."
            );
        }
    }

    function swapbackCounters(address sender, address recipient) internal {
        if (recipient == pair && !isFeeExempt[sender]) {
            swapTimes += uint256(1);
        }
    }

    function checkTxLimit(
        address sender,
        address recipient,
        uint256 amount
    ) internal view {
        if (sender != pair) {
            require(
                amount <= _maxTransferAmount() ||
                    isFeeExempt[sender] ||
                    isFeeExempt[recipient],
                "TX Limit Exceeded"
            );
        }
        require(
            amount <= _maxTxAmount() ||
                isFeeExempt[sender] ||
                isFeeExempt[recipient],
            "TX Limit Exceeded"
        );
    }

    function swapAndLiquify(uint256 tokens) private lockTheSwap {
        uint256 _denominator = (
            liquidityFee.add(1).add(marketingFee).add(developmentFee)
        ).mul(2);
        uint256 tokensToAddLiquidityWith = tokens.mul(liquidityFee).div(
            _denominator
        );
        uint256 toSwap = tokens.sub(tokensToAddLiquidityWith);
        uint256 initialBalance = address(this).balance;
        swapTokensForETH(toSwap);
        uint256 deltaBalance = address(this).balance.sub(initialBalance);
        uint256 unitBalance = deltaBalance.div(_denominator.sub(liquidityFee));
        uint256 ETHToAddLiquidityWith = unitBalance.mul(liquidityFee);
        if (ETHToAddLiquidityWith > uint256(0)) {
            addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith);
        }
        uint256 marketingAmt = unitBalance.mul(2).mul(marketingFee);
        if (marketingAmt > 0) {
            payable(marketing_receiver).transfer(marketingAmt);
        }
        uint256 remainingBalance = address(this).balance;
        if (remainingBalance > uint256(0)) {
            payable(development_receiver).transfer(remainingBalance);
        }
    }

    function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private {
        _approve(address(this), address(router), tokenAmount);
        router.addLiquidityETH{value: ETHAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            liquidity_receiver,
            block.timestamp
        );
    }

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

    function shouldSwapBack(
        address sender,
        address recipient,
        uint256 amount
    ) internal view returns (bool) {
        bool aboveMin = amount >= _minTokenAmount;
        bool aboveThreshold = balanceOf(address(this)) >= swapThreshold;
        return
            !swapping &&
            swapEnabled &&
            tradingAllowed &&
            aboveMin &&
            !isFeeExempt[sender] &&
            recipient == pair &&
            swapTimes >= uint256(2) &&
            aboveThreshold;
    }

    function swapBack(
        address sender,
        address recipient,
        uint256 amount
    ) internal {
        if (shouldSwapBack(sender, recipient, amount)) {
            swapAndLiquify(swapThreshold);
            swapTimes = uint256(0);
        }
    }

    function shouldTakeFee(address sender, address recipient)
        internal
        view
        returns (bool)
    {
        return !isFeeExempt[sender] && !isFeeExempt[recipient];
    }

    function getTotalFee(address sender, address recipient)
        internal
        view
        returns (uint256)
    {
        if (isBot[sender] || isBot[recipient]) {
            return denominator.sub(uint256(100));
        }
        if (recipient == pair) {
            return sellFee;
        }
        if (sender == pair) {
            return totalFee;
        }
        return transferFee;
    }

    function takeFee(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (uint256) {
        if (getTotalFee(sender, recipient) > 0) {
            uint256 feeAmount = amount.div(denominator).mul(
                getTotalFee(sender, recipient)
            );
            _balances[address(this)] = _balances[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
            if (burnFee > uint256(0)) {
                _transfer(
                    address(this),
                    address(DEAD),
                    amount.div(denominator).mul(burnFee)
                );
            }
            return amount.sub(feeAmount);
        }
        return amount;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            msg.sender,
            _allowances[sender][msg.sender].sub(
                amount,
                "ERC20: transfer amount exceeds allowance"
            )
        );
        return true;
    }

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

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":"_maxTransferAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"},{"internalType":"uint256","name":"_wallet","type":"uint256"}],"name":"setParameters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"},{"internalType":"uint256","name":"_development","type":"uint256"},{"internalType":"uint256","name":"_total","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setStructure","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526009600a62000014919062000710565b620f424062000024919062000761565b60015560c860025560c860035560c86004556000600a60146101000a81548160ff0219169083151502179055506064600b5561012c600c556000600d556000600e55610190600f556107d06010556101906011556127106012556001601360006101000a81548160ff021916908315150217905550620186a061012c600154620000af919062000761565b620000bb9190620007f1565b601655620186a0600a600154620000d3919062000761565b620000df9190620007f1565b601755348015620000ef57600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000199573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001bf919062000893565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000227573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200024d919062000893565b6040518363ffffffff1660e01b81526004016200026c929190620008d6565b6020604051808303816000875af11580156200028c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b2919062000893565b905081600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000738207ad7920897c20facc1daff9d521848023600b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000738207ad7920897c20facc1daff9d521848023600b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600154600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60015460405162000566919062000914565b60405180910390a3505062000931565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200060457808604811115620005dc57620005db62000576565b5b6001851615620005ec5780820291505b8081029050620005fc85620005a5565b9450620005bc565b94509492505050565b6000826200061f5760019050620006f2565b816200062f5760009050620006f2565b8160018114620006485760028114620006535762000689565b6001915050620006f2565b60ff84111562000668576200066762000576565b5b8360020a91508482111562000682576200068162000576565b5b50620006f2565b5060208310610133831016604e8410600b8410161715620006c35782820a905083811115620006bd57620006bc62000576565b5b620006f2565b620006d28484846001620005b2565b92509050818404811115620006ec57620006eb62000576565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b60006200071d82620006f9565b91506200072a8362000703565b9250620007597fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200060d565b905092915050565b60006200076e82620006f9565b91506200077b83620006f9565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620007b757620007b662000576565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620007fe82620006f9565b91506200080b83620006f9565b9250826200081e576200081d620007c2565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200085b826200082e565b9050919050565b6200086d816200084e565b81146200087957600080fd5b50565b6000815190506200088d8162000862565b92915050565b600060208284031215620008ac57620008ab62000829565b5b6000620008bc848285016200087c565b91505092915050565b620008d0816200084e565b82525050565b6000604082019050620008ed6000830185620008c5565b620008fc6020830184620008c5565b9392505050565b6200090e81620006f9565b82525050565b60006020820190506200092b600083018462000903565b92915050565b61337380620009416000396000f3fe6080604052600436106101395760003560e01c806348ff2b8b116100ab5780638c41180e1161006f5780638c41180e1461043557806395d89b411461045e578063a8aa1b3114610489578063a9059cbb146104b4578063dd62ed3e146104f1578063f2fde38b1461052e57610140565b806348ff2b8b1461034e57806370a082311461037757806378109e54146103b45780637d1db4a5146103df578063893d20e81461040a57610140565b806323b872dd116100fd57806323b872dd1461022c578063293230b8146102695780632f54bf6e14610280578063313ce567146102bd57806334c5d2ce146102e85780633f4218e01461031157610140565b8063044019301461014557806306fdde031461016e578063095ea7b31461019957806318160ddd146101d65780631f976b7e1461020157610140565b3661014057005b600080fd5b34801561015157600080fd5b5061016c60048036038101906101679190612443565b610557565b005b34801561017a57600080fd5b506101836105d9565b6040516101909190612575565b60405180910390f35b3480156101a557600080fd5b506101c060048036038101906101bb91906125f5565b610616565b6040516101cd9190612650565b60405180910390f35b3480156101e257600080fd5b506101eb61062d565b6040516101f8919061267a565b60405180910390f35b34801561020d57600080fd5b5061021661066e565b604051610223919061267a565b60405180910390f35b34801561023857600080fd5b50610253600480360381019061024e9190612695565b610697565b6040516102609190612650565b60405180910390f35b34801561027557600080fd5b5061027e610762565b005b34801561028c57600080fd5b506102a760048036038101906102a291906126e8565b6107c7565b6040516102b49190612650565b60405180910390f35b3480156102c957600080fd5b506102d2610820565b6040516102df9190612731565b60405180910390f35b3480156102f457600080fd5b5061030f600480360381019061030a919061274c565b610829565b005b34801561031d57600080fd5b50610338600480360381019061033391906126e8565b610989565b6040516103459190612650565b60405180910390f35b34801561035a57600080fd5b50610375600480360381019061037091906127cb565b6109a9565b005b34801561038357600080fd5b5061039e600480360381019061039991906126e8565b610a4c565b6040516103ab919061267a565b60405180910390f35b3480156103c057600080fd5b506103c9610a95565b6040516103d6919061267a565b60405180910390f35b3480156103eb57600080fd5b506103f4610abe565b604051610401919061267a565b60405180910390f35b34801561041657600080fd5b5061041f610ae7565b60405161042c919061281a565b60405180910390f35b34801561044157600080fd5b5061045c600480360381019061045791906127cb565b610b10565b005b34801561046a57600080fd5b50610473610bb3565b6040516104809190612575565b60405180910390f35b34801561049557600080fd5b5061049e610bf0565b6040516104ab919061281a565b60405180910390f35b3480156104c057600080fd5b506104db60048036038101906104d691906125f5565b610c16565b6040516104e89190612650565b60405180910390f35b3480156104fd57600080fd5b5061051860048036038101906105139190612835565b610c2d565b604051610525919061267a565b60405180910390f35b34801561053a57600080fd5b50610555600480360381019061055091906128b3565b610cb4565b005b610560336107c7565b61059f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105969061292c565b60405180910390fd5b86600b8190555085600c8190555084600e8190555083600d8190555082600f81905550816010819055508060118190555050505050505050565b60606040518060400160405280600681526020017f53435245414d0000000000000000000000000000000000000000000000000000815250905090565b6000610623338484610d76565b6001905092915050565b600061066961063c6000610a4c565b61065b61064a61dead610a4c565b600154610f3f90919063ffffffff16565b610f3f90919063ffffffff16565b905090565b600060125460035461067e61062d565b610688919061297b565b6106929190612a04565b905090565b60006106a4848484610f55565b61075784336107528560405180606001604052806028815260200161331660289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461114e9092919063ffffffff16565b610d76565b600190509392505050565b61076b336107c7565b6107aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a19061292c565b60405180910390fd5b6001600a60146101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b610832336107c7565b610871576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108689061292c565b60405180910390fd5b60006127108461087f61062d565b610889919061297b565b6108939190612a04565b90506000612710846108a361062d565b6108ad919061297b565b6108b79190612a04565b90506000612710846108c761062d565b6108d1919061297b565b6108db9190612a04565b905085600281905550846003819055508360048190555060006109236103e8610915600561090761062d565b6111a390919063ffffffff16565b6111b990919063ffffffff16565b90508084101580156109355750808310155b80156109415750808210155b610980576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097790612aa7565b60405180910390fd5b50505050505050565b60076020528060005260406000206000915054906101000a900460ff1681565b6109b2336107c7565b6109f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e89061292c565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000601254600454610aa561062d565b610aaf919061297b565b610ab99190612a04565b905090565b6000601254600254610ace61062d565b610ad8919061297b565b610ae29190612a04565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610b19336107c7565b610b58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4f9061292c565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60606040518060400160405280600981526020017f47484f5354464143450000000000000000000000000000000000000000000000815250905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610c23338484610f55565b6001905092915050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610cbd336107c7565b610cfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf39061292c565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051610d6b9190612b26565b60405180910390a150565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610de5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ddc90612bb3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4b90612c45565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610f32919061267a565b60405180910390a3505050565b60008183610f4d9190612c65565b905092915050565b610f608383836111cf565b610f6a8383611340565b610f7583838361143d565b610f7f838361161b565b610f8a8383836116e6565b610f95838383611925565b610fe781600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f3f90919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611036848461194e565b611040578161104c565b61104b8484846119fc565b5b90506110a081600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ba490919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611140919061267a565b60405180910390a350505050565b6000838311158290611196576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118d9190612575565b60405180910390fd5b5082840390509392505050565b600081836111b1919061297b565b905092915050565b600081836111c79190612a04565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361123e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123590612d0b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a490612d9d565b60405180910390fd5b600081116112f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e790612e2f565b60405180910390fd5b6112f983610a4c565b81111561133b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133290612ec1565b60405180910390fd5b505050565b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156113e45750600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561143957600a60149054906101000a900460ff16611438576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142f90612f2d565b60405180910390fd5b5b5050565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156114e15750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561153b5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611575575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561161657611582610a95565b6115d482600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ba490919063ffffffff16565b1115611615576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160c90612f99565b60405180910390fd5b5b505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480156116c25750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156116e2576001601460008282546116da9190612fb9565b925050819055505b5050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461182e5761174361066e565b8111158061179a5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806117ee5750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61182d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182490613039565b60405180910390fd5b5b611836610abe565b8111158061188d5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806118e15750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611920576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191790613039565b60405180910390fd5b505050565b611930838383611bba565b1561194957611940601654611cf3565b60006014819055505b505050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156119f45750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b600080611a098585611f44565b1115611b99576000611a41611a1e8686611f44565b611a33601254866111b990919063ffffffff16565b6111a390919063ffffffff16565b9050611a9581600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ba490919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611b35919061267a565b60405180910390a36000600e541115611b7e57611b7d3061dead611b78600e54611b6a601254896111b990919063ffffffff16565b6111a390919063ffffffff16565b610f55565b5b611b918184610f3f90919063ffffffff16565b915050611b9d565b8190505b9392505050565b60008183611bb29190612fb9565b905092915050565b60008060175483101590506000601654611bd330610a4c565b10159050601560009054906101000a900460ff16158015611c005750601360009054906101000a900460ff165b8015611c185750600a60149054906101000a900460ff165b8015611c215750815b8015611c775750600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611cd05750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b8015611cdf5750600260145410155b8015611ce85750805b925050509392505050565b6001601560006101000a81548160ff0219169083151502179055506000611d616002611d53600d54611d45600c54611d376001600b54611ba490919063ffffffff16565b611ba490919063ffffffff16565b611ba490919063ffffffff16565b6111a390919063ffffffff16565b90506000611d8c82611d7e600b54866111a390919063ffffffff16565b6111b990919063ffffffff16565b90506000611da38285610f3f90919063ffffffff16565b90506000479050611db3826120d3565b6000611dc88247610f3f90919063ffffffff16565b90506000611df3611de4600b5488610f3f90919063ffffffff16565b836111b990919063ffffffff16565b90506000611e0c600b54836111a390919063ffffffff16565b90506000811115611e2257611e218682612316565b5b6000611e4c600c54611e3e6002866111a390919063ffffffff16565b6111a390919063ffffffff16565b90506000811115611eb357738207ad7920897c20facc1daff9d521848023600b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611eb1573d6000803e3d6000fd5b505b60004790506000811115611f1d57738207ad7920897c20facc1daff9d521848023600b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611f1b573d6000803e3d6000fd5b505b5050505050505050506000601560006101000a81548160ff02191690831515021790555050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611fe75750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612009576120026064601254610f3f90919063ffffffff16565b90506120cd565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120685760105490506120cd565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036120c757600f5490506120cd565b60115490505b92915050565b6000600267ffffffffffffffff8111156120f0576120ef613059565b5b60405190808252806020026020018201604052801561211e5781602001602082028036833780820191505090505b509050308160008151811061213657612135613088565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121dd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061220191906130cc565b8160018151811061221557612214613088565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061227c30600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610d76565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016122e09594939291906131f2565b600060405180830381600087803b1580156122fa57600080fd5b505af115801561230e573d6000803e3d6000fd5b505050505050565b61234330600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610d76565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080738207ad7920897c20facc1daff9d521848023600b426040518863ffffffff1660e01b81526004016123be9695949392919061324c565b60606040518083038185885af11580156123dc573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061240191906132c2565b5050505050565b600080fd5b6000819050919050565b6124208161240d565b811461242b57600080fd5b50565b60008135905061243d81612417565b92915050565b600080600080600080600060e0888a03121561246257612461612408565b5b60006124708a828b0161242e565b97505060206124818a828b0161242e565b96505060406124928a828b0161242e565b95505060606124a38a828b0161242e565b94505060806124b48a828b0161242e565b93505060a06124c58a828b0161242e565b92505060c06124d68a828b0161242e565b91505092959891949750929550565b600081519050919050565b600082825260208201905092915050565b60005b8381101561251f578082015181840152602081019050612504565b60008484015250505050565b6000601f19601f8301169050919050565b6000612547826124e5565b61255181856124f0565b9350612561818560208601612501565b61256a8161252b565b840191505092915050565b6000602082019050818103600083015261258f818461253c565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006125c282612597565b9050919050565b6125d2816125b7565b81146125dd57600080fd5b50565b6000813590506125ef816125c9565b92915050565b6000806040838503121561260c5761260b612408565b5b600061261a858286016125e0565b925050602061262b8582860161242e565b9150509250929050565b60008115159050919050565b61264a81612635565b82525050565b60006020820190506126656000830184612641565b92915050565b6126748161240d565b82525050565b600060208201905061268f600083018461266b565b92915050565b6000806000606084860312156126ae576126ad612408565b5b60006126bc868287016125e0565b93505060206126cd868287016125e0565b92505060406126de8682870161242e565b9150509250925092565b6000602082840312156126fe576126fd612408565b5b600061270c848285016125e0565b91505092915050565b600060ff82169050919050565b61272b81612715565b82525050565b60006020820190506127466000830184612722565b92915050565b60008060006060848603121561276557612764612408565b5b60006127738682870161242e565b93505060206127848682870161242e565b92505060406127958682870161242e565b9150509250925092565b6127a881612635565b81146127b357600080fd5b50565b6000813590506127c58161279f565b92915050565b600080604083850312156127e2576127e1612408565b5b60006127f0858286016125e0565b9250506020612801858286016127b6565b9150509250929050565b612814816125b7565b82525050565b600060208201905061282f600083018461280b565b92915050565b6000806040838503121561284c5761284b612408565b5b600061285a858286016125e0565b925050602061286b858286016125e0565b9150509250929050565b600061288082612597565b9050919050565b61289081612875565b811461289b57600080fd5b50565b6000813590506128ad81612887565b92915050565b6000602082840312156128c9576128c8612408565b5b60006128d78482850161289e565b91505092915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b60006129166006836124f0565b9150612921826128e0565b602082019050919050565b6000602082019050818103600083015261294581612909565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006129868261240d565b91506129918361240d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156129ca576129c961294c565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612a0f8261240d565b9150612a1a8361240d565b925082612a2a57612a296129d5565b5b828204905092915050565b7f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560008201527f206c657373207468616e202e3525000000000000000000000000000000000000602082015250565b6000612a91602e836124f0565b9150612a9c82612a35565b604082019050919050565b60006020820190508181036000830152612ac081612a84565b9050919050565b6000819050919050565b6000612aec612ae7612ae284612597565b612ac7565b612597565b9050919050565b6000612afe82612ad1565b9050919050565b6000612b1082612af3565b9050919050565b612b2081612b05565b82525050565b6000602082019050612b3b6000830184612b17565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612b9d6024836124f0565b9150612ba882612b41565b604082019050919050565b60006020820190508181036000830152612bcc81612b90565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612c2f6022836124f0565b9150612c3a82612bd3565b604082019050919050565b60006020820190508181036000830152612c5e81612c22565b9050919050565b6000612c708261240d565b9150612c7b8361240d565b9250828203905081811115612c9357612c9261294c565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612cf56025836124f0565b9150612d0082612c99565b604082019050919050565b60006020820190508181036000830152612d2481612ce8565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612d876023836124f0565b9150612d9282612d2b565b604082019050919050565b60006020820190508181036000830152612db681612d7a565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612e196029836124f0565b9150612e2482612dbd565b604082019050919050565b60006020820190508181036000830152612e4881612e0c565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b6000612eab6031836124f0565b9150612eb682612e4f565b604082019050919050565b60006020820190508181036000830152612eda81612e9e565b9050919050565b7f74726164696e67416c6c6f776564000000000000000000000000000000000000600082015250565b6000612f17600e836124f0565b9150612f2282612ee1565b602082019050919050565b60006020820190508181036000830152612f4681612f0a565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000600082015250565b6000612f83601e836124f0565b9150612f8e82612f4d565b602082019050919050565b60006020820190508181036000830152612fb281612f76565b9050919050565b6000612fc48261240d565b9150612fcf8361240d565b9250828201905080821115612fe757612fe661294c565b5b92915050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b60006130236011836124f0565b915061302e82612fed565b602082019050919050565b6000602082019050818103600083015261305281613016565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506130c6816125c9565b92915050565b6000602082840312156130e2576130e1612408565b5b60006130f0848285016130b7565b91505092915050565b6000819050919050565b600061311e613119613114846130f9565b612ac7565b61240d565b9050919050565b61312e81613103565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613169816125b7565b82525050565b600061317b8383613160565b60208301905092915050565b6000602082019050919050565b600061319f82613134565b6131a9818561313f565b93506131b483613150565b8060005b838110156131e55781516131cc888261316f565b97506131d783613187565b9250506001810190506131b8565b5085935050505092915050565b600060a082019050613207600083018861266b565b6132146020830187613125565b81810360408301526132268186613194565b9050613235606083018561280b565b613242608083018461266b565b9695505050505050565b600060c082019050613261600083018961280b565b61326e602083018861266b565b61327b6040830187613125565b6132886060830186613125565b613295608083018561280b565b6132a260a083018461266b565b979650505050505050565b6000815190506132bc81612417565b92915050565b6000806000606084860312156132db576132da612408565b5b60006132e9868287016132ad565b93505060206132fa868287016132ad565b925050604061330b868287016132ad565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220062fb4ac45e6e9739866da0adee49cad37defa81c2229ae6ae04cf2397cd62fc64736f6c63430008100033

Deployed Bytecode

0x6080604052600436106101395760003560e01c806348ff2b8b116100ab5780638c41180e1161006f5780638c41180e1461043557806395d89b411461045e578063a8aa1b3114610489578063a9059cbb146104b4578063dd62ed3e146104f1578063f2fde38b1461052e57610140565b806348ff2b8b1461034e57806370a082311461037757806378109e54146103b45780637d1db4a5146103df578063893d20e81461040a57610140565b806323b872dd116100fd57806323b872dd1461022c578063293230b8146102695780632f54bf6e14610280578063313ce567146102bd57806334c5d2ce146102e85780633f4218e01461031157610140565b8063044019301461014557806306fdde031461016e578063095ea7b31461019957806318160ddd146101d65780631f976b7e1461020157610140565b3661014057005b600080fd5b34801561015157600080fd5b5061016c60048036038101906101679190612443565b610557565b005b34801561017a57600080fd5b506101836105d9565b6040516101909190612575565b60405180910390f35b3480156101a557600080fd5b506101c060048036038101906101bb91906125f5565b610616565b6040516101cd9190612650565b60405180910390f35b3480156101e257600080fd5b506101eb61062d565b6040516101f8919061267a565b60405180910390f35b34801561020d57600080fd5b5061021661066e565b604051610223919061267a565b60405180910390f35b34801561023857600080fd5b50610253600480360381019061024e9190612695565b610697565b6040516102609190612650565b60405180910390f35b34801561027557600080fd5b5061027e610762565b005b34801561028c57600080fd5b506102a760048036038101906102a291906126e8565b6107c7565b6040516102b49190612650565b60405180910390f35b3480156102c957600080fd5b506102d2610820565b6040516102df9190612731565b60405180910390f35b3480156102f457600080fd5b5061030f600480360381019061030a919061274c565b610829565b005b34801561031d57600080fd5b50610338600480360381019061033391906126e8565b610989565b6040516103459190612650565b60405180910390f35b34801561035a57600080fd5b50610375600480360381019061037091906127cb565b6109a9565b005b34801561038357600080fd5b5061039e600480360381019061039991906126e8565b610a4c565b6040516103ab919061267a565b60405180910390f35b3480156103c057600080fd5b506103c9610a95565b6040516103d6919061267a565b60405180910390f35b3480156103eb57600080fd5b506103f4610abe565b604051610401919061267a565b60405180910390f35b34801561041657600080fd5b5061041f610ae7565b60405161042c919061281a565b60405180910390f35b34801561044157600080fd5b5061045c600480360381019061045791906127cb565b610b10565b005b34801561046a57600080fd5b50610473610bb3565b6040516104809190612575565b60405180910390f35b34801561049557600080fd5b5061049e610bf0565b6040516104ab919061281a565b60405180910390f35b3480156104c057600080fd5b506104db60048036038101906104d691906125f5565b610c16565b6040516104e89190612650565b60405180910390f35b3480156104fd57600080fd5b5061051860048036038101906105139190612835565b610c2d565b604051610525919061267a565b60405180910390f35b34801561053a57600080fd5b50610555600480360381019061055091906128b3565b610cb4565b005b610560336107c7565b61059f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105969061292c565b60405180910390fd5b86600b8190555085600c8190555084600e8190555083600d8190555082600f81905550816010819055508060118190555050505050505050565b60606040518060400160405280600681526020017f53435245414d0000000000000000000000000000000000000000000000000000815250905090565b6000610623338484610d76565b6001905092915050565b600061066961063c6000610a4c565b61065b61064a61dead610a4c565b600154610f3f90919063ffffffff16565b610f3f90919063ffffffff16565b905090565b600060125460035461067e61062d565b610688919061297b565b6106929190612a04565b905090565b60006106a4848484610f55565b61075784336107528560405180606001604052806028815260200161331660289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461114e9092919063ffffffff16565b610d76565b600190509392505050565b61076b336107c7565b6107aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a19061292c565b60405180910390fd5b6001600a60146101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b610832336107c7565b610871576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108689061292c565b60405180910390fd5b60006127108461087f61062d565b610889919061297b565b6108939190612a04565b90506000612710846108a361062d565b6108ad919061297b565b6108b79190612a04565b90506000612710846108c761062d565b6108d1919061297b565b6108db9190612a04565b905085600281905550846003819055508360048190555060006109236103e8610915600561090761062d565b6111a390919063ffffffff16565b6111b990919063ffffffff16565b90508084101580156109355750808310155b80156109415750808210155b610980576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097790612aa7565b60405180910390fd5b50505050505050565b60076020528060005260406000206000915054906101000a900460ff1681565b6109b2336107c7565b6109f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e89061292c565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000601254600454610aa561062d565b610aaf919061297b565b610ab99190612a04565b905090565b6000601254600254610ace61062d565b610ad8919061297b565b610ae29190612a04565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610b19336107c7565b610b58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4f9061292c565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60606040518060400160405280600981526020017f47484f5354464143450000000000000000000000000000000000000000000000815250905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610c23338484610f55565b6001905092915050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610cbd336107c7565b610cfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf39061292c565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051610d6b9190612b26565b60405180910390a150565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610de5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ddc90612bb3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4b90612c45565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610f32919061267a565b60405180910390a3505050565b60008183610f4d9190612c65565b905092915050565b610f608383836111cf565b610f6a8383611340565b610f7583838361143d565b610f7f838361161b565b610f8a8383836116e6565b610f95838383611925565b610fe781600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f3f90919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611036848461194e565b611040578161104c565b61104b8484846119fc565b5b90506110a081600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ba490919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611140919061267a565b60405180910390a350505050565b6000838311158290611196576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118d9190612575565b60405180910390fd5b5082840390509392505050565b600081836111b1919061297b565b905092915050565b600081836111c79190612a04565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361123e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123590612d0b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a490612d9d565b60405180910390fd5b600081116112f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e790612e2f565b60405180910390fd5b6112f983610a4c565b81111561133b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133290612ec1565b60405180910390fd5b505050565b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156113e45750600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561143957600a60149054906101000a900460ff16611438576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142f90612f2d565b60405180910390fd5b5b5050565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156114e15750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561153b5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611575575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561161657611582610a95565b6115d482600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ba490919063ffffffff16565b1115611615576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160c90612f99565b60405180910390fd5b5b505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480156116c25750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156116e2576001601460008282546116da9190612fb9565b925050819055505b5050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461182e5761174361066e565b8111158061179a5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806117ee5750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61182d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182490613039565b60405180910390fd5b5b611836610abe565b8111158061188d5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806118e15750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611920576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191790613039565b60405180910390fd5b505050565b611930838383611bba565b1561194957611940601654611cf3565b60006014819055505b505050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156119f45750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b600080611a098585611f44565b1115611b99576000611a41611a1e8686611f44565b611a33601254866111b990919063ffffffff16565b6111a390919063ffffffff16565b9050611a9581600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ba490919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611b35919061267a565b60405180910390a36000600e541115611b7e57611b7d3061dead611b78600e54611b6a601254896111b990919063ffffffff16565b6111a390919063ffffffff16565b610f55565b5b611b918184610f3f90919063ffffffff16565b915050611b9d565b8190505b9392505050565b60008183611bb29190612fb9565b905092915050565b60008060175483101590506000601654611bd330610a4c565b10159050601560009054906101000a900460ff16158015611c005750601360009054906101000a900460ff165b8015611c185750600a60149054906101000a900460ff165b8015611c215750815b8015611c775750600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611cd05750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b8015611cdf5750600260145410155b8015611ce85750805b925050509392505050565b6001601560006101000a81548160ff0219169083151502179055506000611d616002611d53600d54611d45600c54611d376001600b54611ba490919063ffffffff16565b611ba490919063ffffffff16565b611ba490919063ffffffff16565b6111a390919063ffffffff16565b90506000611d8c82611d7e600b54866111a390919063ffffffff16565b6111b990919063ffffffff16565b90506000611da38285610f3f90919063ffffffff16565b90506000479050611db3826120d3565b6000611dc88247610f3f90919063ffffffff16565b90506000611df3611de4600b5488610f3f90919063ffffffff16565b836111b990919063ffffffff16565b90506000611e0c600b54836111a390919063ffffffff16565b90506000811115611e2257611e218682612316565b5b6000611e4c600c54611e3e6002866111a390919063ffffffff16565b6111a390919063ffffffff16565b90506000811115611eb357738207ad7920897c20facc1daff9d521848023600b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611eb1573d6000803e3d6000fd5b505b60004790506000811115611f1d57738207ad7920897c20facc1daff9d521848023600b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611f1b573d6000803e3d6000fd5b505b5050505050505050506000601560006101000a81548160ff02191690831515021790555050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611fe75750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612009576120026064601254610f3f90919063ffffffff16565b90506120cd565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120685760105490506120cd565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036120c757600f5490506120cd565b60115490505b92915050565b6000600267ffffffffffffffff8111156120f0576120ef613059565b5b60405190808252806020026020018201604052801561211e5781602001602082028036833780820191505090505b509050308160008151811061213657612135613088565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121dd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061220191906130cc565b8160018151811061221557612214613088565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061227c30600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610d76565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016122e09594939291906131f2565b600060405180830381600087803b1580156122fa57600080fd5b505af115801561230e573d6000803e3d6000fd5b505050505050565b61234330600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610d76565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080738207ad7920897c20facc1daff9d521848023600b426040518863ffffffff1660e01b81526004016123be9695949392919061324c565b60606040518083038185885af11580156123dc573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061240191906132c2565b5050505050565b600080fd5b6000819050919050565b6124208161240d565b811461242b57600080fd5b50565b60008135905061243d81612417565b92915050565b600080600080600080600060e0888a03121561246257612461612408565b5b60006124708a828b0161242e565b97505060206124818a828b0161242e565b96505060406124928a828b0161242e565b95505060606124a38a828b0161242e565b94505060806124b48a828b0161242e565b93505060a06124c58a828b0161242e565b92505060c06124d68a828b0161242e565b91505092959891949750929550565b600081519050919050565b600082825260208201905092915050565b60005b8381101561251f578082015181840152602081019050612504565b60008484015250505050565b6000601f19601f8301169050919050565b6000612547826124e5565b61255181856124f0565b9350612561818560208601612501565b61256a8161252b565b840191505092915050565b6000602082019050818103600083015261258f818461253c565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006125c282612597565b9050919050565b6125d2816125b7565b81146125dd57600080fd5b50565b6000813590506125ef816125c9565b92915050565b6000806040838503121561260c5761260b612408565b5b600061261a858286016125e0565b925050602061262b8582860161242e565b9150509250929050565b60008115159050919050565b61264a81612635565b82525050565b60006020820190506126656000830184612641565b92915050565b6126748161240d565b82525050565b600060208201905061268f600083018461266b565b92915050565b6000806000606084860312156126ae576126ad612408565b5b60006126bc868287016125e0565b93505060206126cd868287016125e0565b92505060406126de8682870161242e565b9150509250925092565b6000602082840312156126fe576126fd612408565b5b600061270c848285016125e0565b91505092915050565b600060ff82169050919050565b61272b81612715565b82525050565b60006020820190506127466000830184612722565b92915050565b60008060006060848603121561276557612764612408565b5b60006127738682870161242e565b93505060206127848682870161242e565b92505060406127958682870161242e565b9150509250925092565b6127a881612635565b81146127b357600080fd5b50565b6000813590506127c58161279f565b92915050565b600080604083850312156127e2576127e1612408565b5b60006127f0858286016125e0565b9250506020612801858286016127b6565b9150509250929050565b612814816125b7565b82525050565b600060208201905061282f600083018461280b565b92915050565b6000806040838503121561284c5761284b612408565b5b600061285a858286016125e0565b925050602061286b858286016125e0565b9150509250929050565b600061288082612597565b9050919050565b61289081612875565b811461289b57600080fd5b50565b6000813590506128ad81612887565b92915050565b6000602082840312156128c9576128c8612408565b5b60006128d78482850161289e565b91505092915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b60006129166006836124f0565b9150612921826128e0565b602082019050919050565b6000602082019050818103600083015261294581612909565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006129868261240d565b91506129918361240d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156129ca576129c961294c565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612a0f8261240d565b9150612a1a8361240d565b925082612a2a57612a296129d5565b5b828204905092915050565b7f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560008201527f206c657373207468616e202e3525000000000000000000000000000000000000602082015250565b6000612a91602e836124f0565b9150612a9c82612a35565b604082019050919050565b60006020820190508181036000830152612ac081612a84565b9050919050565b6000819050919050565b6000612aec612ae7612ae284612597565b612ac7565b612597565b9050919050565b6000612afe82612ad1565b9050919050565b6000612b1082612af3565b9050919050565b612b2081612b05565b82525050565b6000602082019050612b3b6000830184612b17565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612b9d6024836124f0565b9150612ba882612b41565b604082019050919050565b60006020820190508181036000830152612bcc81612b90565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612c2f6022836124f0565b9150612c3a82612bd3565b604082019050919050565b60006020820190508181036000830152612c5e81612c22565b9050919050565b6000612c708261240d565b9150612c7b8361240d565b9250828203905081811115612c9357612c9261294c565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612cf56025836124f0565b9150612d0082612c99565b604082019050919050565b60006020820190508181036000830152612d2481612ce8565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612d876023836124f0565b9150612d9282612d2b565b604082019050919050565b60006020820190508181036000830152612db681612d7a565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612e196029836124f0565b9150612e2482612dbd565b604082019050919050565b60006020820190508181036000830152612e4881612e0c565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b6000612eab6031836124f0565b9150612eb682612e4f565b604082019050919050565b60006020820190508181036000830152612eda81612e9e565b9050919050565b7f74726164696e67416c6c6f776564000000000000000000000000000000000000600082015250565b6000612f17600e836124f0565b9150612f2282612ee1565b602082019050919050565b60006020820190508181036000830152612f4681612f0a565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000600082015250565b6000612f83601e836124f0565b9150612f8e82612f4d565b602082019050919050565b60006020820190508181036000830152612fb281612f76565b9050919050565b6000612fc48261240d565b9150612fcf8361240d565b9250828201905080821115612fe757612fe661294c565b5b92915050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b60006130236011836124f0565b915061302e82612fed565b602082019050919050565b6000602082019050818103600083015261305281613016565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506130c6816125c9565b92915050565b6000602082840312156130e2576130e1612408565b5b60006130f0848285016130b7565b91505092915050565b6000819050919050565b600061311e613119613114846130f9565b612ac7565b61240d565b9050919050565b61312e81613103565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613169816125b7565b82525050565b600061317b8383613160565b60208301905092915050565b6000602082019050919050565b600061319f82613134565b6131a9818561313f565b93506131b483613150565b8060005b838110156131e55781516131cc888261316f565b97506131d783613187565b9250506001810190506131b8565b5085935050505092915050565b600060a082019050613207600083018861266b565b6132146020830187613125565b81810360408301526132268186613194565b9050613235606083018561280b565b613242608083018461266b565b9695505050505050565b600060c082019050613261600083018961280b565b61326e602083018861266b565b61327b6040830187613125565b6132886060830186613125565b613295608083018561280b565b6132a260a083018461266b565b979650505050505050565b6000815190506132bc81612417565b92915050565b6000806000606084860312156132db576132da612408565b5b60006132e9868287016132ad565b93505060206132fa868287016132ad565b925050604061330b868287016132ad565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220062fb4ac45e6e9739866da0adee49cad37defa81c2229ae6ae04cf2397cd62fc64736f6c63430008100033

Deployed Bytecode Sourcemap

6926:13675:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12886:466;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9358:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10799:191;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10998:148;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11433:137;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19779:442;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9635:83;;;;;;;;;;;;;:::i;:::-;;5053:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9544:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13360:655;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7479:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10667:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9826:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11154:132;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11294:131;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9726:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10544:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9449:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7595:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9953:197;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10158:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5164:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12886:466;4995:19;5003:10;4995:7;:19::i;:::-;4987:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;13147:10:::1;13132:12;:25;;;;13183:10;13168:12;:25;;;;13214:5;13204:7;:15;;;;13247:12;13230:14;:29;;;;13281:6;13270:8;:17;;;;13308:5;13298:7;:15;;;;13338:6;13324:11;:20;;;;12886:466:::0;;;;;;;:::o;9358:83::-;9395:13;9428:5;;;;;;;;;;;;;;;;;9421:12;;9358:83;:::o;10799:191::-;10901:4;10923:37;10932:10;10944:7;10953:6;10923:8;:37::i;:::-;10978:4;10971:11;;10799:191;;;;:::o;10998:148::-;11051:7;11078:60;11116:21;11134:1;11116:9;:21::i;:::-;11078:33;11095:15;8348:42;11095:9;:15::i;:::-;11078:12;;:16;;:33;;;;:::i;:::-;:37;;:60;;;;:::i;:::-;11071:67;;10998:148;:::o;11433:137::-;11484:7;11551:11;;11528:19;;11512:13;:11;:13::i;:::-;:35;;;;:::i;:::-;11511:51;;;;:::i;:::-;11504:58;;11433:137;:::o;19779:442::-;19911:4;19928:36;19938:6;19946:9;19957:6;19928:9;:36::i;:::-;19975:216;19998:6;20019:10;20044:136;20098:6;20044:136;;;;;;;;;;;;;;;;;:11;:19;20056:6;20044:19;;;;;;;;;;;;;;;:31;20064:10;20044:31;;;;;;;;;;;;;;;;:35;;:136;;;;;:::i;:::-;19975:8;:216::i;:::-;20209:4;20202:11;;19779:442;;;;;:::o;9635:83::-;4995:19;5003:10;4995:7;:19::i;:::-;4987:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;9706:4:::1;9689:14;;:21;;;;;;;;;;;;;;;;;;9635:83::o:0;5053:103::-;5108:4;5143:5;;;;;;;;;;;5132:16;;:7;:16;;;5125:23;;5053:103;;;:::o;9544:83::-;9585:5;7138:1;9603:16;;9544:83;:::o;13360:655::-;4995:19;5003:10;4995:7;:19::i;:::-;4987:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;13494:13:::1;13535:5;13527:4;13511:13;:11;:13::i;:::-;:20;;;;:::i;:::-;13510:30;;;;:::i;:::-;13494:46;;13551:19;13600:5;13590:6;13574:13;:11;:13::i;:::-;:22;;;;:::i;:::-;13573:32;;;;:::i;:::-;13551:54;;13616:17;13664:5;13653:7;13637:13;:11;:13::i;:::-;:23;;;;:::i;:::-;13636:33;;;;:::i;:::-;13616:53;;13702:4;13680:19;:26;;;;13739:6;13717:19;:28;;;;13776:7;13756:17;:27;;;;13794:13;13810:30;13835:4;13810:20;13828:1;13810:13;:11;:13::i;:::-;:17;;:20;;;;:::i;:::-;:24;;:30;;;;:::i;:::-;13794:46;;13882:5;13873;:14;;:38;;;;;13906:5;13891:11;:20;;13873:38;:60;;;;;13928:5;13915:9;:18;;13873:60;13851:156;;;;;;;;;;;;:::i;:::-;;;;;;;;;13483:532;;;;13360:655:::0;;;:::o;7479:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;10667:124::-;4995:19;5003:10;4995:7;:19::i;:::-;4987:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10775:8:::1;10751:11;:21;10763:8;10751:21;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;10667:124:::0;;:::o;9826:119::-;9892:7;9919:9;:18;9929:7;9919:18;;;;;;;;;;;;;;;;9912:25;;9826:119;;;:::o;11154:132::-;11202:7;11267:11;;11246:17;;11230:13;:11;:13::i;:::-;:33;;;;:::i;:::-;11229:49;;;;:::i;:::-;11222:56;;11154:132;:::o;11294:131::-;11339:7;11406:11;;11383:19;;11367:13;:11;:13::i;:::-;:35;;;;:::i;:::-;11366:51;;;;:::i;:::-;11359:58;;11294:131;:::o;9726:92::-;9778:7;9805:5;;;;;;;;;;;9798:12;;9726:92;:::o;10544:115::-;4995:19;5003:10;4995:7;:19::i;:::-;4987:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10643:8:::1;10625:5;:15;10631:8;10625:15;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;10544:115:::0;;:::o;9449:87::-;9488:13;9521:7;;;;;;;;;;;;;;;;;9514:14;;9449:87;:::o;7595:19::-;;;;;;;;;;;;;:::o;9953:197::-;10058:4;10080:40;10090:10;10102:9;10113:6;10080:9;:40::i;:::-;10138:4;10131:11;;9953:197;;;;:::o;10158:184::-;10275:7;10307:11;:18;10319:5;10307:18;;;;;;;;;;;;;;;:27;10326:7;10307:27;;;;;;;;;;;;;;;;10300:34;;10158:184;;;;:::o;5164:136::-;4995:19;5003:10;4995:7;:19::i;:::-;4987:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;5248:3:::1;5240:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;5267:25;5288:3;5267:25;;;;;;:::i;:::-;;;;;;;;5164:136:::0;:::o;20229:369::-;20373:1;20356:19;;:5;:19;;;20348:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20454:1;20435:21;;:7;:21;;;20427:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20536:6;20506:11;:18;20518:5;20506:18;;;;;;;;;;;;;;;:27;20525:7;20506:27;;;;;;;;;;;;;;;:36;;;;20574:7;20558:32;;20567:5;20558:32;;;20583:6;20558:32;;;;;;:::i;:::-;;;;;;;;20229:369;;;:::o;1334:98::-;1392:7;1423:1;1419;:5;;;;:::i;:::-;1412:12;;1334:98;;;;:::o;12134:744::-;12257:37;12268:6;12276:9;12287:6;12257:10;:37::i;:::-;12305:38;12325:6;12333:9;12305:19;:38::i;:::-;12354:41;12369:6;12377:9;12388:6;12354:14;:41::i;:::-;12406:35;12423:6;12431:9;12406:16;:35::i;:::-;12452:39;12465:6;12473:9;12484:6;12452:12;:39::i;:::-;12502:35;12511:6;12519:9;12530:6;12502:8;:35::i;:::-;12568:29;12590:6;12568:9;:17;12578:6;12568:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;12548:9;:17;12558:6;12548:17;;;;;;;;;;;;;;;:49;;;;12608:22;12633:32;12647:6;12655:9;12633:13;:32::i;:::-;:104;;12731:6;12633:104;;;12681:34;12689:6;12697:9;12708:6;12681:7;:34::i;:::-;12633:104;12608:129;;12771:40;12796:14;12771:9;:20;12781:9;12771:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;12748:9;:20;12758:9;12748:20;;;;;;;;;;;;;;;:63;;;;12844:9;12827:43;;12836:6;12827:43;;;12855:14;12827:43;;;;;;:::i;:::-;;;;;;;;12246:632;12134:744;;;:::o;3034:240::-;3154:7;3212:1;3207;:6;;3215:12;3199:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3254:1;3250;:5;3243:12;;3034:240;;;;;:::o;1440:98::-;1498:7;1529:1;1525;:5;;;;:::i;:::-;1518:12;;1440:98;;;;:::o;1546:::-;1604:7;1635:1;1631;:5;;;;:::i;:::-;1624:12;;1546:98;;;;:::o;11578:548::-;11734:1;11716:20;;:6;:20;;;11708:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;11818:1;11797:23;;:9;:23;;;11789:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;11910:1;11893:6;:19;11871:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;12024:17;12034:6;12024:9;:17::i;:::-;12014:6;:27;;11992:126;;;;;;;;;;;;:::i;:::-;;;;;;;;;11578:548;;;:::o;14023:240::-;14140:11;:19;14152:6;14140:19;;;;;;;;;;;;;;;;;;;;;;;;;14139:20;:47;;;;;14164:11;:22;14176:9;14164:22;;;;;;;;;;;;;;;;;;;;;;;;;14163:23;14139:47;14135:121;;;14211:14;;;;;;;;;;;14203:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;14135:121;14023:240;;:::o;14271:491::-;14424:11;:19;14436:6;14424:19;;;;;;;;;;;;;;;;;;;;;;;;;14423:20;:60;;;;;14461:11;:22;14473:9;14461:22;;;;;;;;;;;;;;;;;;;;;;;;;14460:23;14423:60;:103;;;;;14521:4;;;;;;;;;;;14500:26;;:9;:26;;;;14423:103;:146;;;;;8348:42;14543:26;;:9;:26;;;;14423:146;14405:350;;;14660:17;:15;:17::i;:::-;14623:32;14648:6;14623:9;:20;14633:9;14623:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;14622:55;;14596:147;;;;;;;;;;;;:::i;:::-;;;;;;;;;14405:350;14271:491;;;:::o;14770:185::-;14868:4;;;;;;;;;;;14855:17;;:9;:17;;;:41;;;;;14877:11;:19;14889:6;14877:19;;;;;;;;;;;;;;;;;;;;;;;;;14876:20;14855:41;14851:97;;;14934:1;14913:9;;:23;;;;;;;:::i;:::-;;;;;;;;14851:97;14770:185;;:::o;14963:571::-;15109:4;;;;;;;;;;;15099:14;;:6;:14;;;15095:247;;15166:20;:18;:20::i;:::-;15156:6;:30;;:74;;;;15211:11;:19;15223:6;15211:19;;;;;;;;;;;;;;;;;;;;;;;;;15156:74;:121;;;;15255:11;:22;15267:9;15255:22;;;;;;;;;;;;;;;;;;;;;;;;;15156:121;15130:200;;;;;;;;;;;;:::i;:::-;;;;;;;;;15095:247;15384:14;:12;:14::i;:::-;15374:6;:24;;:64;;;;15419:11;:19;15431:6;15419:19;;;;;;;;;;;;;;;;;;;;;;;;;15374:64;:107;;;;15459:11;:22;15471:9;15459:22;;;;;;;;;;;;;;;;;;;;;;;;;15374:107;15352:174;;;;;;;;;;;;:::i;:::-;;;;;;;;;14963:571;;;:::o;18101:270::-;18228:41;18243:6;18251:9;18262:6;18228:14;:41::i;:::-;18224:140;;;18286:29;18301:13;;18286:14;:29::i;:::-;18350:1;18330:9;:22;;;;18224:140;18101:270;;;:::o;18379:192::-;18487:4;18517:11;:19;18529:6;18517:19;;;;;;;;;;;;;;;;;;;;;;;;;18516:20;:47;;;;;18541:11;:22;18553:9;18541:22;;;;;;;;;;;;;;;;;;;;;;;;;18540:23;18516:47;18509:54;;18379:192;;;;:::o;19002:769::-;19122:7;19179:1;19146:30;19158:6;19166:9;19146:11;:30::i;:::-;:34;19142:598;;;19197:17;19217:91;19263:30;19275:6;19283:9;19263:11;:30::i;:::-;19217:23;19228:11;;19217:6;:10;;:23;;;;:::i;:::-;:27;;:91;;;;:::i;:::-;19197:111;;19350:39;19379:9;19350;:24;19368:4;19350:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;19323:9;:24;19341:4;19323:24;;;;;;;;;;;;;;;:66;;;;19434:4;19409:42;;19418:6;19409:42;;;19441:9;19409:42;;;;;;:::i;:::-;;;;;;;;19488:1;19470:7;;:20;19466:220;;;19511:159;19551:4;8348:42;19615:36;19643:7;;19615:23;19626:11;;19615:6;:10;;:23;;;;:::i;:::-;:27;;:36;;;;:::i;:::-;19511:9;:159::i;:::-;19466:220;19707:21;19718:9;19707:6;:10;;:21;;;;:::i;:::-;19700:28;;;;;19142:598;19757:6;19750:13;;19002:769;;;;;;:::o;1228:98::-;1286:7;1317:1;1313;:5;;;;:::i;:::-;1306:12;;1228:98;;;;:::o;17555:538::-;17687:4;17704:13;17730:15;;17720:6;:25;;17704:41;;17756:19;17806:13;;17778:24;17796:4;17778:9;:24::i;:::-;:41;;17756:63;;17851:8;;;;;;;;;;;17850:9;:37;;;;;17876:11;;;;;;;;;;;17850:37;:68;;;;;17904:14;;;;;;;;;;;17850:68;:93;;;;;17935:8;17850:93;:130;;;;;17961:11;:19;17973:6;17961:19;;;;;;;;;;;;;;;;;;;;;;;;;17960:20;17850:130;:164;;;;;18010:4;;;;;;;;;;;17997:17;;:9;:17;;;17850:164;:204;;;;;18052:1;18031:9;;:23;;17850:204;:235;;;;;18071:14;17850:235;17830:255;;;;17555:538;;;;;:::o;15542:1192::-;8256:4;8245:8;;:15;;;;;;;;;;;;;;;;;;15613:20:::1;15636:90;15724:1;15651:57;15693:14;;15651:37;15675:12;;15651:19;15668:1;15651:12;;:16;;:19;;;;:::i;:::-;:23;;:37;;;;:::i;:::-;:41;;:57;;;;:::i;:::-;15636:87;;:90;;;;:::i;:::-;15613:113;;15737:32;15772:66;15815:12;15772:24;15783:12;;15772:6;:10;;:24;;;;:::i;:::-;:28;;:66;;;;:::i;:::-;15737:101;;15849:14;15866:36;15877:24;15866:6;:10;;:36;;;;:::i;:::-;15849:53;;15913:22;15938:21;15913:46;;15970:24;15987:6;15970:16;:24::i;:::-;16005:20;16028:41;16054:14;16028:21;:25;;:41;;;;:::i;:::-;16005:64;;16080:19;16102:48;16119:30;16136:12;;16119;:16;;:30;;;;:::i;:::-;16102:12;:16;;:48;;;;:::i;:::-;16080:70;;16161:29;16193;16209:12;;16193:11;:15;;:29;;;;:::i;:::-;16161:61;;16269:1;16237:21;:34;16233:128;;;16288:61;16301:24;16327:21;16288:12;:61::i;:::-;16233:128;16371:20;16394:36;16417:12;;16394:18;16410:1;16394:11;:15;;:18;;;;:::i;:::-;:22;;:36;;;;:::i;:::-;16371:59;;16460:1;16445:12;:16;16441:99;;;8560:42;16478:36;;:50;16515:12;16478:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;16441:99;16550:24;16577:21;16550:48;;16640:1;16613:16;:29;16609:118;;;8455:42;16659:38;;:56;16698:16;16659:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;16609:118;15602:1132;;;;;;;;;8294:5:::0;8283:8;;:16;;;;;;;;;;;;;;;;;;15542:1192;:::o;18579:415::-;18685:7;18714:5;:13;18720:6;18714:13;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;;18731:5;:16;18737:9;18731:16;;;;;;;;;;;;;;;;;;;;;;;;;18714:33;18710:102;;;18771:29;18795:3;18771:11;;:15;;:29;;;;:::i;:::-;18764:36;;;;18710:102;18839:4;;;;;;;;;;;18826:17;;:9;:17;;;18822:64;;18867:7;;18860:14;;;;18822:64;18910:4;;;;;;;;;;;18900:14;;:6;:14;;;18896:62;;18938:8;;18931:15;;;;18896:62;18975:11;;18968:18;;18579:415;;;;;:::o;17103:444::-;17169:21;17207:1;17193:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17169:40;;17238:4;17220;17225:1;17220:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;17264:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17254:4;17259:1;17254:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;17288:53;17305:4;17320:6;;;;;;;;;;;17329:11;17288:8;:53::i;:::-;17352:6;;;;;;;;;;;:57;;;17424:11;17450:1;17466:4;17493;17513:15;17352:187;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17158:389;17103:444;:::o;16742:353::-;16823:53;16840:4;16855:6;;;;;;;;;;;16864:11;16823:8;:53::i;:::-;16887:6;;;;;;;;;;;:22;;;16917:9;16950:4;16970:11;16996:1;17012;8665:42;17061:15;16887:200;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;16742:353;;:::o;88:117:1:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:1203::-;803:6;811;819;827;835;843;851;900:3;888:9;879:7;875:23;871:33;868:120;;;907:79;;:::i;:::-;868:120;1027:1;1052:53;1097:7;1088:6;1077:9;1073:22;1052:53;:::i;:::-;1042:63;;998:117;1154:2;1180:53;1225:7;1216:6;1205:9;1201:22;1180:53;:::i;:::-;1170:63;;1125:118;1282:2;1308:53;1353:7;1344:6;1333:9;1329:22;1308:53;:::i;:::-;1298:63;;1253:118;1410:2;1436:53;1481:7;1472:6;1461:9;1457:22;1436:53;:::i;:::-;1426:63;;1381:118;1538:3;1565:53;1610:7;1601:6;1590:9;1586:22;1565:53;:::i;:::-;1555:63;;1509:119;1667:3;1694:53;1739:7;1730:6;1719:9;1715:22;1694:53;:::i;:::-;1684:63;;1638:119;1796:3;1823:53;1868:7;1859:6;1848:9;1844:22;1823:53;:::i;:::-;1813:63;;1767:119;690:1203;;;;;;;;;;:::o;1899:99::-;1951:6;1985:5;1979:12;1969:22;;1899:99;;;:::o;2004:169::-;2088:11;2122:6;2117:3;2110:19;2162:4;2157:3;2153:14;2138:29;;2004:169;;;;:::o;2179:246::-;2260:1;2270:113;2284:6;2281:1;2278:13;2270:113;;;2369:1;2364:3;2360:11;2354:18;2350:1;2345:3;2341:11;2334:39;2306:2;2303:1;2299:10;2294:15;;2270:113;;;2417:1;2408:6;2403:3;2399:16;2392:27;2241:184;2179:246;;;:::o;2431:102::-;2472:6;2523:2;2519:7;2514:2;2507:5;2503:14;2499:28;2489:38;;2431:102;;;:::o;2539:377::-;2627:3;2655:39;2688:5;2655:39;:::i;:::-;2710:71;2774:6;2769:3;2710:71;:::i;:::-;2703:78;;2790:65;2848:6;2843:3;2836:4;2829:5;2825:16;2790:65;:::i;:::-;2880:29;2902:6;2880:29;:::i;:::-;2875:3;2871:39;2864:46;;2631:285;2539:377;;;;:::o;2922:313::-;3035:4;3073:2;3062:9;3058:18;3050:26;;3122:9;3116:4;3112:20;3108:1;3097:9;3093:17;3086:47;3150:78;3223:4;3214:6;3150:78;:::i;:::-;3142:86;;2922:313;;;;:::o;3241:126::-;3278:7;3318:42;3311:5;3307:54;3296:65;;3241:126;;;:::o;3373:96::-;3410:7;3439:24;3457:5;3439:24;:::i;:::-;3428:35;;3373:96;;;:::o;3475:122::-;3548:24;3566:5;3548:24;:::i;:::-;3541:5;3538:35;3528:63;;3587:1;3584;3577:12;3528:63;3475:122;:::o;3603:139::-;3649:5;3687:6;3674:20;3665:29;;3703:33;3730:5;3703:33;:::i;:::-;3603:139;;;;:::o;3748:474::-;3816:6;3824;3873:2;3861:9;3852:7;3848:23;3844:32;3841:119;;;3879:79;;:::i;:::-;3841:119;3999:1;4024:53;4069:7;4060:6;4049:9;4045:22;4024:53;:::i;:::-;4014:63;;3970:117;4126:2;4152:53;4197:7;4188:6;4177:9;4173:22;4152:53;:::i;:::-;4142:63;;4097:118;3748:474;;;;;:::o;4228:90::-;4262:7;4305:5;4298:13;4291:21;4280:32;;4228:90;;;:::o;4324:109::-;4405:21;4420:5;4405:21;:::i;:::-;4400:3;4393:34;4324:109;;:::o;4439:210::-;4526:4;4564:2;4553:9;4549:18;4541:26;;4577:65;4639:1;4628:9;4624:17;4615:6;4577:65;:::i;:::-;4439:210;;;;:::o;4655:118::-;4742:24;4760:5;4742:24;:::i;:::-;4737:3;4730:37;4655:118;;:::o;4779:222::-;4872:4;4910:2;4899:9;4895:18;4887:26;;4923:71;4991:1;4980:9;4976:17;4967:6;4923:71;:::i;:::-;4779:222;;;;:::o;5007:619::-;5084:6;5092;5100;5149:2;5137:9;5128:7;5124:23;5120:32;5117:119;;;5155:79;;:::i;:::-;5117:119;5275:1;5300:53;5345:7;5336:6;5325:9;5321:22;5300:53;:::i;:::-;5290:63;;5246:117;5402:2;5428:53;5473:7;5464:6;5453:9;5449:22;5428:53;:::i;:::-;5418:63;;5373:118;5530:2;5556:53;5601:7;5592:6;5581:9;5577:22;5556:53;:::i;:::-;5546:63;;5501:118;5007:619;;;;;:::o;5632:329::-;5691:6;5740:2;5728:9;5719:7;5715:23;5711:32;5708:119;;;5746:79;;:::i;:::-;5708:119;5866:1;5891:53;5936:7;5927:6;5916:9;5912:22;5891:53;:::i;:::-;5881:63;;5837:117;5632:329;;;;:::o;5967:86::-;6002:7;6042:4;6035:5;6031:16;6020:27;;5967:86;;;:::o;6059:112::-;6142:22;6158:5;6142:22;:::i;:::-;6137:3;6130:35;6059:112;;:::o;6177:214::-;6266:4;6304:2;6293:9;6289:18;6281:26;;6317:67;6381:1;6370:9;6366:17;6357:6;6317:67;:::i;:::-;6177:214;;;;:::o;6397:619::-;6474:6;6482;6490;6539:2;6527:9;6518:7;6514:23;6510:32;6507:119;;;6545:79;;:::i;:::-;6507:119;6665:1;6690:53;6735:7;6726:6;6715:9;6711:22;6690:53;:::i;:::-;6680:63;;6636:117;6792:2;6818:53;6863:7;6854:6;6843:9;6839:22;6818:53;:::i;:::-;6808:63;;6763:118;6920:2;6946:53;6991:7;6982:6;6971:9;6967:22;6946:53;:::i;:::-;6936:63;;6891:118;6397:619;;;;;:::o;7022:116::-;7092:21;7107:5;7092:21;:::i;:::-;7085:5;7082:32;7072:60;;7128:1;7125;7118:12;7072:60;7022:116;:::o;7144:133::-;7187:5;7225:6;7212:20;7203:29;;7241:30;7265:5;7241:30;:::i;:::-;7144:133;;;;:::o;7283:468::-;7348:6;7356;7405:2;7393:9;7384:7;7380:23;7376:32;7373:119;;;7411:79;;:::i;:::-;7373:119;7531:1;7556:53;7601:7;7592:6;7581:9;7577:22;7556:53;:::i;:::-;7546:63;;7502:117;7658:2;7684:50;7726:7;7717:6;7706:9;7702:22;7684:50;:::i;:::-;7674:60;;7629:115;7283:468;;;;;:::o;7757:118::-;7844:24;7862:5;7844:24;:::i;:::-;7839:3;7832:37;7757:118;;:::o;7881:222::-;7974:4;8012:2;8001:9;7997:18;7989:26;;8025:71;8093:1;8082:9;8078:17;8069:6;8025:71;:::i;:::-;7881:222;;;;:::o;8109:474::-;8177:6;8185;8234:2;8222:9;8213:7;8209:23;8205:32;8202:119;;;8240:79;;:::i;:::-;8202:119;8360:1;8385:53;8430:7;8421:6;8410:9;8406:22;8385:53;:::i;:::-;8375:63;;8331:117;8487:2;8513:53;8558:7;8549:6;8538:9;8534:22;8513:53;:::i;:::-;8503:63;;8458:118;8109:474;;;;;:::o;8589:104::-;8634:7;8663:24;8681:5;8663:24;:::i;:::-;8652:35;;8589:104;;;:::o;8699:138::-;8780:32;8806:5;8780:32;:::i;:::-;8773:5;8770:43;8760:71;;8827:1;8824;8817:12;8760:71;8699:138;:::o;8843:155::-;8897:5;8935:6;8922:20;8913:29;;8951:41;8986:5;8951:41;:::i;:::-;8843:155;;;;:::o;9004:345::-;9071:6;9120:2;9108:9;9099:7;9095:23;9091:32;9088:119;;;9126:79;;:::i;:::-;9088:119;9246:1;9271:61;9324:7;9315:6;9304:9;9300:22;9271:61;:::i;:::-;9261:71;;9217:125;9004:345;;;;:::o;9355:156::-;9495:8;9491:1;9483:6;9479:14;9472:32;9355:156;:::o;9517:365::-;9659:3;9680:66;9744:1;9739:3;9680:66;:::i;:::-;9673:73;;9755:93;9844:3;9755:93;:::i;:::-;9873:2;9868:3;9864:12;9857:19;;9517:365;;;:::o;9888:419::-;10054:4;10092:2;10081:9;10077:18;10069:26;;10141:9;10135:4;10131:20;10127:1;10116:9;10112:17;10105:47;10169:131;10295:4;10169:131;:::i;:::-;10161:139;;9888:419;;;:::o;10313:180::-;10361:77;10358:1;10351:88;10458:4;10455:1;10448:15;10482:4;10479:1;10472:15;10499:348;10539:7;10562:20;10580:1;10562:20;:::i;:::-;10557:25;;10596:20;10614:1;10596:20;:::i;:::-;10591:25;;10784:1;10716:66;10712:74;10709:1;10706:81;10701:1;10694:9;10687:17;10683:105;10680:131;;;10791:18;;:::i;:::-;10680:131;10839:1;10836;10832:9;10821:20;;10499:348;;;;:::o;10853:180::-;10901:77;10898:1;10891:88;10998:4;10995:1;10988:15;11022:4;11019:1;11012:15;11039:185;11079:1;11096:20;11114:1;11096:20;:::i;:::-;11091:25;;11130:20;11148:1;11130:20;:::i;:::-;11125:25;;11169:1;11159:35;;11174:18;;:::i;:::-;11159:35;11216:1;11213;11209:9;11204:14;;11039:185;;;;:::o;11230:233::-;11370:34;11366:1;11358:6;11354:14;11347:58;11439:16;11434:2;11426:6;11422:15;11415:41;11230:233;:::o;11469:366::-;11611:3;11632:67;11696:2;11691:3;11632:67;:::i;:::-;11625:74;;11708:93;11797:3;11708:93;:::i;:::-;11826:2;11821:3;11817:12;11810:19;;11469:366;;;:::o;11841:419::-;12007:4;12045:2;12034:9;12030:18;12022:26;;12094:9;12088:4;12084:20;12080:1;12069:9;12065:17;12058:47;12122:131;12248:4;12122:131;:::i;:::-;12114:139;;11841:419;;;:::o;12266:60::-;12294:3;12315:5;12308:12;;12266:60;;;:::o;12332:142::-;12382:9;12415:53;12433:34;12442:24;12460:5;12442:24;:::i;:::-;12433:34;:::i;:::-;12415:53;:::i;:::-;12402:66;;12332:142;;;:::o;12480:126::-;12530:9;12563:37;12594:5;12563:37;:::i;:::-;12550:50;;12480:126;;;:::o;12612:134::-;12670:9;12703:37;12734:5;12703:37;:::i;:::-;12690:50;;12612:134;;;:::o;12752:147::-;12847:45;12886:5;12847:45;:::i;:::-;12842:3;12835:58;12752:147;;:::o;12905:238::-;13006:4;13044:2;13033:9;13029:18;13021:26;;13057:79;13133:1;13122:9;13118:17;13109:6;13057:79;:::i;:::-;12905:238;;;;:::o;13149:223::-;13289:34;13285:1;13277:6;13273:14;13266:58;13358:6;13353:2;13345:6;13341:15;13334:31;13149:223;:::o;13378:366::-;13520:3;13541:67;13605:2;13600:3;13541:67;:::i;:::-;13534:74;;13617:93;13706:3;13617:93;:::i;:::-;13735:2;13730:3;13726:12;13719:19;;13378:366;;;:::o;13750:419::-;13916:4;13954:2;13943:9;13939:18;13931:26;;14003:9;13997:4;13993:20;13989:1;13978:9;13974:17;13967:47;14031:131;14157:4;14031:131;:::i;:::-;14023:139;;13750:419;;;:::o;14175:221::-;14315:34;14311:1;14303:6;14299:14;14292:58;14384:4;14379:2;14371:6;14367:15;14360:29;14175:221;:::o;14402:366::-;14544:3;14565:67;14629:2;14624:3;14565:67;:::i;:::-;14558:74;;14641:93;14730:3;14641:93;:::i;:::-;14759:2;14754:3;14750:12;14743:19;;14402:366;;;:::o;14774:419::-;14940:4;14978:2;14967:9;14963:18;14955:26;;15027:9;15021:4;15017:20;15013:1;15002:9;14998:17;14991:47;15055:131;15181:4;15055:131;:::i;:::-;15047:139;;14774:419;;;:::o;15199:194::-;15239:4;15259:20;15277:1;15259:20;:::i;:::-;15254:25;;15293:20;15311:1;15293:20;:::i;:::-;15288:25;;15337:1;15334;15330:9;15322:17;;15361:1;15355:4;15352:11;15349:37;;;15366:18;;:::i;:::-;15349:37;15199:194;;;;:::o;15399:224::-;15539:34;15535:1;15527:6;15523:14;15516:58;15608:7;15603:2;15595:6;15591:15;15584:32;15399:224;:::o;15629:366::-;15771:3;15792:67;15856:2;15851:3;15792:67;:::i;:::-;15785:74;;15868:93;15957:3;15868:93;:::i;:::-;15986:2;15981:3;15977:12;15970:19;;15629:366;;;:::o;16001:419::-;16167:4;16205:2;16194:9;16190:18;16182:26;;16254:9;16248:4;16244:20;16240:1;16229:9;16225:17;16218:47;16282:131;16408:4;16282:131;:::i;:::-;16274:139;;16001:419;;;:::o;16426:222::-;16566:34;16562:1;16554:6;16550:14;16543:58;16635:5;16630:2;16622:6;16618:15;16611:30;16426:222;:::o;16654:366::-;16796:3;16817:67;16881:2;16876:3;16817:67;:::i;:::-;16810:74;;16893:93;16982:3;16893:93;:::i;:::-;17011:2;17006:3;17002:12;16995:19;;16654:366;;;:::o;17026:419::-;17192:4;17230:2;17219:9;17215:18;17207:26;;17279:9;17273:4;17269:20;17265:1;17254:9;17250:17;17243:47;17307:131;17433:4;17307:131;:::i;:::-;17299:139;;17026:419;;;:::o;17451:228::-;17591:34;17587:1;17579:6;17575:14;17568:58;17660:11;17655:2;17647:6;17643:15;17636:36;17451:228;:::o;17685:366::-;17827:3;17848:67;17912:2;17907:3;17848:67;:::i;:::-;17841:74;;17924:93;18013:3;17924:93;:::i;:::-;18042:2;18037:3;18033:12;18026:19;;17685:366;;;:::o;18057:419::-;18223:4;18261:2;18250:9;18246:18;18238:26;;18310:9;18304:4;18300:20;18296:1;18285:9;18281:17;18274:47;18338:131;18464:4;18338:131;:::i;:::-;18330:139;;18057:419;;;:::o;18482:236::-;18622:34;18618:1;18610:6;18606:14;18599:58;18691:19;18686:2;18678:6;18674:15;18667:44;18482:236;:::o;18724:366::-;18866:3;18887:67;18951:2;18946:3;18887:67;:::i;:::-;18880:74;;18963:93;19052:3;18963:93;:::i;:::-;19081:2;19076:3;19072:12;19065:19;;18724:366;;;:::o;19096:419::-;19262:4;19300:2;19289:9;19285:18;19277:26;;19349:9;19343:4;19339:20;19335:1;19324:9;19320:17;19313:47;19377:131;19503:4;19377:131;:::i;:::-;19369:139;;19096:419;;;:::o;19521:164::-;19661:16;19657:1;19649:6;19645:14;19638:40;19521:164;:::o;19691:366::-;19833:3;19854:67;19918:2;19913:3;19854:67;:::i;:::-;19847:74;;19930:93;20019:3;19930:93;:::i;:::-;20048:2;20043:3;20039:12;20032:19;;19691:366;;;:::o;20063:419::-;20229:4;20267:2;20256:9;20252:18;20244:26;;20316:9;20310:4;20306:20;20302:1;20291:9;20287:17;20280:47;20344:131;20470:4;20344:131;:::i;:::-;20336:139;;20063:419;;;:::o;20488:180::-;20628:32;20624:1;20616:6;20612:14;20605:56;20488:180;:::o;20674:366::-;20816:3;20837:67;20901:2;20896:3;20837:67;:::i;:::-;20830:74;;20913:93;21002:3;20913:93;:::i;:::-;21031:2;21026:3;21022:12;21015:19;;20674:366;;;:::o;21046:419::-;21212:4;21250:2;21239:9;21235:18;21227:26;;21299:9;21293:4;21289:20;21285:1;21274:9;21270:17;21263:47;21327:131;21453:4;21327:131;:::i;:::-;21319:139;;21046:419;;;:::o;21471:191::-;21511:3;21530:20;21548:1;21530:20;:::i;:::-;21525:25;;21564:20;21582:1;21564:20;:::i;:::-;21559:25;;21607:1;21604;21600:9;21593:16;;21628:3;21625:1;21622:10;21619:36;;;21635:18;;:::i;:::-;21619:36;21471:191;;;;:::o;21668:167::-;21808:19;21804:1;21796:6;21792:14;21785:43;21668:167;:::o;21841:366::-;21983:3;22004:67;22068:2;22063:3;22004:67;:::i;:::-;21997:74;;22080:93;22169:3;22080:93;:::i;:::-;22198:2;22193:3;22189:12;22182:19;;21841:366;;;:::o;22213:419::-;22379:4;22417:2;22406:9;22402:18;22394:26;;22466:9;22460:4;22456:20;22452:1;22441:9;22437:17;22430:47;22494:131;22620:4;22494:131;:::i;:::-;22486:139;;22213:419;;;:::o;22638:180::-;22686:77;22683:1;22676:88;22783:4;22780:1;22773:15;22807:4;22804:1;22797:15;22824:180;22872:77;22869:1;22862:88;22969:4;22966:1;22959:15;22993:4;22990:1;22983:15;23010:143;23067:5;23098:6;23092:13;23083:22;;23114:33;23141:5;23114:33;:::i;:::-;23010:143;;;;:::o;23159:351::-;23229:6;23278:2;23266:9;23257:7;23253:23;23249:32;23246:119;;;23284:79;;:::i;:::-;23246:119;23404:1;23429:64;23485:7;23476:6;23465:9;23461:22;23429:64;:::i;:::-;23419:74;;23375:128;23159:351;;;;:::o;23516:85::-;23561:7;23590:5;23579:16;;23516:85;;;:::o;23607:158::-;23665:9;23698:61;23716:42;23725:32;23751:5;23725:32;:::i;:::-;23716:42;:::i;:::-;23698:61;:::i;:::-;23685:74;;23607:158;;;:::o;23771:147::-;23866:45;23905:5;23866:45;:::i;:::-;23861:3;23854:58;23771:147;;:::o;23924:114::-;23991:6;24025:5;24019:12;24009:22;;23924:114;;;:::o;24044:184::-;24143:11;24177:6;24172:3;24165:19;24217:4;24212:3;24208:14;24193:29;;24044:184;;;;:::o;24234:132::-;24301:4;24324:3;24316:11;;24354:4;24349:3;24345:14;24337:22;;24234:132;;;:::o;24372:108::-;24449:24;24467:5;24449:24;:::i;:::-;24444:3;24437:37;24372:108;;:::o;24486:179::-;24555:10;24576:46;24618:3;24610:6;24576:46;:::i;:::-;24654:4;24649:3;24645:14;24631:28;;24486:179;;;;:::o;24671:113::-;24741:4;24773;24768:3;24764:14;24756:22;;24671:113;;;:::o;24820:732::-;24939:3;24968:54;25016:5;24968:54;:::i;:::-;25038:86;25117:6;25112:3;25038:86;:::i;:::-;25031:93;;25148:56;25198:5;25148:56;:::i;:::-;25227:7;25258:1;25243:284;25268:6;25265:1;25262:13;25243:284;;;25344:6;25338:13;25371:63;25430:3;25415:13;25371:63;:::i;:::-;25364:70;;25457:60;25510:6;25457:60;:::i;:::-;25447:70;;25303:224;25290:1;25287;25283:9;25278:14;;25243:284;;;25247:14;25543:3;25536:10;;24944:608;;;24820:732;;;;:::o;25558:831::-;25821:4;25859:3;25848:9;25844:19;25836:27;;25873:71;25941:1;25930:9;25926:17;25917:6;25873:71;:::i;:::-;25954:80;26030:2;26019:9;26015:18;26006:6;25954:80;:::i;:::-;26081:9;26075:4;26071:20;26066:2;26055:9;26051:18;26044:48;26109:108;26212:4;26203:6;26109:108;:::i;:::-;26101:116;;26227:72;26295:2;26284:9;26280:18;26271:6;26227:72;:::i;:::-;26309:73;26377:3;26366:9;26362:19;26353:6;26309:73;:::i;:::-;25558:831;;;;;;;;:::o;26395:807::-;26644:4;26682:3;26671:9;26667:19;26659:27;;26696:71;26764:1;26753:9;26749:17;26740:6;26696:71;:::i;:::-;26777:72;26845:2;26834:9;26830:18;26821:6;26777:72;:::i;:::-;26859:80;26935:2;26924:9;26920:18;26911:6;26859:80;:::i;:::-;26949;27025:2;27014:9;27010:18;27001:6;26949:80;:::i;:::-;27039:73;27107:3;27096:9;27092:19;27083:6;27039:73;:::i;:::-;27122;27190:3;27179:9;27175:19;27166:6;27122:73;:::i;:::-;26395:807;;;;;;;;;:::o;27208:143::-;27265:5;27296:6;27290:13;27281:22;;27312:33;27339:5;27312:33;:::i;:::-;27208:143;;;;:::o;27357:663::-;27445:6;27453;27461;27510:2;27498:9;27489:7;27485:23;27481:32;27478:119;;;27516:79;;:::i;:::-;27478:119;27636:1;27661:64;27717:7;27708:6;27697:9;27693:22;27661:64;:::i;:::-;27651:74;;27607:128;27774:2;27800:64;27856:7;27847:6;27836:9;27832:22;27800:64;:::i;:::-;27790:74;;27745:129;27913:2;27939:64;27995:7;27986:6;27975:9;27971:22;27939:64;:::i;:::-;27929:74;;27884:129;27357:663;;;;;:::o

Swarm Source

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