ETH Price: $2,194.55 (+3.62%)

Token

⠀⠀⠀⠀⠀⠀⠀⢀⣠⣤⣴⣶⣶⡦⠤⠤⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⣿⣛⣉⣉⣉⣩⣭⣥⣤⣤⣤⡤⢀⡀... (🐂)
 

Overview

Max Total Supply

1,000,000,000 🐂

Holders

37

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.696595514 🐂

Value
$0.00
0x7909B12910724Ac0af279c9B479E2C5aC5758a96
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:
BULL

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-05-29
*/

/*

unleash the bull
释放公牛

LP will be locked for forever
流动性池将被永久锁定

Final Tax 0/0
最终税 0/0

⠀⠀⠀⠀⠀⠀⠀⢀⣠⣤⣴⣶⣶⡦⠤⠤⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⢰⣿⣛⣉⣉⣉⣩⣭⣥⣤⣤⣤⡤⢀⡀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠈⠀⠉⠉⠁⠀⠀⠀⠀⠀⠀⠈⠉⢢⠆⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠤⠤⠤⠄⢀⣀⣀⣀⡘⡄⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⡠⠐⠁⠀⠀⠀⠀⡀⠀⠀⢴⣶⣧⡀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⡠⠊⠀⠀⠀⠀⠀⠀⠀⠹⡄⠀⠨⣿⣿⣷⡄⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⡸⠁⠀⠀⠀⠀⠀⠀⢰⠀⠀⠙⣤⣶⣿⣿⣿⣿⡄⠀⠀⠀⠀
⠀⠀⠀⠀⠀⡐⠁⠀⠀⠀⠀⠀⡠⣴⠾⣷⡆⠀⢿⣿⣿⣿⣿⣿⣧⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣧⣴⡄⢻⣿⣿⣿⣿⣿⠀⠀⠀⠀
⠀⠀⠀⠀⢸⠀⠀⢠⠀⠀⠀⠀⠀⠀⠈⠉⢉⠿⢿⣆⢿⣿⣿⣿⣿⡀⠀⠀⠀
⠀⠀⠀⠀⠎⠀⠀⣿⡄⠀⠀⠀⠀⠀⠀⠘⠋⢛⣟⠛⠃⠙⠻⠿⣿⡇⠀⠀⠀
⠀⠀⠀⢸⡄⠀⠀⡘⠋⠉⡀⢠⣾⡰⢶⣶⡖⠁⣤⣳⣿⣶⢶⣶⡌⠳⠤⣀⣀
⠀⠀⠀⢸⢠⠀⢀⣿⣿⣶⣿⣿⣿⠇⠀⠁⣷⣄⣈⣙⣛⣿⣿⣿⡲⡒⠒⠒⠊
⠀⠀⠀⠀⣿⣾⣿⣿⣿⣿⣿⣿⡟⠀⠀⣰⣿⣿⣿⣿⣿⣿⣿⣟⣿⣶⡄⠀⠀
⠀⠀⠀⢠⣿⣿⣿⣿⣿⣿⣿⣿⣇⠀⠐⣿⠿⣿⣿⣿⣿⡿⠋⠀⠙⣿⡇⠀⠀
⠀⠀⠀⣿⣿⡿⠁⠸⣿⣿⣿⣿⣿⣦⠸⠋⢸⣿⣿⣿⡿⠁⠀⠀⠀⢸⣷⡀⠀
⠀⠀⠀⣻⣿⡇⠀⠀⠀⣹⣿⡿⢻⣿⢠⡀⠸⣿⣿⣿⣧⠀⠀⠀⠀⠘⣿⣧⠀
⠀⠀⢠⠉⣿⠇⠀⠀⢰⠋⣿⣰⣁⡟⠀⠁⢼⣿⡿⠿⠏⠀⠀⠀⠀⠀⠋⠟⠀
⠀⠀⢰⣿⠋⠀⠀⠀⢀⣿⡏⠛⠐⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⣾⡇⠀⠀⠀⢀⠎⢹⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠜⢹⡇⠀⠀⠀⠾⣶⡾⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠮⣿⠿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀

*/

// 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,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

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

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

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

