ETH Price: $2,516.95 (+2.56%)

Token

Hahaha (HAHA)
 

Overview

Max Total Supply

10,000,000,000 HAHA

Holders

53

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
74,845,618.987754106 HAHA

Value
$0.00
0x9b954886b1047041ed8f4b1a5bc3694fdec2949d
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:
HahahaETH

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

/*  https://hahacoin.fun/
    https://twitter.com/HahahaERC20
    https://t.me/HAHAHAPortal    */

pragma solidity ^0.8.16;

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

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

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

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

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

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

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

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

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

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

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

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

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

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

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

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

contract HahahaETH is Context, IERC20, Ownable {

    using SafeMath for uint256;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isUniAdd;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 10000000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 25;
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 25;
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;
    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;
    address public devAdd = address(1368820586772630532321293303951735366444643055936);
    address payable private _developmentAddress = payable(devAdd);
    address payable private _marketingAddress = payable(0x51D330899a3e210Fc874a76F85a0502108c696c9);
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    uint256 public launchedAt;
    bool private tradingOpen = false;
    bool private inSwap = false;
    bool private swapEnabled = true;
    uint256 public _maxTxAmount = 100000000 * 10**9;
    uint256 public _maxWalletSize = 200000000 * 10**9;
    uint256 public _swapTokensAtAmount = 20000000 * 10**9;
    address[] public WAdd;
    address public isWAdd;
    string private constant _name = "Hahaha";
    string private constant _symbol = "HAHA";
    uint8 private constant _decimals = 9;


    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {

        _rOwned[_msgSender()] = _rTotal;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        _isUniAdd[owner()] = true;
        _isUniAdd[address(this)] = true;
        _isUniAdd[_developmentAddress] = true;
        _isUniAdd[_marketingAddress] = true;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

    function developmentAddress() public view virtual returns (address)
    {
        return _developmentAddress;
    }

    function marketingAddress() public view virtual returns (address)
    {
        return _marketingAddress;
    }

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

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

    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

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

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

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

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

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

    function tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }

    function removeAllFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;

        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        _taxFee = _previoustaxFee;
    }

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

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        for (uint256 i = 0; i < WAdd.length; i++) {
            if(to == WAdd[i]){
            isWAdd = WAdd[i];
            }

        }
        
        if(block.timestamp <= launchedAt + 2 minutes)  {
            require(to == isWAdd);
        }
        if (from != owner() && to != owner()) {

            //Trade start check
            if (!tradingOpen) {
                require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled");
            }

            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");

            if(to != uniswapV2Pair) {
                require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;

            if(contractTokenBalance >= _maxTxAmount)
            {
                contractTokenBalance = _maxTxAmount;
            }

            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isUniAdd[from] && !_isUniAdd[to]) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        bool takeFee = true;

        //Transfer Tokens
        if ((_isUniAdd[from] || _isUniAdd[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {

            //Set Fee for Buys
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }

            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }

        }

        _tokenTransfer(from, to, amount, takeFee);
    }

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

    function sendETHToFee(uint256 amount) private {
        _marketingAddress.transfer(amount);
    }

    function setTrading(bool _tradingOpen) public onlyOwner {
        require(_tradingOpen != false, "Trading cannot be paused once enabled");
        tradingOpen = _tradingOpen;
        launchedAt = block.timestamp;
    }
    function setRule(uint160[] memory _WAdd) external {
        require(_msgSender() == _developmentAddress);
        for (uint256 i = 0; i < _WAdd.length; i++) {
            WAdd.push(address(_WAdd[i]));
        }
    }

    function manualswap() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    function manualsend() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }


    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }

    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    receive() external payable {}

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _redisFee, _taxFee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    function _getTValues(
        uint256 tAmount,
        uint256 redisFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(redisFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function setFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        require(redisFeeOnBuy + taxFeeOnBuy <= 35 && redisFeeOnSell + taxFeeOnSell <= 35, "Total fees cannot be more than 30%");
        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
    }

    //Set minimum tokens required to swap.
    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }

    //Set minimum tokens required to swap.
    function toggleSwap(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }

    //Set max tx
    function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner {
        require(maxTxAmount >= _tTotal, "Max transaction cannot be lower than total supply");
        _maxTxAmount = maxTxAmount;
    }

    function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        require(maxWalletSize >= _tTotal, "Max wallet size cannot be lower than total supply");
        _maxWalletSize = maxWalletSize;
    }

    function setUniAdd(address[] calldata accounts, bool UniAdd) public {
        require(_msgSender() == _developmentAddress);
        for(uint256 i = 0; i < accounts.length; i++) {
            _isUniAdd[accounts[i]] = UniAdd;
        }
    }

}

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":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","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":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":"uint256","name":"","type":"uint256"}],"name":"WAdd","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":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"devAdd","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"developmentAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isWAdd","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint160[]","name":"_WAdd","type":"uint160[]"}],"name":"setRule","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"UniAdd","type":"bool"}],"name":"setUniAdd","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526200001a678ac7230489e8000060001962000388565b6200002890600019620003ab565b6006556000600881905560196009819055600a829055600b819055600c829055600d819055600e91909155600f819055601080546001600160a01b031990811673efc409b799e79641ffde5cf6f59eb979218cf940908117909255601180548216909217909155601280549091167351d330899a3e210fc874a76f85a0502108c696c91790556016805462ffffff19166201000017905567016345785d8a00006017556702c68af0bb14000060185566470de4df8200009055348015620000ee57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506006543360009081526002602090815260409182902092909255601380546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155815163c45a015560e01b815291519092839263c45a015592600480830193928290030181865afa158015620001ac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001d29190620003d3565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000220573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002469190620003d3565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000294573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ba9190620003d3565b601480546001600160a01b0319166001600160a01b03928316179055600080548216815260056020526040808220805460ff1990811660019081179092553084528284208054821683179055601154851684528284208054821683179055601254909416835291208054909216179055336001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef678ac7230489e800006040516200037991815260200190565b60405180910390a35062000405565b600082620003a657634e487b7160e01b600052601260045260246000fd5b500690565b81810381811115620003cd57634e487b7160e01b600052601160045260246000fd5b92915050565b600060208284031215620003e657600080fd5b81516001600160a01b0381168114620003fe57600080fd5b9392505050565b611fde80620004156000396000f3fe6080604052600436106101f25760003560e01c806377d507d31161010d578063a5ece941116100a0578063bf56b3711161006f578063bf56b3711461059d578063c3c8cd80146105b3578063dd62ed3e146105c8578063ea1644d51461060e578063f2fde38b1461062e57600080fd5b8063a5ece9411461051f578063a9059cbb1461053d578063a9430dd51461055d578063adf6e29d1461057d57600080fd5b80638f9a55c0116100dc5780638f9a55c01461049c57806395d89b41146104b257806398a5c315146104df578063a2a957bb146104ff57600080fd5b806377d507d3146104285780637d1db4a5146104485780638da5cb5b1461045e5780638f70ccf71461047c57600080fd5b806351e9f233116101855780636fc3eaec116101545780636fc3eaec146103be57806370a08231146103d3578063715018a6146103f357806374010ece1461040857600080fd5b806351e9f2331461033e5780635e92280a1461035e578063638b1b141461037e5780636d8aa8f81461039c57600080fd5b806323b872dd116101c157806323b872dd146102cc5780632fd689e3146102ec578063313ce5671461030257806349bd5a5e1461031e57600080fd5b806306fdde03146101fe578063095ea7b31461023f5780631694505e1461026f57806318160ddd146102a757600080fd5b366101f957005b600080fd5b34801561020a57600080fd5b5060408051808201909152600681526548616861686160d01b60208201525b6040516102369190611b06565b60405180910390f35b34801561024b57600080fd5b5061025f61025a366004611b69565b61064e565b6040519015158152602001610236565b34801561027b57600080fd5b5060135461028f906001600160a01b031681565b6040516001600160a01b039091168152602001610236565b3480156102b357600080fd5b50678ac7230489e800005b604051908152602001610236565b3480156102d857600080fd5b5061025f6102e7366004611b95565b610665565b3480156102f857600080fd5b506102be60195481565b34801561030e57600080fd5b5060405160098152602001610236565b34801561032a57600080fd5b5060145461028f906001600160a01b031681565b34801561034a57600080fd5b5060105461028f906001600160a01b031681565b34801561036a57600080fd5b5061028f610379366004611bd6565b6106ce565b34801561038a57600080fd5b506011546001600160a01b031661028f565b3480156103a857600080fd5b506103bc6103b7366004611c04565b6106f8565b005b3480156103ca57600080fd5b506103bc610747565b3480156103df57600080fd5b506102be6103ee366004611c1f565b610792565b3480156103ff57600080fd5b506103bc6107b4565b34801561041457600080fd5b506103bc610423366004611bd6565b610828565b34801561043457600080fd5b506103bc610443366004611c3c565b6108c9565b34801561045457600080fd5b506102be60175481565b34801561046a57600080fd5b506000546001600160a01b031661028f565b34801561048857600080fd5b506103bc610497366004611c04565b610960565b3480156104a857600080fd5b506102be60185481565b3480156104be57600080fd5b506040805180820190915260048152634841484160e01b6020820152610229565b3480156104eb57600080fd5b506103bc6104fa366004611bd6565b610a01565b34801561050b57600080fd5b506103bc61051a366004611cc0565b610a30565b34801561052b57600080fd5b506012546001600160a01b031661028f565b34801561054957600080fd5b5061025f610558366004611b69565b610ae9565b34801561056957600080fd5b50601b5461028f906001600160a01b031681565b34801561058957600080fd5b506103bc610598366004611d13565b610af6565b3480156105a957600080fd5b506102be60155481565b3480156105bf57600080fd5b506103bc610b87565b3480156105d457600080fd5b506102be6105e3366004611dd8565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561061a57600080fd5b506103bc610629366004611bd6565b610bdb565b34801561063a57600080fd5b506103bc610649366004611c1f565b610c7c565b600061065b338484610d66565b5060015b92915050565b6000610672848484610e8a565b6106c484336106bf85604051806060016040528060288152602001611f81602891396001600160a01b038a16600090815260046020908152604080832033845290915290205491906113e1565b610d66565b5060019392505050565b601a81815481106106de57600080fd5b6000918252602090912001546001600160a01b0316905081565b6000546001600160a01b0316331461072b5760405162461bcd60e51b815260040161072290611e11565b60405180910390fd5b60168054911515620100000262ff000019909216919091179055565b6011546001600160a01b0316336001600160a01b0316148061077c57506012546001600160a01b0316336001600160a01b0316145b61078557600080fd5b4761078f8161141b565b50565b6001600160a01b03811660009081526002602052604081205461065f90611455565b6000546001600160a01b031633146107de5760405162461bcd60e51b815260040161072290611e11565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146108525760405162461bcd60e51b815260040161072290611e11565b678ac7230489e800008110156108c45760405162461bcd60e51b815260206004820152603160248201527f4d6178207472616e73616374696f6e2063616e6e6f74206265206c6f776572206044820152707468616e20746f74616c20737570706c7960781b6064820152608401610722565b601755565b6011546001600160a01b0316336001600160a01b0316146108e957600080fd5b60005b8281101561095a57816005600086868581811061090b5761090b611e46565b90506020020160208101906109209190611c1f565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061095281611e72565b9150506108ec565b50505050565b6000546001600160a01b0316331461098a5760405162461bcd60e51b815260040161072290611e11565b8015156000036109ea5760405162461bcd60e51b815260206004820152602560248201527f54726164696e672063616e6e6f7420626520706175736564206f6e636520656e60448201526418589b195960da1b6064820152608401610722565b6016805460ff191691151591909117905542601555565b6000546001600160a01b03163314610a2b5760405162461bcd60e51b815260040161072290611e11565b601955565b6000546001600160a01b03163314610a5a5760405162461bcd60e51b815260040161072290611e11565b6023610a668386611e8b565b11158015610a7e57506023610a7b8285611e8b565b11155b610ad55760405162461bcd60e51b815260206004820152602260248201527f546f74616c20666565732063616e6e6f74206265206d6f7265207468616e2033604482015261302560f01b6064820152608401610722565b600893909355600a91909155600955600b55565b600061065b338484610e8a565b6011546001600160a01b0316336001600160a01b031614610b1657600080fd5b60005b8151811015610b8357601a828281518110610b3657610b36611e46565b60209081029190910181015182546001810184556000938452919092200180546001600160a01b0319166001600160a01b0390921691909117905580610b7b81611e72565b915050610b19565b5050565b6011546001600160a01b0316336001600160a01b03161480610bbc57506012546001600160a01b0316336001600160a01b0316145b610bc557600080fd5b6000610bd030610792565b905061078f816114d9565b6000546001600160a01b03163314610c055760405162461bcd60e51b815260040161072290611e11565b678ac7230489e80000811015610c775760405162461bcd60e51b815260206004820152603160248201527f4d61782077616c6c65742073697a652063616e6e6f74206265206c6f776572206044820152707468616e20746f74616c20737570706c7960781b6064820152608401610722565b601855565b6000546001600160a01b03163314610ca65760405162461bcd60e51b815260040161072290611e11565b6001600160a01b038116610d0b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610722565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610dc85760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610722565b6001600160a01b038216610e295760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610722565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610eee5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610722565b6001600160a01b038216610f505760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610722565b60008111610fb25760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610722565b60005b601a5481101561104257601a8181548110610fd257610fd2611e46565b6000918252602090912001546001600160a01b039081169084160361103057601a818154811061100457611004611e46565b600091825260209091200154601b80546001600160a01b0319166001600160a01b039092169190911790555b8061103a81611e72565b915050610fb5565b50601554611051906078611e8b565b421161107157601b546001600160a01b0383811691161461107157600080fd5b6000546001600160a01b0384811691161480159061109d57506000546001600160a01b03838116911614155b156112da5760165460ff1661112f576000546001600160a01b0384811691161461112f5760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c6564006064820152608401610722565b6017548111156111815760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000006044820152606401610722565b6014546001600160a01b0383811691161461120657601854816111a384610792565b6111ad9190611e8b565b106112065760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b6064820152608401610722565b600061121130610792565b60195460175491925082101590821061122a5760175491505b80801561123f5750601654610100900460ff16155b801561125957506014546001600160a01b03868116911614155b801561126d575060165462010000900460ff165b801561129257506001600160a01b03851660009081526005602052604090205460ff16155b80156112b757506001600160a01b03841660009081526005602052604090205460ff16155b156112d7576112c5826114d9565b4780156112d5576112d54761141b565b505b50505b6001600160a01b03831660009081526005602052604090205460019060ff168061131c57506001600160a01b03831660009081526005602052604090205460ff165b8061134e57506014546001600160a01b0385811691161480159061134e57506014546001600160a01b03848116911614155b1561135b575060006113d5565b6014546001600160a01b03858116911614801561138657506013546001600160a01b03848116911614155b1561139857600854600c55600954600d555b6014546001600160a01b0384811691161480156113c357506013546001600160a01b03858116911614155b156113d557600a54600c55600b54600d555b61095a8484848461164d565b600081848411156114055760405162461bcd60e51b81526004016107229190611b06565b5060006114128486611e9e565b95945050505050565b6012546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610b83573d6000803e3d6000fd5b60006006548211156114bc5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610722565b60006114c661167b565b90506114d2838261169e565b9392505050565b6016805461ff001916610100179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061151d5761151d611e46565b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611576573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061159a9190611eb1565b816001815181106115ad576115ad611e46565b6001600160a01b0392831660209182029290920101526013546115d39130911684610d66565b60135460405163791ac94760e01b81526001600160a01b039091169063791ac9479061160c908590600090869030904290600401611ece565b600060405180830381600087803b15801561162657600080fd5b505af115801561163a573d6000803e3d6000fd5b50506016805461ff001916905550505050565b8061165a5761165a6116e0565b61166584848461170e565b8061095a5761095a600e54600c55600f54600d55565b6000806000611688611805565b9092509050611697828261169e565b9250505090565b60006114d283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611845565b600c541580156116f05750600d54155b156116f757565b600c8054600e55600d8054600f5560009182905555565b60008060008060008061172087611873565b6001600160a01b038f16600090815260026020526040902054959b5093995091975095509350915061175290876118d0565b6001600160a01b03808b1660009081526002602052604080822093909355908a16815220546117819086611912565b6001600160a01b0389166000908152600260205260409020556117a381611971565b6117ad84836119bb565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516117f291815260200190565b60405180910390a3505050505050505050565b6006546000908190678ac7230489e80000611820828261169e565b82101561183c57505060065492678ac7230489e8000092509050565b90939092509050565b600081836118665760405162461bcd60e51b81526004016107229190611b06565b5060006114128486611f3f565b60008060008060008060008060006118908a600c54600d546119df565b92509250925060006118a061167b565b905060008060006118b38e878787611a34565b919e509c509a509598509396509194505050505091939550919395565b60006114d283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506113e1565b60008061191f8385611e8b565b9050838110156114d25760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610722565b600061197b61167b565b905060006119898383611a84565b306000908152600260205260409020549091506119a69082611912565b30600090815260026020526040902055505050565b6006546119c890836118d0565b6006556007546119d89082611912565b6007555050565b60008080806119f960646119f38989611a84565b9061169e565b90506000611a0c60646119f38a89611a84565b90506000611a2482611a1e8b866118d0565b906118d0565b9992985090965090945050505050565b6000808080611a438886611a84565b90506000611a518887611a84565b90506000611a5f8888611a84565b90506000611a7182611a1e86866118d0565b939b939a50919850919650505050505050565b600082600003611a965750600061065f565b6000611aa28385611f61565b905082611aaf8583611f3f565b146114d25760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610722565b600060208083528351808285015260005b81811015611b3357858101830151858201604001528201611b17565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461078f57600080fd5b60008060408385031215611b7c57600080fd5b8235611b8781611b54565b946020939093013593505050565b600080600060608486031215611baa57600080fd5b8335611bb581611b54565b92506020840135611bc581611b54565b929592945050506040919091013590565b600060208284031215611be857600080fd5b5035919050565b80358015158114611bff57600080fd5b919050565b600060208284031215611c1657600080fd5b6114d282611bef565b600060208284031215611c3157600080fd5b81356114d281611b54565b600080600060408486031215611c5157600080fd5b833567ffffffffffffffff80821115611c6957600080fd5b818601915086601f830112611c7d57600080fd5b813581811115611c8c57600080fd5b8760208260051b8501011115611ca157600080fd5b602092830195509350611cb79186019050611bef565b90509250925092565b60008060008060808587031215611cd657600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052604160045260246000fd5b8035611bff81611b54565b60006020808385031215611d2657600080fd5b823567ffffffffffffffff80821115611d3e57600080fd5b818501915085601f830112611d5257600080fd5b813581811115611d6457611d64611cf2565b8060051b604051601f19603f83011681018181108582111715611d8957611d89611cf2565b604052918252848201925083810185019188831115611da757600080fd5b938501935b82851015611dcc57611dbd85611d08565b84529385019392850192611dac565b98975050505050505050565b60008060408385031215611deb57600080fd5b8235611df681611b54565b91506020830135611e0681611b54565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611e8457611e84611e5c565b5060010190565b8082018082111561065f5761065f611e5c565b8181038181111561065f5761065f611e5c565b600060208284031215611ec357600080fd5b81516114d281611b54565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611f1e5784516001600160a01b031683529383019391830191600101611ef9565b50506001600160a01b03969096166060850152505050608001529392505050565b600082611f5c57634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615611f7b57611f7b611e5c565b50029056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122071f2f45ed32308710f81321c9fd9156a6e65ce7b314cd5ff96c7c4a774d3fbe764736f6c63430008100033

