ETH Price: $3,416.76 (+4.20%)
 

Overview

Max Total Supply

1,000,000,000 CHIRP

Holders

30

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
decascan.eth
Balance
11,185,185.533979087 CHIRP

Value
$0.00
0x2748a090c781fc733a58acf33227c80bc19bfff8
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:
ChirpNetwork

Compiler Version
v0.8.19+commit.7dd6d404

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-04
*/

// Telegram : https://t.me/ChirpNetwork

// Website : https://ChirpNet.space

// Twitter : https://twitter.com/ChirpNet_erc

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.19;

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 ChirpNetwork is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = "CHIRP NETWORK";
    string private constant _symbol = "CHIRP";
    uint8 private constant _decimals = 9;

    uint256 private timepause = 0;
    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1000000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 1;
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 2;

    //Original Fee
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;

    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;

    address payable private _developmentAddress = payable(0x856b9815C0B41432ba038B921cEca15ad3F2c4eD);
    address payable private _marketingAddress = payable(0x856b9815C0B41432ba038B921cEca15ad3F2c4eD);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    bool private tradingOpen = true;
    bool private inSwap = false;
    bool private swapEnabled = true;

    uint256 public _maxTxAmount = _tTotal * 5/100;
    uint256 public _maxWalletSize = _tTotal;
    uint256 public _swapTokensAtAmount = _tTotal*55/100000;

    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());

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_marketingAddress] = true;

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

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

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

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

    function 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");

        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 >= _swapTokensAtAmount*5)
            {
                contractTokenBalance = _swapTokensAtAmount*5;
            }

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

        bool takeFee = true;

        //Transfer Tokens
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[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 = timepause == 0 ? _taxFeeOnSell : 100;
            }
        }

        _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 manualsend() external {
        sendETHToFee(address(this).balance);
    }

    function manualSwap(uint256 percent) external onlyOwner{
        uint256 contractTokenBalance = balanceOf(address(this));
        uint256 swapamount = contractTokenBalance*percent/100;
        swapTokensForEth(swapamount);
    }

    function toggleSwap (bool _swapEnabled) external onlyOwner{
        swapEnabled = _swapEnabled;
    }

    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 enabletrade() external virtual {
        tradingOpen = true;
        timepause = 1;
    }

    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 setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner {
        _maxTxAmount = _tTotal*maxTxAmount/100;
        require (_maxTxAmount >= _tTotal/100);
    }

    function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = _tTotal*maxWalletSize/100;
         require (_maxWalletSize >= _tTotal/100);
    }

}

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":[],"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":"enabletrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","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":"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":[],"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"}]