contract BULL is IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = unicode"⠀⠀⠀⠀⠀⠀⠀⢀⣠⣤⣴⣶⣶⡦⠤⠤⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀\n⠀⠀⠀⠀⠀⠀⢰⣿⣛⣉⣉⣉⣩⣭⣥⣤⣤⣤⡤⢀⡀⠀⠀⠀⠀⠀⠀⠀⠀\n⠀⠀⠀⠀⠀⠀⠀⠈⠀⠉⠉⠁⠀⠀⠀⠀⠀⠀⠈⠉⢢⠆⠀⠀⠀⠀⠀⠀⠀\n⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠤⠤⠤⠄⢀⣀⣀⣀⡘⡄⠀⠀⠀⠀⠀⠀⠀\n⠀⠀⠀⠀⠀⠀⠀⠀⠀⡠⠐⠁⠀⠀⠀⠀⡀⠀⠀⢴⣶⣧⡀⠀⠀⠀⠀⠀⠀\n⠀⠀⠀⠀⠀⠀⠀⡠⠊⠀⠀⠀⠀⠀⠀⠀⠹⡄⠀⠨⣿⣿⣷⡄⠀⠀⠀⠀⠀\n⠀⠀⠀⠀⠀⠀⡸⠁⠀⠀⠀⠀⠀⠀⢰⠀⠀⠙⣤⣶⣿⣿⣿⣿⡄⠀⠀⠀⠀\n⠀⠀⠀⠀⠀⡐⠁⠀⠀⠀⠀⠀⡠⣴⠾⣷⡆⠀⢿⣿⣿⣿⣿⣿⣧⠀⠀⠀⠀\n⠀⠀⠀⠀⠀⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣧⣴⡄⢻⣿⣿⣿⣿⣿⠀⠀⠀⠀\n⠀⠀⠀⠀⢸⠀⠀⢠⠀⠀⠀⠀⠀⠀⠈⠉⢉⠿⢿⣆⢿⣿⣿⣿⣿⡀⠀⠀⠀\n⠀⠀⠀⠀⠎⠀⠀⣿⡄⠀⠀⠀⠀⠀⠀⠘⠋⢛⣟⠛⠃⠙⠻⠿⣿⡇⠀⠀⠀\n⠀⠀⠀⢸⡄⠀⠀⡘⠋⠉⡀⢠⣾⡰⢶⣶⡖⠁⣤⣳⣿⣶⢶⣶⡌⠳⠤⣀⣀\n⠀⠀⠀⢸⢠⠀⢀⣿⣿⣶⣿⣿⣿⠇⠀⠁⣷⣄⣈⣙⣛⣿⣿⣿⡲⡒⠒⠒⠊\n⠀⠀⠀⠀⣿⣾⣿⣿⣿⣿⣿⣿⡟⠀⠀⣰⣿⣿⣿⣿⣿⣿⣿⣟⣿⣶⡄⠀⠀\n⠀⠀⠀⢠⣿⣿⣿⣿⣿⣿⣿⣿⣇⠀⠐⣿⠿⣿⣿⣿⣿⡿⠋⠀⠙⣿⡇⠀⠀\n⠀⠀⠀⣿⣿⡿⠁⠸⣿⣿⣿⣿⣿⣦⠸⠋⢸⣿⣿⣿⡿⠁⠀⠀⠀⢸⣷⡀⠀\n⠀⠀⠀⣻⣿⡇⠀⠀⠀⣹⣿⡿⢻⣿⢠⡀⠸⣿⣿⣿⣧⠀⠀⠀⠀⠘⣿⣧⠀\n⠀⠀⢠⠉⣿⠇⠀⠀⢰⠋⣿⣰⣁⡟⠀⠁⢼⣿⡿⠿⠏⠀⠀⠀⠀⠀⠋⠟⠀\n⠀⠀⢰⣿⠋⠀⠀⠀⢀⣿⡏⠛⠐⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀\n⠀⠀⣾⡇⠀⠀⠀⢀⠎⢹⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀\n⠀⠜⢹⡇⠀⠀⠀⠾⣶⡾⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀\n⠮⣿⠿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀";
    string private constant _symbol = unicode"🐂";
    uint8 private constant _decimals = 9;
    uint256 private _totalSupply = 1000000000 * (10 ** _decimals);
    uint256 private _maxTxAmountPercent = 175; // 10000;
    uint256 private _maxTransferPercent = 175;
    uint256 private _maxWalletPercent = 175;
    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 = 0;
    uint256 private marketingFee = 2000;
    uint256 private developmentFee = 0;
    uint256 private burnFee = 0;
    uint256 private totalFee = 2500;
    uint256 private sellFee = 4000;
    uint256 private transferFee = 0;
    uint256 private denominator = 10000;
    bool private swapEnabled = true;
    uint256 private swapTimes;
    bool private swapping;
    uint256 swapAmount = 4;
    uint256 private swapThreshold = ( _totalSupply * 2000 ) / 100000;
    uint256 private minTokenAmount = ( _totalSupply * 10 ) / 100000;
    modifier lockTheSwap {swapping = true; _; swapping = false;}

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

    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 launch(bool enabled) external onlyOwner {if(enabled){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) {uint size; assembly { size := extcodesize(addr) } return size > 0; }
    function blacklist(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 updateFee(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;
        require(totalFee <= denominator.div(1) && sellFee <= denominator.div(1), "totalFee and sellFee cannot be more than 20%");
    }

    function setLimits(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 >= swapAmount && aboveThreshold;
    }

    function setSwapbackSettings(uint256 _swapAmount, uint256 _swapThreshold, uint256 _minTokenAmount) external onlyOwner {
        swapAmount = _swapAmount; swapThreshold = _totalSupply.mul(_swapThreshold).div(uint256(100000)); 
        minTokenAmount = _totalSupply.mul(_minTokenAmount).div(uint256(100000));
    }

    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

API
[{"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":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"blacklist","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"launch","outputs":[],"stateMutability":"nonpayable","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":"setLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapAmount","type":"uint256"},{"internalType":"uint256","name":"_swapThreshold","type":"uint256"},{"internalType":"uint256","name":"_minTokenAmount","type":"uint256"}],"name":"setSwapbackSettings","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":"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"},{"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":"updateFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526009600a62000014919062000715565b633b9aca0062000025919062000766565b60015560af60025560af60035560af6004556000600a60146101000a81548160ff0219169083151502179055506000600b556107d0600c556000600d556000600e556109c4600f55610fa060105560006011556127106012556001601360006101000a81548160ff0219169083151502179055506004601655620186a06107d0600154620000b4919062000766565b620000c09190620007f6565b601755620186a0600a600154620000d8919062000766565b620000e49190620007f6565b601855348015620000f457600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200019e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c4919062000898565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200022c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000252919062000898565b6040518363ffffffff1660e01b815260040162000271929190620008db565b6020604051808303816000875af115801562000291573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b7919062000898565b905081600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000730d83d8c2ca7f3dba418938f4a13111dd435d7cc573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000730d83d8c2ca7f3dba418938f4a13111dd435d7cc573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600154600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6001546040516200056b919062000919565b60405180910390a3505062000936565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200060957808604811115620005e157620005e06200057b565b5b6001851615620005f15780820291505b80810290506200060185620005aa565b9450620005c1565b94509492505050565b600082620006245760019050620006f7565b81620006345760009050620006f7565b81600181146200064d576002811462000658576200068e565b6001915050620006f7565b60ff8411156200066d576200066c6200057b565b5b8360020a9150848211156200068757620006866200057b565b5b50620006f7565b5060208310610133831016604e8410600b8410161715620006c85782820a905083811115620006c257620006c16200057b565b5b620006f7565b620006d78484846001620005b7565b92509050818404811115620006f157620006f06200057b565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b60006200072282620006fe565b91506200072f8362000708565b92506200075e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000612565b905092915050565b60006200077382620006fe565b91506200078083620006fe565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620007bc57620007bb6200057b565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200080382620006fe565b91506200081083620006fe565b925082620008235762000822620007c7565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620008608262000833565b9050919050565b620008728162000853565b81146200087e57600080fd5b50565b600081519050620008928162000867565b92915050565b600060208284031215620008b157620008b06200082e565b5b6000620008c18482850162000881565b91505092915050565b620008d58162000853565b82525050565b6000604082019050620008f26000830185620008ca565b620009016020830184620008ca565b9392505050565b6200091381620006fe565b82525050565b600060208201905062000930600083018462000908565b92915050565b613d2780620009466000396000f3fe6080604052600436106101445760003560e01c80634bec48a3116100b657806395d89b411161006f57806395d89b411461047b578063a8aa1b31146104a6578063a9059cbb146104d1578063dd62ed3e1461050e578063e94dd17c1461054b578063f2fde38b146105745761014b565b80634bec48a31461036b57806370a082311461039457806371916a6b146103d157806378109e54146103fa5780637d1db4a514610425578063893d20e8146104505761014b565b806323b872dd1161010857806323b872dd146102375780632f54bf6e14610274578063313ce567146102b15780633f4218e0146102dc578063404e51291461031957806348ff2b8b146103425761014b565b806306fdde0314610150578063095ea7b31461017b57806318160ddd146101b8578063189ae5f2146101e35780631f976b7e1461020c5761014b565b3661014b57005b600080fd5b34801561015c57600080fd5b5061016561059d565b60405161017291906125fe565b60405180910390f35b34801561018757600080fd5b506101a2600480360381019061019d91906126b9565b6105c0565b6040516101af9190612714565b60405180910390f35b3480156101c457600080fd5b506101cd6105d7565b6040516101da919061273e565b60405180910390f35b3480156101ef57600080fd5b5061020a60048036038101906102059190612759565b610618565b005b34801561021857600080fd5b50610221610778565b60405161022e919061273e565b60405180910390f35b34801561024357600080fd5b5061025e600480360381019061025991906127ac565b6107a1565b60405161026b9190612714565b60405180910390f35b34801561028057600080fd5b5061029b600480360381019061029691906127ff565b61086c565b6040516102a89190612714565b60405180910390f35b3480156102bd57600080fd5b506102c66108c5565b6040516102d39190612848565b60405180910390f35b3480156102e857600080fd5b5061030360048036038101906102fe91906127ff565b6108ce565b6040516103109190612714565b60405180910390f35b34801561032557600080fd5b50610340600480360381019061033b919061288f565b6108ee565b005b34801561034e57600080fd5b506103696004803603810190610364919061288f565b610991565b005b34801561037757600080fd5b50610392600480360381019061038d91906128cf565b610a34565b005b3480156103a057600080fd5b506103bb60048036038101906103b691906127ff565b610b33565b6040516103c8919061273e565b60405180910390f35b3480156103dd57600080fd5b506103f860048036038101906103f39190612971565b610b7c565b005b34801561040657600080fd5b5061040f610be9565b60405161041c919061273e565b60405180910390f35b34801561043157600080fd5b5061043a610c12565b604051610447919061273e565b60405180910390f35b34801561045c57600080fd5b50610465610c3b565b60405161047291906129ad565b60405180910390f35b34801561048757600080fd5b50610490610c64565b60405161049d91906125fe565b60405180910390f35b3480156104b257600080fd5b506104bb610ca1565b6040516104c891906129ad565b60405180910390f35b3480156104dd57600080fd5b506104f860048036038101906104f391906126b9565b610cc7565b6040516105059190612714565b60405180910390f35b34801561051a57600080fd5b50610535600480360381019061053091906129c8565b610cde565b604051610542919061273e565b60405180910390f35b34801561055757600080fd5b50610572600480360381019061056d9190612759565b610d65565b005b34801561058057600080fd5b5061059b60048036038101906105969190612a46565b610e19565b005b6060604051806107c0016040528061078f815260200161353b61078f9139905090565b60006105cd338484610edb565b6001905092915050565b60006106136105e66000610b33565b6106056105f461dead610b33565b6001546110a490919063ffffffff16565b6110a490919063ffffffff16565b905090565b6106213361086c565b610660576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065790612abf565b60405180910390fd5b60006127108461066e6105d7565b6106789190612b0e565b6106829190612b97565b90506000612710846106926105d7565b61069c9190612b0e565b6106a69190612b97565b90506000612710846106b66105d7565b6106c09190612b0e565b6106ca9190612b97565b905085600281905550846003819055508360048190555060006107126103e861070460056106f66105d7565b6110ba90919063ffffffff16565b6110d090919063ffffffff16565b90508084101580156107245750808310155b80156107305750808210155b61076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076690612c3a565b60405180910390fd5b50505050505050565b60006012546003546107886105d7565b6107929190612b0e565b61079c9190612b97565b905090565b60006107ae8484846110e6565b610861843361085c85604051806060016040528060288152602001613cca60289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112df9092919063ffffffff16565b610edb565b600190509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b60076020528060005260406000206000915054906101000a900460ff1681565b6108f73361086c565b610936576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092d90612abf565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61099a3361086c565b6109d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d090612abf565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610a3d3361086c565b610a7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7390612abf565b60405180910390fd5b86600b8190555085600c8190555084600e8190555083600d8190555082600f819055508160108190555080601181905550610ac360016012546110d090919063ffffffff16565b600f5411158015610aeb5750610ae560016012546110d090919063ffffffff16565b60105411155b610b2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2190612ccc565b60405180910390fd5b50505050505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610b853361086c565b610bc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbb90612abf565b60405180910390fd5b8015610be6576001600a60146101000a81548160ff0219169083151502179055505b50565b6000601254600454610bf96105d7565b610c039190612b0e565b610c0d9190612b97565b905090565b6000601254600254610c226105d7565b610c2c9190612b0e565b610c369190612b97565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017ff09f908200000000000000000000000000000000000000000000000000000000815250905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610cd43384846110e6565b6001905092915050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610d6e3361086c565b610dad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da490612abf565b60405180910390fd5b82601681905550610dde620186a0610dd0846001546110ba90919063ffffffff16565b6110d090919063ffffffff16565b601781905550610e0e620186a0610e00836001546110ba90919063ffffffff16565b6110d090919063ffffffff16565b601881905550505050565b610e223361086c565b610e61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5890612abf565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051610ed09190612d4b565b60405180910390a150565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4190612dd8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610fb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb090612e6a565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611097919061273e565b60405180910390a3505050565b600081836110b29190612e8a565b905092915050565b600081836110c89190612b0e565b905092915050565b600081836110de9190612b97565b905092915050565b6110f1838383611334565b6110fb83836114a5565b6111068383836115a2565b6111108383611780565b61111b83838361184b565b611126838383611a8a565b61117881600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110a490919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006111c78484611ab3565b6111d157816111dd565b6111dc848484611b61565b5b905061123181600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d0990919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516112d1919061273e565b60405180910390a350505050565b6000838311158290611327576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131e91906125fe565b60405180910390fd5b5082840390509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139a90612f30565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611412576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140990612fc2565b60405180910390fd5b60008111611455576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144c90613054565b60405180910390fd5b61145e83610b33565b8111156114a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611497906130e6565b60405180910390fd5b505050565b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156115495750600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561159e57600a60149054906101000a900460ff1661159d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159490613152565b60405180910390fd5b5b5050565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156116465750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156116a05750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156116da575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561177b576116e7610be9565b61173982600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d0990919063ffffffff16565b111561177a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611771906131be565b60405180910390fd5b5b505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480156118275750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156118475760016014600082825461183f91906131de565b925050819055505b5050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611993576118a8610778565b811115806118ff5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806119535750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611992576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119899061325e565b60405180910390fd5b5b61199b610c12565b811115806119f25750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611a465750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611a85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7c9061325e565b60405180910390fd5b505050565b611a95838383611d1f565b15611aae57611aa5601754611e59565b60006014819055505b505050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611b595750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b600080611b6e85856120aa565b1115611cfe576000611ba6611b8386866120aa565b611b98601254866110d090919063ffffffff16565b6110ba90919063ffffffff16565b9050611bfa81600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d0990919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611c9a919061273e565b60405180910390a36000600e541115611ce357611ce23061dead611cdd600e54611ccf601254896110d090919063ffffffff16565b6110ba90919063ffffffff16565b6110e6565b5b611cf681846110a490919063ffffffff16565b915050611d02565b8190505b9392505050565b60008183611d1791906131de565b905092915050565b60008060185483101590506000601754611d3830610b33565b10159050601560009054906101000a900460ff16158015611d655750601360009054906101000a900460ff165b8015611d7d5750600a60149054906101000a900460ff165b8015611d865750815b8015611ddc5750600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611e355750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b8015611e45575060165460145410155b8015611e4e5750805b925050509392505050565b6001601560006101000a81548160ff0219169083151502179055506000611ec76002611eb9600d54611eab600c54611e9d6001600b54611d0990919063ffffffff16565b611d0990919063ffffffff16565b611d0990919063ffffffff16565b6110ba90919063ffffffff16565b90506000611ef282611ee4600b54866110ba90919063ffffffff16565b6110d090919063ffffffff16565b90506000611f0982856110a490919063ffffffff16565b90506000479050611f1982612239565b6000611f2e82476110a490919063ffffffff16565b90506000611f59611f4a600b54886110a490919063ffffffff16565b836110d090919063ffffffff16565b90506000611f72600b54836110ba90919063ffffffff16565b90506000811115611f8857611f87868261247c565b5b6000611fb2600c54611fa46002866110ba90919063ffffffff16565b6110ba90919063ffffffff16565b9050600081111561201957730d83d8c2ca7f3dba418938f4a13111dd435d7cc573ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612017573d6000803e3d6000fd5b505b6000479050600081111561208357730d83d8c2ca7f3dba418938f4a13111dd435d7cc573ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612081573d6000803e3d6000fd5b505b5050505050505050506000601560006101000a81548160ff02191690831515021790555050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061214d5750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561216f5761216860646012546110a490919063ffffffff16565b9050612233565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036121ce576010549050612233565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361222d57600f549050612233565b60115490505b92915050565b6000600267ffffffffffffffff8111156122565761225561327e565b5b6040519080825280602002602001820160405280156122845781602001602082028036833780820191505090505b509050308160008151811061229c5761229b6132ad565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612343573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061236791906132f1565b8160018151811061237b5761237a6132ad565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506123e230600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610edb565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612446959493929190613417565b600060405180830381600087803b15801561246057600080fd5b505af1158015612474573d6000803e3d6000fd5b505050505050565b6124a930600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610edb565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080730d83d8c2ca7f3dba418938f4a13111dd435d7cc5426040518863ffffffff1660e01b815260040161252496959493929190613471565b60606040518083038185885af1158015612542573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061256791906134e7565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156125a857808201518184015260208101905061258d565b60008484015250505050565b6000601f19601f8301169050919050565b60006125d08261256e565b6125da8185612579565b93506125ea81856020860161258a565b6125f3816125b4565b840191505092915050565b6000602082019050818103600083015261261881846125c5565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061265082612625565b9050919050565b61266081612645565b811461266b57600080fd5b50565b60008135905061267d81612657565b92915050565b6000819050919050565b61269681612683565b81146126a157600080fd5b50565b6000813590506126b38161268d565b92915050565b600080604083850312156126d0576126cf612620565b5b60006126de8582860161266e565b92505060206126ef858286016126a4565b9150509250929050565b60008115159050919050565b61270e816126f9565b82525050565b60006020820190506127296000830184612705565b92915050565b61273881612683565b82525050565b6000602082019050612753600083018461272f565b92915050565b60008060006060848603121561277257612771612620565b5b6000612780868287016126a4565b9350506020612791868287016126a4565b92505060406127a2868287016126a4565b9150509250925092565b6000806000606084860312156127c5576127c4612620565b5b60006127d38682870161266e565b93505060206127e48682870161266e565b92505060406127f5868287016126a4565b9150509250925092565b60006020828403121561281557612814612620565b5b60006128238482850161266e565b91505092915050565b600060ff82169050919050565b6128428161282c565b82525050565b600060208201905061285d6000830184612839565b92915050565b61286c816126f9565b811461287757600080fd5b50565b60008135905061288981612863565b92915050565b600080604083850312156128a6576128a5612620565b5b60006128b48582860161266e565b92505060206128c58582860161287a565b9150509250929050565b600080600080600080600060e0888a0312156128ee576128ed612620565b5b60006128fc8a828b016126a4565b975050602061290d8a828b016126a4565b965050604061291e8a828b016126a4565b955050606061292f8a828b016126a4565b94505060806129408a828b016126a4565b93505060a06129518a828b016126a4565b92505060c06129628a828b016126a4565b91505092959891949750929550565b60006020828403121561298757612986612620565b5b60006129958482850161287a565b91505092915050565b6129a781612645565b82525050565b60006020820190506129c2600083018461299e565b92915050565b600080604083850312156129df576129de612620565b5b60006129ed8582860161266e565b92505060206129fe8582860161266e565b9150509250929050565b6000612a1382612625565b9050919050565b612a2381612a08565b8114612a2e57600080fd5b50565b600081359050612a4081612a1a565b92915050565b600060208284031215612a5c57612a5b612620565b5b6000612a6a84828501612a31565b91505092915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000612aa9600683612579565b9150612ab482612a73565b602082019050919050565b60006020820190508181036000830152612ad881612a9c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612b1982612683565b9150612b2483612683565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612b5d57612b5c612adf565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612ba282612683565b9150612bad83612683565b925082612bbd57612bbc612b68565b5b828204905092915050565b7f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560008201527f206c657373207468616e202e3525000000000000000000000000000000000000602082015250565b6000612c24602e83612579565b9150612c2f82612bc8565b604082019050919050565b60006020820190508181036000830152612c5381612c17565b9050919050565b7f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60008201527f6f7265207468616e203230250000000000000000000000000000000000000000602082015250565b6000612cb6602c83612579565b9150612cc182612c5a565b604082019050919050565b60006020820190508181036000830152612ce581612ca9565b9050919050565b6000819050919050565b6000612d11612d0c612d0784612625565b612cec565b612625565b9050919050565b6000612d2382612cf6565b9050919050565b6000612d3582612d18565b9050919050565b612d4581612d2a565b82525050565b6000602082019050612d606000830184612d3c565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612dc2602483612579565b9150612dcd82612d66565b604082019050919050565b60006020820190508181036000830152612df181612db5565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612e54602283612579565b9150612e5f82612df8565b604082019050919050565b60006020820190508181036000830152612e8381612e47565b9050919050565b6000612e9582612683565b9150612ea083612683565b9250828203905081811115612eb857612eb7612adf565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612f1a602583612579565b9150612f2582612ebe565b604082019050919050565b60006020820190508181036000830152612f4981612f0d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612fac602383612579565b9150612fb782612f50565b604082019050919050565b60006020820190508181036000830152612fdb81612f9f565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061303e602983612579565b915061304982612fe2565b604082019050919050565b6000602082019050818103600083015261306d81613031565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b60006130d0603183612579565b91506130db82613074565b604082019050919050565b600060208201905081810360008301526130ff816130c3565b9050919050565b7f74726164696e67416c6c6f776564000000000000000000000000000000000000600082015250565b600061313c600e83612579565b915061314782613106565b602082019050919050565b6000602082019050818103600083015261316b8161312f565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000600082015250565b60006131a8601e83612579565b91506131b382613172565b602082019050919050565b600060208201905081810360008301526131d78161319b565b9050919050565b60006131e982612683565b91506131f483612683565b925082820190508082111561320c5761320b612adf565b5b92915050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b6000613248601183612579565b915061325382613212565b602082019050919050565b600060208201905081810360008301526132778161323b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506132eb81612657565b92915050565b60006020828403121561330757613306612620565b5b6000613315848285016132dc565b91505092915050565b6000819050919050565b600061334361333e6133398461331e565b612cec565b612683565b9050919050565b61335381613328565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61338e81612645565b82525050565b60006133a08383613385565b60208301905092915050565b6000602082019050919050565b60006133c482613359565b6133ce8185613364565b93506133d983613375565b8060005b8381101561340a5781516133f18882613394565b97506133fc836133ac565b9250506001810190506133dd565b5085935050505092915050565b600060a08201905061342c600083018861272f565b613439602083018761334a565b818103604083015261344b81866133b9565b905061345a606083018561299e565b613467608083018461272f565b9695505050505050565b600060c082019050613486600083018961299e565b613493602083018861272f565b6134a0604083018761334a565b6134ad606083018661334a565b6134ba608083018561299e565b6134c760a083018461272f565b979650505050505050565b6000815190506134e18161268d565b92915050565b600080600060608486031215613500576134ff612620565b5b600061350e868287016134d2565b935050602061351f868287016134d2565b9250506040613530868287016134d2565b915050925092509256fee2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a280e2a3a0e2a3a4e2a3b4e2a3b6e2a3b6e2a1a6e2a0a4e2a0a4e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a0800ae2a080e2a080e2a080e2a080e2a080e2a080e2a2b0e2a3bfe2a39be2a389e2a389e2a389e2a3a9e2a3ade2a3a5e2a3a4e2a3a4e2a3a4e2a1a4e2a280e2a180e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a0800ae2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a088e2a080e2a089e2a089e2a081e2a080e2a080e2a080e2a080e2a080e2a080e2a088e2a089e2a2a2e2a086e2a080e2a080e2a080e2a080e2a080e2a080e2a0800ae2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a280e2a0a4e2a0a4e2a0a4e2a084e2a280e2a380e2a380e2a380e2a198e2a184e2a080e2a080e2a080e2a080e2a080e2a080e2a0800ae2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a1a0e2a090e2a081e2a080e2a080e2a080e2a080e2a180e2a080e2a080e2a2b4e2a3b6e2a3a7e2a180e2a080e2a080e2a080e2a080e2a080e2a0800ae2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a1a0e2a08ae2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a0b9e2a184e2a080e2a0a8e2a3bfe2a3bfe2a3b7e2a184e2a080e2a080e2a080e2a080e2a0800ae2a080e2a080e2a080e2a080e2a080e2a080e2a1b8e2a081e2a080e2a080e2a080e2a080e2a080e2a080e2a2b0e2a080e2a080e2a099e2a3a4e2a3b6e2a3bfe2a3bfe2a3bfe2a3bfe2a184e2a080e2a080e2a080e2a0800ae2a080e2a080e2a080e2a080e2a080e2a190e2a081e2a080e2a080e2a080e2a080e2a080e2a1a0e2a3b4e2a0bee2a3b7e2a186e2a080e2a2bfe2a3bfe2a3bfe2a3bfe2a3bfe2a3bfe2a3a7e2a080e2a080e2a080e2a0800ae2a080e2a080e2a080e2a080e2a080e2a087e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a280e2a3a7e2a3b4e2a184e2a2bbe2a3bfe2a3bfe2a3bfe2a3bfe2a3bfe2a080e2a080e2a080e2a0800ae2a080e2a080e2a080e2a080e2a2b8e2a080e2a080e2a2a0e2a080e2a080e2a080e2a080e2a080e2a080e2a088e2a089e2a289e2a0bfe2a2bfe2a386e2a2bfe2a3bfe2a3bfe2a3bfe2a3bfe2a180e2a080e2a080e2a0800ae2a080e2a080e2a080e2a080e2a08ee2a080e2a080e2a3bfe2a184e2a080e2a080e2a080e2a080e2a080e2a080e2a098e2a08be2a29be2a39fe2a09be2a083e2a099e2a0bbe2a0bfe2a3bfe2a187e2a080e2a080e2a0800ae2a080e2a080e2a080e2a2b8e2a184e2a080e2a080e2a198e2a08be2a089e2a180e2a2a0e2a3bee2a1b0e2a2b6e2a3b6e2a196e2a081e2a3a4e2a3b3e2a3bfe2a3b6e2a2b6e2a3b6e2a18ce2a0b3e2a0a4e2a380e2a3800ae2a080e2a080e2a080e2a2b8e2a2a0e2a080e2a280e2a3bfe2a3bfe2a3b6e2a3bfe2a3bfe2a3bfe2a087e2a080e2a081e2a3b7e2a384e2a388e2a399e2a39be2a3bfe2a3bfe2a3bfe2a1b2e2a192e2a092e2a092e2a08a0ae2a080e2a080e2a080e2a080e2a3bfe2a3bee2a3bfe2a3bfe2a3bfe2a3bfe2a3bfe2a3bfe2a19fe2a080e2a080e2a3b0e2a3bfe2a3bfe2a3bfe2a3bfe2a3bfe2a3bfe2a3bfe2a39fe2a3bfe2a3b6e2a184e2a080e2a0800ae2a080e2a080e2a080e2a2a0e2a3bfe2a3bfe2a3bfe2a3bfe2a3bfe2a3bfe2a3bfe2a3bfe2a387e2a080e2a090e2a3bfe2a0bfe2a3bfe2a3bfe2a3bfe2a3bfe2a1bfe2a08be2a080e2a099e2a3bfe2a187e2a080e2a0800ae2a080e2a080e2a080e2a3bfe2a3bfe2a1bfe2a081e2a0b8e2a3bfe2a3bfe2a3bfe2a3bfe2a3bfe2a3a6e2a0b8e2a08be2a2b8e2a3bfe2a3bfe2a3bfe2a1bfe2a081e2a080e2a080e2a080e2a2b8e2a3b7e2a180e2a0800ae2a080e2a080e2a080e2a3bbe2a3bfe2a187e2a080e2a080e2a080e2a3b9e2a3bfe2a1bfe2a2bbe2a3bfe2a2a0e2a180e2a0b8e2a3bfe2a3bfe2a3bfe2a3a7e2a080e2a080e2a080e2a080e2a098e2a3bfe2a3a7e2a0800ae2a080e2a080e2a2a0e2a089e2a3bfe2a087e2a080e2a080e2a2b0e2a08be2a3bfe2a3b0e2a381e2a19fe2a080e2a081e2a2bce2a3bfe2a1bfe2a0bfe2a08fe2a080e2a080e2a080e2a080e2a080e2a08be2a09fe2a0800ae2a080e2a080e2a2b0e2a3bfe2a08be2a080e2a080e2a080e2a280e2a3bfe2a18fe2a09be2a090e2a081e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a0800ae2a080e2a080e2a3bee2a187e2a080e2a080e2a080e2a280e2a08ee2a2b9e2a083e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a0800ae2a080e2a09ce2a2b9e2a187e2a080e2a080e2a080e2a0bee2a3b6e2a1bee2a083e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a0800ae2a0aee2a3bfe2a0bfe2a081e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a08045524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212201832f4e57c184e9fcc975d43751feb2cd59309258ded9793bcc6faa2187cbf6564736f6c63430008100033

Deployed Bytecode

0x6080604052600436106101445760003560e01c80634bec48a3116100b657806395d89b411161006f57806395d89b411461047b578063a8aa1b31146104a6578063a9059cbb146104d1578063dd62ed3e1461050e578063e94dd17c1461054b578063f2fde38b146105745761014b565b80634bec48a31461036b57806370a082311461039457806371916a6b146103d157806378109e54146103fa5780637d1db4a514610425578063893d20e8146104505761014b565b806323b872dd1161010857806323b872dd146102375780632f54bf6e14610274578063313ce567146102b15780633f4218e0146102dc578063404e51291461031957806348ff2b8b146103425761014b565b806306fdde0314610150578063095ea7b31461017b57806318160ddd146101b8578063189ae5f2146101e35780631f976b7e1461020c5761014b565b3661014b57005b600080fd5b34801561015c57600080fd5b5061016561059d565b60405161017291906125fe565b60405180910390f35b34801561018757600080fd5b506101a2600480360381019061019d91906126b9565b6105c0565b6040516101af9190612714565b60405180910390f35b3480156101c457600080fd5b506101cd6105d7565b6040516101da919061273e565b60405180910390f35b3480156101ef57600080fd5b5061020a60048036038101906102059190612759565b610618565b005b34801561021857600080fd5b50610221610778565b60405161022e919061273e565b60405180910390f35b34801561024357600080fd5b5061025e600480360381019061025991906127ac565b6107a1565b60405161026b9190612714565b60405180910390f35b34801561028057600080fd5b5061029b600480360381019061029691906127ff565b61086c565b6040516102a89190612714565b60405180910390f35b3480156102bd57600080fd5b506102c66108c5565b6040516102d39190612848565b60405180910390f35b3480156102e857600080fd5b5061030360048036038101906102fe91906127ff565b6108ce565b6040516103109190612714565b60405180910390f35b34801561032557600080fd5b50610340600480360381019061033b919061288f565b6108ee565b005b34801561034e57600080fd5b506103696004803603810190610364919061288f565b610991565b005b34801561037757600080fd5b50610392600480360381019061038d91906128cf565b610a34565b005b3480156103a057600080fd5b506103bb60048036038101906103b691906127ff565b610b33565b6040516103c8919061273e565b60405180910390f35b3480156103dd57600080fd5b506103f860048036038101906103f39190612971565b610b7c565b005b34801561040657600080fd5b5061040f610be9565b60405161041c919061273e565b60405180910390f35b34801561043157600080fd5b5061043a610c12565b604051610447919061273e565b60405180910390f35b34801561045c57600080fd5b50610465610c3b565b60405161047291906129ad565b60405180910390f35b34801561048757600080fd5b50610490610c64565b60405161049d91906125fe565b60405180910390f35b3480156104b257600080fd5b506104bb610ca1565b6040516104c891906129ad565b60405180910390f35b3480156104dd57600080fd5b506104f860048036038101906104f391906126b9565b610cc7565b6040516105059190612714565b60405180910390f35b34801561051a57600080fd5b50610535600480360381019061053091906129c8565b610cde565b604051610542919061273e565b60405180910390f35b34801561055757600080fd5b50610572600480360381019061056d9190612759565b610d65565b005b34801561058057600080fd5b5061059b60048036038101906105969190612a46565b610e19565b005b6060604051806107c0016040528061078f815260200161353b61078f9139905090565b60006105cd338484610edb565b6001905092915050565b60006106136105e66000610b33565b6106056105f461dead610b33565b6001546110a490919063ffffffff16565b6110a490919063ffffffff16565b905090565b6106213361086c565b610660576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065790612abf565b60405180910390fd5b60006127108461066e6105d7565b6106789190612b0e565b6106829190612b97565b90506000612710846106926105d7565b61069c9190612b0e565b6106a69190612b97565b90506000612710846106b66105d7565b6106c09190612b0e565b6106ca9190612b97565b905085600281905550846003819055508360048190555060006107126103e861070460056106f66105d7565b6110ba90919063ffffffff16565b6110d090919063ffffffff16565b90508084101580156107245750808310155b80156107305750808210155b61076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076690612c3a565b60405180910390fd5b50505050505050565b60006012546003546107886105d7565b6107929190612b0e565b61079c9190612b97565b905090565b60006107ae8484846110e6565b610861843361085c85604051806060016040528060288152602001613cca60289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112df9092919063ffffffff16565b610edb565b600190509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b60076020528060005260406000206000915054906101000a900460ff1681565b6108f73361086c565b610936576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092d90612abf565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61099a3361086c565b6109d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d090612abf565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610a3d3361086c565b610a7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7390612abf565b60405180910390fd5b86600b8190555085600c8190555084600e8190555083600d8190555082600f819055508160108190555080601181905550610ac360016012546110d090919063ffffffff16565b600f5411158015610aeb5750610ae560016012546110d090919063ffffffff16565b60105411155b610b2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2190612ccc565b60405180910390fd5b50505050505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610b853361086c565b610bc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbb90612abf565b60405180910390fd5b8015610be6576001600a60146101000a81548160ff0219169083151502179055505b50565b6000601254600454610bf96105d7565b610c039190612b0e565b610c0d9190612b97565b905090565b6000601254600254610c226105d7565b610c2c9190612b0e565b610c369190612b97565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017ff09f908200000000000000000000000000000000000000000000000000000000815250905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610cd43384846110e6565b6001905092915050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610d6e3361086c565b610dad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da490612abf565b60405180910390fd5b82601681905550610dde620186a0610dd0846001546110ba90919063ffffffff16565b6110d090919063ffffffff16565b601781905550610e0e620186a0610e00836001546110ba90919063ffffffff16565b6110d090919063ffffffff16565b601881905550505050565b610e223361086c565b610e61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5890612abf565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051610ed09190612d4b565b60405180910390a150565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4190612dd8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610fb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb090612e6a565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611097919061273e565b60405180910390a3505050565b600081836110b29190612e8a565b905092915050565b600081836110c89190612b0e565b905092915050565b600081836110de9190612b97565b905092915050565b6110f1838383611334565b6110fb83836114a5565b6111068383836115a2565b6111108383611780565b61111b83838361184b565b611126838383611a8a565b61117881600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110a490919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006111c78484611ab3565b6111d157816111dd565b6111dc848484611b61565b5b905061123181600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d0990919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516112d1919061273e565b60405180910390a350505050565b6000838311158290611327576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131e91906125fe565b60405180910390fd5b5082840390509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139a90612f30565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611412576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140990612fc2565b60405180910390fd5b60008111611455576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144c90613054565b60405180910390fd5b61145e83610b33565b8111156114a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611497906130e6565b60405180910390fd5b505050565b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156115495750600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561159e57600a60149054906101000a900460ff1661159d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159490613152565b60405180910390fd5b5b5050565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156116465750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156116a05750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156116da575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561177b576116e7610be9565b61173982600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d0990919063ffffffff16565b111561177a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611771906131be565b60405180910390fd5b5b505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480156118275750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156118475760016014600082825461183f91906131de565b925050819055505b5050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611993576118a8610778565b811115806118ff5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806119535750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611992576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119899061325e565b60405180910390fd5b5b61199b610c12565b811115806119f25750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611a465750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611a85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7c9061325e565b60405180910390fd5b505050565b611a95838383611d1f565b15611aae57611aa5601754611e59565b60006014819055505b505050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611b595750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b600080611b6e85856120aa565b1115611cfe576000611ba6611b8386866120aa565b611b98601254866110d090919063ffffffff16565b6110ba90919063ffffffff16565b9050611bfa81600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d0990919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611c9a919061273e565b60405180910390a36000600e541115611ce357611ce23061dead611cdd600e54611ccf601254896110d090919063ffffffff16565b6110ba90919063ffffffff16565b6110e6565b5b611cf681846110a490919063ffffffff16565b915050611d02565b8190505b9392505050565b60008183611d1791906131de565b905092915050565b60008060185483101590506000601754611d3830610b33565b10159050601560009054906101000a900460ff16158015611d655750601360009054906101000a900460ff165b8015611d7d5750600a60149054906101000a900460ff165b8015611d865750815b8015611ddc5750600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611e355750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b8015611e45575060165460145410155b8015611e4e5750805b925050509392505050565b6001601560006101000a81548160ff0219169083151502179055506000611ec76002611eb9600d54611eab600c54611e9d6001600b54611d0990919063ffffffff16565b611d0990919063ffffffff16565b611d0990919063ffffffff16565b6110ba90919063ffffffff16565b90506000611ef282611ee4600b54866110ba90919063ffffffff16565b6110d090919063ffffffff16565b90506000611f0982856110a490919063ffffffff16565b90506000479050611f1982612239565b6000611f2e82476110a490919063ffffffff16565b90506000611f59611f4a600b54886110a490919063ffffffff16565b836110d090919063ffffffff16565b90506000611f72600b54836110ba90919063ffffffff16565b90506000811115611f8857611f87868261247c565b5b6000611fb2600c54611fa46002866110ba90919063ffffffff16565b6110ba90919063ffffffff16565b9050600081111561201957730d83d8c2ca7f3dba418938f4a13111dd435d7cc573ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612017573d6000803e3d6000fd5b505b6000479050600081111561208357730d83d8c2ca7f3dba418938f4a13111dd435d7cc573ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612081573d6000803e3d6000fd5b505b5050505050505050506000601560006101000a81548160ff02191690831515021790555050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061214d5750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561216f5761216860646012546110a490919063ffffffff16565b9050612233565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036121ce576010549050612233565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361222d57600f549050612233565b60115490505b92915050565b6000600267ffffffffffffffff8111156122565761225561327e565b5b6040519080825280602002602001820160405280156122845781602001602082028036833780820191505090505b509050308160008151811061229c5761229b6132ad565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612343573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061236791906132f1565b8160018151811061237b5761237a6132ad565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506123e230600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610edb565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612446959493929190613417565b600060405180830381600087803b15801561246057600080fd5b505af1158015612474573d6000803e3d6000fd5b505050505050565b6124a930600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610edb565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080730d83d8c2ca7f3dba418938f4a13111dd435d7cc5426040518863ffffffff1660e01b815260040161252496959493929190613471565b60606040518083038185885af1158015612542573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061256791906134e7565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156125a857808201518184015260208101905061258d565b60008484015250505050565b6000601f19601f8301169050919050565b60006125d08261256e565b6125da8185612579565b93506125ea81856020860161258a565b6125f3816125b4565b840191505092915050565b6000602082019050818103600083015261261881846125c5565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061265082612625565b9050919050565b61266081612645565b811461266b57600080fd5b50565b60008135905061267d81612657565b92915050565b6000819050919050565b61269681612683565b81146126a157600080fd5b50565b6000813590506126b38161268d565b92915050565b600080604083850312156126d0576126cf612620565b5b60006126de8582860161266e565b92505060206126ef858286016126a4565b9150509250929050565b60008115159050919050565b61270e816126f9565b82525050565b60006020820190506127296000830184612705565b92915050565b61273881612683565b82525050565b6000602082019050612753600083018461272f565b92915050565b60008060006060848603121561277257612771612620565b5b6000612780868287016126a4565b9350506020612791868287016126a4565b92505060406127a2868287016126a4565b9150509250925092565b6000806000606084860312156127c5576127c4612620565b5b60006127d38682870161266e565b93505060206127e48682870161266e565b92505060406127f5868287016126a4565b9150509250925092565b60006020828403121561281557612814612620565b5b60006128238482850161266e565b91505092915050565b600060ff82169050919050565b6128428161282c565b82525050565b600060208201905061285d6000830184612839565b92915050565b61286c816126f9565b811461287757600080fd5b50565b60008135905061288981612863565b92915050565b600080604083850312156128a6576128a5612620565b5b60006128b48582860161266e565b92505060206128c58582860161287a565b9150509250929050565b600080600080600080600060e0888a0312156128ee576128ed612620565b5b60006128fc8a828b016126a4565b975050602061290d8a828b016126a4565b965050604061291e8a828b016126a4565b955050606061292f8a828b016126a4565b94505060806129408a828b016126a4565b93505060a06129518a828b016126a4565b92505060c06129628a828b016126a4565b91505092959891949750929550565b60006020828403121561298757612986612620565b5b60006129958482850161287a565b91505092915050565b6129a781612645565b82525050565b60006020820190506129c2600083018461299e565b92915050565b600080604083850312156129df576129de612620565b5b60006129ed8582860161266e565b92505060206129fe8582860161266e565b9150509250929050565b6000612a1382612625565b9050919050565b612a2381612a08565b8114612a2e57600080fd5b50565b600081359050612a4081612a1a565b92915050565b600060208284031215612a5c57612a5b612620565b5b6000612a6a84828501612a31565b91505092915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000612aa9600683612579565b9150612ab482612a73565b602082019050919050565b60006020820190508181036000830152612ad881612a9c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612b1982612683565b9150612b2483612683565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612b5d57612b5c612adf565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612ba282612683565b9150612bad83612683565b925082612bbd57612bbc612b68565b5b828204905092915050565b7f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560008201527f206c657373207468616e202e3525000000000000000000000000000000000000602082015250565b6000612c24602e83612579565b9150612c2f82612bc8565b604082019050919050565b60006020820190508181036000830152612c5381612c17565b9050919050565b7f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60008201527f6f7265207468616e203230250000000000000000000000000000000000000000602082015250565b6000612cb6602c83612579565b9150612cc182612c5a565b604082019050919050565b60006020820190508181036000830152612ce581612ca9565b9050919050565b6000819050919050565b6000612d11612d0c612d0784612625565b612cec565b612625565b9050919050565b6000612d2382612cf6565b9050919050565b6000612d3582612d18565b9050919050565b612d4581612d2a565b82525050565b6000602082019050612d606000830184612d3c565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612dc2602483612579565b9150612dcd82612d66565b604082019050919050565b60006020820190508181036000830152612df181612db5565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612e54602283612579565b9150612e5f82612df8565b604082019050919050565b60006020820190508181036000830152612e8381612e47565b9050919050565b6000612e9582612683565b9150612ea083612683565b9250828203905081811115612eb857612eb7612adf565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612f1a602583612579565b9150612f2582612ebe565b604082019050919050565b60006020820190508181036000830152612f4981612f0d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612fac602383612579565b9150612fb782612f50565b604082019050919050565b60006020820190508181036000830152612fdb81612f9f565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061303e602983612579565b915061304982612fe2565b604082019050919050565b6000602082019050818103600083015261306d81613031565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b60006130d0603183612579565b91506130db82613074565b604082019050919050565b600060208201905081810360008301526130ff816130c3565b9050919050565b7f74726164696e67416c6c6f776564000000000000000000000000000000000000600082015250565b600061313c600e83612579565b915061314782613106565b602082019050919050565b6000602082019050818103600083015261316b8161312f565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000600082015250565b60006131a8601e83612579565b91506131b382613172565b602082019050919050565b600060208201905081810360008301526131d78161319b565b9050919050565b60006131e982612683565b91506131f483612683565b925082820190508082111561320c5761320b612adf565b5b92915050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b6000613248601183612579565b915061325382613212565b602082019050919050565b600060208201905081810360008301526132778161323b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506132eb81612657565b92915050565b60006020828403121561330757613306612620565b5b6000613315848285016132dc565b91505092915050565b6000819050919050565b600061334361333e6133398461331e565b612cec565b612683565b9050919050565b61335381613328565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61338e81612645565b82525050565b60006133a08383613385565b60208301905092915050565b6000602082019050919050565b60006133c482613359565b6133ce8185613364565b93506133d983613375565b8060005b8381101561340a5781516133f18882613394565b97506133fc836133ac565b9250506001810190506133dd565b5085935050505092915050565b600060a08201905061342c600083018861272f565b613439602083018761334a565b818103604083015261344b81866133b9565b905061345a606083018561299e565b613467608083018461272f565b9695505050505050565b600060c082019050613486600083018961299e565b613493602083018861272f565b6134a0604083018761334a565b6134ad606083018661334a565b6134ba608083018561299e565b6134c760a083018461272f565b979650505050505050565b6000815190506134e18161268d565b92915050565b600080600060608486031215613500576134ff612620565b5b600061350e868287016134d2565b935050602061351f868287016134d2565b9250506040613530868287016134d2565b915050925092509256fee2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a280e2a3a0e2a3a4e2a3b4e2a3b6e2a3b6e2a1a6e2a0a4e2a0a4e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a0800ae2a080e2a080e2a080e2a080e2a080e2a080e2a2b0e2a3bfe2a39be2a389e2a389e2a389e2a3a9e2a3ade2a3a5e2a3a4e2a3a4e2a3a4e2a1a4e2a280e2a180e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a0800ae2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a088e2a080e2a089e2a089e2a081e2a080e2a080e2a080e2a080e2a080e2a080e2a088e2a089e2a2a2e2a086e2a080e2a080e2a080e2a080e2a080e2a080e2a0800ae2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a280e2a0a4e2a0a4e2a0a4e2a084e2a280e2a380e2a380e2a380e2a198e2a184e2a080e2a080e2a080e2a080e2a080e2a080e2a0800ae2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a1a0e2a090e2a081e2a080e2a080e2a080e2a080e2a180e2a080e2a080e2a2b4e2a3b6e2a3a7e2a180e2a080e2a080e2a080e2a080e2a080e2a0800ae2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a1a0e2a08ae2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a0b9e2a184e2a080e2a0a8e2a3bfe2a3bfe2a3b7e2a184e2a080e2a080e2a080e2a080e2a0800ae2a080e2a080e2a080e2a080e2a080e2a080e2a1b8e2a081e2a080e2a080e2a080e2a080e2a080e2a080e2a2b0e2a080e2a080e2a099e2a3a4e2a3b6e2a3bfe2a3bfe2a3bfe2a3bfe2a184e2a080e2a080e2a080e2a0800ae2a080e2a080e2a080e2a080e2a080e2a190e2a081e2a080e2a080e2a080e2a080e2a080e2a1a0e2a3b4e2a0bee2a3b7e2a186e2a080e2a2bfe2a3bfe2a3bfe2a3bfe2a3bfe2a3bfe2a3a7e2a080e2a080e2a080e2a0800ae2a080e2a080e2a080e2a080e2a080e2a087e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a280e2a3a7e2a3b4e2a184e2a2bbe2a3bfe2a3bfe2a3bfe2a3bfe2a3bfe2a080e2a080e2a080e2a0800ae2a080e2a080e2a080e2a080e2a2b8e2a080e2a080e2a2a0e2a080e2a080e2a080e2a080e2a080e2a080e2a088e2a089e2a289e2a0bfe2a2bfe2a386e2a2bfe2a3bfe2a3bfe2a3bfe2a3bfe2a180e2a080e2a080e2a0800ae2a080e2a080e2a080e2a080e2a08ee2a080e2a080e2a3bfe2a184e2a080e2a080e2a080e2a080e2a080e2a080e2a098e2a08be2a29be2a39fe2a09be2a083e2a099e2a0bbe2a0bfe2a3bfe2a187e2a080e2a080e2a0800ae2a080e2a080e2a080e2a2b8e2a184e2a080e2a080e2a198e2a08be2a089e2a180e2a2a0e2a3bee2a1b0e2a2b6e2a3b6e2a196e2a081e2a3a4e2a3b3e2a3bfe2a3b6e2a2b6e2a3b6e2a18ce2a0b3e2a0a4e2a380e2a3800ae2a080e2a080e2a080e2a2b8e2a2a0e2a080e2a280e2a3bfe2a3bfe2a3b6e2a3bfe2a3bfe2a3bfe2a087e2a080e2a081e2a3b7e2a384e2a388e2a399e2a39be2a3bfe2a3bfe2a3bfe2a1b2e2a192e2a092e2a092e2a08a0ae2a080e2a080e2a080e2a080e2a3bfe2a3bee2a3bfe2a3bfe2a3bfe2a3bfe2a3bfe2a3bfe2a19fe2a080e2a080e2a3b0e2a3bfe2a3bfe2a3bfe2a3bfe2a3bfe2a3bfe2a3bfe2a39fe2a3bfe2a3b6e2a184e2a080e2a0800ae2a080e2a080e2a080e2a2a0e2a3bfe2a3bfe2a3bfe2a3bfe2a3bfe2a3bfe2a3bfe2a3bfe2a387e2a080e2a090e2a3bfe2a0bfe2a3bfe2a3bfe2a3bfe2a3bfe2a1bfe2a08be2a080e2a099e2a3bfe2a187e2a080e2a0800ae2a080e2a080e2a080e2a3bfe2a3bfe2a1bfe2a081e2a0b8e2a3bfe2a3bfe2a3bfe2a3bfe2a3bfe2a3a6e2a0b8e2a08be2a2b8e2a3bfe2a3bfe2a3bfe2a1bfe2a081e2a080e2a080e2a080e2a2b8e2a3b7e2a180e2a0800ae2a080e2a080e2a080e2a3bbe2a3bfe2a187e2a080e2a080e2a080e2a3b9e2a3bfe2a1bfe2a2bbe2a3bfe2a2a0e2a180e2a0b8e2a3bfe2a3bfe2a3bfe2a3a7e2a080e2a080e2a080e2a080e2a098e2a3bfe2a3a7e2a0800ae2a080e2a080e2a2a0e2a089e2a3bfe2a087e2a080e2a080e2a2b0e2a08be2a3bfe2a3b0e2a381e2a19fe2a080e2a081e2a2bce2a3bfe2a1bfe2a0bfe2a08fe2a080e2a080e2a080e2a080e2a080e2a08be2a09fe2a0800ae2a080e2a080e2a2b0e2a3bfe2a08be2a080e2a080e2a080e2a280e2a3bfe2a18fe2a09be2a090e2a081e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a0800ae2a080e2a080e2a3bee2a187e2a080e2a080e2a080e2a280e2a08ee2a2b9e2a083e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a0800ae2a080e2a09ce2a2b9e2a187e2a080e2a080e2a080e2a0bee2a3b6e2a1bee2a083e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a0800ae2a0aee2a3bfe2a0bfe2a081e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a08045524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212201832f4e57c184e9fcc975d43751feb2cd59309258ded9793bcc6faa2187cbf6564736f6c63430008100033

Deployed Bytecode Sourcemap

6713:13932:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11039:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12179:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12318:132;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14495:580;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12695:119;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19988:309;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5093:87;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11189:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9228:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11959:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12065:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13963:524;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11438:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11262:86;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12456:114;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12576:113;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11354:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11112:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9346:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11547:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11692:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18425:315;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5186:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11039:67;11076:13;11099:5;;;;;;;;;;;;;;;;;11092:12;;11039:67;:::o;12179:133::-;12254:4;12261:37;12270:10;12282:7;12291:6;12261:8;:37::i;:::-;12306:4;12299:11;;12179:133;;;;:::o;12318:132::-;12371:7;12388:60;12426:21;12444:1;12426:9;:21::i;:::-;12388:33;12405:15;10094:42;12405:9;:15::i;:::-;12388:12;;:16;;:33;;;;:::i;:::-;:37;;:60;;;;:::i;:::-;12381:67;;12318:132;:::o;14495:580::-;5052:19;5060:10;5052:7;:19::i;:::-;5044:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14591:13:::1;14632:5;14624:4;14608:13;:11;:13::i;:::-;:20;;;;:::i;:::-;14607:30;;;;:::i;:::-;14591:46;;14648:19;14697:5;14687:6;14671:13;:11;:13::i;:::-;:22;;;;:::i;:::-;14670:32;;;;:::i;:::-;14648:54;;14713:17;14761:5;14750:7;14734:13;:11;:13::i;:::-;:23;;;;:::i;:::-;14733:33;;;;:::i;:::-;14713:53;;14799:4;14777:19;:26;;;;14836:6;14814:19;:28;;;;14873:7;14853:17;:27;;;;14891:13;14907:30;14932:4;14907:20;14925:1;14907:13;:11;:13::i;:::-;:17;;:20;;;;:::i;:::-;:24;;:30;;;;:::i;:::-;14891:46;;14965:5;14956;:14;;:38;;;;;14989:5;14974:11;:20;;14956:38;:60;;;;;15011:5;14998:9;:18;;14956:60;14948:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;14580:495;;;;14495:580:::0;;;:::o;12695:119::-;12746:7;12801:11;;12779:19;;12763:13;:11;:13::i;:::-;:35;;;;:::i;:::-;:49;;;;:::i;:::-;12756:56;;12695:119;:::o;19988:309::-;20086:4;20103:36;20113:6;20121:9;20132:6;20103:9;:36::i;:::-;20150:117;20159:6;20167:10;20179:87;20215:6;20179:87;;;;;;;;;;;;;;;;;:11;:19;20191:6;20179:19;;;;;;;;;;;;;;;:31;20199:10;20179:31;;;;;;;;;;;;;;;;:35;;:87;;;;;:::i;:::-;20150:8;:117::i;:::-;20285:4;20278:11;;19988:309;;;;;:::o;5093:87::-;5148:4;5173:5;;;;;;;;;;;5162:16;;:7;:16;;;5155:23;;5093:87;;;:::o;11189:67::-;11230:5;8879:1;11238:16;;11189:67;:::o;9228:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;11959:100::-;5052:19;5060:10;5052:7;:19::i;:::-;5044:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;12049:8:::1;12031:5;:15;12037:8;12031:15;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;11959:100:::0;;:::o;12065:108::-;5052:19;5060:10;5052:7;:19::i;:::-;5044:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;12163:8:::1;12139:11;:21;12151:8;12139:21;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;12065:108:::0;;:::o;13963:524::-;5052:19;5060:10;5052:7;:19::i;:::-;5044:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14151:10:::1;14136:12;:25;;;;14187:10;14172:12;:25;;;;14218:5;14208:7;:15;;;;14251:12;14234:14;:29;;;;14285:6;14274:8;:17;;;;14312:5;14302:7;:15;;;;14342:6;14328:11;:20;;;;14379:18;14395:1;14379:11;;:15;;:18;;;;:::i;:::-;14367:8;;:30;;:63;;;;;14412:18;14428:1;14412:11;;:15;;:18;;;;:::i;:::-;14401:7;;:29;;14367:63;14359:120;;;;;;;;;;;;:::i;:::-;;;;;;;;;13963:524:::0;;;;;;;:::o;11438:103::-;11504:7;11521:9;:18;11531:7;11521:18;;;;;;;;;;;;;;;;11514:25;;11438:103;;;:::o;11262:86::-;5052:19;5060:10;5052:7;:19::i;:::-;5044:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;11315:7:::1;11312:35;;;11341:4;11324:14;;:21;;;;;;;;;;;;;;;;;;11312:35;11262:86:::0;:::o;12456:114::-;12504:7;12557:11;;12537:17;;12521:13;:11;:13::i;:::-;:33;;;;:::i;:::-;:47;;;;:::i;:::-;12514:54;;12456:114;:::o;12576:113::-;12621:7;12676:11;;12654:19;;12638:13;:11;:13::i;:::-;:35;;;;:::i;:::-;:49;;;;:::i;:::-;12631:56;;12576:113;:::o;11354:78::-;11406:7;11424:5;;;;;;;;;;;11417:12;;11354:78;:::o;11112:71::-;11151:13;11174:7;;;;;;;;;;;;;;;;;11167:14;;11112:71;:::o;9346:19::-;;;;;;;;;;;;;:::o;11547:139::-;11625:4;11632:40;11642:10;11654:9;11665:6;11632:9;:40::i;:::-;11680:4;11673:11;;11547:139;;;;:::o;11692:127::-;11773:7;11790:11;:18;11802:5;11790:18;;;;;;;;;;;;;;;:27;11809:7;11790:27;;;;;;;;;;;;;;;;11783:34;;11692:127;;;;:::o;18425:315::-;5052:19;5060:10;5052:7;:19::i;:::-;5044:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;18567:11:::1;18554:10;:24;;;;18596:53;18641:6;18596:32;18613:14;18596:12;;:16;;:32;;;;:::i;:::-;:36;;:53;;;;:::i;:::-;18580:13;:69;;;;18678:54;18724:6;18678:33;18695:15;18678:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;18661:14;:71;;;;18425:315:::0;;;:::o;5186:111::-;5052:19;5060:10;5052:7;:19::i;:::-;5044:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;5260:3:::1;5252:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;5270:25;5291:3;5270:25;;;;;;:::i;:::-;;;;;;;;5186:111:::0;:::o;20305:335::-;20415:1;20398:19;;:5;:19;;;20390:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20496:1;20477:21;;:7;:21;;;20469:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20578:6;20548:11;:18;20560:5;20548:18;;;;;;;;;;;;;;;:27;20567:7;20548:27;;;;;;;;;;;;;;;:36;;;;20616:7;20600:32;;20609:5;20600:32;;;20625:6;20600:32;;;;;;:::i;:::-;;;;;;;;20305:335;;;:::o;2279:82::-;2337:7;2358:1;2354;:5;;;;:::i;:::-;2347:12;;2279:82;;;;:::o;2367:::-;2425:7;2446:1;2442;:5;;;;:::i;:::-;2435:12;;2367:82;;;;:::o;2455:::-;2513:7;2534:1;2530;:5;;;;:::i;:::-;2523:12;;2455:82;;;;:::o;13269:686::-;13358:37;13369:6;13377:9;13388:6;13358:10;:37::i;:::-;13406:38;13426:6;13434:9;13406:19;:38::i;:::-;13455:41;13470:6;13478:9;13489:6;13455:14;:41::i;:::-;13508:35;13525:6;13533:9;13508:16;:35::i;:::-;13554:39;13567:6;13575:9;13586:6;13554:12;:39::i;:::-;13605:35;13614:6;13622:9;13633:6;13605:8;:35::i;:::-;13671:29;13693:6;13671:9;:17;13681:6;13671:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;13651:9;:17;13661:6;13651:17;;;;;;;;;;;;;;;:49;;;;13711:22;13736:32;13750:6;13758:9;13736:13;:32::i;:::-;:78;;13808:6;13736:78;;;13771:34;13779:6;13787:9;13798:6;13771:7;:34::i;:::-;13736:78;13711:103;;13848:40;13873:14;13848:9;:20;13858:9;13848:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;13825:9;:20;13835:9;13825:20;;;;;;;;;;;;;;;:63;;;;13921:9;13904:43;;13913:6;13904:43;;;13932:14;13904:43;;;;;;:::i;:::-;;;;;;;;13347:608;13269:686;;;:::o;3492:162::-;3578:7;3621:1;3616;:6;;3624:12;3608:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3650:1;3646;:5;3639:12;;3492:162;;;;;:::o;12822:439::-;12944:1;12926:20;;:6;:20;;;12918:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;13028:1;13007:23;;:9;:23;;;12999:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13106:1;13089:6;:19;13081:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;13183:17;13193:6;13183:9;:17::i;:::-;13173:6;:27;;13165:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;12822:439;;;:::o;15083:191::-;15176:11;:19;15188:6;15176:19;;;;;;;;;;;;;;;;;;;;;;;;;15175:20;:47;;;;;15200:11;:22;15212:9;15200:22;;;;;;;;;;;;;;;;;;;;;;;;;15199:23;15175:47;15172:95;;;15232:14;;;;;;;;;;;15224:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;15172:95;15083:191;;:::o;15286:333::-;15390:11;:19;15402:6;15390:19;;;;;;;;;;;;;;;;;;;;;;;;;15389:20;:47;;;;;15414:11;:22;15426:9;15414:22;;;;;;;;;;;;;;;;;;;;;;;;;15413:23;15389:47;:77;;;;;15461:4;;;;;;;;;;;15440:26;;:9;:26;;;;15389:77;:107;;;;;10094:42;15470:26;;:9;:26;;;;15389:107;15386:226;;;15558:17;:15;:17::i;:::-;15521:32;15546:6;15521:9;:20;15531:9;15521:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;15520:55;;15512:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;15386:226;15286:333;;;:::o;15627:159::-;15724:4;;;;;;;;;;;15711:17;;:9;:17;;;:41;;;;;15733:11;:19;15745:6;15733:19;;;;;;;;;;;;;;;;;;;;;;;;;15732:20;15711:41;15708:71;;;15775:1;15754:9;;:23;;;;;;;:::i;:::-;;;;;;;;15708:71;15627:159;;:::o;15794:349::-;15905:4;;;;;;;;;;;15895:14;;:6;:14;;;15892:130;;15929:20;:18;:20::i;:::-;15919:6;:30;;:53;;;;15953:11;:19;15965:6;15953:19;;;;;;;;;;;;;;;;;;;;;;;;;15919:53;:79;;;;15976:11;:22;15988:9;15976:22;;;;;;;;;;;;;;;;;;;;;;;;;15919:79;15911:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;15892:130;16050:14;:12;:14::i;:::-;16040:6;:24;;:47;;;;16068:11;:19;16080:6;16068:19;;;;;;;;;;;;;;;;;;;;;;;;;16040:47;:73;;;;16091:11;:22;16103:9;16091:22;;;;;;;;;;;;;;;;;;;;;;;;;16040:73;16032:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;15794:349;;;:::o;18748:197::-;18840:41;18855:6;18863:9;18874:6;18840:14;:41::i;:::-;18837:101;;;18883:29;18898:13;;18883:14;:29::i;:::-;18934:1;18914:9;:22;;;;18837:101;18748:197;;;:::o;18953:160::-;19034:4;19059:11;:19;19071:6;19059:19;;;;;;;;;;;;;;;;;;;;;;;;;19058:20;:47;;;;;19083:11;:22;19095:9;19083:22;;;;;;;;;;;;;;;;;;;;;;;;;19082:23;19058:47;19051:54;;18953:160;;;;:::o;19434:546::-;19520:7;19576:1;19543:30;19555:6;19563:9;19543:11;:30::i;:::-;:34;19540:418;;;19589:17;19609:59;19637:30;19649:6;19657:9;19637:11;:30::i;:::-;19609:23;19620:11;;19609:6;:10;;:23;;;;:::i;:::-;:27;;:59;;;;:::i;:::-;19589:79;;19706:39;19735:9;19706;:24;19724:4;19706:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;19679:9;:24;19697:4;19679:24;;;;;;;;;;;;;;;:66;;;;19786:4;19761:42;;19770:6;19761:42;;;19793:9;19761:42;;;;;;:::i;:::-;;;;;;;;19835:1;19817:7;;:20;19814:104;;;19839:77;19857:4;10094:42;19879:36;19907:7;;19879:23;19890:11;;19879:6;:10;;:23;;;;:::i;:::-;:27;;:36;;;;:::i;:::-;19839:9;:77::i;:::-;19814:104;19935:21;19946:9;19935:6;:10;;:21;;;;:::i;:::-;19928:28;;;;;19540:418;19966:6;19959:13;;19434:546;;;;;;:::o;2191:82::-;2249:7;2270:1;2266;:5;;;;:::i;:::-;2259:12;;2191:82;;;;:::o;18018:399::-;18116:4;18133:13;18159:14;;18149:6;:24;;18133:40;;18184:19;18234:13;;18206:24;18224:4;18206:9;:24::i;:::-;:41;;18184:63;;18266:8;;;;;;;;;;;18265:9;:24;;;;;18278:11;;;;;;;;;;;18265:24;:42;;;;;18293:14;;;;;;;;;;;18265:42;:54;;;;;18311:8;18265:54;:78;;;;;18324:11;:19;18336:6;18324:19;;;;;;;;;;;;;;;;;;;;;;;;;18323:20;18265:78;:99;;;;;18360:4;;;;;;;;;;;18347:17;;:9;:17;;;18265:99;:126;;;;;18381:10;;18368:9;;:23;;18265:126;:144;;;;;18395:14;18265:144;18258:151;;;;18018:399;;;;;:::o;16151:1066::-;10026:4;10015:8;;:15;;;;;;;;;;;;;;;;;;16222:20:::1;16245:66;16309:1;16246:57;16288:14;;16246:37;16270:12;;16246:19;16263:1;16246:12;;:16;;:19;;;;:::i;:::-;:23;;:37;;;;:::i;:::-;:41;;:57;;;;:::i;:::-;16245:63;;:66;;;;:::i;:::-;16222:89;;16322:32;16357:42;16386:12;16357:24;16368:12;;16357:6;:10;;:24;;;;:::i;:::-;:28;;:42;;;;:::i;:::-;16322:77;;16410:14;16427:36;16438:24;16427:6;:10;;:36;;;;:::i;:::-;16410:53;;16474:22;16499:21;16474:46;;16531:24;16548:6;16531:16;:24::i;:::-;16566:20;16589:41;16615:14;16589:21;:25;;:41;;;;:::i;:::-;16566:64;;16641:19;16662:48;16679:30;16696:12;;16679;:16;;:30;;;;:::i;:::-;16662:12;:16;;:48;;;;:::i;:::-;16641:69;;16721:29;16753;16769:12;;16753:11;:15;;:29;;;;:::i;:::-;16721:61;;16828:1;16796:21;:34;16793:103;;;16832:61;16845:24;16871:21;16832:12;:61::i;:::-;16793:103;16906:20;16929:36;16952:12;;16929:18;16945:1;16929:11;:15;;:18;;;;:::i;:::-;:22;;:36;;;;:::i;:::-;16906:59;;16994:1;16979:12;:16;16976:73;;;10289:42;16997:36;;:50;17034:12;16997:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;16976:73;17059:24;17086:21;17059:48;;17148:1;17121:16;:29;17118:92;;;10192:42;17152:38;;:56;17191:16;17152:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;17118:92;16211:1006;;;;;;;;;10046:5:::0;10035:8;;:16;;;;;;;;;;;;;;;;;;16151:1066;:::o;19121:305::-;19200:7;19223:5;:13;19229:6;19223:13;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;;19240:5;:16;19246:9;19240:16;;;;;;;;;;;;;;;;;;;;;;;;;19223:33;19220:76;;;19265:29;19289:3;19265:11;;:15;;:29;;;;:::i;:::-;19258:36;;;;19220:76;19322:4;;;;;;;;;;;19309:17;;:9;:17;;;19306:38;;19335:7;;19328:14;;;;19306:38;19367:4;;;;;;;;;;;19357:14;;:6;:14;;;19354:36;;19380:8;;19373:15;;;;19354:36;19407:11;;19400:18;;19121:305;;;;;:::o;17576:434::-;17642:21;17680:1;17666:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17642:40;;17711:4;17693;17698:1;17693:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;17737:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17727:4;17732:1;17727:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;17761:53;17778:4;17793:6;;;;;;;;;;;17802:11;17761:8;:53::i;:::-;17825:6;;;;;;;;;;;:57;;;17897:11;17923:1;17939:4;17966;17986:15;17825:177;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17631:379;17576:434;:::o;17225:343::-;17306:53;17323:4;17338:6;;;;;;;;;;;17347:11;17306:8;:53::i;:::-;17370:6;;;;;;;;;;;:22;;;17400:9;17433:4;17453:11;17479:1;17495;10385:42;17544:15;17370:190;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;17225:343;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:::-;4500:6;4508;4516;4565:2;4553:9;4544:7;4540:23;4536:32;4533:119;;;4571:79;;:::i;:::-;4533:119;4691:1;4716:53;4761:7;4752:6;4741:9;4737:22;4716:53;:::i;:::-;4706:63;;4662:117;4818:2;4844:53;4889:7;4880:6;4869:9;4865:22;4844:53;:::i;:::-;4834:63;;4789:118;4946:2;4972:53;5017:7;5008:6;4997:9;4993:22;4972:53;:::i;:::-;4962:63;;4917:118;4423:619;;;;;:::o;5048:329::-;5107:6;5156:2;5144:9;5135:7;5131:23;5127:32;5124:119;;;5162:79;;:::i;:::-;5124:119;5282:1;5307:53;5352:7;5343:6;5332:9;5328:22;5307:53;:::i;:::-;5297:63;;5253:117;5048:329;;;;:::o;5383:86::-;5418:7;5458:4;5451:5;5447:16;5436:27;;5383:86;;;:::o;5475:112::-;5558:22;5574:5;5558:22;:::i;:::-;5553:3;5546:35;5475:112;;:::o;5593:214::-;5682:4;5720:2;5709:9;5705:18;5697:26;;5733:67;5797:1;5786:9;5782:17;5773:6;5733:67;:::i;:::-;5593:214;;;;:::o;5813:116::-;5883:21;5898:5;5883:21;:::i;:::-;5876:5;5873:32;5863:60;;5919:1;5916;5909:12;5863:60;5813:116;:::o;5935:133::-;5978:5;6016:6;6003:20;5994:29;;6032:30;6056:5;6032:30;:::i;:::-;5935:133;;;;:::o;6074:468::-;6139:6;6147;6196:2;6184:9;6175:7;6171:23;6167:32;6164:119;;;6202:79;;:::i;:::-;6164:119;6322:1;6347:53;6392:7;6383:6;6372:9;6368:22;6347:53;:::i;:::-;6337:63;;6293:117;6449:2;6475:50;6517:7;6508:6;6497:9;6493:22;6475:50;:::i;:::-;6465:60;;6420:115;6074:468;;;;;:::o;6548:1203::-;6661:6;6669;6677;6685;6693;6701;6709;6758:3;6746:9;6737:7;6733:23;6729:33;6726:120;;;6765:79;;:::i;:::-;6726:120;6885:1;6910:53;6955:7;6946:6;6935:9;6931:22;6910:53;:::i;:::-;6900:63;;6856:117;7012:2;7038:53;7083:7;7074:6;7063:9;7059:22;7038:53;:::i;:::-;7028:63;;6983:118;7140:2;7166:53;7211:7;7202:6;7191:9;7187:22;7166:53;:::i;:::-;7156:63;;7111:118;7268:2;7294:53;7339:7;7330:6;7319:9;7315:22;7294:53;:::i;:::-;7284:63;;7239:118;7396:3;7423:53;7468:7;7459:6;7448:9;7444:22;7423:53;:::i;:::-;7413:63;;7367:119;7525:3;7552:53;7597:7;7588:6;7577:9;7573:22;7552:53;:::i;:::-;7542:63;;7496:119;7654:3;7681:53;7726:7;7717:6;7706:9;7702:22;7681:53;:::i;:::-;7671:63;;7625:119;6548:1203;;;;;;;;;;:::o;7757:323::-;7813:6;7862:2;7850:9;7841:7;7837:23;7833:32;7830:119;;;7868:79;;:::i;:::-;7830:119;7988:1;8013:50;8055:7;8046:6;8035:9;8031:22;8013:50;:::i;:::-;8003:60;;7959:114;7757:323;;;;:::o;8086:118::-;8173:24;8191:5;8173:24;:::i;:::-;8168:3;8161:37;8086:118;;:::o;8210:222::-;8303:4;8341:2;8330:9;8326:18;8318:26;;8354:71;8422:1;8411:9;8407:17;8398:6;8354:71;:::i;:::-;8210:222;;;;:::o;8438:474::-;8506:6;8514;8563:2;8551:9;8542:7;8538:23;8534:32;8531:119;;;8569:79;;:::i;:::-;8531:119;8689:1;8714:53;8759:7;8750:6;8739:9;8735:22;8714:53;:::i;:::-;8704:63;;8660:117;8816:2;8842:53;8887:7;8878:6;8867:9;8863:22;8842:53;:::i;:::-;8832:63;;8787:118;8438:474;;;;;:::o;8918:104::-;8963:7;8992:24;9010:5;8992:24;:::i;:::-;8981:35;;8918:104;;;:::o;9028:138::-;9109:32;9135:5;9109:32;:::i;:::-;9102:5;9099:43;9089:71;;9156:1;9153;9146:12;9089:71;9028:138;:::o;9172:155::-;9226:5;9264:6;9251:20;9242:29;;9280:41;9315:5;9280:41;:::i;:::-;9172:155;;;;:::o;9333:345::-;9400:6;9449:2;9437:9;9428:7;9424:23;9420:32;9417:119;;;9455:79;;:::i;:::-;9417:119;9575:1;9600:61;9653:7;9644:6;9633:9;9629:22;9600:61;:::i;:::-;9590:71;;9546:125;9333:345;;;;:::o;9684:156::-;9824:8;9820:1;9812:6;9808:14;9801:32;9684:156;:::o;9846:365::-;9988:3;10009:66;10073:1;10068:3;10009:66;:::i;:::-;10002:73;;10084:93;10173:3;10084:93;:::i;:::-;10202:2;10197:3;10193:12;10186:19;;9846:365;;;:::o;10217:419::-;10383:4;10421:2;10410:9;10406:18;10398:26;;10470:9;10464:4;10460:20;10456:1;10445:9;10441:17;10434:47;10498:131;10624:4;10498:131;:::i;:::-;10490:139;;10217:419;;;:::o;10642:180::-;10690:77;10687:1;10680:88;10787:4;10784:1;10777:15;10811:4;10808:1;10801:15;10828:348;10868:7;10891:20;10909:1;10891:20;:::i;:::-;10886:25;;10925:20;10943:1;10925:20;:::i;:::-;10920:25;;11113:1;11045:66;11041:74;11038:1;11035:81;11030:1;11023:9;11016:17;11012:105;11009:131;;;11120:18;;:::i;:::-;11009:131;11168:1;11165;11161:9;11150:20;;10828:348;;;;:::o;11182:180::-;11230:77;11227:1;11220:88;11327:4;11324:1;11317:15;11351:4;11348:1;11341:15;11368:185;11408:1;11425:20;11443:1;11425:20;:::i;:::-;11420:25;;11459:20;11477:1;11459:20;:::i;:::-;11454:25;;11498:1;11488:35;;11503:18;;:::i;:::-;11488:35;11545:1;11542;11538:9;11533:14;;11368:185;;;;:::o;11559:233::-;11699:34;11695:1;11687:6;11683:14;11676:58;11768:16;11763:2;11755:6;11751:15;11744:41;11559:233;:::o;11798:366::-;11940:3;11961:67;12025:2;12020:3;11961:67;:::i;:::-;11954:74;;12037:93;12126:3;12037:93;:::i;:::-;12155:2;12150:3;12146:12;12139:19;;11798:366;;;:::o;12170:419::-;12336:4;12374:2;12363:9;12359:18;12351:26;;12423:9;12417:4;12413:20;12409:1;12398:9;12394:17;12387:47;12451:131;12577:4;12451:131;:::i;:::-;12443:139;;12170:419;;;:::o;12595:231::-;12735:34;12731:1;12723:6;12719:14;12712:58;12804:14;12799:2;12791:6;12787:15;12780:39;12595:231;:::o;12832:366::-;12974:3;12995:67;13059:2;13054:3;12995:67;:::i;:::-;12988:74;;13071:93;13160:3;13071:93;:::i;:::-;13189:2;13184:3;13180:12;13173:19;;12832:366;;;:::o;13204:419::-;13370:4;13408:2;13397:9;13393:18;13385:26;;13457:9;13451:4;13447:20;13443:1;13432:9;13428:17;13421:47;13485:131;13611:4;13485:131;:::i;:::-;13477:139;;13204:419;;;:::o;13629:60::-;13657:3;13678:5;13671:12;;13629:60;;;:::o;13695:142::-;13745:9;13778:53;13796:34;13805:24;13823:5;13805:24;:::i;:::-;13796:34;:::i;:::-;13778:53;:::i;:::-;13765:66;;13695:142;;;:::o;13843:126::-;13893:9;13926:37;13957:5;13926:37;:::i;:::-;13913:50;;13843:126;;;:::o;13975:134::-;14033:9;14066:37;14097:5;14066:37;:::i;:::-;14053:50;;13975:134;;;:::o;14115:147::-;14210:45;14249:5;14210:45;:::i;:::-;14205:3;14198:58;14115:147;;:::o;14268:238::-;14369:4;14407:2;14396:9;14392:18;14384:26;;14420:79;14496:1;14485:9;14481:17;14472:6;14420:79;:::i;:::-;14268:238;;;;:::o;14512:223::-;14652:34;14648:1;14640:6;14636:14;14629:58;14721:6;14716:2;14708:6;14704:15;14697:31;14512:223;:::o;14741:366::-;14883:3;14904:67;14968:2;14963:3;14904:67;:::i;:::-;14897:74;;14980:93;15069:3;14980:93;:::i;:::-;15098:2;15093:3;15089:12;15082:19;;14741:366;;;:::o;15113:419::-;15279:4;15317:2;15306:9;15302:18;15294:26;;15366:9;15360:4;15356:20;15352:1;15341:9;15337:17;15330:47;15394:131;15520:4;15394:131;:::i;:::-;15386:139;;15113:419;;;:::o;15538:221::-;15678:34;15674:1;15666:6;15662:14;15655:58;15747:4;15742:2;15734:6;15730:15;15723:29;15538:221;:::o;15765:366::-;15907:3;15928:67;15992:2;15987:3;15928:67;:::i;:::-;15921:74;;16004:93;16093:3;16004:93;:::i;:::-;16122:2;16117:3;16113:12;16106:19;;15765:366;;;:::o;16137:419::-;16303:4;16341:2;16330:9;16326:18;16318:26;;16390:9;16384:4;16380:20;16376:1;16365:9;16361:17;16354:47;16418:131;16544:4;16418:131;:::i;:::-;16410:139;;16137:419;;;:::o;16562:194::-;16602:4;16622:20;16640:1;16622:20;:::i;:::-;16617:25;;16656:20;16674:1;16656:20;:::i;:::-;16651:25;;16700:1;16697;16693:9;16685:17;;16724:1;16718:4;16715:11;16712:37;;;16729:18;;:::i;:::-;16712:37;16562:194;;;;:::o;16762:224::-;16902:34;16898:1;16890:6;16886:14;16879:58;16971:7;16966:2;16958:6;16954:15;16947:32;16762:224;:::o;16992:366::-;17134:3;17155:67;17219:2;17214:3;17155:67;:::i;:::-;17148:74;;17231:93;17320:3;17231:93;:::i;:::-;17349:2;17344:3;17340:12;17333:19;;16992:366;;;:::o;17364:419::-;17530:4;17568:2;17557:9;17553:18;17545:26;;17617:9;17611:4;17607:20;17603:1;17592:9;17588:17;17581:47;17645:131;17771:4;17645:131;:::i;:::-;17637:139;;17364:419;;;:::o;17789:222::-;17929:34;17925:1;17917:6;17913:14;17906:58;17998:5;17993:2;17985:6;17981:15;17974:30;17789:222;:::o;18017:366::-;18159:3;18180:67;18244:2;18239:3;18180:67;:::i;:::-;18173:74;;18256:93;18345:3;18256:93;:::i;:::-;18374:2;18369:3;18365:12;18358:19;;18017:366;;;:::o;18389:419::-;18555:4;18593:2;18582:9;18578:18;18570:26;;18642:9;18636:4;18632:20;18628:1;18617:9;18613:17;18606:47;18670:131;18796:4;18670:131;:::i;:::-;18662:139;;18389:419;;;:::o;18814:228::-;18954:34;18950:1;18942:6;18938:14;18931:58;19023:11;19018:2;19010:6;19006:15;18999:36;18814:228;:::o;19048:366::-;19190:3;19211:67;19275:2;19270:3;19211:67;:::i;:::-;19204:74;;19287:93;19376:3;19287:93;:::i;:::-;19405:2;19400:3;19396:12;19389:19;;19048:366;;;:::o;19420:419::-;19586:4;19624:2;19613:9;19609:18;19601:26;;19673:9;19667:4;19663:20;19659:1;19648:9;19644:17;19637:47;19701:131;19827:4;19701:131;:::i;:::-;19693:139;;19420:419;;;:::o;19845:236::-;19985:34;19981:1;19973:6;19969:14;19962:58;20054:19;20049:2;20041:6;20037:15;20030:44;19845:236;:::o;20087:366::-;20229:3;20250:67;20314:2;20309:3;20250:67;:::i;:::-;20243:74;;20326:93;20415:3;20326:93;:::i;:::-;20444:2;20439:3;20435:12;20428:19;;20087:366;;;:::o;20459:419::-;20625:4;20663:2;20652:9;20648:18;20640:26;;20712:9;20706:4;20702:20;20698:1;20687:9;20683:17;20676:47;20740:131;20866:4;20740:131;:::i;:::-;20732:139;;20459:419;;;:::o;20884:164::-;21024:16;21020:1;21012:6;21008:14;21001:40;20884:164;:::o;21054:366::-;21196:3;21217:67;21281:2;21276:3;21217:67;:::i;:::-;21210:74;;21293:93;21382:3;21293:93;:::i;:::-;21411:2;21406:3;21402:12;21395:19;;21054:366;;;:::o;21426:419::-;21592:4;21630:2;21619:9;21615:18;21607:26;;21679:9;21673:4;21669:20;21665:1;21654:9;21650:17;21643:47;21707:131;21833:4;21707:131;:::i;:::-;21699:139;;21426:419;;;:::o;21851:180::-;21991:32;21987:1;21979:6;21975:14;21968:56;21851:180;:::o;22037:366::-;22179:3;22200:67;22264:2;22259:3;22200:67;:::i;:::-;22193:74;;22276:93;22365:3;22276:93;:::i;:::-;22394:2;22389:3;22385:12;22378:19;;22037:366;;;:::o;22409:419::-;22575:4;22613:2;22602:9;22598:18;22590:26;;22662:9;22656:4;22652:20;22648:1;22637:9;22633:17;22626:47;22690:131;22816:4;22690:131;:::i;:::-;22682:139;;22409:419;;;:::o;22834:191::-;22874:3;22893:20;22911:1;22893:20;:::i;:::-;22888:25;;22927:20;22945:1;22927:20;:::i;:::-;22922:25;;22970:1;22967;22963:9;22956:16;;22991:3;22988:1;22985:10;22982:36;;;22998:18;;:::i;:::-;22982:36;22834:191;;;;:::o;23031:167::-;23171:19;23167:1;23159:6;23155:14;23148:43;23031:167;:::o;23204:366::-;23346:3;23367:67;23431:2;23426:3;23367:67;:::i;:::-;23360:74;;23443:93;23532:3;23443:93;:::i;:::-;23561:2;23556:3;23552:12;23545:19;;23204:366;;;:::o;23576:419::-;23742:4;23780:2;23769:9;23765:18;23757:26;;23829:9;23823:4;23819:20;23815:1;23804:9;23800:17;23793:47;23857:131;23983:4;23857:131;:::i;:::-;23849:139;;23576:419;;;:::o;24001:180::-;24049:77;24046:1;24039:88;24146:4;24143:1;24136:15;24170:4;24167:1;24160:15;24187:180;24235:77;24232:1;24225:88;24332:4;24329:1;24322:15;24356:4;24353:1;24346:15;24373:143;24430:5;24461:6;24455:13;24446:22;;24477:33;24504:5;24477:33;:::i;:::-;24373:143;;;;:::o;24522:351::-;24592:6;24641:2;24629:9;24620:7;24616:23;24612:32;24609:119;;;24647:79;;:::i;:::-;24609:119;24767:1;24792:64;24848:7;24839:6;24828:9;24824:22;24792:64;:::i;:::-;24782:74;;24738:128;24522:351;;;;:::o;24879:85::-;24924:7;24953:5;24942:16;;24879:85;;;:::o;24970:158::-;25028:9;25061:61;25079:42;25088:32;25114:5;25088:32;:::i;:::-;25079:42;:::i;:::-;25061:61;:::i;:::-;25048:74;;24970:158;;;:::o;25134:147::-;25229:45;25268:5;25229:45;:::i;:::-;25224:3;25217:58;25134:147;;:::o;25287:114::-;25354:6;25388:5;25382:12;25372:22;;25287:114;;;:::o;25407:184::-;25506:11;25540:6;25535:3;25528:19;25580:4;25575:3;25571:14;25556:29;;25407:184;;;;:::o;25597:132::-;25664:4;25687:3;25679:11;;25717:4;25712:3;25708:14;25700:22;;25597:132;;;:::o;25735:108::-;25812:24;25830:5;25812:24;:::i;:::-;25807:3;25800:37;25735:108;;:::o;25849:179::-;25918:10;25939:46;25981:3;25973:6;25939:46;:::i;:::-;26017:4;26012:3;26008:14;25994:28;;25849:179;;;;:::o;26034:113::-;26104:4;26136;26131:3;26127:14;26119:22;;26034:113;;;:::o;26183:732::-;26302:3;26331:54;26379:5;26331:54;:::i;:::-;26401:86;26480:6;26475:3;26401:86;:::i;:::-;26394:93;;26511:56;26561:5;26511:56;:::i;:::-;26590:7;26621:1;26606:284;26631:6;26628:1;26625:13;26606:284;;;26707:6;26701:13;26734:63;26793:3;26778:13;26734:63;:::i;:::-;26727:70;;26820:60;26873:6;26820:60;:::i;:::-;26810:70;;26666:224;26653:1;26650;26646:9;26641:14;;26606:284;;;26610:14;26906:3;26899:10;;26307:608;;;26183:732;;;;:::o;26921:831::-;27184:4;27222:3;27211:9;27207:19;27199:27;;27236:71;27304:1;27293:9;27289:17;27280:6;27236:71;:::i;:::-;27317:80;27393:2;27382:9;27378:18;27369:6;27317:80;:::i;:::-;27444:9;27438:4;27434:20;27429:2;27418:9;27414:18;27407:48;27472:108;27575:4;27566:6;27472:108;:::i;:::-;27464:116;;27590:72;27658:2;27647:9;27643:18;27634:6;27590:72;:::i;:::-;27672:73;27740:3;27729:9;27725:19;27716:6;27672:73;:::i;:::-;26921:831;;;;;;;;:::o;27758:807::-;28007:4;28045:3;28034:9;28030:19;28022:27;;28059:71;28127:1;28116:9;28112:17;28103:6;28059:71;:::i;:::-;28140:72;28208:2;28197:9;28193:18;28184:6;28140:72;:::i;:::-;28222:80;28298:2;28287:9;28283:18;28274:6;28222:80;:::i;:::-;28312;28388:2;28377:9;28373:18;28364:6;28312:80;:::i;:::-;28402:73;28470:3;28459:9;28455:19;28446:6;28402:73;:::i;:::-;28485;28553:3;28542:9;28538:19;28529:6;28485:73;:::i;:::-;27758:807;;;;;;;;;:::o;28571:143::-;28628:5;28659:6;28653:13;28644:22;;28675:33;28702:5;28675:33;:::i;:::-;28571:143;;;;:::o;28720:663::-;28808:6;28816;28824;28873:2;28861:9;28852:7;28848:23;28844:32;28841:119;;;28879:79;;:::i;:::-;28841:119;28999:1;29024:64;29080:7;29071:6;29060:9;29056:22;29024:64;:::i;:::-;29014:74;;28970:128;29137:2;29163:64;29219:7;29210:6;29199:9;29195:22;29163:64;:::i;:::-;29153:74;;29108:129;29276:2;29302:64;29358:7;29349:6;29338:9;29334:22;29302:64;:::i;:::-;29292:74;;29247:129;28720:663;;;;;:::o

Swarm Source

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