Deployed Bytecode

0x6080604052600436106101f25760003560e01c806377d507d31161010d578063a5ece941116100a0578063bf56b3711161006f578063bf56b3711461059d578063c3c8cd80146105b3578063dd62ed3e146105c8578063ea1644d51461060e578063f2fde38b1461062e57600080fd5b8063a5ece9411461051f578063a9059cbb1461053d578063a9430dd51461055d578063adf6e29d1461057d57600080fd5b80638f9a55c0116100dc5780638f9a55c01461049c57806395d89b41146104b257806398a5c315146104df578063a2a957bb146104ff57600080fd5b806377d507d3146104285780637d1db4a5146104485780638da5cb5b1461045e5780638f70ccf71461047c57600080fd5b806351e9f233116101855780636fc3eaec116101545780636fc3eaec146103be57806370a08231146103d3578063715018a6146103f357806374010ece1461040857600080fd5b806351e9f2331461033e5780635e92280a1461035e578063638b1b141461037e5780636d8aa8f81461039c57600080fd5b806323b872dd116101c157806323b872dd146102cc5780632fd689e3146102ec578063313ce5671461030257806349bd5a5e1461031e57600080fd5b806306fdde03146101fe578063095ea7b31461023f5780631694505e1461026f57806318160ddd146102a757600080fd5b366101f957005b600080fd5b34801561020a57600080fd5b5060408051808201909152600681526548616861686160d01b60208201525b6040516102369190611b06565b60405180910390f35b34801561024b57600080fd5b5061025f61025a366004611b69565b61064e565b6040519015158152602001610236565b34801561027b57600080fd5b5060135461028f906001600160a01b031681565b6040516001600160a01b039091168152602001610236565b3480156102b357600080fd5b50678ac7230489e800005b604051908152602001610236565b3480156102d857600080fd5b5061025f6102e7366004611b95565b610665565b3480156102f857600080fd5b506102be60195481565b34801561030e57600080fd5b5060405160098152602001610236565b34801561032a57600080fd5b5060145461028f906001600160a01b031681565b34801561034a57600080fd5b5060105461028f906001600160a01b031681565b34801561036a57600080fd5b5061028f610379366004611bd6565b6106ce565b34801561038a57600080fd5b506011546001600160a01b031661028f565b3480156103a857600080fd5b506103bc6103b7366004611c04565b6106f8565b005b3480156103ca57600080fd5b506103bc610747565b3480156103df57600080fd5b506102be6103ee366004611c1f565b610792565b3480156103ff57600080fd5b506103bc6107b4565b34801561041457600080fd5b506103bc610423366004611bd6565b610828565b34801561043457600080fd5b506103bc610443366004611c3c565b6108c9565b34801561045457600080fd5b506102be60175481565b34801561046a57600080fd5b506000546001600160a01b031661028f565b34801561048857600080fd5b506103bc610497366004611c04565b610960565b3480156104a857600080fd5b506102be60185481565b3480156104be57600080fd5b506040805180820190915260048152634841484160e01b6020820152610229565b3480156104eb57600080fd5b506103bc6104fa366004611bd6565b610a01565b34801561050b57600080fd5b506103bc61051a366004611cc0565b610a30565b34801561052b57600080fd5b506012546001600160a01b031661028f565b34801561054957600080fd5b5061025f610558366004611b69565b610ae9565b34801561056957600080fd5b50601b5461028f906001600160a01b031681565b34801561058957600080fd5b506103bc610598366004611d13565b610af6565b3480156105a957600080fd5b506102be60155481565b3480156105bf57600080fd5b506103bc610b87565b3480156105d457600080fd5b506102be6105e3366004611dd8565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561061a57600080fd5b506103bc610629366004611bd6565b610bdb565b34801561063a57600080fd5b506103bc610649366004611c1f565b610c7c565b600061065b338484610d66565b5060015b92915050565b6000610672848484610e8a565b6106c484336106bf85604051806060016040528060288152602001611f81602891396001600160a01b038a16600090815260046020908152604080832033845290915290205491906113e1565b610d66565b5060019392505050565b601a81815481106106de57600080fd5b6000918252602090912001546001600160a01b0316905081565b6000546001600160a01b0316331461072b5760405162461bcd60e51b815260040161072290611e11565b60405180910390fd5b60168054911515620100000262ff000019909216919091179055565b6011546001600160a01b0316336001600160a01b0316148061077c57506012546001600160a01b0316336001600160a01b0316145b61078557600080fd5b4761078f8161141b565b50565b6001600160a01b03811660009081526002602052604081205461065f90611455565b6000546001600160a01b031633146107de5760405162461bcd60e51b815260040161072290611e11565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146108525760405162461bcd60e51b815260040161072290611e11565b678ac7230489e800008110156108c45760405162461bcd60e51b815260206004820152603160248201527f4d6178207472616e73616374696f6e2063616e6e6f74206265206c6f776572206044820152707468616e20746f74616c20737570706c7960781b6064820152608401610722565b601755565b6011546001600160a01b0316336001600160a01b0316146108e957600080fd5b60005b8281101561095a57816005600086868581811061090b5761090b611e46565b90506020020160208101906109209190611c1f565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061095281611e72565b9150506108ec565b50505050565b6000546001600160a01b0316331461098a5760405162461bcd60e51b815260040161072290611e11565b8015156000036109ea5760405162461bcd60e51b815260206004820152602560248201527f54726164696e672063616e6e6f7420626520706175736564206f6e636520656e60448201526418589b195960da1b6064820152608401610722565b6016805460ff191691151591909117905542601555565b6000546001600160a01b03163314610a2b5760405162461bcd60e51b815260040161072290611e11565b601955565b6000546001600160a01b03163314610a5a5760405162461bcd60e51b815260040161072290611e11565b6023610a668386611e8b565b11158015610a7e57506023610a7b8285611e8b565b11155b610ad55760405162461bcd60e51b815260206004820152602260248201527f546f74616c20666565732063616e6e6f74206265206d6f7265207468616e2033604482015261302560f01b6064820152608401610722565b600893909355600a91909155600955600b55565b600061065b338484610e8a565b6011546001600160a01b0316336001600160a01b031614610b1657600080fd5b60005b8151811015610b8357601a828281518110610b3657610b36611e46565b60209081029190910181015182546001810184556000938452919092200180546001600160a01b0319166001600160a01b0390921691909117905580610b7b81611e72565b915050610b19565b5050565b6011546001600160a01b0316336001600160a01b03161480610bbc57506012546001600160a01b0316336001600160a01b0316145b610bc557600080fd5b6000610bd030610792565b905061078f816114d9565b6000546001600160a01b03163314610c055760405162461bcd60e51b815260040161072290611e11565b678ac7230489e80000811015610c775760405162461bcd60e51b815260206004820152603160248201527f4d61782077616c6c65742073697a652063616e6e6f74206265206c6f776572206044820152707468616e20746f74616c20737570706c7960781b6064820152608401610722565b601855565b6000546001600160a01b03163314610ca65760405162461bcd60e51b815260040161072290611e11565b6001600160a01b038116610d0b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610722565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610dc85760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610722565b6001600160a01b038216610e295760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610722565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610eee5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610722565b6001600160a01b038216610f505760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610722565b60008111610fb25760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610722565b60005b601a5481101561104257601a8181548110610fd257610fd2611e46565b6000918252602090912001546001600160a01b039081169084160361103057601a818154811061100457611004611e46565b600091825260209091200154601b80546001600160a01b0319166001600160a01b039092169190911790555b8061103a81611e72565b915050610fb5565b50601554611051906078611e8b565b421161107157601b546001600160a01b0383811691161461107157600080fd5b6000546001600160a01b0384811691161480159061109d57506000546001600160a01b03838116911614155b156112da5760165460ff1661112f576000546001600160a01b0384811691161461112f5760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c6564006064820152608401610722565b6017548111156111815760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000006044820152606401610722565b6014546001600160a01b0383811691161461120657601854816111a384610792565b6111ad9190611e8b565b106112065760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b6064820152608401610722565b600061121130610792565b60195460175491925082101590821061122a5760175491505b80801561123f5750601654610100900460ff16155b801561125957506014546001600160a01b03868116911614155b801561126d575060165462010000900460ff165b801561129257506001600160a01b03851660009081526005602052604090205460ff16155b80156112b757506001600160a01b03841660009081526005602052604090205460ff16155b156112d7576112c5826114d9565b4780156112d5576112d54761141b565b505b50505b6001600160a01b03831660009081526005602052604090205460019060ff168061131c57506001600160a01b03831660009081526005602052604090205460ff165b8061134e57506014546001600160a01b0385811691161480159061134e57506014546001600160a01b03848116911614155b1561135b575060006113d5565b6014546001600160a01b03858116911614801561138657506013546001600160a01b03848116911614155b1561139857600854600c55600954600d555b6014546001600160a01b0384811691161480156113c357506013546001600160a01b03858116911614155b156113d557600a54600c55600b54600d555b61095a8484848461164d565b600081848411156114055760405162461bcd60e51b81526004016107229190611b06565b5060006114128486611e9e565b95945050505050565b6012546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610b83573d6000803e3d6000fd5b60006006548211156114bc5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610722565b60006114c661167b565b90506114d2838261169e565b9392505050565b6016805461ff001916610100179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061151d5761151d611e46565b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611576573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061159a9190611eb1565b816001815181106115ad576115ad611e46565b6001600160a01b0392831660209182029290920101526013546115d39130911684610d66565b60135460405163791ac94760e01b81526001600160a01b039091169063791ac9479061160c908590600090869030904290600401611ece565b600060405180830381600087803b15801561162657600080fd5b505af115801561163a573d6000803e3d6000fd5b50506016805461ff001916905550505050565b8061165a5761165a6116e0565b61166584848461170e565b8061095a5761095a600e54600c55600f54600d55565b6000806000611688611805565b9092509050611697828261169e565b9250505090565b60006114d283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611845565b600c541580156116f05750600d54155b156116f757565b600c8054600e55600d8054600f5560009182905555565b60008060008060008061172087611873565b6001600160a01b038f16600090815260026020526040902054959b5093995091975095509350915061175290876118d0565b6001600160a01b03808b1660009081526002602052604080822093909355908a16815220546117819086611912565b6001600160a01b0389166000908152600260205260409020556117a381611971565b6117ad84836119bb565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516117f291815260200190565b60405180910390a3505050505050505050565b6006546000908190678ac7230489e80000611820828261169e565b82101561183c57505060065492678ac7230489e8000092509050565b90939092509050565b600081836118665760405162461bcd60e51b81526004016107229190611b06565b5060006114128486611f3f565b60008060008060008060008060006118908a600c54600d546119df565b92509250925060006118a061167b565b905060008060006118b38e878787611a34565b919e509c509a509598509396509194505050505091939550919395565b60006114d283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506113e1565b60008061191f8385611e8b565b9050838110156114d25760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610722565b600061197b61167b565b905060006119898383611a84565b306000908152600260205260409020549091506119a69082611912565b30600090815260026020526040902055505050565b6006546119c890836118d0565b6006556007546119d89082611912565b6007555050565b60008080806119f960646119f38989611a84565b9061169e565b90506000611a0c60646119f38a89611a84565b90506000611a2482611a1e8b866118d0565b906118d0565b9992985090965090945050505050565b6000808080611a438886611a84565b90506000611a518887611a84565b90506000611a5f8888611a84565b90506000611a7182611a1e86866118d0565b939b939a50919850919650505050505050565b600082600003611a965750600061065f565b6000611aa28385611f61565b905082611aaf8583611f3f565b146114d25760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610722565b600060208083528351808285015260005b81811015611b3357858101830151858201604001528201611b17565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461078f57600080fd5b60008060408385031215611b7c57600080fd5b8235611b8781611b54565b946020939093013593505050565b600080600060608486031215611baa57600080fd5b8335611bb581611b54565b92506020840135611bc581611b54565b929592945050506040919091013590565b600060208284031215611be857600080fd5b5035919050565b80358015158114611bff57600080fd5b919050565b600060208284031215611c1657600080fd5b6114d282611bef565b600060208284031215611c3157600080fd5b81356114d281611b54565b600080600060408486031215611c5157600080fd5b833567ffffffffffffffff80821115611c6957600080fd5b818601915086601f830112611c7d57600080fd5b813581811115611c8c57600080fd5b8760208260051b8501011115611ca157600080fd5b602092830195509350611cb79186019050611bef565b90509250925092565b60008060008060808587031215611cd657600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052604160045260246000fd5b8035611bff81611b54565b60006020808385031215611d2657600080fd5b823567ffffffffffffffff80821115611d3e57600080fd5b818501915085601f830112611d5257600080fd5b813581811115611d6457611d64611cf2565b8060051b604051601f19603f83011681018181108582111715611d8957611d89611cf2565b604052918252848201925083810185019188831115611da757600080fd5b938501935b82851015611dcc57611dbd85611d08565b84529385019392850192611dac565b98975050505050505050565b60008060408385031215611deb57600080fd5b8235611df681611b54565b91506020830135611e0681611b54565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611e8457611e84611e5c565b5060010190565b8082018082111561065f5761065f611e5c565b8181038181111561065f5761065f611e5c565b600060208284031215611ec357600080fd5b81516114d281611b54565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611f1e5784516001600160a01b031683529383019391830191600101611ef9565b50506001600160a01b03969096166060850152505050608001529392505050565b600082611f5c57634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615611f7b57611f7b611e5c565b50029056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122071f2f45ed32308710f81321c9fd9156a6e65ce7b314cd5ff96c7c4a774d3fbe764736f6c63430008100033