608060405260006002556200001f670de0b6b3a7640000600019620003af565b6200002d90600019620003dc565b600755600060098190556001600a55600b8190556002600c819055600d829055600e819055600f919091556010556011805473856b9815c0b41432ba038b921ceca15ad3f2c4ed6001600160a01b031991821681179092556012805490911690911790556014805462ffffff60a01b19166201000160a01b1790556064620000bf670de0b6b3a76400006005620003f8565b620000cb919062000412565b601555670de0b6b3a7640000601655620186a0670de0b6b3a76400006037620000f59190620003f8565b62000101919062000412565b6017553480156200011157600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506007543360009081526003602090815260409182902092909255601380546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155815163c45a015560e01b815291519092839263c45a015592600480830193928290030181865afa158015620001cf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f5919062000429565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000243573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000269919062000429565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002b7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002dd919062000429565b601480546001600160a01b0319166001600160a01b03928316179055600080548216815260066020526040808220805460ff1990811660019081179092553084528284208054821683179055601254909416835291208054909216179055336001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a76400006040516200038a91815260200190565b60405180910390a3506200045b565b634e487b7160e01b600052601260045260246000fd5b600082620003c157620003c162000399565b500690565b634e487b7160e01b600052601160045260246000fd5b81810381811115620003f257620003f2620003c6565b92915050565b8082028115828204841417620003f257620003f2620003c6565b60008262000424576200042462000399565b500490565b6000602082840312156200043c57600080fd5b81516001600160a01b03811681146200045457600080fd5b9392505050565b611863806200046b6000396000f3fe6080604052600436106101445760003560e01c806370a08231116100b657806395d89b411161006f57806395d89b4114610397578063a9059cbb146103c5578063b70143c9146103e5578063dd62ed3e14610405578063ea1644d51461044b578063f2fde38b1461046b57600080fd5b806370a08231146102f8578063715018a61461031857806374010ece1461032d5780637d1db4a51461034d5780638da5cb5b146103635780638f9a55c01461038157600080fd5b806323b872dd1161010857806323b872dd146102515780632fd689e314610271578063313ce5671461028757806349bd5a5e146102a35780636d8aa8f8146102c35780636fc3eaec146102e357600080fd5b806306fdde0314610150578063095ea7b3146101985780630ed6ae84146101c85780631694505e146101f457806318160ddd1461022c57600080fd5b3661014b57005b600080fd5b34801561015c57600080fd5b5060408051808201909152600d81526c4348495250204e4554574f524b60981b60208201525b60405161018f9190611556565b60405180910390f35b3480156101a457600080fd5b506101b86101b33660046115b9565b61048b565b604051901515815260200161018f565b3480156101d457600080fd5b506101f26014805460ff60a01b1916600160a01b1790556001600255565b005b34801561020057600080fd5b50601354610214906001600160a01b031681565b6040516001600160a01b03909116815260200161018f565b34801561023857600080fd5b50670de0b6b3a76400005b60405190815260200161018f565b34801561025d57600080fd5b506101b861026c3660046115e5565b6104a2565b34801561027d57600080fd5b5061024360175481565b34801561029357600080fd5b506040516009815260200161018f565b3480156102af57600080fd5b50601454610214906001600160a01b031681565b3480156102cf57600080fd5b506101f26102de366004611626565b61050b565b3480156102ef57600080fd5b506101f261055c565b34801561030457600080fd5b50610243610313366004611648565b610567565b34801561032457600080fd5b506101f2610589565b34801561033957600080fd5b506101f2610348366004611665565b6105fd565b34801561035957600080fd5b5061024360155481565b34801561036f57600080fd5b506000546001600160a01b0316610214565b34801561038d57600080fd5b5061024360165481565b3480156103a357600080fd5b50604080518082019091526005815264043484952560dc1b6020820152610182565b3480156103d157600080fd5b506101b86103e03660046115b9565b61066c565b3480156103f157600080fd5b506101f2610400366004611665565b610679565b34801561041157600080fd5b5061024361042036600461167e565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b34801561045757600080fd5b506101f2610466366004611665565b6106d8565b34801561047757600080fd5b506101f2610486366004611648565b610744565b600061049833848461082e565b5060015b92915050565b60006104af848484610952565b61050184336104fc85604051806060016040528060288152602001611806602891396001600160a01b038a1660009081526005602090815260408083203384529091529020549190610e27565b61082e565b5060019392505050565b6000546001600160a01b0316331461053e5760405162461bcd60e51b8152600401610535906116b7565b60405180910390fd5b60148054911515600160b01b0260ff60b01b19909216919091179055565b61056547610e61565b565b6001600160a01b03811660009081526003602052604081205461049c90610e9f565b6000546001600160a01b031633146105b35760405162461bcd60e51b8152600401610535906116b7565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146106275760405162461bcd60e51b8152600401610535906116b7565b606461063b82670de0b6b3a7640000611702565b6106459190611719565b60155561065b6064670de0b6b3a7640000611719565b601554101561066957600080fd5b50565b6000610498338484610952565b6000546001600160a01b031633146106a35760405162461bcd60e51b8152600401610535906116b7565b60006106ae30610567565b9050600060646106be8484611702565b6106c89190611719565b90506106d381610f23565b505050565b6000546001600160a01b031633146107025760405162461bcd60e51b8152600401610535906116b7565b606461071682670de0b6b3a7640000611702565b6107209190611719565b6016556107366064670de0b6b3a7640000611719565b601654101561066957600080fd5b6000546001600160a01b0316331461076e5760405162461bcd60e51b8152600401610535906116b7565b6001600160a01b0381166107d35760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610535565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166108905760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610535565b6001600160a01b0382166108f15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610535565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166109b65760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610535565b6001600160a01b038216610a185760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610535565b60008111610a7a5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610535565b6000546001600160a01b03848116911614801590610aa657506000546001600160a01b03838116911614155b15610d0a57601454600160a01b900460ff16610b3f576000546001600160a01b03848116911614610b3f5760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c6564006064820152608401610535565b601554811115610b915760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000006044820152606401610535565b6014546001600160a01b03838116911614610c165760165481610bb384610567565b610bbd919061173b565b10610c165760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b6064820152608401610535565b6000610c2130610567565b6017549091508082101590610c37906005611702565b8210610c4e57601754610c4b906005611702565b91505b808015610c655750601454600160a81b900460ff16155b8015610c7f57506014546001600160a01b03868116911614155b8015610c945750601454600160b01b900460ff165b8015610cb957506001600160a01b03851660009081526006602052604090205460ff16155b8015610cde57506001600160a01b03841660009081526006602052604090205460ff16155b15610d0757610cec82610f23565b4766b1a2bc2ec50000811115610d0557610d0581610e61565b505b50505b6001600160a01b03831660009081526006602052604090205460019060ff1680610d4c57506001600160a01b03831660009081526006602052604090205460ff165b80610d7e57506014546001600160a01b03858116911614801590610d7e57506014546001600160a01b03848116911614155b15610d8b57506000610e15565b6014546001600160a01b038581169116148015610db657506013546001600160a01b03848116911614155b15610dc857600954600d55600a54600e555b6014546001600160a01b038481169116148015610df357506013546001600160a01b03858116911614155b15610e1557600b54600d5560025415610e0d576064610e11565b600c545b600e555b610e218484848461109d565b50505050565b60008184841115610e4b5760405162461bcd60e51b81526004016105359190611556565b506000610e58848661174e565b95945050505050565b6012546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610e9b573d6000803e3d6000fd5b5050565b6000600754821115610f065760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610535565b6000610f106110cb565b9050610f1c83826110ee565b9392505050565b6014805460ff60a81b1916600160a81b1790556040805160028082526060820183526000926020830190803683370190505090503081600081518110610f6b57610f6b611761565b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610fc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe89190611777565b81600181518110610ffb57610ffb611761565b6001600160a01b039283166020918202929092010152601354611021913091168461082e565b60135460405163791ac94760e01b81526001600160a01b039091169063791ac9479061105a908590600090869030904290600401611794565b600060405180830381600087803b15801561107457600080fd5b505af1158015611088573d6000803e3d6000fd5b50506014805460ff60a81b1916905550505050565b806110aa576110aa611130565b6110b584848461115e565b80610e2157610e21600f54600d55601054600e55565b60008060006110d8611255565b90925090506110e782826110ee565b9250505090565b6000610f1c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611295565b600d541580156111405750600e54155b1561114757565b600d8054600f55600e805460105560009182905555565b600080600080600080611170876112c3565b6001600160a01b038f16600090815260036020526040902054959b509399509197509550935091506111a29087611320565b6001600160a01b03808b1660009081526003602052604080822093909355908a16815220546111d19086611362565b6001600160a01b0389166000908152600360205260409020556111f3816113c1565b6111fd848361140b565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161124291815260200190565b60405180910390a3505050505050505050565b6007546000908190670de0b6b3a764000061127082826110ee565b82101561128c57505060075492670de0b6b3a764000092509050565b90939092509050565b600081836112b65760405162461bcd60e51b81526004016105359190611556565b506000610e588486611719565b60008060008060008060008060006112e08a600d54600e5461142f565b92509250925060006112f06110cb565b905060008060006113038e878787611484565b919e509c509a509598509396509194505050505091939550919395565b6000610f1c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610e27565b60008061136f838561173b565b905083811015610f1c5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610535565b60006113cb6110cb565b905060006113d983836114d4565b306000908152600360205260409020549091506113f69082611362565b30600090815260036020526040902055505050565b6007546114189083611320565b6007556008546114289082611362565b6008555050565b6000808080611449606461144389896114d4565b906110ee565b9050600061145c60646114438a896114d4565b905060006114748261146e8b86611320565b90611320565b9992985090965090945050505050565b600080808061149388866114d4565b905060006114a188876114d4565b905060006114af88886114d4565b905060006114c18261146e8686611320565b939b939a50919850919650505050505050565b6000826000036114e65750600061049c565b60006114f28385611702565b9050826114ff8583611719565b14610f1c5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610535565b600060208083528351808285015260005b8181101561158357858101830151858201604001528201611567565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461066957600080fd5b600080604083850312156115cc57600080fd5b82356115d7816115a4565b946020939093013593505050565b6000806000606084860312156115fa57600080fd5b8335611605816115a4565b92506020840135611615816115a4565b929592945050506040919091013590565b60006020828403121561163857600080fd5b81358015158114610f1c57600080fd5b60006020828403121561165a57600080fd5b8135610f1c816115a4565b60006020828403121561167757600080fd5b5035919050565b6000806040838503121561169157600080fd5b823561169c816115a4565b915060208301356116ac816115a4565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761049c5761049c6116ec565b60008261173657634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561049c5761049c6116ec565b8181038181111561049c5761049c6116ec565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561178957600080fd5b8151610f1c816115a4565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156117e45784516001600160a01b0316835293830193918301916001016117bf565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122073049e14d0e671ee896963c6b661ed5fa9f5b52d28677ac8e5240dc0055b06b264736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101445760003560e01c806370a08231116100b657806395d89b411161006f57806395d89b4114610397578063a9059cbb146103c5578063b70143c9146103e5578063dd62ed3e14610405578063ea1644d51461044b578063f2fde38b1461046b57600080fd5b806370a08231146102f8578063715018a61461031857806374010ece1461032d5780637d1db4a51461034d5780638da5cb5b146103635780638f9a55c01461038157600080fd5b806323b872dd1161010857806323b872dd146102515780632fd689e314610271578063313ce5671461028757806349bd5a5e146102a35780636d8aa8f8146102c35780636fc3eaec146102e357600080fd5b806306fdde0314610150578063095ea7b3146101985780630ed6ae84146101c85780631694505e146101f457806318160ddd1461022c57600080fd5b3661014b57005b600080fd5b34801561015c57600080fd5b5060408051808201909152600d81526c4348495250204e4554574f524b60981b60208201525b60405161018f9190611556565b60405180910390f35b3480156101a457600080fd5b506101b86101b33660046115b9565b61048b565b604051901515815260200161018f565b3480156101d457600080fd5b506101f26014805460ff60a01b1916600160a01b1790556001600255565b005b34801561020057600080fd5b50601354610214906001600160a01b031681565b6040516001600160a01b03909116815260200161018f565b34801561023857600080fd5b50670de0b6b3a76400005b60405190815260200161018f565b34801561025d57600080fd5b506101b861026c3660046115e5565b6104a2565b34801561027d57600080fd5b5061024360175481565b34801561029357600080fd5b506040516009815260200161018f565b3480156102af57600080fd5b50601454610214906001600160a01b031681565b3480156102cf57600080fd5b506101f26102de366004611626565b61050b565b3480156102ef57600080fd5b506101f261055c565b34801561030457600080fd5b50610243610313366004611648565b610567565b34801561032457600080fd5b506101f2610589565b34801561033957600080fd5b506101f2610348366004611665565b6105fd565b34801561035957600080fd5b5061024360155481565b34801561036f57600080fd5b506000546001600160a01b0316610214565b34801561038d57600080fd5b5061024360165481565b3480156103a357600080fd5b50604080518082019091526005815264043484952560dc1b6020820152610182565b3480156103d157600080fd5b506101b86103e03660046115b9565b61066c565b3480156103f157600080fd5b506101f2610400366004611665565b610679565b34801561041157600080fd5b5061024361042036600461167e565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b34801561045757600080fd5b506101f2610466366004611665565b6106d8565b34801561047757600080fd5b506101f2610486366004611648565b610744565b600061049833848461082e565b5060015b92915050565b60006104af848484610952565b61050184336104fc85604051806060016040528060288152602001611806602891396001600160a01b038a1660009081526005602090815260408083203384529091529020549190610e27565b61082e565b5060019392505050565b6000546001600160a01b0316331461053e5760405162461bcd60e51b8152600401610535906116b7565b60405180910390fd5b60148054911515600160b01b0260ff60b01b19909216919091179055565b61056547610e61565b565b6001600160a01b03811660009081526003602052604081205461049c90610e9f565b6000546001600160a01b031633146105b35760405162461bcd60e51b8152600401610535906116b7565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146106275760405162461bcd60e51b8152600401610535906116b7565b606461063b82670de0b6b3a7640000611702565b6106459190611719565b60155561065b6064670de0b6b3a7640000611719565b601554101561066957600080fd5b50565b6000610498338484610952565b6000546001600160a01b031633146106a35760405162461bcd60e51b8152600401610535906116b7565b60006106ae30610567565b9050600060646106be8484611702565b6106c89190611719565b90506106d381610f23565b505050565b6000546001600160a01b031633146107025760405162461bcd60e51b8152600401610535906116b7565b606461071682670de0b6b3a7640000611702565b6107209190611719565b6016556107366064670de0b6b3a7640000611719565b601654101561066957600080fd5b6000546001600160a01b0316331461076e5760405162461bcd60e51b8152600401610535906116b7565b6001600160a01b0381166107d35760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610535565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166108905760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610535565b6001600160a01b0382166108f15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610535565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166109b65760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610535565b6001600160a01b038216610a185760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610535565b60008111610a7a5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610535565b6000546001600160a01b03848116911614801590610aa657506000546001600160a01b03838116911614155b15610d0a57601454600160a01b900460ff16610b3f576000546001600160a01b03848116911614610b3f5760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c6564006064820152608401610535565b601554811115610b915760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000006044820152606401610535565b6014546001600160a01b03838116911614610c165760165481610bb384610567565b610bbd919061173b565b10610c165760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b6064820152608401610535565b6000610c2130610567565b6017549091508082101590610c37906005611702565b8210610c4e57601754610c4b906005611702565b91505b808015610c655750601454600160a81b900460ff16155b8015610c7f57506014546001600160a01b03868116911614155b8015610c945750601454600160b01b900460ff165b8015610cb957506001600160a01b03851660009081526006602052604090205460ff16155b8015610cde57506001600160a01b03841660009081526006602052604090205460ff16155b15610d0757610cec82610f23565b4766b1a2bc2ec50000811115610d0557610d0581610e61565b505b50505b6001600160a01b03831660009081526006602052604090205460019060ff1680610d4c57506001600160a01b03831660009081526006602052604090205460ff165b80610d7e57506014546001600160a01b03858116911614801590610d7e57506014546001600160a01b03848116911614155b15610d8b57506000610e15565b6014546001600160a01b038581169116148015610db657506013546001600160a01b03848116911614155b15610dc857600954600d55600a54600e555b6014546001600160a01b038481169116148015610df357506013546001600160a01b03858116911614155b15610e1557600b54600d5560025415610e0d576064610e11565b600c545b600e555b610e218484848461109d565b50505050565b60008184841115610e4b5760405162461bcd60e51b81526004016105359190611556565b506000610e58848661174e565b95945050505050565b6012546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610e9b573d6000803e3d6000fd5b5050565b6000600754821115610f065760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610535565b6000610f106110cb565b9050610f1c83826110ee565b9392505050565b6014805460ff60a81b1916600160a81b1790556040805160028082526060820183526000926020830190803683370190505090503081600081518110610f6b57610f6b611761565b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610fc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe89190611777565b81600181518110610ffb57610ffb611761565b6001600160a01b039283166020918202929092010152601354611021913091168461082e565b60135460405163791ac94760e01b81526001600160a01b039091169063791ac9479061105a908590600090869030904290600401611794565b600060405180830381600087803b15801561107457600080fd5b505af1158015611088573d6000803e3d6000fd5b50506014805460ff60a81b1916905550505050565b806110aa576110aa611130565b6110b584848461115e565b80610e2157610e21600f54600d55601054600e55565b60008060006110d8611255565b90925090506110e782826110ee565b9250505090565b6000610f1c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611295565b600d541580156111405750600e54155b1561114757565b600d8054600f55600e805460105560009182905555565b600080600080600080611170876112c3565b6001600160a01b038f16600090815260036020526040902054959b509399509197509550935091506111a29087611320565b6001600160a01b03808b1660009081526003602052604080822093909355908a16815220546111d19086611362565b6001600160a01b0389166000908152600360205260409020556111f3816113c1565b6111fd848361140b565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161124291815260200190565b60405180910390a3505050505050505050565b6007546000908190670de0b6b3a764000061127082826110ee565b82101561128c57505060075492670de0b6b3a764000092509050565b90939092509050565b600081836112b65760405162461bcd60e51b81526004016105359190611556565b506000610e588486611719565b60008060008060008060008060006112e08a600d54600e5461142f565b92509250925060006112f06110cb565b905060008060006113038e878787611484565b919e509c509a509598509396509194505050505091939550919395565b6000610f1c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610e27565b60008061136f838561173b565b905083811015610f1c5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610535565b60006113cb6110cb565b905060006113d983836114d4565b306000908152600360205260409020549091506113f69082611362565b30600090815260036020526040902055505050565b6007546114189083611320565b6007556008546114289082611362565b6008555050565b6000808080611449606461144389896114d4565b906110ee565b9050600061145c60646114438a896114d4565b905060006114748261146e8b86611320565b90611320565b9992985090965090945050505050565b600080808061149388866114d4565b905060006114a188876114d4565b905060006114af88886114d4565b905060006114c18261146e8686611320565b939b939a50919850919650505050505050565b6000826000036114e65750600061049c565b60006114f28385611702565b9050826114ff8583611719565b14610f1c5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610535565b600060208083528351808285015260005b8181101561158357858101830151858201604001528201611567565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461066957600080fd5b600080604083850312156115cc57600080fd5b82356115d7816115a4565b946020939093013593505050565b6000806000606084860312156115fa57600080fd5b8335611605816115a4565b92506020840135611615816115a4565b929592945050506040919091013590565b60006020828403121561163857600080fd5b81358015158114610f1c57600080fd5b60006020828403121561165a57600080fd5b8135610f1c816115a4565b60006020828403121561167757600080fd5b5035919050565b6000806040838503121561169157600080fd5b823561169c816115a4565b915060208301356116ac816115a4565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761049c5761049c6116ec565b60008261173657634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561049c5761049c6116ec565b8181038181111561049c5761049c6116ec565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561178957600080fd5b8151610f1c816115a4565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156117e45784516001600160a01b0316835293830193918301916001016117bf565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122073049e14d0e671ee896963c6b661ed5fa9f5b52d28677ac8e5240dc0055b06b264736f6c63430008130033

