ETH Price: $3,091.94 (+0.79%)
Gas: 17 Gwei

Token

JOESBIRTHDAY (JOESBIRTHDAY)
 

Overview

Max Total Supply

1,000,000,000 JOESBIRTHDAY

Holders

67

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
9,703,825.568805823857965909 JOESBIRTHDAY

Value
$0.00
0xbd03390ec0111c2479c12b9dc7157e4c311cb5ac
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:
JOESBIRTHDAY

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

pragma solidity ^0.8;

library Address {
    function isContract(address account) internal view returns (bool) {

        return account.code.length > 0;
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

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

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _transferOwnership(_msgSender());
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

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

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

interface IERC20 {
    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(address indexed owner, address indexed spender, uint256 value);

    function totalSupply() external view returns (uint256);

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

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

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

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

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) external returns (bool);
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);

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

    function decimals() external view returns (uint8);
}

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

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

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, spender) + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        address owner = _msgSender();
        uint256 currentAllowance = allowance(owner, spender);
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
        }
        _balances[to] += amount;

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

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

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

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

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

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

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

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

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

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

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

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

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

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

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

interface IPair{
    function token0() external view returns (address);
    function token1() external view returns (address);
    function sync() external;
}

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 addLiquidity(
        address tokenA,
        address tokenB,
        uint amountATokenDesired,
        uint amountBTokenDesired,
        uint amountATokenMin,
        uint amountBTokenMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);

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

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