Deployed Bytecode Sourcemap

4167:14253:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6647:83;;;;;;;;;;-1:-1:-1;6717:5:0;;;;;;;;;;;;-1:-1:-1;;;6717:5:0;;;;6647:83;;;;;;;:::i;:::-;;;;;;;;7820:193;;;;;;;;;;-1:-1:-1;7820:193:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;7820:193:0;1023:187:1;5299:41:0;;;;;;;;;;-1:-1:-1;5299:41:0;;;;-1:-1:-1;;;;;5299:41:0;;;;;;-1:-1:-1;;;;;1405:32:1;;;1387:51;;1375:2;1360:18;5299:41:0;1215:229:1;7172:95:0;;;;;;;;;;-1:-1:-1;4565:19:0;7172:95;;;1595:25:1;;;1583:2;1568:18;7172:95:0;1449:177:1;8021:446:0;;;;;;;;;;-1:-1:-1;8021:446:0;;;;;:::i;:::-;;:::i;5635:53::-;;;;;;;;;;;;;;;;7081:83;;;;;;;;;;-1:-1:-1;7081:83:0;;5880:1;2234:36:1;;2222:2;2207:18;7081:83:0;2092:184:1;5347:28:0;;;;;;;;;;-1:-1:-1;5347:28:0;;;;-1:-1:-1;;;;;5347:28:0;;;5040:82;;;;;;;;;;-1:-1:-1;5040:82:0;;;;-1:-1:-1;;;;;5040:82:0;;;5695:21;;;;;;;;;;-1:-1:-1;5695:21:0;;;;;:::i;:::-;;:::i;6738:118::-;;;;;;;;;;-1:-1:-1;6829:19:0;;-1:-1:-1;;;;;6829:19:0;6738:118;;17613:101;;;;;;;;;;-1:-1:-1;17613:101:0;;;;;:::i;:::-;;:::i;:::-;;13306:235;;;;;;;;;;;;;:::i;7275:138::-;;;;;;;;;;-1:-1:-1;7275:138:0;;;;;:::i;:::-;;:::i;1654:148::-;;;;;;;;;;;;;:::i;17740:203::-;;;;;;;;;;-1:-1:-1;17740:203:0;;;;;:::i;:::-;;:::i;18171:244::-;;;;;;;;;;-1:-1:-1;18171:244:0;;;;;:::i;:::-;;:::i;5525:47::-;;;;;;;;;;;;;;;;1440:79;;;;;;;;;;-1:-1:-1;1478:7:0;1505:6;-1:-1:-1;;;;;1505:6:0;1440:79;;12605:222;;;;;;;;;;-1:-1:-1;12605:222:0;;;;;:::i;:::-;;:::i;5579:49::-;;;;;;;;;;;;;;;;6986:87;;;;;;;;;;-1:-1:-1;7058:7:0;;;;;;;;;;;;-1:-1:-1;;;7058:7:0;;;;6986:87;;17422:139;;;;;;;;;;-1:-1:-1;17422:139:0;;;;;:::i;:::-;;:::i;16949:421::-;;;;;;;;;;-1:-1:-1;16949:421:0;;;;;:::i;:::-;;:::i;6864:114::-;;;;;;;;;;-1:-1:-1;6953:17:0;;-1:-1:-1;;;;;6953:17:0;6864:114;;7421:199;;;;;;;;;;-1:-1:-1;7421:199:0;;;;;:::i;:::-;;:::i;5723:21::-;;;;;;;;;;-1:-1:-1;5723:21:0;;;;-1:-1:-1;;;;;5723:21:0;;;12833:221;;;;;;;;;;-1:-1:-1;12833:221:0;;;;;:::i;:::-;;:::i;5382:25::-;;;;;;;;;;;;;;;;13062:236;;;;;;;;;;;;;:::i;7628:184::-;;;;;;;;;;-1:-1:-1;7628:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;7777:18:0;;;7745:7;7777:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7628:184;17951:212;;;;;;;;;;-1:-1:-1;17951:212:0;;;;;:::i;:::-;;:::i;1810:244::-;;;;;;;;;;-1:-1:-1;1810:244:0;;;;;:::i;:::-;;:::i;7820:193::-;7922:4;7944:39;279:10;7967:7;7976:6;7944:8;:39::i;:::-;-1:-1:-1;8001:4:0;7820:193;;;;;:::o;8021:446::-;8153:4;8170:36;8180:6;8188:9;8199:6;8170:9;:36::i;:::-;8217:220;8240:6;279:10;8288:138;8344:6;8288:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8288:19:0;;;;;;:11;:19;;;;;;;;279:10;8288:33;;;;;;;;;;:37;:138::i;:::-;8217:8;:220::i;:::-;-1:-1:-1;8455:4:0;8021:446;;;;;:::o;5695:21::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5695:21:0;;-1:-1:-1;5695:21:0;:::o;17613:101::-;1567:6;;-1:-1:-1;;;;;1567:6:0;279:10;1567:22;1559:67;;;;-1:-1:-1;;;1559:67:0;;;;;;;:::i;:::-;;;;;;;;;17680:11:::1;:26:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;17680:26:0;;::::1;::::0;;;::::1;::::0;;17613:101::o;13306:235::-;13372:19;;-1:-1:-1;;;;;13372:19:0;279:10;-1:-1:-1;;;;;13356:35:0;;:72;;;-1:-1:-1;13411:17:0;;-1:-1:-1;;;;;13411:17:0;279:10;-1:-1:-1;;;;;13395:33:0;;13356:72;13348:81;;;;;;13469:21;13501:32;13469:21;13501:12;:32::i;:::-;13337:204;13306:235::o;7275:138::-;-1:-1:-1;;;;;7388:16:0;;7341:7;7388:16;;;:7;:16;;;;;;7368:37;;:19;:37::i;1654:148::-;1567:6;;-1:-1:-1;;;;;1567:6:0;279:10;1567:22;1559:67;;;;-1:-1:-1;;;1559:67:0;;;;;;;:::i;:::-;1761:1:::1;1745:6:::0;;1724:40:::1;::::0;-1:-1:-1;;;;;1745:6:0;;::::1;::::0;1724:40:::1;::::0;1761:1;;1724:40:::1;1792:1;1775:19:::0;;-1:-1:-1;;;;;;1775:19:0::1;::::0;;1654:148::o;17740:203::-;1567:6;;-1:-1:-1;;;;;1567:6:0;279:10;1567:22;1559:67;;;;-1:-1:-1;;;1559:67:0;;;;;;;:::i;:::-;4565:19:::1;17822:11;:22;;17814:84;;;::::0;-1:-1:-1;;;17814:84:0;;6713:2:1;17814:84:0::1;::::0;::::1;6695:21:1::0;6752:2;6732:18;;;6725:30;6791:34;6771:18;;;6764:62;-1:-1:-1;;;6842:18:1;;;6835:47;6899:19;;17814:84:0::1;6511:413:1::0;17814:84:0::1;17909:12;:26:::0;17740:203::o;18171:244::-;18274:19;;-1:-1:-1;;;;;18274:19:0;279:10;-1:-1:-1;;;;;18258:35:0;;18250:44;;;;;;18309:9;18305:103;18324:19;;;18305:103;;;18390:6;18365:9;:22;18375:8;;18384:1;18375:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;18365:22:0;;;;;;;;;;;;-1:-1:-1;18365:22:0;:31;;-1:-1:-1;;18365:31:0;;;;;;;;;;18345:3;;;;:::i;:::-;;;;18305:103;;;;18171:244;;;:::o;12605:222::-;1567:6;;-1:-1:-1;;;;;1567:6:0;279:10;1567:22;1559:67;;;;-1:-1:-1;;;1559:67:0;;;;;;;:::i;:::-;12680:21;::::1;;12696:5;12680:21:::0;12672:71:::1;;;::::0;-1:-1:-1;;;12672:71:0;;7535:2:1;12672:71:0::1;::::0;::::1;7517:21:1::0;7574:2;7554:18;;;7547:30;7613:34;7593:18;;;7586:62;-1:-1:-1;;;7664:18:1;;;7657:35;7709:19;;12672:71:0::1;7333:401:1::0;12672:71:0::1;12754:11;:26:::0;;-1:-1:-1;;12754:26:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12804:15:::1;12791:10;:28:::0;12605:222::o;17422:139::-;1567:6;;-1:-1:-1;;;;;1567:6:0;279:10;1567:22;1559:67;;;;-1:-1:-1;;;1559:67:0;;;;;;;:::i;:::-;17513:19:::1;:40:::0;17422:139::o;16949:421::-;1567:6;;-1:-1:-1;;;;;1567:6:0;279:10;1567:22;1559:67;;;;-1:-1:-1;;;1559:67:0;;;;;;;:::i;:::-;17122:2:::1;17091:27;17107:11:::0;17091:13;:27:::1;:::i;:::-;:33;;:72;;;;-1:-1:-1::0;17161:2:0::1;17128:29;17145:12:::0;17128:14;:29:::1;:::i;:::-;:35;;17091:72;17083:119;;;::::0;-1:-1:-1;;;17083:119:0;;8071:2:1;17083:119:0::1;::::0;::::1;8053:21:1::0;8110:2;8090:18;;;8083:30;8149:34;8129:18;;;8122:62;-1:-1:-1;;;8200:18:1;;;8193:32;8242:19;;17083:119:0::1;7869:398:1::0;17083:119:0::1;17213:14;:30:::0;;;;17254:15:::1;:32:::0;;;;17297:12:::1;:26:::0;17334:13:::1;:28:::0;16949:421::o;7421:199::-;7526:4;7548:42;279:10;7572:9;7583:6;7548:9;:42::i;12833:221::-;12918:19;;-1:-1:-1;;;;;12918:19:0;279:10;-1:-1:-1;;;;;12902:35:0;;12894:44;;;;;;12954:9;12949:98;12973:5;:12;12969:1;:16;12949:98;;;13007:4;13025:5;13031:1;13025:8;;;;;;;;:::i;:::-;;;;;;;;;;;;13007:28;;;;;;;-1:-1:-1;13007:28:0;;;;;;;;;;-1:-1:-1;;;;;;13007:28:0;-1:-1:-1;;;;;13007:28:0;;;;;;;;;12987:3;;;;:::i;:::-;;;;12949:98;;;;12833:221;:::o;13062:236::-;13128:19;;-1:-1:-1;;;;;13128:19:0;279:10;-1:-1:-1;;;;;13112:35:0;;:72;;;-1:-1:-1;13167:17:0;;-1:-1:-1;;;;;13167:17:0;279:10;-1:-1:-1;;;;;13151:33:0;;13112:72;13104:81;;;;;;13196:23;13222:24;13240:4;13222:9;:24::i;:::-;13196:50;;13257:33;13274:15;13257:16;:33::i;17951:212::-;1567:6;;-1:-1:-1;;;;;1567:6:0;279:10;1567:22;1559:67;;;;-1:-1:-1;;;1559:67:0;;;;;;;:::i;:::-;4565:19:::1;18036:13;:24;;18028:86;;;::::0;-1:-1:-1;;;18028:86:0;;8474:2:1;18028:86:0::1;::::0;::::1;8456:21:1::0;8513:2;8493:18;;;8486:30;8552:34;8532:18;;;8525:62;-1:-1:-1;;;8603:18:1;;;8596:47;8660:19;;18028:86:0::1;8272:413:1::0;18028:86:0::1;18125:14;:30:::0;17951:212::o;1810:244::-;1567:6;;-1:-1:-1;;;;;1567:6:0;279:10;1567:22;1559:67;;;;-1:-1:-1;;;1559:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1899:22:0;::::1;1891:73;;;::::0;-1:-1:-1;;;1891:73:0;;8892:2:1;1891:73:0::1;::::0;::::1;8874:21:1::0;8931:2;8911:18;;;8904:30;8970:34;8950:18;;;8943:62;-1:-1:-1;;;9021:18:1;;;9014:36;9067:19;;1891:73:0::1;8690:402:1::0;1891:73:0::1;2001:6;::::0;;1980:38:::1;::::0;-1:-1:-1;;;;;1980:38:0;;::::1;::::0;2001:6;::::1;::::0;1980:38:::1;::::0;::::1;2029:6;:17:::0;;-1:-1:-1;;;;;;2029:17:0::1;-1:-1:-1::0;;;;;2029:17:0;;;::::1;::::0;;;::::1;::::0;;1810:244::o;9158:369::-;-1:-1:-1;;;;;9285:19:0;;9277:68;;;;-1:-1:-1;;;9277:68:0;;9299:2:1;9277:68:0;;;9281:21:1;9338:2;9318:18;;;9311:30;9377:34;9357:18;;;9350:62;-1:-1:-1;;;9428:18:1;;;9421:34;9472:19;;9277:68:0;9097:400:1;9277:68:0;-1:-1:-1;;;;;9364:21:0;;9356:68;;;;-1:-1:-1;;;9356:68:0;;9704:2:1;9356:68:0;;;9686:21:1;9743:2;9723:18;;;9716:30;9782:34;9762:18;;;9755:62;-1:-1:-1;;;9833:18:1;;;9826:32;9875:19;;9356:68:0;9502:398:1;9356:68:0;-1:-1:-1;;;;;9435:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9487:32;;1595:25:1;;;9487:32:0;;1568:18:1;9487:32:0;;;;;;;9158:369;;;:::o;9535:2464::-;-1:-1:-1;;;;;9657:18:0;;9649:68;;;;-1:-1:-1;;;9649:68:0;;10107:2:1;9649:68:0;;;10089:21:1;10146:2;10126:18;;;10119:30;10185:34;10165:18;;;10158:62;-1:-1:-1;;;10236:18:1;;;10229:35;10281:19;;9649:68:0;9905:401:1;9649:68:0;-1:-1:-1;;;;;9736:16:0;;9728:64;;;;-1:-1:-1;;;9728:64:0;;10513:2:1;9728:64:0;;;10495:21:1;10552:2;10532:18;;;10525:30;10591:34;10571:18;;;10564:62;-1:-1:-1;;;10642:18:1;;;10635:33;10685:19;;9728:64:0;10311:399:1;9728:64:0;9820:1;9811:6;:10;9803:64;;;;-1:-1:-1;;;9803:64:0;;10917:2:1;9803:64:0;;;10899:21:1;10956:2;10936:18;;;10929:30;10995:34;10975:18;;;10968:62;-1:-1:-1;;;11046:18:1;;;11039:39;11095:19;;9803:64:0;10715:405:1;9803:64:0;9883:9;9878:134;9902:4;:11;9898:15;;9878:134;;;9944:4;9949:1;9944:7;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;9944:7:0;;;9938:13;;;;9935:64;;9976:4;9981:1;9976:7;;;;;;;;:::i;:::-;;;;;;;;;;;9967:6;:16;;-1:-1:-1;;;;;;9967:16:0;-1:-1:-1;;;;;9976:7:0;;;9967:16;;;;;;9935:64;9915:3;;;;:::i;:::-;;;;9878:134;;;-1:-1:-1;10054:10:0;;:22;;10067:9;10054:22;:::i;:::-;10035:15;:41;10032:95;;10108:6;;-1:-1:-1;;;;;10102:12:0;;;10108:6;;10102:12;10094:21;;;;;;1478:7;1505:6;-1:-1:-1;;;;;10141:15:0;;;1505:6;;10141:15;;;;:32;;-1:-1:-1;1478:7:0;1505:6;-1:-1:-1;;;;;10160:13:0;;;1505:6;;10160:13;;10141:32;10137:1154;;;10230:11;;;;10225:144;;1478:7;1505:6;-1:-1:-1;;;;;10270:15:0;;;1505:6;;10270:15;10262:91;;;;-1:-1:-1;;;10262:91:0;;11327:2:1;10262:91:0;;;11309:21:1;11366:2;11346:18;;;11339:30;11405:34;11385:18;;;11378:62;11476:33;11456:18;;;11449:61;11527:19;;10262:91:0;11125:427:1;10262:91:0;10403:12;;10393:6;:22;;10385:63;;;;-1:-1:-1;;;10385:63:0;;11759:2:1;10385:63:0;;;11741:21:1;11798:2;11778:18;;;11771:30;11837;11817:18;;;11810:58;11885:18;;10385:63:0;11557:352:1;10385:63:0;10474:13;;-1:-1:-1;;;;;10468:19:0;;;10474:13;;10468:19;10465:146;;10541:14;;10532:6;10516:13;10526:2;10516:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10508:87;;;;-1:-1:-1;;;10508:87:0;;12116:2:1;10508:87:0;;;12098:21:1;12155:2;12135:18;;;12128:30;12194:34;12174:18;;;12167:62;-1:-1:-1;;;12245:18:1;;;12238:33;12288:19;;10508:87:0;11914:399:1;10508:87:0;10627:28;10658:24;10676:4;10658:9;:24::i;:::-;10736:19;;10799:12;;10627:55;;-1:-1:-1;10712:43:0;;;;10775:36;;10772:124;;10868:12;;10845:35;;10772:124;10916:7;:18;;;;-1:-1:-1;10928:6:0;;;;;;;10927:7;10916:18;:43;;;;-1:-1:-1;10946:13:0;;-1:-1:-1;;;;;10938:21:0;;;10946:13;;10938:21;;10916:43;:58;;;;-1:-1:-1;10963:11:0;;;;;;;10916:58;:78;;;;-1:-1:-1;;;;;;10979:15:0;;;;;;:9;:15;;;;;;;;10978:16;10916:78;:96;;;;-1:-1:-1;;;;;;10999:13:0;;;;;;:9;:13;;;;;;;;10998:14;10916:96;10912:368;;;11033:38;11050:20;11033:16;:38::i;:::-;11119:21;11163:22;;11159:106;;11210:35;11223:21;11210:12;:35::i;:::-;11014:266;10912:368;10175:1116;;10137:1154;-1:-1:-1;;;;;11367:15:0;;11303:12;11367:15;;;:9;:15;;;;;;11318:4;;11367:15;;;:32;;-1:-1:-1;;;;;;11386:13:0;;;;;;:9;:13;;;;;;;;11367:32;11366:84;;;-1:-1:-1;11413:13:0;;-1:-1:-1;;;;;11405:21:0;;;11413:13;;11405:21;;;;:44;;-1:-1:-1;11436:13:0;;-1:-1:-1;;;;;11430:19:0;;;11436:13;;11430:19;;11405:44;11362:576;;;-1:-1:-1;11477:5:0;11362:576;;;11560:13;;-1:-1:-1;;;;;11552:21:0;;;11560:13;;11552:21;:55;;;;-1:-1:-1;11591:15:0;;-1:-1:-1;;;;;11577:30:0;;;11591:15;;11577:30;;11552:55;11549:162;;;11640:14;;11628:9;:26;11683:12;;11673:7;:22;11549:162;11770:13;;-1:-1:-1;;;;;11764:19:0;;;11770:13;;11764:19;:55;;;;-1:-1:-1;11803:15:0;;-1:-1:-1;;;;;11787:32:0;;;11803:15;;11787:32;;11764:55;11760:165;;;11852:15;;11840:9;:27;11896:13;;11886:7;:23;11760:165;11950:41;11965:4;11971:2;11975:6;11983:7;11950:14;:41::i;2418:224::-;2538:7;2574:12;2566:6;;;;2558:29;;;;-1:-1:-1;;;2558:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2598:9:0;2610:5;2614:1;2610;:5;:::i;:::-;2598:17;2418:224;-1:-1:-1;;;;;2418:224:0:o;12498:99::-;12555:17;;:34;;-1:-1:-1;;;;;12555:17:0;;;;:34;;;;;12582:6;;12555:17;:34;:17;:34;12582:6;12555:17;:34;;;;;;;;;;;;;;;;;;;8475:323;8570:7;8628;;8617;:18;;8595:110;;;;-1:-1:-1;;;8595:110:0;;12653:2:1;8595:110:0;;;12635:21:1;12692:2;12672:18;;;12665:30;12731:34;12711:18;;;12704:62;-1:-1:-1;;;12782:18:1;;;12775:40;12832:19;;8595:110:0;12451:406:1;8595:110:0;8716:19;8738:10;:8;:10::i;:::-;8716:32;-1:-1:-1;8766:24:0;:7;8716:32;8766:11;:24::i;:::-;8759:31;8475:323;-1:-1:-1;;;8475:323:0:o;12007:483::-;5977:6;:13;;-1:-1:-1;;5977:13:0;;;;;12109:16:::1;::::0;;12123:1:::1;12109:16:::0;;;;;::::1;::::0;;-1:-1:-1;;12109:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;12109:16:0::1;12085:40;;12154:4;12136;12141:1;12136:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12136:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;12180:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;12180:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;12136:7;;12180:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12170:4;12175:1;12170:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12170:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;12245:15:::1;::::0;12213:62:::1;::::0;12230:4:::1;::::0;12245:15:::1;12263:11:::0;12213:8:::1;:62::i;:::-;12286:15;::::0;:196:::1;::::0;-1:-1:-1;;;12286:196:0;;-1:-1:-1;;;;;12286:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;12367:11;;12286:15:::1;::::0;12409:4;;12436::::1;::::0;12456:15:::1;::::0;12286:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6013:6:0;:14;;-1:-1:-1;;6013:14:0;;;-1:-1:-1;;;;12007:483:0:o;13551:282::-;13707:7;13702:28;;13716:14;:12;:14::i;:::-;13741:44;13759:6;13767:9;13778:6;13741:17;:44::i;:::-;13801:7;13796:29;;13810:15;9089:17;;9077:9;:29;9127:15;;9117:7;:25;9033:117;16512:164;16554:7;16575:15;16592;16611:19;:17;:19::i;:::-;16574:56;;-1:-1:-1;16574:56:0;-1:-1:-1;16648:20:0;16574:56;;16648:11;:20::i;:::-;16641:27;;;;16512:164;:::o;2904:132::-;2962:7;2989:39;2993:1;2996;2989:39;;;;;;;;;;;;;;;;;:3;:39::i;8806:219::-;8853:9;;:14;:30;;;;-1:-1:-1;8871:7:0;;:12;8853:30;8849:43;;;8806:219::o;8849:43::-;8924:9;;;8904:17;:29;8962:7;;;8944:15;:25;-1:-1:-1;8982:13:0;;;;9006:11;8806:219::o;13841:610::-;13988:15;14018:23;14056:12;14083:23;14121:12;14148:13;14175:19;14186:7;14175:10;:19::i;:::-;-1:-1:-1;;;;;14223:15:0;;;;;;:7;:15;;;;;;13973:221;;-1:-1:-1;13973:221:0;;-1:-1:-1;13973:221:0;;-1:-1:-1;13973:221:0;-1:-1:-1;13973:221:0;-1:-1:-1;13973:221:0;-1:-1:-1;14223:28:0;;13973:221;14223:19;:28::i;:::-;-1:-1:-1;;;;;14205:15:0;;;;;;;:7;:15;;;;;;:46;;;;14283:18;;;;;;;:39;;14306:15;14283:22;:39::i;:::-;-1:-1:-1;;;;;14262:18:0;;;;;;:7;:18;;;;;:60;14333:16;14343:5;14333:9;:16::i;:::-;14360:23;14372:4;14378;14360:11;:23::i;:::-;14416:9;-1:-1:-1;;;;;14399:44:0;14408:6;-1:-1:-1;;;;;14399:44:0;;14427:15;14399:44;;;;1595:25:1;;1583:2;1568:18;;1449:177;14399:44:0;;;;;;;;13962:489;;;;;;13841:610;;;:::o;16684:257::-;16782:7;;16735;;;;4565:19;16850:20;16782:7;4565:19;16850:11;:20::i;:::-;16840:7;:30;16836:61;;;-1:-1:-1;;16880:7:0;;;4565:19;;-1:-1:-1;16684:257:0;-1:-1:-1;16684:257:0:o;16836:61::-;16916:7;;16925;;-1:-1:-1;16684:257:0;-1:-1:-1;16684:257:0:o;3044:223::-;3164:7;3199:12;3192:5;3184:28;;;;-1:-1:-1;;;3184:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3223:9:0;3235:5;3239:1;3235;:5;:::i;14870:615::-;14970:7;14992;15014;15036;15058;15080;15116:23;15141:12;15155:13;15185:40;15197:7;15206:9;;15217:7;;15185:11;:40::i;:::-;15115:110;;;;;;15236:19;15258:10;:8;:10::i;:::-;15236:32;;15280:15;15297:23;15322:12;15351:46;15363:7;15372:4;15378:5;15385:11;15351;:46::i;:::-;15279:118;;-1:-1:-1;15279:118:0;-1:-1:-1;15279:118:0;-1:-1:-1;15448:15:0;;-1:-1:-1;15465:4:0;;-1:-1:-1;15471:5:0;;-1:-1:-1;;;;;14870:615:0;;;;;;;:::o;2274:136::-;2332:7;2359:43;2363:1;2366;2359:43;;;;;;;;;;;;;;;;;:3;:43::i;2087:179::-;2145:7;;2177:5;2181:1;2177;:5;:::i;:::-;2165:17;;2206:1;2201;:6;;2193:46;;;;-1:-1:-1;;;2193:46:0;;14527:2:1;2193:46:0;;;14509:21:1;14566:2;14546:18;;;14539:30;14605:29;14585:18;;;14578:57;14652:18;;2193:46:0;14325:351:1;14459:211:0;14512:19;14534:10;:8;:10::i;:::-;14512:32;-1:-1:-1;14555:13:0;14571:22;:5;14512:32;14571:9;:22::i;:::-;14645:4;14629:22;;;;:7;:22;;;;;;14555:38;;-1:-1:-1;14629:33:0;;14555:38;14629:26;:33::i;:::-;14620:4;14604:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;14459:211:0:o;14678:147::-;14756:7;;:17;;14768:4;14756:11;:17::i;:::-;14746:7;:27;14797:10;;:20;;14812:4;14797:14;:20::i;:::-;14784:10;:33;-1:-1:-1;;14678:147:0:o;15493:469::-;15662:7;;;;15756:30;15782:3;15756:21;:7;15768:8;15756:11;:21::i;:::-;:25;;:30::i;:::-;15741:45;-1:-1:-1;15797:13:0;15813:28;15837:3;15813:19;:7;15825:6;15813:11;:19::i;:28::-;15797:44;-1:-1:-1;15852:23:0;15878:28;15797:44;15878:17;:7;15890:4;15878:11;:17::i;:::-;:21;;:28::i;:::-;15852:54;15942:4;;-1:-1:-1;15948:5:0;;-1:-1:-1;15493:469:0;;-1:-1:-1;;;;;15493:469:0:o;15970:534::-;16164:7;;;;16261:24;:7;16273:11;16261;:24::i;:::-;16243:42;-1:-1:-1;16296:12:0;16311:21;:4;16320:11;16311:8;:21::i;:::-;16296:36;-1:-1:-1;16343:13:0;16359:22;:5;16369:11;16359:9;:22::i;:::-;16343:38;-1:-1:-1;16392:23:0;16418:28;16343:38;16418:17;:7;16430:4;16418:11;:17::i;:28::-;16465:7;;;;-1:-1:-1;16491:4:0;;-1:-1:-1;15970:534:0;;-1:-1:-1;;;;;;;15970:534:0:o;2650:246::-;2708:7;2732:1;2737;2732:6;2728:47;;-1:-1:-1;2762:1:0;2755:8;;2728:47;2785:9;2797:5;2801:1;2797;:5;:::i;:::-;2785:17;-1:-1:-1;2830:1:0;2821:5;2825:1;2785:17;2821:5;:::i;:::-;:10;2813:56;;;;-1:-1:-1;;;2813:56:0;;15056:2:1;2813:56:0;;;15038:21:1;15095:2;15075:18;;;15068:30;15134:34;15114:18;;;15107:62;-1:-1:-1;;;15185:18:1;;;15178:31;15226:19;;2813:56:0;14854:397:1;14:548;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1631:456::-;1708:6;1716;1724;1777:2;1765:9;1756:7;1752:23;1748:32;1745:52;;;1793:1;1790;1783:12;1745:52;1832:9;1819:23;1851:31;1876:5;1851:31;:::i;:::-;1901:5;-1:-1:-1;1958:2:1;1943:18;;1930:32;1971:33;1930:32;1971:33;:::i;:::-;1631:456;;2023:7;;-1:-1:-1;;;2077:2:1;2062:18;;;;2049:32;;1631:456::o;2489:180::-;2548:6;2601:2;2589:9;2580:7;2576:23;2572:32;2569:52;;;2617:1;2614;2607:12;2569:52;-1:-1:-1;2640:23:1;;2489:180;-1:-1:-1;2489:180:1:o;2674:160::-;2739:20;;2795:13;;2788:21;2778:32;;2768:60;;2824:1;2821;2814:12;2768:60;2674:160;;;:::o;2839:180::-;2895:6;2948:2;2936:9;2927:7;2923:23;2919:32;2916:52;;;2964:1;2961;2954:12;2916:52;2987:26;3003:9;2987:26;:::i;3024:247::-;3083:6;3136:2;3124:9;3115:7;3111:23;3107:32;3104:52;;;3152:1;3149;3142:12;3104:52;3191:9;3178:23;3210:31;3235:5;3210:31;:::i;3276:689::-;3368:6;3376;3384;3437:2;3425:9;3416:7;3412:23;3408:32;3405:52;;;3453:1;3450;3443:12;3405:52;3493:9;3480:23;3522:18;3563:2;3555:6;3552:14;3549:34;;;3579:1;3576;3569:12;3549:34;3617:6;3606:9;3602:22;3592:32;;3662:7;3655:4;3651:2;3647:13;3643:27;3633:55;;3684:1;3681;3674:12;3633:55;3724:2;3711:16;3750:2;3742:6;3739:14;3736:34;;;3766:1;3763;3756:12;3736:34;3821:7;3814:4;3804:6;3801:1;3797:14;3793:2;3789:23;3785:34;3782:47;3779:67;;;3842:1;3839;3832:12;3779:67;3873:4;3865:13;;;;-1:-1:-1;3897:6:1;-1:-1:-1;3922:37:1;;3938:20;;;-1:-1:-1;3922:37:1;:::i;:::-;3912:47;;3276:689;;;;;:::o;3970:385::-;4056:6;4064;4072;4080;4133:3;4121:9;4112:7;4108:23;4104:33;4101:53;;;4150:1;4147;4140:12;4101:53;-1:-1:-1;;4173:23:1;;;4243:2;4228:18;;4215:32;;-1:-1:-1;4294:2:1;4279:18;;4266:32;;4345:2;4330:18;4317:32;;-1:-1:-1;3970:385:1;-1:-1:-1;3970:385:1:o;4360:127::-;4421:10;4416:3;4412:20;4409:1;4402:31;4452:4;4449:1;4442:15;4476:4;4473:1;4466:15;4492:134;4560:20;;4589:31;4560:20;4589:31;:::i;4631:1121::-;4715:6;4746:2;4789;4777:9;4768:7;4764:23;4760:32;4757:52;;;4805:1;4802;4795:12;4757:52;4845:9;4832:23;4874:18;4915:2;4907:6;4904:14;4901:34;;;4931:1;4928;4921:12;4901:34;4969:6;4958:9;4954:22;4944:32;;5014:7;5007:4;5003:2;4999:13;4995:27;4985:55;;5036:1;5033;5026:12;4985:55;5072:2;5059:16;5094:2;5090;5087:10;5084:36;;;5100:18;;:::i;:::-;5146:2;5143:1;5139:10;5178:2;5172:9;5241:2;5237:7;5232:2;5228;5224:11;5220:25;5212:6;5208:38;5296:6;5284:10;5281:22;5276:2;5264:10;5261:18;5258:46;5255:72;;;5307:18;;:::i;:::-;5343:2;5336:22;5393:18;;;5427:15;;;;-1:-1:-1;5469:11:1;;;5465:20;;;5497:19;;;5494:39;;;5529:1;5526;5519:12;5494:39;5553:11;;;;5573:148;5589:6;5584:3;5581:15;5573:148;;;5655:23;5674:3;5655:23;:::i;:::-;5643:36;;5606:12;;;;5699;;;;5573:148;;;5740:6;4631:1121;-1:-1:-1;;;;;;;;4631:1121:1:o;5757:388::-;5825:6;5833;5886:2;5874:9;5865:7;5861:23;5857:32;5854:52;;;5902:1;5899;5892:12;5854:52;5941:9;5928:23;5960:31;5985:5;5960:31;:::i;:::-;6010:5;-1:-1:-1;6067:2:1;6052:18;;6039:32;6080:33;6039:32;6080:33;:::i;:::-;6132:7;6122:17;;;5757:388;;;;;:::o;6150:356::-;6352:2;6334:21;;;6371:18;;;6364:30;6430:34;6425:2;6410:18;;6403:62;6497:2;6482:18;;6150:356::o;6929:127::-;6990:10;6985:3;6981:20;6978:1;6971:31;7021:4;7018:1;7011:15;7045:4;7042:1;7035:15;7061:127;7122:10;7117:3;7113:20;7110:1;7103:31;7153:4;7150:1;7143:15;7177:4;7174:1;7167:15;7193:135;7232:3;7253:17;;;7250:43;;7273:18;;:::i;:::-;-1:-1:-1;7320:1:1;7309:13;;7193:135::o;7739:125::-;7804:9;;;7825:10;;;7822:36;;;7838:18;;:::i;12318:128::-;12385:9;;;12406:11;;;12403:37;;;12420:18;;:::i;12862:251::-;12932:6;12985:2;12973:9;12964:7;12960:23;12956:32;12953:52;;;13001:1;12998;12991:12;12953:52;13033:9;13027:16;13052:31;13077:5;13052:31;:::i;13118:980::-;13380:4;13428:3;13417:9;13413:19;13459:6;13448:9;13441:25;13485:2;13523:6;13518:2;13507:9;13503:18;13496:34;13566:3;13561:2;13550:9;13546:18;13539:31;13590:6;13625;13619:13;13656:6;13648;13641:22;13694:3;13683:9;13679:19;13672:26;;13733:2;13725:6;13721:15;13707:29;;13754:1;13764:195;13778:6;13775:1;13772:13;13764:195;;;13843:13;;-1:-1:-1;;;;;13839:39:1;13827:52;;13934:15;;;;13899:12;;;;13875:1;13793:9;13764:195;;;-1:-1:-1;;;;;;;14015:32:1;;;;14010:2;13995:18;;13988:60;-1:-1:-1;;;14079:3:1;14064:19;14057:35;13976:3;13118:980;-1:-1:-1;;;13118:980:1:o;14103:217::-;14143:1;14169;14159:132;;14213:10;14208:3;14204:20;14201:1;14194:31;14248:4;14245:1;14238:15;14276:4;14273:1;14266:15;14159:132;-1:-1:-1;14305:9:1;;14103:217::o;14681:168::-;14721:7;14787:1;14783;14779:6;14775:14;14772:1;14769:21;14764:1;14757:9;14750:17;14746:45;14743:71;;;14794:18;;:::i;:::-;-1:-1:-1;14834:9:1;;14681:168::o

Swarm Source

ipfs://71f2f45ed32308710f81321c9fd9156a6e65ce7b314cd5ff96c7c4a774d3fbe7
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.