Deployed Bytecode Sourcemap

4195:12249:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6586:83;;;;;;;;;;-1:-1:-1;6656:5:0;;;;;;;;;;;;-1:-1:-1;;;6656:5:0;;;;6586:83;;;;;;;:::i;:::-;;;;;;;;7511:193;;;;;;;;;;-1:-1:-1;7511:193:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;7511:193:0;1023:187:1;14520:101:0;;;;;;;;;;;;14571:11;:18;;-1:-1:-1;;;;14571:18:0;-1:-1:-1;;;14571:18:0;;;14585:4;14600:9;:13;14520:101;;;5494:41;;;;;;;;;;-1:-1:-1;5494:41:0;;;;-1:-1:-1;;;;;5494:41:0;;;;;;-1:-1:-1;;;;;1405:32:1;;;1387:51;;1375:2;1360:18;5494:41:0;1215:229:1;6863:95:0;;;;;;;;;;-1:-1:-1;4788:18:0;6863:95;;;1595:25:1;;;1583:2;1568:18;6863:95:0;1449:177:1;7712:446:0;;;;;;;;;;-1:-1:-1;7712:446:0;;;;;:::i;:::-;;:::i;5789:54::-;;;;;;;;;;;;;;;;6772:83;;;;;;;;;;-1:-1:-1;6772:83:0;;4426:1;2234:36:1;;2222:2;2207:18;6772:83:0;2092:184:1;5542:28:0;;;;;;;;;;-1:-1:-1;5542:28:0;;;;-1:-1:-1;;;;;5542:28:0;;;12467:103;;;;;;;;;;-1:-1:-1;12467:103:0;;;;;:::i;:::-;;:::i;12134:85::-;;;;;;;;;;;;;:::i;6966:138::-;;;;;;;;;;-1:-1:-1;6966:138:0;;;;;:::i;:::-;;:::i;1682:148::-;;;;;;;;;;;;;:::i;16085:168::-;;;;;;;;;;-1:-1:-1;16085:168:0;;;;;:::i;:::-;;:::i;5691:45::-;;;;;;;;;;;;;;;;1468:79;;;;;;;;;;-1:-1:-1;1506:7:0;1533:6;-1:-1:-1;;;;;1533:6:0;1468:79;;5743:39;;;;;;;;;;;;;;;;6677:87;;;;;;;;;;-1:-1:-1;6749:7:0;;;;;;;;;;;;-1:-1:-1;;;6749:7:0;;;;6677:87;;7112:199;;;;;;;;;;-1:-1:-1;7112:199:0;;;;;:::i;:::-;;:::i;12227:232::-;;;;;;;;;;-1:-1:-1;12227:232:0;;;;;:::i;:::-;;:::i;7319:184::-;;;;;;;;;;-1:-1:-1;7319:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;7468:18:0;;;7436:7;7468:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7319:184;16261:178;;;;;;;;;;-1:-1:-1;16261:178:0;;;;;:::i;:::-;;:::i;1838:244::-;;;;;;;;;;-1:-1:-1;1838:244:0;;;;;:::i;:::-;;:::i;7511:193::-;7613:4;7635:39;307:10;7658:7;7667:6;7635:8;:39::i;:::-;-1:-1:-1;7692:4:0;7511:193;;;;;:::o;7712:446::-;7844:4;7861:36;7871:6;7879:9;7890:6;7861:9;:36::i;:::-;7908:220;7931:6;307:10;7979:138;8035:6;7979:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7979:19:0;;;;;;:11;:19;;;;;;;;307:10;7979:33;;;;;;;;;;:37;:138::i;:::-;7908:8;:220::i;:::-;-1:-1:-1;8146:4:0;7712:446;;;;;:::o;12467:103::-;1595:6;;-1:-1:-1;;;;;1595:6:0;307:10;1595:22;1587:67;;;;-1:-1:-1;;;1587:67:0;;;;;;;:::i;:::-;;;;;;;;;12536:11:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;12536:26:0::1;-1:-1:-1::0;;;;12536:26:0;;::::1;::::0;;;::::1;::::0;;12467:103::o;12134:85::-;12176:35;12189:21;12176:12;:35::i;:::-;12134:85::o;6966:138::-;-1:-1:-1;;;;;7079:16:0;;7032:7;7079:16;;;:7;:16;;;;;;7059:37;;:19;:37::i;1682:148::-;1595:6;;-1:-1:-1;;;;;1595:6:0;307:10;1595:22;1587:67;;;;-1:-1:-1;;;1587:67:0;;;;;;;:::i;:::-;1789:1:::1;1773:6:::0;;1752:40:::1;::::0;-1:-1:-1;;;;;1773:6:0;;::::1;::::0;1752:40:::1;::::0;1789:1;;1752:40:::1;1820:1;1803:19:::0;;-1:-1:-1;;;;;;1803:19:0::1;::::0;;1682:148::o;16085:168::-;1595:6;;-1:-1:-1;;;;;1595:6:0;307:10;1595:22;1587:67;;;;-1:-1:-1;;;1587:67:0;;;;;;;:::i;:::-;16194:3:::1;16174:19;16182:11:::0;4788:18:::1;16174:19;:::i;:::-;:23;;;;:::i;:::-;16159:12;:38:::0;16233:11:::1;16241:3;4788:18;16233:11;:::i;:::-;16217:12;;:27;;16208:37;;;::::0;::::1;;16085:168:::0;:::o;7112:199::-;7217:4;7239:42;307:10;7263:9;7274:6;7239:9;:42::i;12227:232::-;1595:6;;-1:-1:-1;;;;;1595:6:0;307:10;1595:22;1587:67;;;;-1:-1:-1;;;1587:67:0;;;;;;;:::i;:::-;12293:28:::1;12324:24;12342:4;12324:9;:24::i;:::-;12293:55:::0;-1:-1:-1;12359:18:0::1;12409:3;12380:28;12401:7:::0;12293:55;12380:28:::1;:::i;:::-;:32;;;;:::i;:::-;12359:53;;12423:28;12440:10;12423:16;:28::i;:::-;12282:177;;12227:232:::0;:::o;16261:178::-;1595:6;;-1:-1:-1;;;;;1595:6:0;307:10;1595:22;1587:67;;;;-1:-1:-1;;;1587:67:0;;;;;;;:::i;:::-;16377:3:::1;16355:21;16363:13:::0;4788:18:::1;16355:21;:::i;:::-;:25;;;;:::i;:::-;16338:14;:42:::0;16419:11:::1;16427:3;4788:18;16419:11;:::i;:::-;16401:14;;:29;;16392:39;;;::::0;::::1;1838:244:::0;1595:6;;-1:-1:-1;;;;;1595:6:0;307:10;1595:22;1587:67;;;;-1:-1:-1;;;1587:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1927:22:0;::::1;1919:73;;;::::0;-1:-1:-1;;;1919:73:0;;4687:2:1;1919:73:0::1;::::0;::::1;4669:21:1::0;4726:2;4706:18;;;4699:30;4765:34;4745:18;;;4738:62;-1:-1:-1;;;4816:18:1;;;4809:36;4862:19;;1919:73:0::1;4485:402:1::0;1919:73:0::1;2029:6;::::0;;2008:38:::1;::::0;-1:-1:-1;;;;;2008:38:0;;::::1;::::0;2029:6;::::1;::::0;2008:38:::1;::::0;::::1;2057:6;:17:::0;;-1:-1:-1;;;;;;2057:17:0::1;-1:-1:-1::0;;;;;2057:17:0;;;::::1;::::0;;;::::1;::::0;;1838:244::o;8849:369::-;-1:-1:-1;;;;;8976:19:0;;8968:68;;;;-1:-1:-1;;;8968:68:0;;5094:2:1;8968:68:0;;;5076:21:1;5133:2;5113:18;;;5106:30;5172:34;5152:18;;;5145:62;-1:-1:-1;;;5223:18:1;;;5216:34;5267:19;;8968:68:0;4892:400:1;8968:68:0;-1:-1:-1;;;;;9055:21:0;;9047:68;;;;-1:-1:-1;;;9047:68:0;;5499:2:1;9047:68:0;;;5481:21:1;5538:2;5518:18;;;5511:30;5577:34;5557:18;;;5550:62;-1:-1:-1;;;5628:18:1;;;5621:32;5670:19;;9047:68:0;5297:398:1;9047:68:0;-1:-1:-1;;;;;9126:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9178:32;;1595:25:1;;;9178:32:0;;1568:18:1;9178:32:0;;;;;;;8849:369;;;:::o;9226:2296::-;-1:-1:-1;;;;;9348:18:0;;9340:68;;;;-1:-1:-1;;;9340:68:0;;5902:2:1;9340:68:0;;;5884:21:1;5941:2;5921:18;;;5914:30;5980:34;5960:18;;;5953:62;-1:-1:-1;;;6031:18:1;;;6024:35;6076:19;;9340:68:0;5700:401:1;9340:68:0;-1:-1:-1;;;;;9427:16:0;;9419:64;;;;-1:-1:-1;;;9419:64:0;;6308:2:1;9419:64:0;;;6290:21:1;6347:2;6327:18;;;6320:30;6386:34;6366:18;;;6359:62;-1:-1:-1;;;6437:18:1;;;6430:33;6480:19;;9419:64:0;6106:399:1;9419:64:0;9511:1;9502:6;:10;9494:64;;;;-1:-1:-1;;;9494:64:0;;6712:2:1;9494:64:0;;;6694:21:1;6751:2;6731:18;;;6724:30;6790:34;6770:18;;;6763:62;-1:-1:-1;;;6841:18:1;;;6834:39;6890:19;;9494:64:0;6510:405:1;9494:64:0;1506:7;1533:6;-1:-1:-1;;;;;9575:15:0;;;1533:6;;9575:15;;;;:32;;-1:-1:-1;1506:7:0;1533:6;-1:-1:-1;;;;;9594:13:0;;;1533:6;;9594:13;;9575:32;9571:1203;;;9664:11;;-1:-1:-1;;;9664:11:0;;;;9659:144;;1506:7;1533:6;-1:-1:-1;;;;;9704:15:0;;;1533:6;;9704:15;9696:91;;;;-1:-1:-1;;;9696:91:0;;7122:2:1;9696:91:0;;;7104:21:1;7161:2;7141:18;;;7134:30;7200:34;7180:18;;;7173:62;7271:33;7251:18;;;7244:61;7322:19;;9696:91:0;6920:427:1;9696:91:0;9837:12;;9827:6;:22;;9819:63;;;;-1:-1:-1;;;9819:63:0;;7554:2:1;9819:63:0;;;7536:21:1;7593:2;7573:18;;;7566:30;7632;7612:18;;;7605:58;7680:18;;9819:63:0;7352:352:1;9819:63:0;9908:13;;-1:-1:-1;;;;;9902:19:0;;;9908:13;;9902:19;9899:146;;9975:14;;9966:6;9950:13;9960:2;9950:9;:13::i;:::-;:22;;;;:::i;:::-;:39;9942:87;;;;-1:-1:-1;;;9942:87:0;;8041:2:1;9942:87:0;;;8023:21:1;8080:2;8060:18;;;8053:30;8119:34;8099:18;;;8092:62;-1:-1:-1;;;8170:18:1;;;8163:33;8213:19;;9942:87:0;7839:399:1;9942:87:0;10061:28;10092:24;10110:4;10092:9;:24::i;:::-;10170:19;;10061:55;;-1:-1:-1;10146:43:0;;;;;10233:21;;10253:1;10233:21;:::i;:::-;10209:20;:45;10206:142;;10311:19;;:21;;10331:1;10311:21;:::i;:::-;10288:44;;10206:142;10368:7;:18;;;;-1:-1:-1;10380:6:0;;-1:-1:-1;;;10380:6:0;;;;10379:7;10368:18;:43;;;;-1:-1:-1;10398:13:0;;-1:-1:-1;;;;;10390:21:0;;;10398:13;;10390:21;;10368:43;:58;;;;-1:-1:-1;10415:11:0;;-1:-1:-1;;;10415:11:0;;;;10368:58;:87;;;;-1:-1:-1;;;;;;10431:24:0;;;;;;:18;:24;;;;;;;;10430:25;10368:87;:114;;;;-1:-1:-1;;;;;;10460:22:0;;;;;;:18;:22;;;;;;;;10459:23;10368:114;10364:399;;;10503:38;10520:20;10503:16;:38::i;:::-;10589:21;10654:17;10633:38;;10629:119;;;10696:32;10709:18;10696:12;:32::i;:::-;10484:279;10364:399;9609:1165;;9571:1203;-1:-1:-1;;;;;10850:24:0;;10786:12;10850:24;;;:18;:24;;;;;;10801:4;;10850:24;;;:50;;-1:-1:-1;;;;;;10878:22:0;;;;;;:18;:22;;;;;;;;10850:50;10849:102;;;-1:-1:-1;10914:13:0;;-1:-1:-1;;;;;10906:21:0;;;10914:13;;10906:21;;;;:44;;-1:-1:-1;10937:13:0;;-1:-1:-1;;;;;10931:19:0;;;10937:13;;10931:19;;10906:44;10845:616;;;-1:-1:-1;10978:5:0;10845:616;;;11061:13;;-1:-1:-1;;;;;11053:21:0;;;11061:13;;11053:21;:55;;;;-1:-1:-1;11092:15:0;;-1:-1:-1;;;;;11078:30:0;;;11092:15;;11078:30;;11053:55;11050:162;;;11141:14;;11129:9;:26;11184:12;;11174:7;:22;11050:162;11271:13;;-1:-1:-1;;;;;11265:19:0;;;11271:13;;11265:19;:55;;;;-1:-1:-1;11304:15:0;;-1:-1:-1;;;;;11288:32:0;;;11304:15;;11288:32;;11265:55;11261:189;;;11354:15;;11342:9;:27;11398:9;;:14;:36;;11431:3;11398:36;;;11415:13;;11398:36;11388:7;:46;11261:189;11473:41;11488:4;11494:2;11498:6;11506:7;11473:14;:41::i;:::-;9329:2193;9226:2296;;;:::o;2446:224::-;2566:7;2602:12;2594:6;;;;2586:29;;;;-1:-1:-1;;;2586:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2626:9:0;2638:5;2642:1;2638;:5;:::i;:::-;2626:17;2446:224;-1:-1:-1;;;;;2446:224:0:o;12027:99::-;12084:17;;:34;;-1:-1:-1;;;;;12084:17:0;;;;:34;;;;;12111:6;;12084:17;:34;:17;:34;12111:6;12084:17;:34;;;;;;;;;;;;;;;;;;;;;12027:99;:::o;8166:323::-;8261:7;8319;;8308;:18;;8286:110;;;;-1:-1:-1;;;8286:110:0;;8578:2:1;8286:110:0;;;8560:21:1;8617:2;8597:18;;;8590:30;8656:34;8636:18;;;8629:62;-1:-1:-1;;;8707:18:1;;;8700:40;8757:19;;8286:110:0;8376:406:1;8286:110:0;8407:19;8429:10;:8;:10::i;:::-;8407:32;-1:-1:-1;8457:24:0;:7;8407:32;8457:11;:24::i;:::-;8450:31;8166:323;-1:-1:-1;;;8166:323:0:o;11536:483::-;5937:6;:13;;-1:-1:-1;;;;5937:13:0;-1:-1:-1;;;5937:13:0;;;11638:16:::1;::::0;;11652:1:::1;11638:16:::0;;;;;::::1;::::0;;-1:-1:-1;;11638:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;11638:16:0::1;11614:40;;11683:4;11665;11670:1;11665:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11665:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;11709:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;11709:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;11665:7;;11709:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11699:4;11704:1;11699:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11699:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;11774:15:::1;::::0;11742:62:::1;::::0;11759:4:::1;::::0;11774:15:::1;11792:11:::0;11742:8:::1;:62::i;:::-;11815:15;::::0;:196:::1;::::0;-1:-1:-1;;;11815:196:0;;-1:-1:-1;;;;;11815:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;11896:11;;11815:15:::1;::::0;11938:4;;11965::::1;::::0;11985:15:::1;::::0;11815:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5973:6:0;:14;;-1:-1:-1;;;;5973:14:0;;;-1:-1:-1;;;;11536:483:0:o;12578:282::-;12734:7;12729:28;;12743:14;:12;:14::i;:::-;12768:44;12786:6;12794:9;12805:6;12768:17;:44::i;:::-;12828:7;12823:29;;12837:15;8780:17;;8768:9;:29;8818:15;;8808:7;:25;8724:117;15648:164;15690:7;15711:15;15728;15747:19;:17;:19::i;:::-;15710:56;;-1:-1:-1;15710:56:0;-1:-1:-1;15784:20:0;15710:56;;15784:11;:20::i;:::-;15777:27;;;;15648:164;:::o;2932:132::-;2990:7;3017:39;3021:1;3024;3017:39;;;;;;;;;;;;;;;;;:3;:39::i;8497:219::-;8544:9;;:14;:30;;;;-1:-1:-1;8562:7:0;;:12;8544:30;8540:43;;;8497:219::o;8540:43::-;8615:9;;;8595:17;:29;8653:7;;;8635:15;:25;-1:-1:-1;8673:13:0;;;;8697:11;8497:219::o;12868:610::-;13015:15;13045:23;13083:12;13110:23;13148:12;13175:13;13202:19;13213:7;13202:10;:19::i;:::-;-1:-1:-1;;;;;13250:15:0;;;;;;:7;:15;;;;;;13000:221;;-1:-1:-1;13000:221:0;;-1:-1:-1;13000:221:0;;-1:-1:-1;13000:221:0;-1:-1:-1;13000:221:0;-1:-1:-1;13000:221:0;-1:-1:-1;13250:28:0;;13000:221;13250:19;:28::i;:::-;-1:-1:-1;;;;;13232:15:0;;;;;;;:7;:15;;;;;;:46;;;;13310:18;;;;;;;:39;;13333:15;13310:22;:39::i;:::-;-1:-1:-1;;;;;13289:18:0;;;;;;:7;:18;;;;;:60;13360:16;13370:5;13360:9;:16::i;:::-;13387:23;13399:4;13405;13387:11;:23::i;:::-;13443:9;-1:-1:-1;;;;;13426:44:0;13435:6;-1:-1:-1;;;;;13426:44:0;;13454:15;13426:44;;;;1595:25:1;;1583:2;1568:18;;1449:177;13426:44:0;;;;;;;;12989:489;;;;;;12868:610;;;:::o;15820:257::-;15918:7;;15871;;;;4788:18;15986:20;15918:7;4788:18;15986:11;:20::i;:::-;15976:7;:30;15972:61;;;-1:-1:-1;;16016:7:0;;;4788:18;;-1:-1:-1;15820:257:0;-1:-1:-1;15820:257:0:o;15972:61::-;16052:7;;16061;;-1:-1:-1;15820:257:0;-1:-1:-1;15820:257:0:o;3072:223::-;3192:7;3227:12;3220:5;3212:28;;;;-1:-1:-1;;;3212:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3251:9:0;3263:5;3267:1;3263;:5;:::i;13897:615::-;13997:7;14019;14041;14063;14085;14107;14143:23;14168:12;14182:13;14212:40;14224:7;14233:9;;14244:7;;14212:11;:40::i;:::-;14142:110;;;;;;14263:19;14285:10;:8;:10::i;:::-;14263:32;;14307:15;14324:23;14349:12;14378:46;14390:7;14399:4;14405:5;14412:11;14378;:46::i;:::-;14306:118;;-1:-1:-1;14306:118:0;-1:-1:-1;14306:118:0;-1:-1:-1;14475:15:0;;-1:-1:-1;14492:4:0;;-1:-1:-1;14498:5:0;;-1:-1:-1;;;;;13897:615:0;;;;;;;:::o;2302:136::-;2360:7;2387:43;2391:1;2394;2387:43;;;;;;;;;;;;;;;;;:3;:43::i;2115:179::-;2173:7;;2205:5;2209:1;2205;:5;:::i;:::-;2193:17;;2234:1;2229;:6;;2221:46;;;;-1:-1:-1;;;2221:46:0;;10494:2:1;2221:46:0;;;10476:21:1;10533:2;10513:18;;;10506:30;10572:29;10552:18;;;10545:57;10619:18;;2221:46:0;10292:351:1;13486:211:0;13539:19;13561:10;:8;:10::i;:::-;13539:32;-1:-1:-1;13582:13:0;13598:22;:5;13539:32;13598:9;:22::i;:::-;13672:4;13656:22;;;;:7;:22;;;;;;13582:38;;-1:-1:-1;13656:33:0;;13582:38;13656:26;:33::i;:::-;13647:4;13631:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;13486:211:0:o;13705:147::-;13783:7;;:17;;13795:4;13783:11;:17::i;:::-;13773:7;:27;13824:10;;:20;;13839:4;13824:14;:20::i;:::-;13811:10;:33;-1:-1:-1;;13705:147:0:o;14629:469::-;14798:7;;;;14892:30;14918:3;14892:21;:7;14904:8;14892:11;:21::i;:::-;:25;;:30::i;:::-;14877:45;-1:-1:-1;14933:13:0;14949:28;14973:3;14949:19;:7;14961:6;14949:11;:19::i;:28::-;14933:44;-1:-1:-1;14988:23:0;15014:28;14933:44;15014:17;:7;15026:4;15014:11;:17::i;:::-;:21;;:28::i;:::-;14988:54;15078:4;;-1:-1:-1;15084:5:0;;-1:-1:-1;14629:469:0;;-1:-1:-1;;;;;14629:469:0:o;15106:534::-;15300:7;;;;15397:24;:7;15409:11;15397;:24::i;:::-;15379:42;-1:-1:-1;15432:12:0;15447:21;:4;15456:11;15447:8;:21::i;:::-;15432:36;-1:-1:-1;15479:13:0;15495:22;:5;15505:11;15495:9;:22::i;:::-;15479:38;-1:-1:-1;15528:23:0;15554:28;15479:38;15554:17;:7;15566:4;15554:11;:17::i;:28::-;15601:7;;;;-1:-1:-1;15627:4:0;;-1:-1:-1;15106:534:0;;-1:-1:-1;;;;;;;15106:534:0:o;2678:246::-;2736:7;2760:1;2765;2760:6;2756:47;;-1:-1:-1;2790:1:0;2783:8;;2756:47;2813:9;2825:5;2829:1;2825;:5;:::i;:::-;2813:17;-1:-1:-1;2858:1:0;2849:5;2853:1;2813:17;2849:5;:::i;:::-;:10;2841:56;;;;-1:-1:-1;;;2841:56:0;;10850:2:1;2841:56:0;;;10832:21:1;10889:2;10869:18;;;10862:30;10928:34;10908:18;;;10901:62;-1:-1:-1;;;10979:18:1;;;10972:31;11020:19;;2841:56:0;10648: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:273::-;2545:6;2598:2;2586:9;2577:7;2573:23;2569:32;2566:52;;;2614:1;2611;2604:12;2566:52;2653:9;2640:23;2706:5;2699:13;2692:21;2685:5;2682:32;2672:60;;2728:1;2725;2718:12;2767:247;2826:6;2879:2;2867:9;2858:7;2854:23;2850:32;2847:52;;;2895:1;2892;2885:12;2847:52;2934:9;2921:23;2953:31;2978:5;2953:31;:::i;3019:180::-;3078:6;3131:2;3119:9;3110:7;3106:23;3102:32;3099:52;;;3147:1;3144;3137:12;3099:52;-1:-1:-1;3170:23:1;;3019:180;-1:-1:-1;3019:180:1:o;3204:388::-;3272:6;3280;3333:2;3321:9;3312:7;3308:23;3304:32;3301:52;;;3349:1;3346;3339:12;3301:52;3388:9;3375:23;3407:31;3432:5;3407:31;:::i;:::-;3457:5;-1:-1:-1;3514:2:1;3499:18;;3486:32;3527:33;3486:32;3527:33;:::i;:::-;3579:7;3569:17;;;3204:388;;;;;:::o;3597:356::-;3799:2;3781:21;;;3818:18;;;3811:30;3877:34;3872:2;3857:18;;3850:62;3944:2;3929:18;;3597:356::o;3958:127::-;4019:10;4014:3;4010:20;4007:1;4000:31;4050:4;4047:1;4040:15;4074:4;4071:1;4064:15;4090:168;4163:9;;;4194;;4211:15;;;4205:22;;4191:37;4181:71;;4232:18;;:::i;4263:217::-;4303:1;4329;4319:132;;4373:10;4368:3;4364:20;4361:1;4354:31;4408:4;4405:1;4398:15;4436:4;4433:1;4426:15;4319:132;-1:-1:-1;4465:9:1;;4263:217::o;7709:125::-;7774:9;;;7795:10;;;7792:36;;;7808:18;;:::i;8243:128::-;8310:9;;;8331:11;;;8328:37;;;8345:18;;:::i;8919:127::-;8980:10;8975:3;8971:20;8968:1;8961:31;9011:4;9008:1;9001:15;9035:4;9032:1;9025:15;9051:251;9121:6;9174:2;9162:9;9153:7;9149:23;9145:32;9142:52;;;9190:1;9187;9180:12;9142:52;9222:9;9216:16;9241:31;9266:5;9241:31;:::i;9307:980::-;9569:4;9617:3;9606:9;9602:19;9648:6;9637:9;9630:25;9674:2;9712:6;9707:2;9696:9;9692:18;9685:34;9755:3;9750:2;9739:9;9735:18;9728:31;9779:6;9814;9808:13;9845:6;9837;9830:22;9883:3;9872:9;9868:19;9861:26;;9922:2;9914:6;9910:15;9896:29;;9943:1;9953:195;9967:6;9964:1;9961:13;9953:195;;;10032:13;;-1:-1:-1;;;;;10028:39:1;10016:52;;10123:15;;;;10088:12;;;;10064:1;9982:9;9953:195;;;-1:-1:-1;;;;;;;10204:32:1;;;;10199:2;10184:18;;10177:60;-1:-1:-1;;;10268:3:1;10253:19;10246:35;10165:3;9307:980;-1:-1:-1;;;9307:980:1:o

Swarm Source

ipfs://73049e14d0e671ee896963c6b661ed5fa9f5b52d28677ac8e5240dc0055b06b2
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.