contract JOESBIRTHDAY is ERC20, Ownable{
    using Address for address payable;

    uint256 constant DECIMALS = 18;

    uint256 _totalSupply = 1_000_000_000 * (10**DECIMALS);

    mapping(address => bool) public exemptFee;
    mapping(address => bool) public isTxLimitExempt;
    mapping (address => bool) public isBlacklist;
    bool public antiBot = true;
    bool public swapEnabled;

    IRouter public router;
    address public pair;

    address public lpRecipient;
    address public marketingWallet;
    address public stakingPoolWallet;

    bool private swapping;
    uint256 public swapThreshold;
    uint256 public maxWalletAmount;
    uint256 public maxTxAmount;

    uint256 public transferFee;

    struct Fees {
        uint256 lp;
        uint256 marketing;
        uint256 stakingPool;
    }

    Fees public buyFees = Fees(2, 2, 1);
    Fees public sellFees = Fees(2, 2, 1);
    uint256 public totalSellFee = 5;
    uint256 public totalBuyFee = 5;

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

    event TaxRecipientsUpdated(address newLpRecipient, address newMarketingWallet, address newStakingPoolWallet);
    event FeesUpdated();
    event SwapThresholdUpdated(uint256 amount);
    event MaxWalletAmountUpdated(uint256 amount);
    event MaxTXAmountUpdated(uint256 amount);
    event ExemptFromFeeUpdated(address user, bool state);
    event ExemptTXUpdated(address user, bool state);

    constructor() ERC20("JOESBIRTHDAY", "JOESBIRTHDAY") {
        
        router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

        pair = IFactory(router.factory()).createPair(address(this), router.WETH());

        swapThreshold = 1_000_000 * (10**DECIMALS); // 0.1%
        maxWalletAmount = 10_000_000 * (10**DECIMALS); // 1%
        maxTxAmount = 10_000_000 * (10**DECIMALS); // 1%

        exemptFee[msg.sender] = true;
        exemptFee[address(this)] = true;
        
        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[address(this)] = true;
        isTxLimitExempt[address(router)] = true;
        isTxLimitExempt[pair] = true;

        _mint(msg.sender, _totalSupply);
    }

    function setTaxRecipients(address _lpRecipient, address _marketingWallet, address _stakingPoolWallet) external onlyOwner{
        require(_lpRecipient != address(0), "lpRecipient cannot be the 0 address");
        require(_marketingWallet != address(0), "marketingWallet cannot be the 0 address");
        require(_stakingPoolWallet != address(0), "stakingPoolWallet cannot be the 0 address");
        lpRecipient = _lpRecipient;
        marketingWallet = _marketingWallet;
        stakingPoolWallet = _stakingPoolWallet;

        exemptFee[stakingPoolWallet] = true;
        exemptFee[marketingWallet] = true;
        exemptFee[lpRecipient] = true;

        isTxLimitExempt[stakingPoolWallet] = true;
        isTxLimitExempt[marketingWallet] = true;
        isTxLimitExempt[lpRecipient] = true;

        emit TaxRecipientsUpdated(_lpRecipient, _marketingWallet, _stakingPoolWallet);
    }

    function setTransferFee(uint256 _transferFee) external onlyOwner{
        require(_transferFee < 6, "Transfer fee must be less than 6");
        transferFee = _transferFee;
        emit FeesUpdated();
    }

    function setBuyFees(uint256 _lp, uint256 _marketing, uint256 _stakingPool) external onlyOwner{
        require(_lp + _marketing + _stakingPool < 10, "Buy fee must be less than 10");
        buyFees = Fees(_lp, _marketing, _stakingPool);
        totalBuyFee = _lp + _marketing + _stakingPool;
        emit FeesUpdated();
    }

    function setSellFees(uint256 _lp, uint256 _marketing, uint256 _stakingPool) external onlyOwner{
        require(_lp + _marketing + _stakingPool < 10, "Sell fee must be less than 10");
        sellFees = Fees(_lp, _marketing, _stakingPool);
        totalSellFee = _lp + _marketing + _stakingPool;
        emit FeesUpdated();
    }

    function setSwapThreshold(uint256 amount) external onlyOwner{
        swapThreshold = amount * 10**DECIMALS;
        emit SwapThresholdUpdated(amount);
    }

    function setMaxWalletAmount(uint256 amount) external onlyOwner{
        require(amount >= 1_000_000, "Max wallet amount must be >= 1,000,000");
        maxWalletAmount = amount * 10**DECIMALS;
        emit MaxWalletAmountUpdated(amount);
    }
    
    function setMaxTxAmount(uint256 amount) external onlyOwner{
        require(amount >= 1_000_000, "Max TX amount must be >= 1,000,000");
        maxTxAmount = amount * 10**DECIMALS;
        emit MaxTXAmountUpdated(amount);
    }

    function setMulFeeExempt(address[] calldata addr, bool status) external onlyOwner {
        for(uint256 i = 0; i < addr.length; i++) {
            exemptFee[addr[i]] = status;
            emit ExemptFromFeeUpdated(addr[i], status);
        }
    }

    function setMulTXExempt(address[] calldata addr, bool status) external onlyOwner {
        for(uint256 i = 0; i < addr.length; i++) {
            isTxLimitExempt[addr[i]] = status;
            emit ExemptTXUpdated(addr[i], status);
        }
    }

    function setMulBlacklist(address[] calldata addr, bool _isBlacklist) external onlyOwner{
        for (uint256 i = 0; i < addr.length; i++) {
            require(addr[i] != address(router), "Can not block router");
            require(addr[i] != address(pair), "Can not block pair");
            isBlacklist[addr[i]] = _isBlacklist; 
        }
    }

    function _transfer(address from, address to, uint256 amount) internal override {
        require(amount > 0, "Transfer amount must be greater than zero");
        require(!isBlacklist[from], "From cannot be BOT");

        if(!exemptFee[from] && !exemptFee[to]) {
            require(swapEnabled, "Transactions are not enable");
            if(to != pair) require(balanceOf(to) + amount <= maxWalletAmount, "Receiver balance is exceeding maxWalletAmount");
        }

        if (swapEnabled && antiBot) {
            isBlacklist[to] = true;
        }

        if (!isTxLimitExempt[from]) {
            require(amount <= maxTxAmount, "Buy/Sell exceeds the max tx");
        }

        uint256 taxAmt;

        if(!swapping && !exemptFee[from] && !exemptFee[to]){
            if(to == pair){
                taxAmt = amount * totalSellFee / 100;
            } else if(from == pair){
                taxAmt = amount * totalBuyFee / 100;
            } else {
                taxAmt = amount * transferFee / 100;
            }
        }

        if (!swapping && to == pair && totalSellFee > 0) {
            takeFees();
        }

        super._transfer(from, to, amount - taxAmt);
        if(taxAmt > 0) {
            super._transfer(from, address(this), taxAmt);
        }
    }

    function takeFees() private inSwap {
        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance >= swapThreshold) {
            if(swapThreshold > 1){
                contractBalance = swapThreshold;
            }
            // Split the contract balance into halves
            uint256 denominator = totalSellFee * 2;
            uint256 tokensToAddLiquidityWith = contractBalance * sellFees.lp / denominator;
            uint256 toSwap = contractBalance - tokensToAddLiquidityWith;

            uint256 initialBalance = address(this).balance;

            swapTokensForETH(toSwap);

            uint256 deltaBalance = address(this).balance - initialBalance;
            uint256 unitBalance= deltaBalance / (denominator - sellFees.lp);
            uint256 ethToAddLiquidityWith = unitBalance * sellFees.lp;

            if(ethToAddLiquidityWith > 0){
                // Add liquidity to Uniswap
                addLiquidity(tokensToAddLiquidityWith, ethToAddLiquidityWith);
            }

            uint256 marketingAmt = unitBalance * 2 * sellFees.marketing;
            if(marketingAmt > 0){
                payable(marketingWallet).sendValue(marketingAmt);
            }

            uint256 stakingPoolAmt = unitBalance * 2 * sellFees.stakingPool;
            if(stakingPoolAmt > 0){
                payable(stakingPoolWallet).sendValue(stakingPoolAmt);
            }
        }
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> ETH
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        _approve(address(this), address(router), tokenAmount);

        // make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount, 0, path, address(this), block.timestamp);

    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(router), tokenAmount);

        // add the liquidity
        router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            lpRecipient,
            block.timestamp
        );
    }

    function setSwapEnabled() external onlyOwner {
        swapEnabled = true;
    }

    function turnOffAntiBot() external onlyOwner {
        antiBot = false;
    }

    function stuckETH() external payable {
        require(address(this).balance > 0, "Insufficient ETH balance");
        payable(marketingWallet).transfer(address(this).balance);
    }

    function stuckERC20(address token, uint256 value) external {
        require(
            ERC20(token).balanceOf(address(this)) >= value,
            "Insufficient ERC20 balance"
        );
        ERC20(token).transfer(marketingWallet, value);
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"bool","name":"state","type":"bool"}],"name":"ExemptFromFeeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"bool","name":"state","type":"bool"}],"name":"ExemptTXUpdated","type":"event"},{"anonymous":false,"inputs":[],"name":"FeesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"MaxTXAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"MaxWalletAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"SwapThresholdUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newLpRecipient","type":"address"},{"indexed":false,"internalType":"address","name":"newMarketingWallet","type":"address"},{"indexed":false,"internalType":"address","name":"newStakingPoolWallet","type":"address"}],"name":"TaxRecipientsUpdated","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":[{"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":[],"name":"antiBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFees","outputs":[{"internalType":"uint256","name":"lp","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"stakingPool","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"exemptFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBlacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellFees","outputs":[{"internalType":"uint256","name":"lp","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"stakingPool","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lp","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_stakingPool","type":"uint256"}],"name":"setBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addr","type":"address[]"},{"internalType":"bool","name":"_isBlacklist","type":"bool"}],"name":"setMulBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addr","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setMulFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addr","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setMulTXExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lp","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_stakingPool","type":"uint256"}],"name":"setSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_lpRecipient","type":"address"},{"internalType":"address","name":"_marketingWallet","type":"address"},{"internalType":"address","name":"_stakingPoolWallet","type":"address"}],"name":"setTaxRecipients","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_transferFee","type":"uint256"}],"name":"setTransferFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stakingPoolWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"stuckERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stuckETH","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"turnOffAntiBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126012600a6200061a565b6200002290633b9aca006200062f565b600655600a805460ff1916600190811790915560408051606080820183526002808352602080840182905292840185905260138190556014819055601585905583519182018452808252918101829052909101829052601681905560175560185560056019819055601a553480156200009a57600080fd5b50604080518082018252600c8082526b4a4f4553424952544844415960a01b6020808401829052845180860190955291845290830152906003620000df8382620006ed565b506004620000ee8282620006ed565b5050506200010b62000105620003c260201b60201c565b620003c6565b600a8054757a250d5630b4cf539739df2c5dacb4c659f2488d000062010000600160b01b031990911617908190556040805163c45a015560e01b81529051620100009092046001600160a01b03169163c45a0155916004808201926020929091908290030181865afa15801562000186573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ac9190620007b9565b6001600160a01b031663c9c6539630600a60029054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200020f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002359190620007b9565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000283573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a99190620007b9565b600b80546001600160a01b0319166001600160a01b0392909216919091179055620002d76012600a6200061a565b620002e690620f42406200062f565b600f55620002f76012600a6200061a565b6200030690629896806200062f565b601055620003176012600a6200061a565b6200032690629896806200062f565b6011553360008181526007602090815260408083208054600160ff199182168117909255308086528386208054831684179055868652600890945282852080548216831790559284528184208054841682179055600a546001600160a01b0362010000909104811685528285208054851683179055600b54168452922080549091169091179055600654620003bc919062000418565b620007fa565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216620004735760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060026000828254620004879190620007e4565b90915550506001600160a01b03821660009081526020819052604081208054839290620004b6908490620007e4565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200055c57816000190482111562000540576200054062000505565b808516156200054e57918102915b93841c939080029062000520565b509250929050565b600082620005755750600162000614565b81620005845750600062000614565b81600181146200059d5760028114620005a857620005c8565b600191505062000614565b60ff841115620005bc57620005bc62000505565b50506001821b62000614565b5060208310610133831016604e8410600b8410161715620005ed575081810a62000614565b620005f983836200051b565b806000190482111562000610576200061062000505565b0290505b92915050565b600062000628838362000564565b9392505050565b808202811582820484141762000614576200061462000505565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200067457607f821691505b6020821081036200069557634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200050057600081815260208120601f850160051c81016020861015620006c45750805b601f850160051c820191505b81811015620006e557828155600101620006d0565b505050505050565b81516001600160401b0381111562000709576200070962000649565b62000721816200071a84546200065f565b846200069b565b602080601f831160018114620007595760008415620007405750858301515b600019600386901b1c1916600185901b178555620006e5565b600085815260208120601f198616915b828110156200078a5788860151825594840194600190910190840162000769565b5085821015620007a95787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215620007cc57600080fd5b81516001600160a01b03811681146200062857600080fd5b8082018082111562000614576200061462000505565b6129c8806200080a6000396000f3fe6080604052600436106102815760003560e01c80638b42507f1161014f578063acb2ad6f116100c1578063e4748b9e1161007a578063e4748b9e146107b7578063eb7c95ec146107d6578063ec28438a146107de578063ef133c49146107fe578063f2fde38b14610813578063f887ea401461083357600080fd5b8063acb2ad6f146106e2578063c3ce786b146106f8578063c5d32bb214610718578063cf1cca3214610748578063dd62ed3e1461075d578063e0f3ccf51461077d57600080fd5b80639d0014b1116101135780639d0014b1146106365780639d9241ec14610656578063a457c2d71461066c578063a8aa1b311461068c578063a9059cbb146106ac578063aa4bde28146106cc57600080fd5b80638b42507f1461059d5780638c0b5e22146105cd5780638da5cb5b146105e35780638f02bb5b1461060157806395d89b411461062157600080fd5b8063313ce567116101f357806359b107b9116101ac57806359b107b9146104e35780636ddd1713146104f957806370a0823114610518578063715018a61461054e57806375f0a874146105635780637dfcbe341461058357600080fd5b8063313ce567146104175780633295841014610433578063333e99db146104535780633950935114610483578063452e68dd146104a35780634af7bf6a146104c357600080fd5b80630f683e90116102455780630f683e901461034a5780631737bade1461036a57806318160ddd1461038a57806323b872dd1461039f57806326190b47146103bf57806327a14fc2146103f757600080fd5b80630445b6671461028d57806306fdde03146102b6578063095ea7b3146102d85780630d075d9c146103085780630e6aa06a1461032a57600080fd5b3661028857005b600080fd5b34801561029957600080fd5b506102a3600f5481565b6040519081526020015b60405180910390f35b3480156102c257600080fd5b506102cb610859565b6040516102ad9190612457565b3480156102e457600080fd5b506102f86102f33660046124ba565b6108eb565b60405190151581526020016102ad565b34801561031457600080fd5b506103286103233660046124e6565b610905565b005b34801561033657600080fd5b50610328610345366004612520565b610a09565b34801561035657600080fd5b506103286103653660046124e6565b610bae565b34801561037657600080fd5b50610328610385366004612520565b610ca9565b34801561039657600080fd5b506002546102a3565b3480156103ab57600080fd5b506102f86103ba3660046125a6565b610dae565b3480156103cb57600080fd5b50600e546103df906001600160a01b031681565b6040516001600160a01b0390911681526020016102ad565b34801561040357600080fd5b506103286104123660046125e7565b610dd2565b34801561042357600080fd5b50604051601281526020016102ad565b34801561043f57600080fd5b5061032861044e366004612600565b610eae565b34801561045f57600080fd5b506102f861046e366004612640565b60096020526000908152604090205460ff1681565b34801561048f57600080fd5b506102f861049e3660046124ba565b611102565b3480156104af57600080fd5b50600c546103df906001600160a01b031681565b3480156104cf57600080fd5b506103286104de3660046124ba565b611124565b3480156104ef57600080fd5b506102a3601a5481565b34801561050557600080fd5b50600a546102f890610100900460ff1681565b34801561052457600080fd5b506102a3610533366004612640565b6001600160a01b031660009081526020819052604090205490565b34801561055a57600080fd5b50610328611258565b34801561056f57600080fd5b50600d546103df906001600160a01b031681565b34801561058f57600080fd5b50600a546102f89060ff1681565b3480156105a957600080fd5b506102f86105b8366004612640565b60086020526000908152604090205460ff1681565b3480156105d957600080fd5b506102a360115481565b3480156105ef57600080fd5b506005546001600160a01b03166103df565b34801561060d57600080fd5b5061032861061c3660046125e7565b61128e565b34801561062d57600080fd5b506102cb611339565b34801561064257600080fd5b506103286106513660046125e7565b611348565b34801561066257600080fd5b506102a360195481565b34801561067857600080fd5b506102f86106873660046124ba565b6113bb565b34801561069857600080fd5b50600b546103df906001600160a01b031681565b3480156106b857600080fd5b506102f86106c73660046124ba565b611436565b3480156106d857600080fd5b506102a360105481565b3480156106ee57600080fd5b506102a360125481565b34801561070457600080fd5b50610328610713366004612520565b611444565b34801561072457600080fd5b506102f8610733366004612640565b60076020526000908152604090205460ff1681565b34801561075457600080fd5b50610328611549565b34801561076957600080fd5b506102a3610778366004612664565b611584565b34801561078957600080fd5b5060165460175460185461079c92919083565b604080519384526020840192909252908201526060016102ad565b3480156107c357600080fd5b5060135460145460155461079c92919083565b6103286115af565b3480156107ea57600080fd5b506103286107f93660046125e7565b61163b565b34801561080a57600080fd5b5061032861170c565b34801561081f57600080fd5b5061032861082e366004612640565b611742565b34801561083f57600080fd5b50600a546103df906201000090046001600160a01b031681565b6060600380546108689061269d565b80601f01602080910402602001604051908101604052809291908181526020018280546108949061269d565b80156108e15780601f106108b6576101008083540402835291602001916108e1565b820191906000526020600020905b8154815290600101906020018083116108c457829003601f168201915b5050505050905090565b6000336108f98185856117da565b60019150505b92915050565b6005546001600160a01b031633146109385760405162461bcd60e51b815260040161092f906126d7565b60405180910390fd5b600a816109458486612722565b61094f9190612722565b1061099c5760405162461bcd60e51b815260206004820152601c60248201527f42757920666565206d757374206265206c657373207468616e20313000000000604482015260640161092f565b604080516060810182528481526020810184905201819052601383905560148290556015819055806109ce8385612722565b6109d89190612722565b601a556040517f6d58c6dc772669fca481506571330f160785469830c3888c824e5ff2e81c47d790600090a1505050565b6005546001600160a01b03163314610a335760405162461bcd60e51b815260040161092f906126d7565b60005b82811015610ba857600a546201000090046001600160a01b0316848483818110610a6257610a62612735565b9050602002016020810190610a779190612640565b6001600160a01b031603610ac45760405162461bcd60e51b815260206004820152601460248201527321b0b7103737ba10313637b1b5903937baba32b960611b604482015260640161092f565b600b546001600160a01b0316848483818110610ae257610ae2612735565b9050602002016020810190610af79190612640565b6001600160a01b031603610b425760405162461bcd60e51b815260206004820152601260248201527121b0b7103737ba10313637b1b5903830b4b960711b604482015260640161092f565b8160096000868685818110610b5957610b59612735565b9050602002016020810190610b6e9190612640565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610ba08161274b565b915050610a36565b50505050565b6005546001600160a01b03163314610bd85760405162461bcd60e51b815260040161092f906126d7565b600a81610be58486612722565b610bef9190612722565b10610c3c5760405162461bcd60e51b815260206004820152601d60248201527f53656c6c20666565206d757374206265206c657373207468616e203130000000604482015260640161092f565b60408051606081018252848152602081018490520181905260168390556017829055601881905580610c6e8385612722565b610c789190612722565b6019556040517f6d58c6dc772669fca481506571330f160785469830c3888c824e5ff2e81c47d790600090a1505050565b6005546001600160a01b03163314610cd35760405162461bcd60e51b815260040161092f906126d7565b60005b82811015610ba8578160076000868685818110610cf557610cf5612735565b9050602002016020810190610d0a9190612640565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f9817c07fa4cca31c109acf04d9dd7c6055b09f96b2927da7a8f9f447a0cf18d8848483818110610d6557610d65612735565b9050602002016020810190610d7a9190612640565b604080516001600160a01b03909216825284151560208301520160405180910390a180610da68161274b565b915050610cd6565b600033610dbc8582856118fe565b610dc7858585611972565b506001949350505050565b6005546001600160a01b03163314610dfc5760405162461bcd60e51b815260040161092f906126d7565b620f4240811015610e5e5760405162461bcd60e51b815260206004820152602660248201527f4d61782077616c6c657420616d6f756e74206d757374206265203e3d20312c30604482015265030302c3030360d41b606482015260840161092f565b610e6a6012600a612848565b610e749082612854565b6010556040518181527f4b39c36d20c57d220f61fd25c4349d4435cc03ef6c2a680942f15333c3c3e001906020015b60405180910390a150565b6005546001600160a01b03163314610ed85760405162461bcd60e51b815260040161092f906126d7565b6001600160a01b038316610f3a5760405162461bcd60e51b815260206004820152602360248201527f6c70526563697069656e742063616e6e6f74206265207468652030206164647260448201526265737360e81b606482015260840161092f565b6001600160a01b038216610fa05760405162461bcd60e51b815260206004820152602760248201527f6d61726b6574696e6757616c6c65742063616e6e6f74206265207468652030206044820152666164647265737360c81b606482015260840161092f565b6001600160a01b0381166110085760405162461bcd60e51b815260206004820152602960248201527f7374616b696e67506f6f6c57616c6c65742063616e6e6f74206265207468652060448201526830206164647265737360b81b606482015260840161092f565b600c80546001600160a01b038581166001600160a01b031992831681178455600d805487841690851681178255600e80548886169616861781556000868152600760209081526040808320805460ff19908116600190811790925587548a16855282852080548216831790558b548a16855282852080548216831790559454891684526008835281842080548616821790559554881683528083208054851687179055985490961681528790208054909116909217909155845191825291810191909152918201527fbf13ed3f750e39a36873a4c7a0134665f2708e445334c5ffeeb38d03e37fb17e9060600160405180910390a1505050565b6000336108f98185856111158383611584565b61111f9190612722565b6117da565b6040516370a0823160e01b815230600482015281906001600160a01b038416906370a0823190602401602060405180830381865afa15801561116a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118e919061286b565b10156111dc5760405162461bcd60e51b815260206004820152601a60248201527f496e73756666696369656e742045524332302062616c616e6365000000000000604482015260640161092f565b600d5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303816000875af115801561122f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112539190612884565b505050565b6005546001600160a01b031633146112825760405162461bcd60e51b815260040161092f906126d7565b61128c6000611d6b565b565b6005546001600160a01b031633146112b85760405162461bcd60e51b815260040161092f906126d7565b600681106113085760405162461bcd60e51b815260206004820181905260248201527f5472616e7366657220666565206d757374206265206c657373207468616e2036604482015260640161092f565b60128190556040517f6d58c6dc772669fca481506571330f160785469830c3888c824e5ff2e81c47d790600090a150565b6060600480546108689061269d565b6005546001600160a01b031633146113725760405162461bcd60e51b815260040161092f906126d7565b61137e6012600a612848565b6113889082612854565b600f556040518181527f18ff2fc8464635e4f668567019152095047e34d7a2ab4b97661ba4dc7fd0647690602001610ea3565b600033816113c98286611584565b9050838110156114295760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161092f565b610dc782868684036117da565b6000336108f9818585611972565b6005546001600160a01b0316331461146e5760405162461bcd60e51b815260040161092f906126d7565b60005b82811015610ba857816008600086868581811061149057611490612735565b90506020020160208101906114a59190612640565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557fee2dd93bfbfd4ff6b09c1d8d92a0d9c8b3c692a300ef77157a12db5c729efab784848381811061150057611500612735565b90506020020160208101906115159190612640565b604080516001600160a01b03909216825284151560208301520160405180910390a1806115418161274b565b915050611471565b6005546001600160a01b031633146115735760405162461bcd60e51b815260040161092f906126d7565b600a805461ff001916610100179055565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600047116115ff5760405162461bcd60e51b815260206004820152601860248201527f496e73756666696369656e74204554482062616c616e63650000000000000000604482015260640161092f565b600d546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611638573d6000803e3d6000fd5b50565b6005546001600160a01b031633146116655760405162461bcd60e51b815260040161092f906126d7565b620f42408110156116c35760405162461bcd60e51b815260206004820152602260248201527f4d617820545820616d6f756e74206d757374206265203e3d20312c3030302c30604482015261030360f41b606482015260840161092f565b6116cf6012600a612848565b6116d99082612854565b6011556040518181527f45dc041a3725cc05da557104417d328a6f511505bb931ea51067e7f83ce36d8590602001610ea3565b6005546001600160a01b031633146117365760405162461bcd60e51b815260040161092f906126d7565b600a805460ff19169055565b6005546001600160a01b0316331461176c5760405162461bcd60e51b815260040161092f906126d7565b6001600160a01b0381166117d15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161092f565b61163881611d6b565b6001600160a01b03831661183c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161092f565b6001600160a01b03821661189d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161092f565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061190a8484611584565b90506000198114610ba857818110156119655760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161092f565b610ba884848484036117da565b600081116119d45760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161092f565b6001600160a01b03831660009081526009602052604090205460ff1615611a325760405162461bcd60e51b8152602060048201526012602482015271119c9bdb4818d85b9b9bdd081899481093d560721b604482015260640161092f565b6001600160a01b03831660009081526007602052604090205460ff16158015611a7457506001600160a01b03821660009081526007602052604090205460ff16155b15611b7657600a54610100900460ff16611ad05760405162461bcd60e51b815260206004820152601b60248201527f5472616e73616374696f6e7320617265206e6f7420656e61626c650000000000604482015260640161092f565b600b546001600160a01b03838116911614611b765760105481611b08846001600160a01b031660009081526020819052604090205490565b611b129190612722565b1115611b765760405162461bcd60e51b815260206004820152602d60248201527f52656365697665722062616c616e636520697320657863656564696e67206d6160448201526c1e15d85b1b195d105b5bdd5b9d609a1b606482015260840161092f565b600a54610100900460ff168015611b8f5750600a5460ff165b15611bb8576001600160a01b0382166000908152600960205260409020805460ff191660011790555b6001600160a01b03831660009081526008602052604090205460ff16611c2a57601154811115611c2a5760405162461bcd60e51b815260206004820152601b60248201527f4275792f53656c6c206578636565647320746865206d61782074780000000000604482015260640161092f565b600e54600090600160a01b900460ff16158015611c6057506001600160a01b03841660009081526007602052604090205460ff16155b8015611c8557506001600160a01b03831660009081526007602052604090205460ff16155b15611d0457600b546001600160a01b0390811690841603611cc157606460195483611cb09190612854565b611cba91906128a1565b9050611d04565b600b546001600160a01b0390811690851603611ce7576064601a5483611cb09190612854565b606460125483611cf79190612854565b611d0191906128a1565b90505b600e54600160a01b900460ff16158015611d2b5750600b546001600160a01b038481169116145b8015611d3957506000601954115b15611d4657611d46611dbd565b611d5a8484611d5584866128c3565b611f31565b8015610ba857610ba8843083611f31565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600e54600160a01b900460ff1661128c57600e805460ff60a01b1916600160a01b179055306000908152602081905260408120549050600f548110611f21576001600f541115611e0c5750600f545b60006019546002611e1d9190612854565b905060008160166000015484611e339190612854565b611e3d91906128a1565b90506000611e4b82856128c3565b905047611e57826120ff565b6000611e6382476128c3565b601654909150600090611e7690876128c3565b611e8090836128a1565b601654909150600090611e939083612854565b90508015611ea557611ea5868261227e565b601754600090611eb6846002612854565b611ec09190612854565b90508015611ede57600d54611ede906001600160a01b03168261233e565b601854600090611eef856002612854565b611ef99190612854565b90508015611f1757600e54611f17906001600160a01b03168261233e565b5050505050505050505b50600e805460ff60a01b19169055565b6001600160a01b038316611f955760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161092f565b6001600160a01b038216611ff75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161092f565b6001600160a01b0383166000908152602081905260409020548181101561206f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161092f565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906120a6908490612722565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516120f291815260200190565b60405180910390a3610ba8565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061213457612134612735565b60200260200101906001600160a01b031690816001600160a01b031681525050600a60029054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121cb91906128d6565b816001815181106121de576121de612735565b6001600160a01b039283166020918202929092010152600a5461220a91309162010000900416846117da565b600a5460405163791ac94760e01b8152620100009091046001600160a01b03169063791ac947906122489085906000908690309042906004016128f3565b600060405180830381600087803b15801561226257600080fd5b505af1158015612276573d6000803e3d6000fd5b505050505050565b600a5461229c9030906201000090046001600160a01b0316846117da565b600a54600c5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015262010000909204169063f305d71990839060c40160606040518083038185885af1158015612312573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906123379190612964565b5050505050565b8047101561238e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161092f565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146123db576040519150601f19603f3d011682016040523d82523d6000602084013e6123e0565b606091505b50509050806112535760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d61792068617665207265766572746564000000000000606482015260840161092f565b600060208083528351808285015260005b8181101561248457858101830151858201604001528201612468565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461163857600080fd5b600080604083850312156124cd57600080fd5b82356124d8816124a5565b946020939093013593505050565b6000806000606084860312156124fb57600080fd5b505081359360208301359350604090920135919050565b801515811461163857600080fd5b60008060006040848603121561253557600080fd5b833567ffffffffffffffff8082111561254d57600080fd5b818601915086601f83011261256157600080fd5b81358181111561257057600080fd5b8760208260051b850101111561258557600080fd5b6020928301955093505084013561259b81612512565b809150509250925092565b6000806000606084860312156125bb57600080fd5b83356125c6816124a5565b925060208401356125d6816124a5565b929592945050506040919091013590565b6000602082840312156125f957600080fd5b5035919050565b60008060006060848603121561261557600080fd5b8335612620816124a5565b92506020840135612630816124a5565b9150604084013561259b816124a5565b60006020828403121561265257600080fd5b813561265d816124a5565b9392505050565b6000806040838503121561267757600080fd5b8235612682816124a5565b91506020830135612692816124a5565b809150509250929050565b600181811c908216806126b157607f821691505b6020821081036126d157634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808201808211156108ff576108ff61270c565b634e487b7160e01b600052603260045260246000fd5b60006001820161275d5761275d61270c565b5060010190565b600181815b8085111561279f5781600019048211156127855761278561270c565b8085161561279257918102915b93841c9390800290612769565b509250929050565b6000826127b6575060016108ff565b816127c3575060006108ff565b81600181146127d957600281146127e3576127ff565b60019150506108ff565b60ff8411156127f4576127f461270c565b50506001821b6108ff565b5060208310610133831016604e8410600b8410161715612822575081810a6108ff565b61282c8383612764565b80600019048211156128405761284061270c565b029392505050565b600061265d83836127a7565b80820281158282048414176108ff576108ff61270c565b60006020828403121561287d57600080fd5b5051919050565b60006020828403121561289657600080fd5b815161265d81612512565b6000826128be57634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156108ff576108ff61270c565b6000602082840312156128e857600080fd5b815161265d816124a5565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156129435784516001600160a01b03168352938301939183019160010161291e565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561297957600080fd5b835192506020840151915060408401519050925092509256fea264697066735822122012f6fa90687bfac4818dd48e0feaede1f9222a1d4d4bfef92c99023adb1c747f64736f6c63430008110033

Deployed Bytecode

0x6080604052600436106102815760003560e01c80638b42507f1161014f578063acb2ad6f116100c1578063e4748b9e1161007a578063e4748b9e146107b7578063eb7c95ec146107d6578063ec28438a146107de578063ef133c49146107fe578063f2fde38b14610813578063f887ea401461083357600080fd5b8063acb2ad6f146106e2578063c3ce786b146106f8578063c5d32bb214610718578063cf1cca3214610748578063dd62ed3e1461075d578063e0f3ccf51461077d57600080fd5b80639d0014b1116101135780639d0014b1146106365780639d9241ec14610656578063a457c2d71461066c578063a8aa1b311461068c578063a9059cbb146106ac578063aa4bde28146106cc57600080fd5b80638b42507f1461059d5780638c0b5e22146105cd5780638da5cb5b146105e35780638f02bb5b1461060157806395d89b411461062157600080fd5b8063313ce567116101f357806359b107b9116101ac57806359b107b9146104e35780636ddd1713146104f957806370a0823114610518578063715018a61461054e57806375f0a874146105635780637dfcbe341461058357600080fd5b8063313ce567146104175780633295841014610433578063333e99db146104535780633950935114610483578063452e68dd146104a35780634af7bf6a146104c357600080fd5b80630f683e90116102455780630f683e901461034a5780631737bade1461036a57806318160ddd1461038a57806323b872dd1461039f57806326190b47146103bf57806327a14fc2146103f757600080fd5b80630445b6671461028d57806306fdde03146102b6578063095ea7b3146102d85780630d075d9c146103085780630e6aa06a1461032a57600080fd5b3661028857005b600080fd5b34801561029957600080fd5b506102a3600f5481565b6040519081526020015b60405180910390f35b3480156102c257600080fd5b506102cb610859565b6040516102ad9190612457565b3480156102e457600080fd5b506102f86102f33660046124ba565b6108eb565b60405190151581526020016102ad565b34801561031457600080fd5b506103286103233660046124e6565b610905565b005b34801561033657600080fd5b50610328610345366004612520565b610a09565b34801561035657600080fd5b506103286103653660046124e6565b610bae565b34801561037657600080fd5b50610328610385366004612520565b610ca9565b34801561039657600080fd5b506002546102a3565b3480156103ab57600080fd5b506102f86103ba3660046125a6565b610dae565b3480156103cb57600080fd5b50600e546103df906001600160a01b031681565b6040516001600160a01b0390911681526020016102ad565b34801561040357600080fd5b506103286104123660046125e7565b610dd2565b34801561042357600080fd5b50604051601281526020016102ad565b34801561043f57600080fd5b5061032861044e366004612600565b610eae565b34801561045f57600080fd5b506102f861046e366004612640565b60096020526000908152604090205460ff1681565b34801561048f57600080fd5b506102f861049e3660046124ba565b611102565b3480156104af57600080fd5b50600c546103df906001600160a01b031681565b3480156104cf57600080fd5b506103286104de3660046124ba565b611124565b3480156104ef57600080fd5b506102a3601a5481565b34801561050557600080fd5b50600a546102f890610100900460ff1681565b34801561052457600080fd5b506102a3610533366004612640565b6001600160a01b031660009081526020819052604090205490565b34801561055a57600080fd5b50610328611258565b34801561056f57600080fd5b50600d546103df906001600160a01b031681565b34801561058f57600080fd5b50600a546102f89060ff1681565b3480156105a957600080fd5b506102f86105b8366004612640565b60086020526000908152604090205460ff1681565b3480156105d957600080fd5b506102a360115481565b3480156105ef57600080fd5b506005546001600160a01b03166103df565b34801561060d57600080fd5b5061032861061c3660046125e7565b61128e565b34801561062d57600080fd5b506102cb611339565b34801561064257600080fd5b506103286106513660046125e7565b611348565b34801561066257600080fd5b506102a360195481565b34801561067857600080fd5b506102f86106873660046124ba565b6113bb565b34801561069857600080fd5b50600b546103df906001600160a01b031681565b3480156106b857600080fd5b506102f86106c73660046124ba565b611436565b3480156106d857600080fd5b506102a360105481565b3480156106ee57600080fd5b506102a360125481565b34801561070457600080fd5b50610328610713366004612520565b611444565b34801561072457600080fd5b506102f8610733366004612640565b60076020526000908152604090205460ff1681565b34801561075457600080fd5b50610328611549565b34801561076957600080fd5b506102a3610778366004612664565b611584565b34801561078957600080fd5b5060165460175460185461079c92919083565b604080519384526020840192909252908201526060016102ad565b3480156107c357600080fd5b5060135460145460155461079c92919083565b6103286115af565b3480156107ea57600080fd5b506103286107f93660046125e7565b61163b565b34801561080a57600080fd5b5061032861170c565b34801561081f57600080fd5b5061032861082e366004612640565b611742565b34801561083f57600080fd5b50600a546103df906201000090046001600160a01b031681565b6060600380546108689061269d565b80601f01602080910402602001604051908101604052809291908181526020018280546108949061269d565b80156108e15780601f106108b6576101008083540402835291602001916108e1565b820191906000526020600020905b8154815290600101906020018083116108c457829003601f168201915b5050505050905090565b6000336108f98185856117da565b60019150505b92915050565b6005546001600160a01b031633146109385760405162461bcd60e51b815260040161092f906126d7565b60405180910390fd5b600a816109458486612722565b61094f9190612722565b1061099c5760405162461bcd60e51b815260206004820152601c60248201527f42757920666565206d757374206265206c657373207468616e20313000000000604482015260640161092f565b604080516060810182528481526020810184905201819052601383905560148290556015819055806109ce8385612722565b6109d89190612722565b601a556040517f6d58c6dc772669fca481506571330f160785469830c3888c824e5ff2e81c47d790600090a1505050565b6005546001600160a01b03163314610a335760405162461bcd60e51b815260040161092f906126d7565b60005b82811015610ba857600a546201000090046001600160a01b0316848483818110610a6257610a62612735565b9050602002016020810190610a779190612640565b6001600160a01b031603610ac45760405162461bcd60e51b815260206004820152601460248201527321b0b7103737ba10313637b1b5903937baba32b960611b604482015260640161092f565b600b546001600160a01b0316848483818110610ae257610ae2612735565b9050602002016020810190610af79190612640565b6001600160a01b031603610b425760405162461bcd60e51b815260206004820152601260248201527121b0b7103737ba10313637b1b5903830b4b960711b604482015260640161092f565b8160096000868685818110610b5957610b59612735565b9050602002016020810190610b6e9190612640565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610ba08161274b565b915050610a36565b50505050565b6005546001600160a01b03163314610bd85760405162461bcd60e51b815260040161092f906126d7565b600a81610be58486612722565b610bef9190612722565b10610c3c5760405162461bcd60e51b815260206004820152601d60248201527f53656c6c20666565206d757374206265206c657373207468616e203130000000604482015260640161092f565b60408051606081018252848152602081018490520181905260168390556017829055601881905580610c6e8385612722565b610c789190612722565b6019556040517f6d58c6dc772669fca481506571330f160785469830c3888c824e5ff2e81c47d790600090a1505050565b6005546001600160a01b03163314610cd35760405162461bcd60e51b815260040161092f906126d7565b60005b82811015610ba8578160076000868685818110610cf557610cf5612735565b9050602002016020810190610d0a9190612640565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f9817c07fa4cca31c109acf04d9dd7c6055b09f96b2927da7a8f9f447a0cf18d8848483818110610d6557610d65612735565b9050602002016020810190610d7a9190612640565b604080516001600160a01b03909216825284151560208301520160405180910390a180610da68161274b565b915050610cd6565b600033610dbc8582856118fe565b610dc7858585611972565b506001949350505050565b6005546001600160a01b03163314610dfc5760405162461bcd60e51b815260040161092f906126d7565b620f4240811015610e5e5760405162461bcd60e51b815260206004820152602660248201527f4d61782077616c6c657420616d6f756e74206d757374206265203e3d20312c30604482015265030302c3030360d41b606482015260840161092f565b610e6a6012600a612848565b610e749082612854565b6010556040518181527f4b39c36d20c57d220f61fd25c4349d4435cc03ef6c2a680942f15333c3c3e001906020015b60405180910390a150565b6005546001600160a01b03163314610ed85760405162461bcd60e51b815260040161092f906126d7565b6001600160a01b038316610f3a5760405162461bcd60e51b815260206004820152602360248201527f6c70526563697069656e742063616e6e6f74206265207468652030206164647260448201526265737360e81b606482015260840161092f565b6001600160a01b038216610fa05760405162461bcd60e51b815260206004820152602760248201527f6d61726b6574696e6757616c6c65742063616e6e6f74206265207468652030206044820152666164647265737360c81b606482015260840161092f565b6001600160a01b0381166110085760405162461bcd60e51b815260206004820152602960248201527f7374616b696e67506f6f6c57616c6c65742063616e6e6f74206265207468652060448201526830206164647265737360b81b606482015260840161092f565b600c80546001600160a01b038581166001600160a01b031992831681178455600d805487841690851681178255600e80548886169616861781556000868152600760209081526040808320805460ff19908116600190811790925587548a16855282852080548216831790558b548a16855282852080548216831790559454891684526008835281842080548616821790559554881683528083208054851687179055985490961681528790208054909116909217909155845191825291810191909152918201527fbf13ed3f750e39a36873a4c7a0134665f2708e445334c5ffeeb38d03e37fb17e9060600160405180910390a1505050565b6000336108f98185856111158383611584565b61111f9190612722565b6117da565b6040516370a0823160e01b815230600482015281906001600160a01b038416906370a0823190602401602060405180830381865afa15801561116a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118e919061286b565b10156111dc5760405162461bcd60e51b815260206004820152601a60248201527f496e73756666696369656e742045524332302062616c616e6365000000000000604482015260640161092f565b600d5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303816000875af115801561122f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112539190612884565b505050565b6005546001600160a01b031633146112825760405162461bcd60e51b815260040161092f906126d7565b61128c6000611d6b565b565b6005546001600160a01b031633146112b85760405162461bcd60e51b815260040161092f906126d7565b600681106113085760405162461bcd60e51b815260206004820181905260248201527f5472616e7366657220666565206d757374206265206c657373207468616e2036604482015260640161092f565b60128190556040517f6d58c6dc772669fca481506571330f160785469830c3888c824e5ff2e81c47d790600090a150565b6060600480546108689061269d565b6005546001600160a01b031633146113725760405162461bcd60e51b815260040161092f906126d7565b61137e6012600a612848565b6113889082612854565b600f556040518181527f18ff2fc8464635e4f668567019152095047e34d7a2ab4b97661ba4dc7fd0647690602001610ea3565b600033816113c98286611584565b9050838110156114295760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161092f565b610dc782868684036117da565b6000336108f9818585611972565b6005546001600160a01b0316331461146e5760405162461bcd60e51b815260040161092f906126d7565b60005b82811015610ba857816008600086868581811061149057611490612735565b90506020020160208101906114a59190612640565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557fee2dd93bfbfd4ff6b09c1d8d92a0d9c8b3c692a300ef77157a12db5c729efab784848381811061150057611500612735565b90506020020160208101906115159190612640565b604080516001600160a01b03909216825284151560208301520160405180910390a1806115418161274b565b915050611471565b6005546001600160a01b031633146115735760405162461bcd60e51b815260040161092f906126d7565b600a805461ff001916610100179055565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600047116115ff5760405162461bcd60e51b815260206004820152601860248201527f496e73756666696369656e74204554482062616c616e63650000000000000000604482015260640161092f565b600d546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611638573d6000803e3d6000fd5b50565b6005546001600160a01b031633146116655760405162461bcd60e51b815260040161092f906126d7565b620f42408110156116c35760405162461bcd60e51b815260206004820152602260248201527f4d617820545820616d6f756e74206d757374206265203e3d20312c3030302c30604482015261030360f41b606482015260840161092f565b6116cf6012600a612848565b6116d99082612854565b6011556040518181527f45dc041a3725cc05da557104417d328a6f511505bb931ea51067e7f83ce36d8590602001610ea3565b6005546001600160a01b031633146117365760405162461bcd60e51b815260040161092f906126d7565b600a805460ff19169055565b6005546001600160a01b0316331461176c5760405162461bcd60e51b815260040161092f906126d7565b6001600160a01b0381166117d15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161092f565b61163881611d6b565b6001600160a01b03831661183c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161092f565b6001600160a01b03821661189d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161092f565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061190a8484611584565b90506000198114610ba857818110156119655760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161092f565b610ba884848484036117da565b600081116119d45760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161092f565b6001600160a01b03831660009081526009602052604090205460ff1615611a325760405162461bcd60e51b8152602060048201526012602482015271119c9bdb4818d85b9b9bdd081899481093d560721b604482015260640161092f565b6001600160a01b03831660009081526007602052604090205460ff16158015611a7457506001600160a01b03821660009081526007602052604090205460ff16155b15611b7657600a54610100900460ff16611ad05760405162461bcd60e51b815260206004820152601b60248201527f5472616e73616374696f6e7320617265206e6f7420656e61626c650000000000604482015260640161092f565b600b546001600160a01b03838116911614611b765760105481611b08846001600160a01b031660009081526020819052604090205490565b611b129190612722565b1115611b765760405162461bcd60e51b815260206004820152602d60248201527f52656365697665722062616c616e636520697320657863656564696e67206d6160448201526c1e15d85b1b195d105b5bdd5b9d609a1b606482015260840161092f565b600a54610100900460ff168015611b8f5750600a5460ff165b15611bb8576001600160a01b0382166000908152600960205260409020805460ff191660011790555b6001600160a01b03831660009081526008602052604090205460ff16611c2a57601154811115611c2a5760405162461bcd60e51b815260206004820152601b60248201527f4275792f53656c6c206578636565647320746865206d61782074780000000000604482015260640161092f565b600e54600090600160a01b900460ff16158015611c6057506001600160a01b03841660009081526007602052604090205460ff16155b8015611c8557506001600160a01b03831660009081526007602052604090205460ff16155b15611d0457600b546001600160a01b0390811690841603611cc157606460195483611cb09190612854565b611cba91906128a1565b9050611d04565b600b546001600160a01b0390811690851603611ce7576064601a5483611cb09190612854565b606460125483611cf79190612854565b611d0191906128a1565b90505b600e54600160a01b900460ff16158015611d2b5750600b546001600160a01b038481169116145b8015611d3957506000601954115b15611d4657611d46611dbd565b611d5a8484611d5584866128c3565b611f31565b8015610ba857610ba8843083611f31565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600e54600160a01b900460ff1661128c57600e805460ff60a01b1916600160a01b179055306000908152602081905260408120549050600f548110611f21576001600f541115611e0c5750600f545b60006019546002611e1d9190612854565b905060008160166000015484611e339190612854565b611e3d91906128a1565b90506000611e4b82856128c3565b905047611e57826120ff565b6000611e6382476128c3565b601654909150600090611e7690876128c3565b611e8090836128a1565b601654909150600090611e939083612854565b90508015611ea557611ea5868261227e565b601754600090611eb6846002612854565b611ec09190612854565b90508015611ede57600d54611ede906001600160a01b03168261233e565b601854600090611eef856002612854565b611ef99190612854565b90508015611f1757600e54611f17906001600160a01b03168261233e565b5050505050505050505b50600e805460ff60a01b19169055565b6001600160a01b038316611f955760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161092f565b6001600160a01b038216611ff75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161092f565b6001600160a01b0383166000908152602081905260409020548181101561206f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161092f565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906120a6908490612722565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516120f291815260200190565b60405180910390a3610ba8565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061213457612134612735565b60200260200101906001600160a01b031690816001600160a01b031681525050600a60029054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121cb91906128d6565b816001815181106121de576121de612735565b6001600160a01b039283166020918202929092010152600a5461220a91309162010000900416846117da565b600a5460405163791ac94760e01b8152620100009091046001600160a01b03169063791ac947906122489085906000908690309042906004016128f3565b600060405180830381600087803b15801561226257600080fd5b505af1158015612276573d6000803e3d6000fd5b505050505050565b600a5461229c9030906201000090046001600160a01b0316846117da565b600a54600c5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015262010000909204169063f305d71990839060c40160606040518083038185885af1158015612312573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906123379190612964565b5050505050565b8047101561238e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161092f565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146123db576040519150601f19603f3d011682016040523d82523d6000602084013e6123e0565b606091505b50509050806112535760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d61792068617665207265766572746564000000000000606482015260840161092f565b600060208083528351808285015260005b8181101561248457858101830151858201604001528201612468565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461163857600080fd5b600080604083850312156124cd57600080fd5b82356124d8816124a5565b946020939093013593505050565b6000806000606084860312156124fb57600080fd5b505081359360208301359350604090920135919050565b801515811461163857600080fd5b60008060006040848603121561253557600080fd5b833567ffffffffffffffff8082111561254d57600080fd5b818601915086601f83011261256157600080fd5b81358181111561257057600080fd5b8760208260051b850101111561258557600080fd5b6020928301955093505084013561259b81612512565b809150509250925092565b6000806000606084860312156125bb57600080fd5b83356125c6816124a5565b925060208401356125d6816124a5565b929592945050506040919091013590565b6000602082840312156125f957600080fd5b5035919050565b60008060006060848603121561261557600080fd5b8335612620816124a5565b92506020840135612630816124a5565b9150604084013561259b816124a5565b60006020828403121561265257600080fd5b813561265d816124a5565b9392505050565b6000806040838503121561267757600080fd5b8235612682816124a5565b91506020830135612692816124a5565b809150509250929050565b600181811c908216806126b157607f821691505b6020821081036126d157634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808201808211156108ff576108ff61270c565b634e487b7160e01b600052603260045260246000fd5b60006001820161275d5761275d61270c565b5060010190565b600181815b8085111561279f5781600019048211156127855761278561270c565b8085161561279257918102915b93841c9390800290612769565b509250929050565b6000826127b6575060016108ff565b816127c3575060006108ff565b81600181146127d957600281146127e3576127ff565b60019150506108ff565b60ff8411156127f4576127f461270c565b50506001821b6108ff565b5060208310610133831016604e8410600b8410161715612822575081810a6108ff565b61282c8383612764565b80600019048211156128405761284061270c565b029392505050565b600061265d83836127a7565b80820281158282048414176108ff576108ff61270c565b60006020828403121561287d57600080fd5b5051919050565b60006020828403121561289657600080fd5b815161265d81612512565b6000826128be57634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156108ff576108ff61270c565b6000602082840312156128e857600080fd5b815161265d816124a5565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156129435784516001600160a01b03168352938301939183019160010161291e565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561297957600080fd5b835192506020840151915060408401519050925092509256fea264697066735822122012f6fa90687bfac4818dd48e0feaede1f9222a1d4d4bfef92c99023adb1c747f64736f6c63430008110033

Deployed Bytecode Sourcemap

12719:10087:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13321:28;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;13321:28:0;;;;;;;;6248:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;7180:201::-;;;;;;;;;;-1:-1:-1;7180:201:0;;;;;:::i;:::-;;:::i;:::-;;;1370:14:1;;1363:22;1345:41;;1333:2;1318:18;7180:201:0;1205:187:1;16153:330:0;;;;;;;;;;-1:-1:-1;16153:330:0;;;;;:::i;:::-;;:::i;:::-;;18019:354;;;;;;;;;;-1:-1:-1;18019:354:0;;;;;:::i;:::-;;:::i;16491:334::-;;;;;;;;;;-1:-1:-1;16491:334:0;;;;;:::i;:::-;;:::i;17499:252::-;;;;;;;;;;-1:-1:-1;17499:252:0;;;;;:::i;:::-;;:::i;6569:108::-;;;;;;;;;;-1:-1:-1;6657:12:0;;6569:108;;7389:295;;;;;;;;;;-1:-1:-1;7389:295:0;;;;;:::i;:::-;;:::i;13252:32::-;;;;;;;;;;-1:-1:-1;13252:32:0;;;;-1:-1:-1;;;;;13252:32:0;;;;;;-1:-1:-1;;;;;3221:32:1;;;3203:51;;3191:2;3176:18;13252:32:0;3057:203:1;17001:247:0;;;;;;;;;;-1:-1:-1;17001:247:0;;;;;:::i;:::-;;:::i;6468:93::-;;;;;;;;;;-1:-1:-1;6468:93:0;;6551:2;3592:36:1;;3580:2;3565:18;6468:93:0;3450:184:1;15021:906:0;;;;;;;;;;-1:-1:-1;15021:906:0;;;;;:::i;:::-;;:::i;13010:44::-;;;;;;;;;;-1:-1:-1;13010:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;7692:238;;;;;;;;;;-1:-1:-1;7692:238:0;;;;;:::i;:::-;;:::i;13182:26::-;;;;;;;;;;-1:-1:-1;13182:26:0;;;;-1:-1:-1;;;;;13182:26:0;;;22510:256;;;;;;;;;;-1:-1:-1;22510:256:0;;;;;:::i;:::-;;:::i;13693:30::-;;;;;;;;;;;;;;;;13094:23;;;;;;;;;;-1:-1:-1;13094:23:0;;;;;;;;;;;6685:127;;;;;;;;;;-1:-1:-1;6685:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;6786:18:0;6759:7;6786:18;;;;;;;;;;;;6685:127;4390:103;;;;;;;;;;;;;:::i;13215:30::-;;;;;;;;;;-1:-1:-1;13215:30:0;;;;-1:-1:-1;;;;;13215:30:0;;;13061:26;;;;;;;;;;-1:-1:-1;13061:26:0;;;;;;;;12956:47;;;;;;;;;;-1:-1:-1;12956:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;13393:26;;;;;;;;;;;;;;;;4167:87;;;;;;;;;;-1:-1:-1;4240:6:0;;-1:-1:-1;;;;;4240:6:0;4167:87;;15935:210;;;;;;;;;;-1:-1:-1;15935:210:0;;;;;:::i;:::-;;:::i;6356:104::-;;;;;;;;;;;;;:::i;16833:160::-;;;;;;;;;;-1:-1:-1;16833:160:0;;;;;:::i;:::-;;:::i;13655:31::-;;;;;;;;;;;;;;;;7938:436;;;;;;;;;;-1:-1:-1;7938:436:0;;;;;:::i;:::-;;:::i;13154:19::-;;;;;;;;;;-1:-1:-1;13154:19:0;;;;-1:-1:-1;;;;;13154:19:0;;;6820:193;;;;;;;;;;-1:-1:-1;6820:193:0;;;;;:::i;:::-;;:::i;13356:30::-;;;;;;;;;;;;;;;;13428:26;;;;;;;;;;;;;;;;17759:252;;;;;;;;;;-1:-1:-1;17759:252:0;;;;;:::i;:::-;;:::i;12908:41::-;;;;;;;;;;-1:-1:-1;12908:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;22140:82;;;;;;;;;;;;;:::i;7021:151::-;;;;;;;;;;-1:-1:-1;7021:151:0;;;;;:::i;:::-;;:::i;13612:36::-;;;;;;;;;;-1:-1:-1;13612:36:0;;;;;;;;;;;;;;;;5020:25:1;;;5076:2;5061:18;;5054:34;;;;5104:18;;;5097:34;5008:2;4993:18;13612:36:0;4818:319:1;13570:35:0;;;;;;;;;;-1:-1:-1;13570:35:0;;;;;;;;;;;;22317:185;;;:::i;17260:231::-;;;;;;;;;;-1:-1:-1;17260:231:0;;;;;:::i;:::-;;:::i;22230:79::-;;;;;;;;;;;;;:::i;4501:201::-;;;;;;;;;;-1:-1:-1;4501:201:0;;;;;:::i;:::-;;:::i;13126:21::-;;;;;;;;;;-1:-1:-1;13126:21:0;;;;;;;-1:-1:-1;;;;;13126:21:0;;;6248:100;6302:13;6335:5;6328:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6248:100;:::o;7180:201::-;7263:4;3793:10;7319:32;3793:10;7335:7;7344:6;7319:8;:32::i;:::-;7369:4;7362:11;;;7180:201;;;;;:::o;16153:330::-;4240:6;;-1:-1:-1;;;;;4240:6:0;3793:10;4302:23;4294:68;;;;-1:-1:-1;;;4294:68:0;;;;;;;:::i;:::-;;;;;;;;;16299:2:::1;16284:12:::0;16265:16:::1;16271:10:::0;16265:3;:16:::1;:::i;:::-;:31;;;;:::i;:::-;:36;16257:77;;;::::0;-1:-1:-1;;;16257:77:0;;6576:2:1;16257:77:0::1;::::0;::::1;6558:21:1::0;6615:2;6595:18;;;6588:30;6654;6634:18;;;6627:58;6702:18;;16257:77:0::1;6374:352:1::0;16257:77:0::1;16355:35;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;16345:7:::1;:45:::0;;;;;;;;;;;16377:12;16415:16:::1;16365:10:::0;16360:3;16415:16:::1;:::i;:::-;:31;;;;:::i;:::-;16401:11;:45:::0;16462:13:::1;::::0;::::1;::::0;;;::::1;16153:330:::0;;;:::o;18019:354::-;4240:6;;-1:-1:-1;;;;;4240:6:0;3793:10;4302:23;4294:68;;;;-1:-1:-1;;;4294:68:0;;;;;;;:::i;:::-;18122:9:::1;18117:249;18137:15:::0;;::::1;18117:249;;;18201:6;::::0;;;::::1;-1:-1:-1::0;;;;;18201:6:0::1;18182:4:::0;;18187:1;18182:7;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18182:26:0::1;::::0;18174:59:::1;;;::::0;-1:-1:-1;;;18174:59:0;;7065:2:1;18174:59:0::1;::::0;::::1;7047:21:1::0;7104:2;7084:18;;;7077:30;-1:-1:-1;;;7123:18:1;;;7116:50;7183:18;;18174:59:0::1;6863:344:1::0;18174:59:0::1;18275:4;::::0;-1:-1:-1;;;;;18275:4:0::1;18256::::0;;18261:1;18256:7;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18256:24:0::1;::::0;18248:55:::1;;;::::0;-1:-1:-1;;;18248:55:0;;7414:2:1;18248:55:0::1;::::0;::::1;7396:21:1::0;7453:2;7433:18;;;7426:30;-1:-1:-1;;;7472:18:1;;;7465:48;7530:18;;18248:55:0::1;7212:342:1::0;18248:55:0::1;18341:12;18318:11;:20;18330:4;;18335:1;18330:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18318:20:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;18318:20:0;:35;;-1:-1:-1;;18318:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18154:3;::::1;::::0;::::1;:::i;:::-;;;;18117:249;;;;18019:354:::0;;;:::o;16491:334::-;4240:6;;-1:-1:-1;;;;;4240:6:0;3793:10;4302:23;4294:68;;;;-1:-1:-1;;;4294:68:0;;;;;;;:::i;:::-;16638:2:::1;16623:12:::0;16604:16:::1;16610:10:::0;16604:3;:16:::1;:::i;:::-;:31;;;;:::i;:::-;:36;16596:78;;;::::0;-1:-1:-1;;;16596:78:0;;7901:2:1;16596:78:0::1;::::0;::::1;7883:21:1::0;7940:2;7920:18;;;7913:30;7979:31;7959:18;;;7952:59;8028:18;;16596:78:0::1;7699:353:1::0;16596:78:0::1;16696:35;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;16685:8:::1;:46:::0;;;;;;;;;;;16718:12;16757:16:::1;16706:10:::0;16701:3;16757:16:::1;:::i;:::-;:31;;;;:::i;:::-;16742:12;:46:::0;16804:13:::1;::::0;::::1;::::0;;;::::1;16491:334:::0;;;:::o;17499:252::-;4240:6;;-1:-1:-1;;;;;4240:6:0;3793:10;4302:23;4294:68;;;;-1:-1:-1;;;4294:68:0;;;;;;;:::i;:::-;17596:9:::1;17592:152;17611:15:::0;;::::1;17592:152;;;17669:6;17648:9;:18;17658:4;;17663:1;17658:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17648:18:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;17648:18:0;:27;;-1:-1:-1;;17648:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17695:37:::1;17716:4:::0;;17721:1;17716:7;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;17695:37;::::0;;-1:-1:-1;;;;;8243:32:1;;;8225:51;;8319:14;;8312:22;8307:2;8292:18;;8285:50;8198:18;17695:37:0::1;;;;;;;17628:3:::0;::::1;::::0;::::1;:::i;:::-;;;;17592:152;;7389:295:::0;7520:4;3793:10;7578:38;7594:4;3793:10;7609:6;7578:15;:38::i;:::-;7627:27;7637:4;7643:2;7647:6;7627:9;:27::i;:::-;-1:-1:-1;7672:4:0;;7389:295;-1:-1:-1;;;;7389:295:0:o;17001:247::-;4240:6;;-1:-1:-1;;;;;4240:6:0;3793:10;4302:23;4294:68;;;;-1:-1:-1;;;4294:68:0;;;;;;;:::i;:::-;17092:9:::1;17082:6;:19;;17074:70;;;::::0;-1:-1:-1;;;17074:70:0;;8548:2:1;17074:70:0::1;::::0;::::1;8530:21:1::0;8587:2;8567:18;;;8560:30;8626:34;8606:18;;;8599:62;-1:-1:-1;;;8677:18:1;;;8670:36;8723:19;;17074:70:0::1;8346:402:1::0;17074:70:0::1;17182:12;12835:2;17182;:12;:::i;:::-;17173:21;::::0;:6;:21:::1;:::i;:::-;17155:15;:39:::0;17210:30:::1;::::0;160:25:1;;;17210:30:0::1;::::0;148:2:1;133:18;17210:30:0::1;;;;;;;;17001:247:::0;:::o;15021:906::-;4240:6;;-1:-1:-1;;;;;4240:6:0;3793:10;4302:23;4294:68;;;;-1:-1:-1;;;4294:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15160:26:0;::::1;15152:74;;;::::0;-1:-1:-1;;;15152:74:0;;10502:2:1;15152:74:0::1;::::0;::::1;10484:21:1::0;10541:2;10521:18;;;10514:30;10580:34;10560:18;;;10553:62;-1:-1:-1;;;10631:18:1;;;10624:33;10674:19;;15152:74:0::1;10300:399:1::0;15152:74:0::1;-1:-1:-1::0;;;;;15245:30:0;::::1;15237:82;;;::::0;-1:-1:-1;;;15237:82:0;;10906:2:1;15237:82:0::1;::::0;::::1;10888:21:1::0;10945:2;10925:18;;;10918:30;10984:34;10964:18;;;10957:62;-1:-1:-1;;;11035:18:1;;;11028:37;11082:19;;15237:82:0::1;10704:403:1::0;15237:82:0::1;-1:-1:-1::0;;;;;15338:32:0;::::1;15330:86;;;::::0;-1:-1:-1;;;15330:86:0;;11314:2:1;15330:86:0::1;::::0;::::1;11296:21:1::0;11353:2;11333:18;;;11326:30;11392:34;11372:18;;;11365:62;-1:-1:-1;;;11443:18:1;;;11436:39;11492:19;;15330:86:0::1;11112:405:1::0;15330:86:0::1;15427:11;:26:::0;;-1:-1:-1;;;;;15427:26:0;;::::1;-1:-1:-1::0;;;;;;15427:26:0;;::::1;::::0;::::1;::::0;;15464:15:::1;:34:::0;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;15509:17:::1;:38:::0;;;;::::1;::::0;::::1;::::0;::::1;::::0;;-1:-1:-1;15560:28:0;;;:9:::1;:28;::::0;;;;;;;:35;;-1:-1:-1;;15560:35:0;;::::1;-1:-1:-1::0;15560:35:0;;::::1;::::0;;;15616:15;;;::::1;15606:26:::0;;;;;:33;;;::::1;::::0;::::1;::::0;;15660:11;;;::::1;15650:22:::0;;;;;:29;;;::::1;::::0;::::1;::::0;;15708:17;;;::::1;15692:34:::0;;:15:::1;:34:::0;;;;;:41;;;::::1;::::0;::::1;::::0;;15760:15;;;::::1;15744:32:::0;;;;;:39;;;::::1;::::0;::::1;::::0;;15810:11;;;;::::1;15794:28:::0;;;;;:35;;;;::::1;::::0;;::::1;::::0;;;15847:72;;11762:34:1;;;11812:18;;;11805:43;;;;11864:18;;;11857:43;15847:72:0::1;::::0;11712:2:1;11697:18;15847:72:0::1;;;;;;;15021:906:::0;;;:::o;7692:238::-;7780:4;3793:10;7836:64;3793:10;7852:7;7889:10;7861:25;3793:10;7852:7;7861:9;:25::i;:::-;:38;;;;:::i;:::-;7836:8;:64::i;22510:256::-;22602:37;;-1:-1:-1;;;22602:37:0;;22633:4;22602:37;;;3203:51:1;22643:5:0;;-1:-1:-1;;;;;22602:22:0;;;;;3176:18:1;;22602:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:46;;22580:122;;;;-1:-1:-1;;;22580:122:0;;12302:2:1;22580:122:0;;;12284:21:1;12341:2;12321:18;;;12314:30;12380:28;12360:18;;;12353:56;12426:18;;22580:122:0;12100:350:1;22580:122:0;22735:15;;22713:45;;-1:-1:-1;;;22713:45:0;;-1:-1:-1;;;;;22735:15:0;;;22713:45;;;12629:51:1;12696:18;;;12689:34;;;22713:21:0;;;;;;12602:18:1;;22713:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22510:256;;:::o;4390:103::-;4240:6;;-1:-1:-1;;;;;4240:6:0;3793:10;4302:23;4294:68;;;;-1:-1:-1;;;4294:68:0;;;;;;;:::i;:::-;4455:30:::1;4482:1;4455:18;:30::i;:::-;4390:103::o:0;15935:210::-;4240:6;;-1:-1:-1;;;;;4240:6:0;3793:10;4302:23;4294:68;;;;-1:-1:-1;;;4294:68:0;;;;;;;:::i;:::-;16033:1:::1;16018:12;:16;16010:61;;;::::0;-1:-1:-1;;;16010:61:0;;13186:2:1;16010:61:0::1;::::0;::::1;13168:21:1::0;;;13205:18;;;13198:30;13264:34;13244:18;;;13237:62;13316:18;;16010:61:0::1;12984:356:1::0;16010:61:0::1;16082:11;:26:::0;;;16124:13:::1;::::0;::::1;::::0;;;::::1;15935:210:::0;:::o;6356:104::-;6412:13;6445:7;6438:14;;;;;:::i;16833:160::-;4240:6;;-1:-1:-1;;;;;4240:6:0;3793:10;4302:23;4294:68;;;;-1:-1:-1;;;4294:68:0;;;;;;;:::i;:::-;16929:12:::1;12835:2;16929;:12;:::i;:::-;16920:21;::::0;:6;:21:::1;:::i;:::-;16904:13;:37:::0;16957:28:::1;::::0;160:25:1;;;16957:28:0::1;::::0;148:2:1;133:18;16957:28:0::1;14:177:1::0;7938:436:0;8031:4;3793:10;8031:4;8114:25;3793:10;8131:7;8114:9;:25::i;:::-;8087:52;;8178:15;8158:16;:35;;8150:85;;;;-1:-1:-1;;;8150:85:0;;13547:2:1;8150:85:0;;;13529:21:1;13586:2;13566:18;;;13559:30;13625:34;13605:18;;;13598:62;-1:-1:-1;;;13676:18:1;;;13669:35;13721:19;;8150:85:0;13345:401:1;8150:85:0;8271:60;8280:5;8287:7;8315:15;8296:16;:34;8271:8;:60::i;6820:193::-;6899:4;3793:10;6955:28;3793:10;6972:2;6976:6;6955:9;:28::i;17759:252::-;4240:6;;-1:-1:-1;;;;;4240:6:0;3793:10;4302:23;4294:68;;;;-1:-1:-1;;;4294:68:0;;;;;;;:::i;:::-;17855:9:::1;17851:153;17870:15:::0;;::::1;17851:153;;;17934:6;17907:15;:24;17923:4;;17928:1;17923:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17907:24:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;17907:24:0;:33;;-1:-1:-1;;17907:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17960:32:::1;17976:4:::0;;17981:1;17976:7;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;17960:32;::::0;;-1:-1:-1;;;;;8243:32:1;;;8225:51;;8319:14;;8312:22;8307:2;8292:18;;8285:50;8198:18;17960:32:0::1;;;;;;;17887:3:::0;::::1;::::0;::::1;:::i;:::-;;;;17851:153;;22140:82:::0;4240:6;;-1:-1:-1;;;;;4240:6:0;3793:10;4302:23;4294:68;;;;-1:-1:-1;;;4294:68:0;;;;;;;:::i;:::-;22196:11:::1;:18:::0;;-1:-1:-1;;22196:18:0::1;;;::::0;;22140:82::o;7021:151::-;-1:-1:-1;;;;;7137:18:0;;;7110:7;7137:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7021:151::o;22317:185::-;22397:1;22373:21;:25;22365:62;;;;-1:-1:-1;;;22365:62:0;;13953:2:1;22365:62:0;;;13935:21:1;13992:2;13972:18;;;13965:30;14031:26;14011:18;;;14004:54;14075:18;;22365:62:0;13751:348:1;22365:62:0;22446:15;;22438:56;;-1:-1:-1;;;;;22446:15:0;;;;22472:21;22438:56;;;;;22446:15;22438:56;22446:15;22438:56;22472:21;22446:15;22438:56;;;;;;;;;;;;;;;;;;;;;22317:185::o;17260:231::-;4240:6;;-1:-1:-1;;;;;4240:6:0;3793:10;4302:23;4294:68;;;;-1:-1:-1;;;4294:68:0;;;;;;;:::i;:::-;17347:9:::1;17337:6;:19;;17329:66;;;::::0;-1:-1:-1;;;17329:66:0;;14306:2:1;17329:66:0::1;::::0;::::1;14288:21:1::0;14345:2;14325:18;;;14318:30;14384:34;14364:18;;;14357:62;-1:-1:-1;;;14435:18:1;;;14428:32;14477:19;;17329:66:0::1;14104:398:1::0;17329:66:0::1;17429:12;12835:2;17429;:12;:::i;:::-;17420:21;::::0;:6;:21:::1;:::i;:::-;17406:11;:35:::0;17457:26:::1;::::0;160:25:1;;;17457:26:0::1;::::0;148:2:1;133:18;17457:26:0::1;14:177:1::0;22230:79:0;4240:6;;-1:-1:-1;;;;;4240:6:0;3793:10;4302:23;4294:68;;;;-1:-1:-1;;;4294:68:0;;;;;;;:::i;:::-;22286:7:::1;:15:::0;;-1:-1:-1;;22286:15:0::1;::::0;;22230:79::o;4501:201::-;4240:6;;-1:-1:-1;;;;;4240:6:0;3793:10;4302:23;4294:68;;;;-1:-1:-1;;;4294:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4590:22:0;::::1;4582:73;;;::::0;-1:-1:-1;;;4582:73:0;;14709:2:1;4582:73:0::1;::::0;::::1;14691:21:1::0;14748:2;14728:18;;;14721:30;14787:34;14767:18;;;14760:62;-1:-1:-1;;;14838:18:1;;;14831:36;14884:19;;4582:73:0::1;14507:402:1::0;4582:73:0::1;4666:28;4685:8;4666:18;:28::i;10067:380::-:0;-1:-1:-1;;;;;10203:19:0;;10195:68;;;;-1:-1:-1;;;10195:68:0;;15116:2:1;10195:68:0;;;15098:21:1;15155:2;15135:18;;;15128:30;15194:34;15174:18;;;15167:62;-1:-1:-1;;;15245:18:1;;;15238:34;15289:19;;10195:68:0;14914:400:1;10195:68:0;-1:-1:-1;;;;;10282:21:0;;10274:68;;;;-1:-1:-1;;;10274:68:0;;15521:2:1;10274:68:0;;;15503:21:1;15560:2;15540:18;;;15533:30;15599:34;15579:18;;;15572:62;-1:-1:-1;;;15650:18:1;;;15643:32;15692:19;;10274:68:0;15319:398:1;10274:68:0;-1:-1:-1;;;;;10355:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10407:32;;160:25:1;;;10407:32:0;;133:18:1;10407:32:0;;;;;;;10067:380;;;:::o;10455:453::-;10590:24;10617:25;10627:5;10634:7;10617:9;:25::i;:::-;10590:52;;-1:-1:-1;;10657:16:0;:37;10653:248;;10739:6;10719:16;:26;;10711:68;;;;-1:-1:-1;;;10711:68:0;;15924:2:1;10711:68:0;;;15906:21:1;15963:2;15943:18;;;15936:30;16002:31;15982:18;;;15975:59;16051:18;;10711:68:0;15722:353:1;10711:68:0;10823:51;10832:5;10839:7;10867:6;10848:16;:25;10823:8;:51::i;18381:1315::-;18488:1;18479:6;:10;18471:64;;;;-1:-1:-1;;;18471:64:0;;16282:2:1;18471:64:0;;;16264:21:1;16321:2;16301:18;;;16294:30;16360:34;16340:18;;;16333:62;-1:-1:-1;;;16411:18:1;;;16404:39;16460:19;;18471:64:0;16080:405:1;18471:64:0;-1:-1:-1;;;;;18555:17:0;;;;;;:11;:17;;;;;;;;18554:18;18546:49;;;;-1:-1:-1;;;18546:49:0;;16692:2:1;18546:49:0;;;16674:21:1;16731:2;16711:18;;;16704:30;-1:-1:-1;;;16750:18:1;;;16743:48;16808:18;;18546:49:0;16490:342:1;18546:49:0;-1:-1:-1;;;;;18612:15:0;;;;;;:9;:15;;;;;;;;18611:16;:34;;;;-1:-1:-1;;;;;;18632:13:0;;;;;;:9;:13;;;;;;;;18631:14;18611:34;18608:246;;;18670:11;;;;;;;18662:51;;;;-1:-1:-1;;;18662:51:0;;17039:2:1;18662:51:0;;;17021:21:1;17078:2;17058:18;;;17051:30;17117:29;17097:18;;;17090:57;17164:18;;18662:51:0;16837:351:1;18662:51:0;18737:4;;-1:-1:-1;;;;;18731:10:0;;;18737:4;;18731:10;18728:114;;18777:15;;18767:6;18751:13;18761:2;-1:-1:-1;;;;;6786:18:0;6759:7;6786:18;;;;;;;;;;;;6685:127;18751:13;:22;;;;:::i;:::-;:41;;18743:99;;;;-1:-1:-1;;;18743:99:0;;17395:2:1;18743:99:0;;;17377:21:1;17434:2;17414:18;;;17407:30;17473:34;17453:18;;;17446:62;-1:-1:-1;;;17524:18:1;;;17517:43;17577:19;;18743:99:0;17193:409:1;18743:99:0;18870:11;;;;;;;:22;;;;-1:-1:-1;18885:7:0;;;;18870:22;18866:77;;;-1:-1:-1;;;;;18909:15:0;;;;;;:11;:15;;;;;:22;;-1:-1:-1;;18909:22:0;18927:4;18909:22;;;18866:77;-1:-1:-1;;;;;18960:21:0;;;;;;:15;:21;;;;;;;;18955:116;;19016:11;;19006:6;:21;;18998:61;;;;-1:-1:-1;;;18998:61:0;;17809:2:1;18998:61:0;;;17791:21:1;17848:2;17828:18;;;17821:30;17887:29;17867:18;;;17860:57;17934:18;;18998:61:0;17607:351:1;18998:61:0;19114:8;;19083:14;;-1:-1:-1;;;19114:8:0;;;;19113:9;:29;;;;-1:-1:-1;;;;;;19127:15:0;;;;;;:9;:15;;;;;;;;19126:16;19113:29;:47;;;;-1:-1:-1;;;;;;19147:13:0;;;;;;:9;:13;;;;;;;;19146:14;19113:47;19110:330;;;19185:4;;-1:-1:-1;;;;;19185:4:0;;;19179:10;;;;19176:253;;19242:3;19227:12;;19218:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;19209:36;;19176:253;;;19278:4;;-1:-1:-1;;;;;19278:4:0;;;19270:12;;;;19267:162;;19334:3;19320:11;;19311:6;:20;;;;:::i;19267:162::-;19410:3;19396:11;;19387:6;:20;;;;:::i;:::-;:26;;;;:::i;:::-;19378:35;;19267:162;19457:8;;-1:-1:-1;;;19457:8:0;;;;19456:9;:23;;;;-1:-1:-1;19475:4:0;;-1:-1:-1;;;;;19469:10:0;;;19475:4;;19469:10;19456:23;:43;;;;;19498:1;19483:12;;:16;19456:43;19452:86;;;19516:10;:8;:10::i;:::-;19550:42;19566:4;19572:2;19576:15;19585:6;19576;:15;:::i;:::-;19550;:42::i;:::-;19606:10;;19603:86;;19633:44;19649:4;19663;19670:6;19633:15;:44::i;4710:191::-;4803:6;;;-1:-1:-1;;;;;4820:17:0;;;-1:-1:-1;;;;;;4820:17:0;;;;;;;4853:40;;4803:6;;;4820:17;4803:6;;4853:40;;4784:16;;4853:40;4773:128;4710:191;:::o;19704:1454::-;13766:8;;-1:-1:-1;;;13766:8:0;;;;13761:104;;13791:8;:15;;-1:-1:-1;;;;13791:15:0;-1:-1:-1;;;13791:15:0;;;19794:4:::1;-1:-1:-1::0;6786:18:0;;;;;;;;;;;19750:50:::1;;19834:13;;19815:15;:32;19811:1340;;19883:1;19867:13;;:17;19864:87;;;-1:-1:-1::0;19922:13:0::1;::::0;19864:87:::1;20020:19;20042:12;;20057:1;20042:16;;;;:::i;:::-;20020:38;;20073:32;20140:11;20126:8;:11;;;20108:15;:29;;;;:::i;:::-;:43;;;;:::i;:::-;20073:78:::0;-1:-1:-1;20166:14:0::1;20183:42;20073:78:::0;20183:15;:42:::1;:::i;:::-;20166:59:::0;-1:-1:-1;20267:21:0::1;20305:24;20166:59:::0;20305:16:::1;:24::i;:::-;20346:20;20369:38;20393:14:::0;20369:21:::1;:38;:::i;:::-;20473:8;:11:::0;20346:61;;-1:-1:-1;20422:19:0::1;::::0;20459:25:::1;::::0;:11;:25:::1;:::i;:::-;20443:42;::::0;:12;:42:::1;:::i;:::-;20546:8;:11:::0;20422:63;;-1:-1:-1;20500:29:0::1;::::0;20532:25:::1;::::0;20422:63;20532:25:::1;:::i;:::-;20500:57:::0;-1:-1:-1;20577:25:0;;20574:170:::1;;20667:61;20680:24;20706:21;20667:12;:61::i;:::-;20801:18:::0;;20760:20:::1;::::0;20783:15:::1;:11:::0;20797:1:::1;20783:15;:::i;:::-;:36;;;;:::i;:::-;20760:59:::0;-1:-1:-1;20837:16:0;;20834:103:::1;;20881:15;::::0;20873:48:::1;::::0;-1:-1:-1;;;;;20881:15:0::1;20908:12:::0;20873:34:::1;:48::i;:::-;20996:20:::0;;20953:22:::1;::::0;20978:15:::1;:11:::0;20996:20:::1;20978:15;:::i;:::-;:38;;;;:::i;:::-;20953:63:::0;-1:-1:-1;21034:18:0;;21031:109:::1;;21080:17;::::0;21072:52:::1;::::0;-1:-1:-1;;;;;21080:17:0::1;21109:14:::0;21072:36:::1;:52::i;:::-;19849:1302;;;;;;;;;19811:1340;-1:-1:-1::0;13837:8:0;:16;;-1:-1:-1;;;;13837:16:0;;;19704:1454::o;8382:671::-;-1:-1:-1;;;;;8513:18:0;;8505:68;;;;-1:-1:-1;;;8505:68:0;;18520:2:1;8505:68:0;;;18502:21:1;18559:2;18539:18;;;18532:30;18598:34;18578:18;;;18571:62;-1:-1:-1;;;18649:18:1;;;18642:35;18694:19;;8505:68:0;18318:401:1;8505:68:0;-1:-1:-1;;;;;8592:16:0;;8584:64;;;;-1:-1:-1;;;8584:64:0;;18926:2:1;8584:64:0;;;18908:21:1;18965:2;18945:18;;;18938:30;19004:34;18984:18;;;18977:62;-1:-1:-1;;;19055:18:1;;;19048:33;19098:19;;8584:64:0;18724:399:1;8584:64:0;-1:-1:-1;;;;;8734:15:0;;8712:19;8734:15;;;;;;;;;;;8768:21;;;;8760:72;;;;-1:-1:-1;;;8760:72:0;;19330:2:1;8760:72:0;;;19312:21:1;19369:2;19349:18;;;19342:30;19408:34;19388:18;;;19381:62;-1:-1:-1;;;19459:18:1;;;19452:36;19505:19;;8760:72:0;19128:402:1;8760:72:0;-1:-1:-1;;;;;8868:15:0;;;:9;:15;;;;;;;;;;;8886:20;;;8868:38;;8928:13;;;;;;;;:23;;8900:6;;8868:9;8928:23;;8900:6;;8928:23;:::i;:::-;;;;;;;;8984:2;-1:-1:-1;;;;;8969:26:0;8978:4;-1:-1:-1;;;;;8969:26:0;;8988:6;8969:26;;;;160:25:1;;148:2;133:18;;14:177;8969:26:0;;;;;;;;9008:37;22510:256;21166:459;21315:16;;;21329:1;21315:16;;;;;;;;21291:21;;21315:16;;;;;;;;;;-1:-1:-1;21315:16:0;21291:40;;21360:4;21342;21347:1;21342:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;21342:23:0;;;-1:-1:-1;;;;;21342:23:0;;;;;21386:6;;;;;;;;;-1:-1:-1;;;;;21386:6:0;-1:-1:-1;;;;;21386:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21376:4;21381:1;21376:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21376:23:0;;;:7;;;;;;;;;:23;21444:6;;21412:53;;21429:4;;21444:6;;;;21453:11;21412:8;:53::i;:::-;21504:6;;:111;;-1:-1:-1;;;21504:111:0;;:6;;;;-1:-1:-1;;;;;21504:6:0;;:57;;:111;;21562:11;;21575:1;;21578:4;;21592;;21599:15;;21504:111;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21221:404;21166:459;:::o;21633:499::-;21813:6;;21781:53;;21798:4;;21813:6;;;-1:-1:-1;;;;;21813:6:0;21822:11;21781:8;:53::i;:::-;21877:6;;22072:11;;21877:247;;-1:-1:-1;;;21877:247:0;;21940:4;21877:247;;;21249:34:1;21299:18;;;21292:34;;;21986:1:0;21342:18:1;;;21335:34;;;21385:18;;;21378:34;-1:-1:-1;;;;;22072:11:0;;;21428:19:1;;;21421:44;22098:15:0;21481:19:1;;;21474:35;21877:6:0;;;;;;:22;;21907:9;;21183:19:1;;21877:247:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;21633:499;;:::o;208:317::-;323:6;298:21;:31;;290:73;;;;-1:-1:-1;;;290:73:0;;22033:2:1;290:73:0;;;22015:21:1;22072:2;22052:18;;;22045:30;22111:31;22091:18;;;22084:59;22160:18;;290:73:0;21831:353:1;290:73:0;377:12;395:9;-1:-1:-1;;;;;395:14:0;417:6;395:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;376:52;;;447:7;439:78;;;;-1:-1:-1;;;439:78:0;;22601:2:1;439:78:0;;;22583:21:1;22640:2;22620:18;;;22613:30;22679:34;22659:18;;;22652:62;22750:28;22730:18;;;22723:56;22796:19;;439:78:0;22399:422:1;196:548;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;749:131::-;-1:-1:-1;;;;;824:31:1;;814:42;;804:70;;870:1;867;860:12;885:315;953:6;961;1014:2;1002:9;993:7;989:23;985:32;982:52;;;1030:1;1027;1020:12;982:52;1069:9;1056:23;1088:31;1113:5;1088:31;:::i;:::-;1138:5;1190:2;1175:18;;;;1162:32;;-1:-1:-1;;;885:315:1:o;1397:316::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;-1:-1:-1;;1582:23:1;;;1652:2;1637:18;;1624:32;;-1:-1:-1;1703:2:1;1688:18;;;1675:32;;1397:316;-1:-1:-1;1397:316:1:o;1718:118::-;1804:5;1797:13;1790:21;1783:5;1780:32;1770:60;;1826:1;1823;1816:12;1841:750;1933:6;1941;1949;2002:2;1990:9;1981:7;1977:23;1973:32;1970:52;;;2018:1;2015;2008:12;1970:52;2058:9;2045:23;2087:18;2128:2;2120:6;2117:14;2114:34;;;2144:1;2141;2134:12;2114:34;2182:6;2171:9;2167:22;2157:32;;2227:7;2220:4;2216:2;2212:13;2208:27;2198:55;;2249:1;2246;2239:12;2198:55;2289:2;2276:16;2315:2;2307:6;2304:14;2301:34;;;2331:1;2328;2321:12;2301:34;2386:7;2379:4;2369:6;2366:1;2362:14;2358:2;2354:23;2350:34;2347:47;2344:67;;;2407:1;2404;2397:12;2344:67;2438:4;2430:13;;;;-1:-1:-1;2462:6:1;-1:-1:-1;;2503:20:1;;2490:34;2533:28;2490:34;2533:28;:::i;:::-;2580:5;2570:15;;;1841:750;;;;;:::o;2596:456::-;2673:6;2681;2689;2742:2;2730:9;2721:7;2717:23;2713:32;2710:52;;;2758:1;2755;2748:12;2710:52;2797:9;2784:23;2816:31;2841:5;2816:31;:::i;:::-;2866:5;-1:-1:-1;2923:2:1;2908:18;;2895:32;2936:33;2895:32;2936:33;:::i;:::-;2596:456;;2988:7;;-1:-1:-1;;;3042:2:1;3027:18;;;;3014:32;;2596:456::o;3265:180::-;3324:6;3377:2;3365:9;3356:7;3352:23;3348:32;3345:52;;;3393:1;3390;3383:12;3345:52;-1:-1:-1;3416:23:1;;3265:180;-1:-1:-1;3265:180:1:o;3639:529::-;3716:6;3724;3732;3785:2;3773:9;3764:7;3760:23;3756:32;3753:52;;;3801:1;3798;3791:12;3753:52;3840:9;3827:23;3859:31;3884:5;3859:31;:::i;:::-;3909:5;-1:-1:-1;3966:2:1;3951:18;;3938:32;3979:33;3938:32;3979:33;:::i;:::-;4031:7;-1:-1:-1;4090:2:1;4075:18;;4062:32;4103:33;4062:32;4103:33;:::i;4173:247::-;4232:6;4285:2;4273:9;4264:7;4260:23;4256:32;4253:52;;;4301:1;4298;4291:12;4253:52;4340:9;4327:23;4359:31;4384:5;4359:31;:::i;:::-;4409:5;4173:247;-1:-1:-1;;;4173:247:1:o;4425:388::-;4493:6;4501;4554:2;4542:9;4533:7;4529:23;4525:32;4522:52;;;4570:1;4567;4560:12;4522:52;4609:9;4596:23;4628:31;4653:5;4628:31;:::i;:::-;4678:5;-1:-1:-1;4735:2:1;4720:18;;4707:32;4748:33;4707:32;4748:33;:::i;:::-;4800:7;4790:17;;;4425:388;;;;;:::o;5366:380::-;5445:1;5441:12;;;;5488;;;5509:61;;5563:4;5555:6;5551:17;5541:27;;5509:61;5616:2;5608:6;5605:14;5585:18;5582:38;5579:161;;5662:10;5657:3;5653:20;5650:1;5643:31;5697:4;5694:1;5687:15;5725:4;5722:1;5715:15;5579:161;;5366:380;;;:::o;5751:356::-;5953:2;5935:21;;;5972:18;;;5965:30;6031:34;6026:2;6011:18;;6004:62;6098:2;6083:18;;5751:356::o;6112:127::-;6173:10;6168:3;6164:20;6161:1;6154:31;6204:4;6201:1;6194:15;6228:4;6225:1;6218:15;6244:125;6309:9;;;6330:10;;;6327:36;;;6343:18;;:::i;6731:127::-;6792:10;6787:3;6783:20;6780:1;6773:31;6823:4;6820:1;6813:15;6847:4;6844:1;6837:15;7559:135;7598:3;7619:17;;;7616:43;;7639:18;;:::i;:::-;-1:-1:-1;7686:1:1;7675:13;;7559:135::o;8753:422::-;8842:1;8885:5;8842:1;8899:270;8920:7;8910:8;8907:21;8899:270;;;8979:4;8975:1;8971:6;8967:17;8961:4;8958:27;8955:53;;;8988:18;;:::i;:::-;9038:7;9028:8;9024:22;9021:55;;;9058:16;;;;9021:55;9137:22;;;;9097:15;;;;8899:270;;;8903:3;8753:422;;;;;:::o;9180:806::-;9229:5;9259:8;9249:80;;-1:-1:-1;9300:1:1;9314:5;;9249:80;9348:4;9338:76;;-1:-1:-1;9385:1:1;9399:5;;9338:76;9430:4;9448:1;9443:59;;;;9516:1;9511:130;;;;9423:218;;9443:59;9473:1;9464:10;;9487:5;;;9511:130;9548:3;9538:8;9535:17;9532:43;;;9555:18;;:::i;:::-;-1:-1:-1;;9611:1:1;9597:16;;9626:5;;9423:218;;9725:2;9715:8;9712:16;9706:3;9700:4;9697:13;9693:36;9687:2;9677:8;9674:16;9669:2;9663:4;9660:12;9656:35;9653:77;9650:159;;;-1:-1:-1;9762:19:1;;;9794:5;;9650:159;9841:34;9866:8;9860:4;9841:34;:::i;:::-;9911:6;9907:1;9903:6;9899:19;9890:7;9887:32;9884:58;;;9922:18;;:::i;:::-;9960:20;;9180:806;-1:-1:-1;;;9180:806:1:o;9991:131::-;10051:5;10080:36;10107:8;10101:4;10080:36;:::i;10127:168::-;10200:9;;;10231;;10248:15;;;10242:22;;10228:37;10218:71;;10269:18;;:::i;11911:184::-;11981:6;12034:2;12022:9;12013:7;12009:23;12005:32;12002:52;;;12050:1;12047;12040:12;12002:52;-1:-1:-1;12073:16:1;;11911:184;-1:-1:-1;11911:184:1:o;12734:245::-;12801:6;12854:2;12842:9;12833:7;12829:23;12825:32;12822:52;;;12870:1;12867;12860:12;12822:52;12902:9;12896:16;12921:28;12943:5;12921:28;:::i;17963:217::-;18003:1;18029;18019:132;;18073:10;18068:3;18064:20;18061:1;18054:31;18108:4;18105:1;18098:15;18136:4;18133:1;18126:15;18019:132;-1:-1:-1;18165:9:1;;17963:217::o;18185:128::-;18252:9;;;18273:11;;;18270:37;;;18287:18;;:::i;19667:251::-;19737:6;19790:2;19778:9;19769:7;19765:23;19761:32;19758:52;;;19806:1;19803;19796:12;19758:52;19838:9;19832:16;19857:31;19882:5;19857:31;:::i;19923:980::-;20185:4;20233:3;20222:9;20218:19;20264:6;20253:9;20246:25;20290:2;20328:6;20323:2;20312:9;20308:18;20301:34;20371:3;20366:2;20355:9;20351:18;20344:31;20395:6;20430;20424:13;20461:6;20453;20446:22;20499:3;20488:9;20484:19;20477:26;;20538:2;20530:6;20526:15;20512:29;;20559:1;20569:195;20583:6;20580:1;20577:13;20569:195;;;20648:13;;-1:-1:-1;;;;;20644:39:1;20632:52;;20739:15;;;;20704:12;;;;20680:1;20598:9;20569:195;;;-1:-1:-1;;;;;;;20820:32:1;;;;20815:2;20800:18;;20793:60;-1:-1:-1;;;20884:3:1;20869:19;20862:35;20781:3;19923:980;-1:-1:-1;;;19923:980:1:o;21520:306::-;21608:6;21616;21624;21677:2;21665:9;21656:7;21652:23;21648:32;21645:52;;;21693:1;21690;21683:12;21645:52;21722:9;21716:16;21706:26;;21772:2;21761:9;21757:18;21751:25;21741:35;;21816:2;21805:9;21801:18;21795:25;21785:35;;21520:306;;;;;:::o

Swarm Source

ipfs://12f6fa90687bfac4818dd48e0feaede1f9222a1d4d4bfef92c99023adb1c747f
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.