ETH Price: $2,629.24 (+6.53%)

Token

Shingeki (SHINGEKI)
 

Overview

Max Total Supply

100,000,000,000 SHINGEKI

Holders

20

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
1,520,640,000 SHINGEKI

Value
$0.00
0x492A049E3d6368d678309251d68385A02e49382C
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:
Shingeki

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: Unlicensed

/**

Tax: 4%



TG : https://t.me/ShingekiEth

*/


pragma solidity ^0.8.7;
 
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;
    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 Shingeki is Context, IERC20, Ownable {
 
    using SafeMath for uint256;
 
    string private constant _name = "Shingeki";//
    string private constant _symbol = "SHINGEKI";//
    uint8 private constant _decimals = 9;
 
    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 = 100000000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
 
    //Buy Fee
    uint256 private _redisFeeOnBuy = 0;//
    uint256 private _taxFeeOnBuy = 4;//
 
    //Sell Fee
    uint256 private _redisFeeOnSell = 0;//
    uint256 private _taxFeeOnSell = 4;//
 
    //Original Fee
    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(0xB35f1F39368118B15C60B872d524152b7A4CC310);
    address payable private _marketingAddress = payable(0xB35f1F39368118B15C60B872d524152b7A4CC310);
 
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
 
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = true;
 
    uint256 public _maxTxAmount = 800000000 * 10**9; //
    uint256 public _maxWalletSize = 2000000000 * 10**9; //
    uint256 public _swapTokensAtAmount = 1000000000 * 10**9; //
 
    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
 
    constructor() {
 
        _rOwned[_msgSender()] = _rTotal;
 
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);//
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
 
        _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 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");

            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;
 
        //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 = _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 setTrading(bool _tradingOpen) public onlyOwner {
        tradingOpen = _tradingOpen;
    }
 
    function manualswap() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }
 
    function manualsend() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }
 
 
 
    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }
 
    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
 
    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }
 
    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }
 
    receive() external payable {}
 
    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _redisFee, _taxFee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
 
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }
 
    function _getTValues(
        uint256 tAmount,
        uint256 redisFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(redisFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
 
        return (tTransferAmount, tFee, tTeam);
    }
 
    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
 
        return (rAmount, rTransferAmount, rFee);
    }
 
    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
 
        return rSupply.div(tSupply);
    }
 
    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
 
        return (rSupply, tSupply);
    }
 
 
 
    //Set minimum tokens required to swap.
    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }
 
    //Set minimum tokens required to swap.
    function toggleSwap(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }
 
 
    //Can Increase Max Limits after renounce . Cannot Lower
    function increaseLimits(uint256 maxTxAmount_, uint256 maxWalletSize_) public {
        require(_msgSender() == _developmentAddress);
        require(maxTxAmount_ > _maxTxAmount && maxTxAmount_ <= totalSupply(), "Out of range");
        require(maxWalletSize_ > _maxWalletSize && maxWalletSize_ <= totalSupply(), "Out of range");

        _maxTxAmount = maxTxAmount_;
        _maxWalletSize = maxWalletSize_;
    }
 
    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
        }
    }
}

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":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount_","type":"uint256"},{"internalType":"uint256","name":"maxWalletSize_","type":"uint256"}],"name":"increaseLimits","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":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTrading","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"}]

60806040526200001b68056bc75e2d631000006000196200039e565b6200002990600019620003c1565b60055560006007819055600460088190556009829055600a819055600b829055600c819055600d91909155600e55601180546001600160a01b031990811673b35f1f39368118b15c60b872d524152b7a4cc3109081179092556012805490911690911790556014805461ffff60a81b1916600160b01b179055670b1a2bc2ec500000601555671bc16d674ec80000601655670de0b6b3a7640000601755348015620000d357600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506005543360009081526001602090815260409182902092909255601380546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155815163c45a015560e01b815291519092839263c45a01559260048083019392829003018186803b1580156200018c57600080fd5b505afa158015620001a1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c79190620003e7565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200021057600080fd5b505afa15801562000225573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200024b9190620003e7565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200029457600080fd5b505af1158015620002a9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002cf9190620003e7565b601480546001600160a01b0319166001600160a01b03928316179055600080548216815260046020526040808220805460ff1990811660019081179092553084528284208054821683179055601154851684528284208054821683179055601254909416835291208054909216179055336001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef68056bc75e2d631000006040516200038f91815260200190565b60405180910390a35062000419565b600082620003bc57634e487b7160e01b600052601260045260246000fd5b500690565b600082821015620003e257634e487b7160e01b600052601160045260246000fd5b500390565b600060208284031215620003fa57600080fd5b81516001600160a01b03811681146200041257600080fd5b9392505050565b611bb280620004296000396000f3fe60806040526004361061016a5760003560e01c806378f8484b116100d157806398a5c3151161008a578063c3c8cd8011610064578063c3c8cd8014610450578063c492f04614610465578063dd62ed3e14610485578063f2fde38b146104cb57600080fd5b806398a5c315146103e0578063a9059cbb14610400578063bfd792841461042057600080fd5b806378f8484b146103255780637d1db4a5146103455780638da5cb5b1461035b5780638f70ccf7146103795780638f9a55c01461039957806395d89b41146103af57600080fd5b8063313ce56711610123578063313ce5671461027d57806349bd5a5e146102995780636d8aa8f8146102b95780636fc3eaec146102db57806370a08231146102f0578063715018a61461031057600080fd5b806306fdde0314610176578063095ea7b3146101b95780631694505e146101e957806318160ddd1461022157806323b872dd146102475780632fd689e31461026757600080fd5b3661017157005b600080fd5b34801561018257600080fd5b506040805180820190915260088152675368696e67656b6960c01b60208201525b6040516101b091906117be565b60405180910390f35b3480156101c557600080fd5b506101d96101d4366004611828565b6104eb565b60405190151581526020016101b0565b3480156101f557600080fd5b50601354610209906001600160a01b031681565b6040516001600160a01b0390911681526020016101b0565b34801561022d57600080fd5b5068056bc75e2d631000005b6040519081526020016101b0565b34801561025357600080fd5b506101d9610262366004611854565b610502565b34801561027357600080fd5b5061023960175481565b34801561028957600080fd5b50604051600981526020016101b0565b3480156102a557600080fd5b50601454610209906001600160a01b031681565b3480156102c557600080fd5b506102d96102d43660046118aa565b61056b565b005b3480156102e757600080fd5b506102d96105bc565b3480156102fc57600080fd5b5061023961030b3660046118c5565b610607565b34801561031c57600080fd5b506102d9610629565b34801561033157600080fd5b506102d96103403660046118e2565b61069d565b34801561035157600080fd5b5061023960155481565b34801561036757600080fd5b506000546001600160a01b0316610209565b34801561038557600080fd5b506102d96103943660046118aa565b610772565b3480156103a557600080fd5b5061023960165481565b3480156103bb57600080fd5b506040805180820190915260088152675348494e47454b4960c01b60208201526101a3565b3480156103ec57600080fd5b506102d96103fb366004611904565b6107ba565b34801561040c57600080fd5b506101d961041b366004611828565b6107e9565b34801561042c57600080fd5b506101d961043b3660046118c5565b600f6020526000908152604090205460ff1681565b34801561045c57600080fd5b506102d96107f6565b34801561047157600080fd5b506102d961048036600461191d565b61084a565b34801561049157600080fd5b506102396104a03660046119a1565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156104d757600080fd5b506102d96104e63660046118c5565b6108eb565b60006104f83384846109d5565b5060015b92915050565b600061050f848484610af9565b610561843361055c85604051806060016040528060288152602001611b55602891396001600160a01b038a1660009081526003602090815260408083203384529091529020549190611036565b6109d5565b5060019392505050565b6000546001600160a01b0316331461059e5760405162461bcd60e51b8152600401610595906119da565b60405180910390fd5b60148054911515600160b01b0260ff60b01b19909216919091179055565b6011546001600160a01b0316336001600160a01b031614806105f157506012546001600160a01b0316336001600160a01b0316145b6105fa57600080fd5b4761060481611070565b50565b6001600160a01b0381166000908152600160205260408120546104fc906110f9565b6000546001600160a01b031633146106535760405162461bcd60e51b8152600401610595906119da565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6011546001600160a01b0316336001600160a01b0316146106bd57600080fd5b601554821180156106d7575068056bc75e2d631000008211155b6107125760405162461bcd60e51b815260206004820152600c60248201526b4f7574206f662072616e676560a01b6044820152606401610595565b6016548111801561072c575068056bc75e2d631000008111155b6107675760405162461bcd60e51b815260206004820152600c60248201526b4f7574206f662072616e676560a01b6044820152606401610595565b601591909155601655565b6000546001600160a01b0316331461079c5760405162461bcd60e51b8152600401610595906119da565b60148054911515600160a01b0260ff60a01b19909216919091179055565b6000546001600160a01b031633146107e45760405162461bcd60e51b8152600401610595906119da565b601755565b60006104f8338484610af9565b6011546001600160a01b0316336001600160a01b0316148061082b57506012546001600160a01b0316336001600160a01b0316145b61083457600080fd5b600061083f30610607565b90506106048161117d565b6000546001600160a01b031633146108745760405162461bcd60e51b8152600401610595906119da565b60005b828110156108e557816004600086868581811061089657610896611a0f565b90506020020160208101906108ab91906118c5565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806108dd81611a3b565b915050610877565b50505050565b6000546001600160a01b031633146109155760405162461bcd60e51b8152600401610595906119da565b6001600160a01b03811661097a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610595565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610a375760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610595565b6001600160a01b038216610a985760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610595565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610b5d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610595565b6001600160a01b038216610bbf5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610595565b60008111610c215760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610595565b6000546001600160a01b03848116911614801590610c4d57506000546001600160a01b03838116911614155b15610f2f57601454600160a01b900460ff16610ce6576000546001600160a01b03848116911614610ce65760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c6564006064820152608401610595565b601554811115610d385760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000006044820152606401610595565b6001600160a01b0383166000908152600f602052604090205460ff16158015610d7a57506001600160a01b0382166000908152600f602052604090205460ff16155b610dd25760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460448201526265642160e81b6064820152608401610595565b6014546001600160a01b03838116911614610e585760165481610df484610607565b610dfe9190611a56565b1115610e585760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b6064820152608401610595565b6000610e6330610607565b601754601554919250821015908210610e7c5760155491505b808015610e935750601454600160a81b900460ff16155b8015610ead57506014546001600160a01b03868116911614155b8015610ec25750601454600160b01b900460ff165b8015610ee757506001600160a01b03851660009081526004602052604090205460ff16155b8015610f0c57506001600160a01b03841660009081526004602052604090205460ff16155b15610f2c57610f1a8261117d565b478015610f2a57610f2a47611070565b505b50505b6001600160a01b03831660009081526004602052604090205460019060ff1680610f7157506001600160a01b03831660009081526004602052604090205460ff165b80610fa357506014546001600160a01b03858116911614801590610fa357506014546001600160a01b03848116911614155b15610fb05750600061102a565b6014546001600160a01b038581169116148015610fdb57506013546001600160a01b03848116911614155b15610fed57600754600b55600854600c555b6014546001600160a01b03848116911614801561101857506013546001600160a01b03858116911614155b1561102a57600954600b55600a54600c555b6108e584848484611306565b6000818484111561105a5760405162461bcd60e51b815260040161059591906117be565b5060006110678486611a6e565b95945050505050565b6011546001600160a01b03166108fc61108a836002611334565b6040518115909202916000818181858888f193505050501580156110b2573d6000803e3d6000fd5b506012546001600160a01b03166108fc6110cd836002611334565b6040518115909202916000818181858888f193505050501580156110f5573d6000803e3d6000fd5b5050565b60006005548211156111605760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610595565b600061116a611376565b90506111768382611334565b9392505050565b6014805460ff60a81b1916600160a81b17905560408051600280825260608201835260009260208301908036833701905050905030816000815181106111c5576111c5611a0f565b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561121957600080fd5b505afa15801561122d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112519190611a85565b8160018151811061126457611264611a0f565b6001600160a01b03928316602091820292909201015260135461128a91309116846109d5565b60135460405163791ac94760e01b81526001600160a01b039091169063791ac947906112c3908590600090869030904290600401611aa2565b600060405180830381600087803b1580156112dd57600080fd5b505af11580156112f1573d6000803e3d6000fd5b50506014805460ff60a81b1916905550505050565b8061131357611313611399565b61131e8484846113c7565b806108e5576108e5600d54600b55600e54600c55565b600061117683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506114be565b60008060006113836114ec565b90925090506113928282611334565b9250505090565b600b541580156113a95750600c54155b156113b057565b600b8054600d55600c8054600e5560009182905555565b6000806000806000806113d98761152e565b6001600160a01b038f16600090815260016020526040902054959b5093995091975095509350915061140b908761158b565b6001600160a01b03808b1660009081526001602052604080822093909355908a168152205461143a90866115cd565b6001600160a01b03891660009081526001602052604090205561145c8161162c565b6114668483611676565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516114ab91815260200190565b60405180910390a3505050505050505050565b600081836114df5760405162461bcd60e51b815260040161059591906117be565b5060006110678486611b13565b600554600090819068056bc75e2d631000006115088282611334565b8210156115255750506005549268056bc75e2d6310000092509050565b90939092509050565b600080600080600080600080600061154b8a600b54600c5461169a565b925092509250600061155b611376565b9050600080600061156e8e8787876116ef565b919e509c509a509598509396509194505050505091939550919395565b600061117683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611036565b6000806115da8385611a56565b9050838110156111765760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610595565b6000611636611376565b90506000611644838361173f565b3060009081526001602052604090205490915061166190826115cd565b30600090815260016020526040902055505050565b600554611683908361158b565b60055560065461169390826115cd565b6006555050565b60008080806116b460646116ae898961173f565b90611334565b905060006116c760646116ae8a8961173f565b905060006116df826116d98b8661158b565b9061158b565b9992985090965090945050505050565b60008080806116fe888661173f565b9050600061170c888761173f565b9050600061171a888861173f565b9050600061172c826116d9868661158b565b939b939a50919850919650505050505050565b60008261174e575060006104fc565b600061175a8385611b35565b9050826117678583611b13565b146111765760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610595565b600060208083528351808285015260005b818110156117eb578581018301518582016040015282016117cf565b818111156117fd576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461060457600080fd5b6000806040838503121561183b57600080fd5b823561184681611813565b946020939093013593505050565b60008060006060848603121561186957600080fd5b833561187481611813565b9250602084013561188481611813565b929592945050506040919091013590565b803580151581146118a557600080fd5b919050565b6000602082840312156118bc57600080fd5b61117682611895565b6000602082840312156118d757600080fd5b813561117681611813565b600080604083850312156118f557600080fd5b50508035926020909101359150565b60006020828403121561191657600080fd5b5035919050565b60008060006040848603121561193257600080fd5b833567ffffffffffffffff8082111561194a57600080fd5b818601915086601f83011261195e57600080fd5b81358181111561196d57600080fd5b8760208260051b850101111561198257600080fd5b6020928301955093506119989186019050611895565b90509250925092565b600080604083850312156119b457600080fd5b82356119bf81611813565b915060208301356119cf81611813565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415611a4f57611a4f611a25565b5060010190565b60008219821115611a6957611a69611a25565b500190565b600082821015611a8057611a80611a25565b500390565b600060208284031215611a9757600080fd5b815161117681611813565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611af25784516001600160a01b031683529383019391830191600101611acd565b50506001600160a01b03969096166060850152505050608001529392505050565b600082611b3057634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615611b4f57611b4f611a25565b50029056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212207bdee449d839911439a35d3782d8f88db53ca711f45b503d0123ace9c860884064736f6c63430008090033

Deployed Bytecode

0x60806040526004361061016a5760003560e01c806378f8484b116100d157806398a5c3151161008a578063c3c8cd8011610064578063c3c8cd8014610450578063c492f04614610465578063dd62ed3e14610485578063f2fde38b146104cb57600080fd5b806398a5c315146103e0578063a9059cbb14610400578063bfd792841461042057600080fd5b806378f8484b146103255780637d1db4a5146103455780638da5cb5b1461035b5780638f70ccf7146103795780638f9a55c01461039957806395d89b41146103af57600080fd5b8063313ce56711610123578063313ce5671461027d57806349bd5a5e146102995780636d8aa8f8146102b95780636fc3eaec146102db57806370a08231146102f0578063715018a61461031057600080fd5b806306fdde0314610176578063095ea7b3146101b95780631694505e146101e957806318160ddd1461022157806323b872dd146102475780632fd689e31461026757600080fd5b3661017157005b600080fd5b34801561018257600080fd5b506040805180820190915260088152675368696e67656b6960c01b60208201525b6040516101b091906117be565b60405180910390f35b3480156101c557600080fd5b506101d96101d4366004611828565b6104eb565b60405190151581526020016101b0565b3480156101f557600080fd5b50601354610209906001600160a01b031681565b6040516001600160a01b0390911681526020016101b0565b34801561022d57600080fd5b5068056bc75e2d631000005b6040519081526020016101b0565b34801561025357600080fd5b506101d9610262366004611854565b610502565b34801561027357600080fd5b5061023960175481565b34801561028957600080fd5b50604051600981526020016101b0565b3480156102a557600080fd5b50601454610209906001600160a01b031681565b3480156102c557600080fd5b506102d96102d43660046118aa565b61056b565b005b3480156102e757600080fd5b506102d96105bc565b3480156102fc57600080fd5b5061023961030b3660046118c5565b610607565b34801561031c57600080fd5b506102d9610629565b34801561033157600080fd5b506102d96103403660046118e2565b61069d565b34801561035157600080fd5b5061023960155481565b34801561036757600080fd5b506000546001600160a01b0316610209565b34801561038557600080fd5b506102d96103943660046118aa565b610772565b3480156103a557600080fd5b5061023960165481565b3480156103bb57600080fd5b506040805180820190915260088152675348494e47454b4960c01b60208201526101a3565b3480156103ec57600080fd5b506102d96103fb366004611904565b6107ba565b34801561040c57600080fd5b506101d961041b366004611828565b6107e9565b34801561042c57600080fd5b506101d961043b3660046118c5565b600f6020526000908152604090205460ff1681565b34801561045c57600080fd5b506102d96107f6565b34801561047157600080fd5b506102d961048036600461191d565b61084a565b34801561049157600080fd5b506102396104a03660046119a1565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156104d757600080fd5b506102d96104e63660046118c5565b6108eb565b60006104f83384846109d5565b5060015b92915050565b600061050f848484610af9565b610561843361055c85604051806060016040528060288152602001611b55602891396001600160a01b038a1660009081526003602090815260408083203384529091529020549190611036565b6109d5565b5060019392505050565b6000546001600160a01b0316331461059e5760405162461bcd60e51b8152600401610595906119da565b60405180910390fd5b60148054911515600160b01b0260ff60b01b19909216919091179055565b6011546001600160a01b0316336001600160a01b031614806105f157506012546001600160a01b0316336001600160a01b0316145b6105fa57600080fd5b4761060481611070565b50565b6001600160a01b0381166000908152600160205260408120546104fc906110f9565b6000546001600160a01b031633146106535760405162461bcd60e51b8152600401610595906119da565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6011546001600160a01b0316336001600160a01b0316146106bd57600080fd5b601554821180156106d7575068056bc75e2d631000008211155b6107125760405162461bcd60e51b815260206004820152600c60248201526b4f7574206f662072616e676560a01b6044820152606401610595565b6016548111801561072c575068056bc75e2d631000008111155b6107675760405162461bcd60e51b815260206004820152600c60248201526b4f7574206f662072616e676560a01b6044820152606401610595565b601591909155601655565b6000546001600160a01b0316331461079c5760405162461bcd60e51b8152600401610595906119da565b60148054911515600160a01b0260ff60a01b19909216919091179055565b6000546001600160a01b031633146107e45760405162461bcd60e51b8152600401610595906119da565b601755565b60006104f8338484610af9565b6011546001600160a01b0316336001600160a01b0316148061082b57506012546001600160a01b0316336001600160a01b0316145b61083457600080fd5b600061083f30610607565b90506106048161117d565b6000546001600160a01b031633146108745760405162461bcd60e51b8152600401610595906119da565b60005b828110156108e557816004600086868581811061089657610896611a0f565b90506020020160208101906108ab91906118c5565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806108dd81611a3b565b915050610877565b50505050565b6000546001600160a01b031633146109155760405162461bcd60e51b8152600401610595906119da565b6001600160a01b03811661097a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610595565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610a375760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610595565b6001600160a01b038216610a985760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610595565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610b5d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610595565b6001600160a01b038216610bbf5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610595565b60008111610c215760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610595565b6000546001600160a01b03848116911614801590610c4d57506000546001600160a01b03838116911614155b15610f2f57601454600160a01b900460ff16610ce6576000546001600160a01b03848116911614610ce65760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c6564006064820152608401610595565b601554811115610d385760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000006044820152606401610595565b6001600160a01b0383166000908152600f602052604090205460ff16158015610d7a57506001600160a01b0382166000908152600f602052604090205460ff16155b610dd25760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460448201526265642160e81b6064820152608401610595565b6014546001600160a01b03838116911614610e585760165481610df484610607565b610dfe9190611a56565b1115610e585760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b6064820152608401610595565b6000610e6330610607565b601754601554919250821015908210610e7c5760155491505b808015610e935750601454600160a81b900460ff16155b8015610ead57506014546001600160a01b03868116911614155b8015610ec25750601454600160b01b900460ff165b8015610ee757506001600160a01b03851660009081526004602052604090205460ff16155b8015610f0c57506001600160a01b03841660009081526004602052604090205460ff16155b15610f2c57610f1a8261117d565b478015610f2a57610f2a47611070565b505b50505b6001600160a01b03831660009081526004602052604090205460019060ff1680610f7157506001600160a01b03831660009081526004602052604090205460ff165b80610fa357506014546001600160a01b03858116911614801590610fa357506014546001600160a01b03848116911614155b15610fb05750600061102a565b6014546001600160a01b038581169116148015610fdb57506013546001600160a01b03848116911614155b15610fed57600754600b55600854600c555b6014546001600160a01b03848116911614801561101857506013546001600160a01b03858116911614155b1561102a57600954600b55600a54600c555b6108e584848484611306565b6000818484111561105a5760405162461bcd60e51b815260040161059591906117be565b5060006110678486611a6e565b95945050505050565b6011546001600160a01b03166108fc61108a836002611334565b6040518115909202916000818181858888f193505050501580156110b2573d6000803e3d6000fd5b506012546001600160a01b03166108fc6110cd836002611334565b6040518115909202916000818181858888f193505050501580156110f5573d6000803e3d6000fd5b5050565b60006005548211156111605760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610595565b600061116a611376565b90506111768382611334565b9392505050565b6014805460ff60a81b1916600160a81b17905560408051600280825260608201835260009260208301908036833701905050905030816000815181106111c5576111c5611a0f565b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561121957600080fd5b505afa15801561122d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112519190611a85565b8160018151811061126457611264611a0f565b6001600160a01b03928316602091820292909201015260135461128a91309116846109d5565b60135460405163791ac94760e01b81526001600160a01b039091169063791ac947906112c3908590600090869030904290600401611aa2565b600060405180830381600087803b1580156112dd57600080fd5b505af11580156112f1573d6000803e3d6000fd5b50506014805460ff60a81b1916905550505050565b8061131357611313611399565b61131e8484846113c7565b806108e5576108e5600d54600b55600e54600c55565b600061117683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506114be565b60008060006113836114ec565b90925090506113928282611334565b9250505090565b600b541580156113a95750600c54155b156113b057565b600b8054600d55600c8054600e5560009182905555565b6000806000806000806113d98761152e565b6001600160a01b038f16600090815260016020526040902054959b5093995091975095509350915061140b908761158b565b6001600160a01b03808b1660009081526001602052604080822093909355908a168152205461143a90866115cd565b6001600160a01b03891660009081526001602052604090205561145c8161162c565b6114668483611676565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516114ab91815260200190565b60405180910390a3505050505050505050565b600081836114df5760405162461bcd60e51b815260040161059591906117be565b5060006110678486611b13565b600554600090819068056bc75e2d631000006115088282611334565b8210156115255750506005549268056bc75e2d6310000092509050565b90939092509050565b600080600080600080600080600061154b8a600b54600c5461169a565b925092509250600061155b611376565b9050600080600061156e8e8787876116ef565b919e509c509a509598509396509194505050505091939550919395565b600061117683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611036565b6000806115da8385611a56565b9050838110156111765760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610595565b6000611636611376565b90506000611644838361173f565b3060009081526001602052604090205490915061166190826115cd565b30600090815260016020526040902055505050565b600554611683908361158b565b60055560065461169390826115cd565b6006555050565b60008080806116b460646116ae898961173f565b90611334565b905060006116c760646116ae8a8961173f565b905060006116df826116d98b8661158b565b9061158b565b9992985090965090945050505050565b60008080806116fe888661173f565b9050600061170c888761173f565b9050600061171a888861173f565b9050600061172c826116d9868661158b565b939b939a50919850919650505050505050565b60008261174e575060006104fc565b600061175a8385611b35565b9050826117678583611b13565b146111765760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610595565b600060208083528351808285015260005b818110156117eb578581018301518582016040015282016117cf565b818111156117fd576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461060457600080fd5b6000806040838503121561183b57600080fd5b823561184681611813565b946020939093013593505050565b60008060006060848603121561186957600080fd5b833561187481611813565b9250602084013561188481611813565b929592945050506040919091013590565b803580151581146118a557600080fd5b919050565b6000602082840312156118bc57600080fd5b61117682611895565b6000602082840312156118d757600080fd5b813561117681611813565b600080604083850312156118f557600080fd5b50508035926020909101359150565b60006020828403121561191657600080fd5b5035919050565b60008060006040848603121561193257600080fd5b833567ffffffffffffffff8082111561194a57600080fd5b818601915086601f83011261195e57600080fd5b81358181111561196d57600080fd5b8760208260051b850101111561198257600080fd5b6020928301955093506119989186019050611895565b90509250925092565b600080604083850312156119b457600080fd5b82356119bf81611813565b915060208301356119cf81611813565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415611a4f57611a4f611a25565b5060010190565b60008219821115611a6957611a69611a25565b500190565b600082821015611a8057611a80611a25565b500390565b600060208284031215611a9757600080fd5b815161117681611813565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611af25784516001600160a01b031683529383019391830191600101611acd565b50506001600160a01b03969096166060850152505050608001529392505050565b600082611b3057634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615611b4f57611b4f611a25565b50029056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212207bdee449d839911439a35d3782d8f88db53ca711f45b503d0123ace9c860884064736f6c63430008090033

Deployed Bytecode Sourcemap

4123:13373:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6712:83;;;;;;;;;;-1:-1:-1;6782:5:0;;;;;;;;;;;;-1:-1:-1;;;6782:5:0;;;;6712:83;;;;;;;:::i;:::-;;;;;;;;7644:193;;;;;;;;;;-1:-1:-1;7644:193:0;;;;;:::i;:::-;;:::i;:::-;;;1237:14:1;;1230:22;1212:41;;1200:2;1185:18;7644:193:0;1072:187:1;5535:41:0;;;;;;;;;;-1:-1:-1;5535:41:0;;;;-1:-1:-1;;;;;5535:41:0;;;;;;-1:-1:-1;;;;;1454:32:1;;;1436:51;;1424:2;1409:18;5535:41:0;1264:229:1;6992:95:0;;;;;;;;;;-1:-1:-1;4681:20:0;6992:95;;;1644:25:1;;;1632:2;1617:18;6992:95:0;1498:177:1;7846:446:0;;;;;;;;;;-1:-1:-1;7846:446:0;;;;;:::i;:::-;;:::i;5844:55::-;;;;;;;;;;;;;;;;6900:83;;;;;;;;;;-1:-1:-1;6900:83:0;;4354:1;2283:36:1;;2271:2;2256:18;6900:83:0;2141:184:1;5583:28:0;;;;;;;;;;-1:-1:-1;5583:28:0;;;;-1:-1:-1;;;;;5583:28:0;;;16656:101;;;;;;;;;;-1:-1:-1;16656:101:0;;;;;:::i;:::-;;:::i;:::-;;12741:235;;;;;;;;;;;;;:::i;7096:138::-;;;;;;;;;;-1:-1:-1;7096:138:0;;;;;:::i;:::-;;:::i;1596:148::-;;;;;;;;;;;;;:::i;16830:420::-;;;;;;;;;;-1:-1:-1;16830:420:0;;;;;:::i;:::-;;:::i;5727:47::-;;;;;;;;;;;;;;;;1380:79;;;;;;;;;;-1:-1:-1;1418:7:0;1445:6;-1:-1:-1;;;;;1445:6:0;1380:79;;12386:101;;;;;;;;;;-1:-1:-1;12386:101:0;;;;;:::i;:::-;;:::i;5784:50::-;;;;;;;;;;;;;;;;6804:87;;;;;;;;;;-1:-1:-1;6876:7:0;;;;;;;;;;;;-1:-1:-1;;;6876:7:0;;;;6804:87;;16464:139;;;;;;;;;;-1:-1:-1;16464:139:0;;;;;:::i;:::-;;:::i;7243:199::-;;;;;;;;;;-1:-1:-1;7243:199:0;;;;;:::i;:::-;;:::i;5229:36::-;;;;;;;;;;-1:-1:-1;5229:36:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12496:236;;;;;;;;;;;;;:::i;17259:234::-;;;;;;;;;;-1:-1:-1;17259:234:0;;;;;:::i;:::-;;:::i;7451:184::-;;;;;;;;;;-1:-1:-1;7451:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;7600:18:0;;;7568:7;7600:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7451:184;1753:244;;;;;;;;;;-1:-1:-1;1753:244:0;;;;;:::i;:::-;;:::i;7644:193::-;7746:4;7768:39;246:10;7791:7;7800:6;7768:8;:39::i;:::-;-1:-1:-1;7825:4:0;7644:193;;;;;:::o;7846:446::-;7978:4;7995:36;8005:6;8013:9;8024:6;7995:9;:36::i;:::-;8042:220;8065:6;246:10;8113:138;8169:6;8113:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8113:19:0;;;;;;:11;:19;;;;;;;;246:10;8113:33;;;;;;;;;;:37;:138::i;:::-;8042:8;:220::i;:::-;-1:-1:-1;8280:4:0;7846:446;;;;;:::o;16656:101::-;1508:6;;-1:-1:-1;;;;;1508:6:0;246:10;1508:22;1500:67;;;;-1:-1:-1;;;1500:67:0;;;;;;;:::i;:::-;;;;;;;;;16723:11:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;16723:26:0::1;-1:-1:-1::0;;;;16723:26:0;;::::1;::::0;;;::::1;::::0;;16656:101::o;12741:235::-;12807:19;;-1:-1:-1;;;;;12807:19:0;246:10;-1:-1:-1;;;;;12791:35:0;;:72;;;-1:-1:-1;12846:17:0;;-1:-1:-1;;;;;12846:17:0;246:10;-1:-1:-1;;;;;12830:33:0;;12791:72;12783:81;;;;;;12904:21;12936:32;12904:21;12936:12;:32::i;:::-;12772:204;12741:235::o;7096:138::-;-1:-1:-1;;;;;7209:16:0;;7162:7;7209:16;;;:7;:16;;;;;;7189:37;;:19;:37::i;1596:148::-;1508:6;;-1:-1:-1;;;;;1508:6:0;246:10;1508:22;1500:67;;;;-1:-1:-1;;;1500:67:0;;;;;;;:::i;:::-;1703:1:::1;1687:6:::0;;1666:40:::1;::::0;-1:-1:-1;;;;;1687:6:0;;::::1;::::0;1666:40:::1;::::0;1703:1;;1666:40:::1;1734:1;1717:19:::0;;-1:-1:-1;;;;;;1717:19:0::1;::::0;;1596:148::o;16830:420::-;16942:19;;-1:-1:-1;;;;;16942:19:0;246:10;-1:-1:-1;;;;;16926:35:0;;16918:44;;;;;;16996:12;;16981;:27;:60;;;;-1:-1:-1;4681:20:0;17012:12;:29;;16981:60;16973:85;;;;-1:-1:-1;;;16973:85:0;;5228:2:1;16973:85:0;;;5210:21:1;5267:2;5247:18;;;5240:30;-1:-1:-1;;;5286:18:1;;;5279:42;5338:18;;16973:85:0;5026:336:1;16973:85:0;17094:14;;17077;:31;:66;;;;-1:-1:-1;4681:20:0;17112:14;:31;;17077:66;17069:91;;;;-1:-1:-1;;;17069:91:0;;5228:2:1;17069:91:0;;;5210:21:1;5267:2;5247:18;;;5240:30;-1:-1:-1;;;5286:18:1;;;5279:42;5338:18;;17069:91:0;5026:336:1;17069:91:0;17173:12;:27;;;;17211:14;:31;16830:420::o;12386:101::-;1508:6;;-1:-1:-1;;;;;1508:6:0;246:10;1508:22;1500:67;;;;-1:-1:-1;;;1500:67:0;;;;;;;:::i;:::-;12453:11:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;12453:26:0::1;-1:-1:-1::0;;;;12453:26:0;;::::1;::::0;;;::::1;::::0;;12386:101::o;16464:139::-;1508:6;;-1:-1:-1;;;;;1508:6:0;246:10;1508:22;1500:67;;;;-1:-1:-1;;;1500:67:0;;;;;;;:::i;:::-;16555:19:::1;:40:::0;16464:139::o;7243:199::-;7348:4;7370:42;246:10;7394:9;7405:6;7370:9;:42::i;12496:236::-;12562:19;;-1:-1:-1;;;;;12562:19:0;246:10;-1:-1:-1;;;;;12546:35:0;;:72;;;-1:-1:-1;12601:17:0;;-1:-1:-1;;;;;12601:17:0;246:10;-1:-1:-1;;;;;12585:33:0;;12546:72;12538:81;;;;;;12630:23;12656:24;12674:4;12656:9;:24::i;:::-;12630:50;;12691:33;12708:15;12691:16;:33::i;17259:234::-;1508:6;;-1:-1:-1;;;;;1508:6:0;246:10;1508:22;1500:67;;;;-1:-1:-1;;;1500:67:0;;;;;;;:::i;:::-;17376:9:::1;17372:114;17391:19:::0;;::::1;17372:114;;;17466:8;17432:18;:31;17451:8;;17460:1;17451:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17432:31:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;17432:31:0;:42;;-1:-1:-1;;17432:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17412:3;::::1;::::0;::::1;:::i;:::-;;;;17372:114;;;;17259:234:::0;;;:::o;1753:244::-;1508:6;;-1:-1:-1;;;;;1508:6:0;246:10;1508:22;1500:67;;;;-1:-1:-1;;;1500:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1842:22:0;::::1;1834:73;;;::::0;-1:-1:-1;;;1834:73:0;;5973:2:1;1834:73:0::1;::::0;::::1;5955:21:1::0;6012:2;5992:18;;;5985:30;6051:34;6031:18;;;6024:62;-1:-1:-1;;;6102:18:1;;;6095:36;6148:19;;1834:73:0::1;5771:402:1::0;1834:73:0::1;1944:6;::::0;;1923:38:::1;::::0;-1:-1:-1;;;;;1923:38:0;;::::1;::::0;1944:6;::::1;::::0;1923:38:::1;::::0;::::1;1972:6;:17:::0;;-1:-1:-1;;;;;;1972:17:0::1;-1:-1:-1::0;;;;;1972:17:0;;;::::1;::::0;;;::::1;::::0;;1753:244::o;8989:369::-;-1:-1:-1;;;;;9116:19:0;;9108:68;;;;-1:-1:-1;;;9108:68:0;;6380:2:1;9108:68:0;;;6362:21:1;6419:2;6399:18;;;6392:30;6458:34;6438:18;;;6431:62;-1:-1:-1;;;6509:18:1;;;6502:34;6553:19;;9108:68:0;6178:400:1;9108:68:0;-1:-1:-1;;;;;9195:21:0;;9187:68;;;;-1:-1:-1;;;9187:68:0;;6785:2:1;9187:68:0;;;6767:21:1;6824:2;6804:18;;;6797:30;6863:34;6843:18;;;6836:62;-1:-1:-1;;;6914:18:1;;;6907:32;6956:19;;9187:68:0;6583:398:1;9187:68:0;-1:-1:-1;;;;;9266:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9318:32;;1644:25:1;;;9318:32:0;;1617:18:1;9318:32:0;;;;;;;8989:369;;;:::o;9367:2349::-;-1:-1:-1;;;;;9489:18:0;;9481:68;;;;-1:-1:-1;;;9481:68:0;;7188:2:1;9481:68:0;;;7170:21:1;7227:2;7207:18;;;7200:30;7266:34;7246:18;;;7239:62;-1:-1:-1;;;7317:18:1;;;7310:35;7362:19;;9481:68:0;6986:401:1;9481:68:0;-1:-1:-1;;;;;9568:16:0;;9560:64;;;;-1:-1:-1;;;9560:64:0;;7594:2:1;9560:64:0;;;7576:21:1;7633:2;7613:18;;;7606:30;7672:34;7652:18;;;7645:62;-1:-1:-1;;;7723:18:1;;;7716:33;7766:19;;9560:64:0;7392:399:1;9560:64:0;9652:1;9643:6;:10;9635:64;;;;-1:-1:-1;;;9635:64:0;;7998:2:1;9635:64:0;;;7980:21:1;8037:2;8017:18;;;8010:30;8076:34;8056:18;;;8049:62;-1:-1:-1;;;8127:18:1;;;8120:39;8176:19;;9635:64:0;7796:405:1;9635:64:0;1418:7;1445:6;-1:-1:-1;;;;;9717:15:0;;;1445:6;;9717:15;;;;:32;;-1:-1:-1;1418:7:0;1445:6;-1:-1:-1;;;;;9736:13:0;;;1445:6;;9736:13;;9717:32;9713:1271;;;9807:11;;-1:-1:-1;;;9807:11:0;;;;9802:144;;1418:7;1445:6;-1:-1:-1;;;;;9847:15:0;;;1445:6;;9847:15;9839:91;;;;-1:-1:-1;;;9839:91:0;;8408:2:1;9839:91:0;;;8390:21:1;8447:2;8427:18;;;8420:30;8486:34;8466:18;;;8459:62;8557:33;8537:18;;;8530:61;8608:19;;9839:91:0;8206:427:1;9839:91:0;9981:12;;9971:6;:22;;9963:63;;;;-1:-1:-1;;;9963:63:0;;8840:2:1;9963:63:0;;;8822:21:1;8879:2;8859:18;;;8852:30;8918;8898:18;;;8891:58;8966:18;;9963:63:0;8638:352:1;9963:63:0;-1:-1:-1;;;;;10052:10:0;;;;;;:4;:10;;;;;;;;10051:11;:24;;;;-1:-1:-1;;;;;;10067:8:0;;;;;;:4;:8;;;;;;;;10066:9;10051:24;10043:72;;;;-1:-1:-1;;;10043:72:0;;9197:2:1;10043:72:0;;;9179:21:1;9236:2;9216:18;;;9209:30;9275:34;9255:18;;;9248:62;-1:-1:-1;;;9326:18:1;;;9319:33;9369:19;;10043:72:0;8995:399:1;10043:72:0;10145:13;;-1:-1:-1;;;;;10139:19:0;;;10145:13;;10139:19;10136:147;;10213:14;;10203:6;10187:13;10197:2;10187:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;10179:88;;;;-1:-1:-1;;;10179:88:0;;9734:2:1;10179:88:0;;;9716:21:1;9773:2;9753:18;;;9746:30;9812:34;9792:18;;;9785:62;-1:-1:-1;;;9863:18:1;;;9856:33;9906:19;;10179:88:0;9532:399:1;10179:88:0;10300:28;10331:24;10349:4;10331:9;:24::i;:::-;10409:19;;10473:12;;10300:55;;-1:-1:-1;10385:43:0;;;;10449:36;;10446:124;;10542:12;;10519:35;;10446:124;10591:7;:18;;;;-1:-1:-1;10603:6:0;;-1:-1:-1;;;10603:6:0;;;;10602:7;10591:18;:43;;;;-1:-1:-1;10621:13:0;;-1:-1:-1;;;;;10613:21:0;;;10621:13;;10613:21;;10591:43;:58;;;;-1:-1:-1;10638:11:0;;-1:-1:-1;;;10638:11:0;;;;10591:58;:87;;;;-1:-1:-1;;;;;;10654:24:0;;;;;;:18;:24;;;;;;;;10653:25;10591:87;:114;;;;-1:-1:-1;;;;;;10683:22:0;;;;;;:18;:22;;;;;;;;10682:23;10591:114;10587:386;;;10726:38;10743:20;10726:16;:38::i;:::-;10812:21;10856:22;;10852:106;;10903:35;10916:21;10903:12;:35::i;:::-;10707:266;10587:386;9751:1233;;9713:1271;-1:-1:-1;;;;;11062:24:0;;10997:12;11062:24;;;:18;:24;;;;;;11012:4;;11062:24;;;:50;;-1:-1:-1;;;;;;11090:22:0;;;;;;:18;:22;;;;;;;;11062:50;11061:102;;;-1:-1:-1;11126:13:0;;-1:-1:-1;;;;;11118:21:0;;;11126:13;;11118:21;;;;:44;;-1:-1:-1;11149:13:0;;-1:-1:-1;;;;;11143:19:0;;;11149:13;;11143:19;;11118:44;11057:597;;;-1:-1:-1;11190:5:0;11057:597;;;11274:13;;-1:-1:-1;;;;;11266:21:0;;;11274:13;;11266:21;:55;;;;-1:-1:-1;11305:15:0;;-1:-1:-1;;;;;11291:30:0;;;11305:15;;11291:30;;11266:55;11263:162;;;11354:14;;11342:9;:26;11397:12;;11387:7;:22;11263:162;11485:13;;-1:-1:-1;;;;;11479:19:0;;;11485:13;;11479:19;:55;;;;-1:-1:-1;11518:15:0;;-1:-1:-1;;;;;11502:32:0;;;11518:15;;11502:32;;11479:55;11475:165;;;11567:15;;11555:9;:27;11611:13;;11601:7;:23;11475:165;11667:41;11682:4;11688:2;11692:6;11700:7;11667:14;:41::i;2365:224::-;2485:7;2521:12;2513:6;;;;2505:29;;;;-1:-1:-1;;;2505:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2545:9:0;2557:5;2561:1;2557;:5;:::i;:::-;2545:17;2365:224;-1:-1:-1;;;;;2365:224:0:o;12217:160::-;12274:19;;-1:-1:-1;;;;;12274:19:0;:43;12303:13;:6;12314:1;12303:10;:13::i;:::-;12274:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12328:17:0;;-1:-1:-1;;;;;12328:17:0;:41;12355:13;:6;12366:1;12355:10;:13::i;:::-;12328:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12217:160;:::o;8301:323::-;8396:7;8454;;8443;:18;;8421:110;;;;-1:-1:-1;;;8421:110:0;;10268:2:1;8421:110:0;;;10250:21:1;10307:2;10287:18;;;10280:30;10346:34;10326:18;;;10319:62;-1:-1:-1;;;10397:18:1;;;10390:40;10447:19;;8421:110:0;10066:406:1;8421:110:0;8542:19;8564:10;:8;:10::i;:::-;8542:32;-1:-1:-1;8592:24:0;:7;8542:32;8592:11;:24::i;:::-;8585:31;8301:323;-1:-1:-1;;;8301:323:0:o;11725:483::-;5997:6;:13;;-1:-1:-1;;;;5997:13:0;-1:-1:-1;;;5997:13:0;;;11827:16:::1;::::0;;11841:1:::1;11827:16:::0;;;;;::::1;::::0;;-1:-1:-1;;11827:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;11827:16:0::1;11803:40;;11872:4;11854;11859:1;11854:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11854:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;11898:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;11898:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;11854:7;;11898:22;;;;;:15;:22;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11888:4;11893:1;11888:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11888:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;11963:15:::1;::::0;11931:62:::1;::::0;11948:4:::1;::::0;11963:15:::1;11981:11:::0;11931:8:::1;:62::i;:::-;12004:15;::::0;:196:::1;::::0;-1:-1:-1;;;12004:196:0;;-1:-1:-1;;;;;12004:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;12085:11;;12004:15:::1;::::0;12127:4;;12154::::1;::::0;12174:15:::1;::::0;12004:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6033:6:0;:14;;-1:-1:-1;;;;6033:14:0;;;-1:-1:-1;;;;11725:483:0:o;12991:282::-;13147:7;13142:28;;13156:14;:12;:14::i;:::-;13181:44;13199:6;13207:9;13218:6;13181:17;:44::i;:::-;13241:7;13236:29;;13250:15;8919:17;;8907:9;:29;8957:15;;8947:7;:25;8863:117;2853:132;2911:7;2938:39;2942:1;2945;2938:39;;;;;;;;;;;;;;;;;:3;:39::i;15969:167::-;16011:7;16032:15;16049;16068:19;:17;:19::i;:::-;16031:56;;-1:-1:-1;16031:56:0;-1:-1:-1;16108:20:0;16031:56;;16108:11;:20::i;:::-;16101:27;;;;15969:167;:::o;8633:221::-;8680:9;;:14;:30;;;;-1:-1:-1;8698:7:0;;:12;8680:30;8676:43;;;8633:221::o;8676:43::-;8752:9;;;8732:17;:29;8790:7;;;8772:15;:25;-1:-1:-1;8811:13:0;;;;8835:11;8633:221::o;13282:610::-;13429:15;13459:23;13497:12;13524:23;13562:12;13589:13;13616:19;13627:7;13616:10;:19::i;:::-;-1:-1:-1;;;;;13664:15:0;;;;;;:7;:15;;;;;;13414:221;;-1:-1:-1;13414:221:0;;-1:-1:-1;13414:221:0;;-1:-1:-1;13414:221:0;-1:-1:-1;13414:221:0;-1:-1:-1;13414:221:0;-1:-1:-1;13664:28:0;;13414:221;13664:19;:28::i;:::-;-1:-1:-1;;;;;13646:15:0;;;;;;;:7;:15;;;;;;:46;;;;13724:18;;;;;;;:39;;13747:15;13724:22;:39::i;:::-;-1:-1:-1;;;;;13703:18:0;;;;;;:7;:18;;;;;:60;13774:16;13784:5;13774:9;:16::i;:::-;13801:23;13813:4;13819;13801:11;:23::i;:::-;13857:9;-1:-1:-1;;;;;13840:44:0;13849:6;-1:-1:-1;;;;;13840:44:0;;13868:15;13840:44;;;;1644:25:1;;1632:2;1617:18;;1498:177;13840:44:0;;;;;;;;13403:489;;;;;;13282:610;;;:::o;2994:223::-;3114:7;3149:12;3142:5;3134:28;;;;-1:-1:-1;;;3134:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3173:9:0;3185:5;3189:1;3185;:5;:::i;16145:260::-;16243:7;;16196;;;;4681:20;16311;16243:7;4681:20;16311:11;:20::i;:::-;16301:7;:30;16297:61;;;-1:-1:-1;;16341:7:0;;;4681:20;;-1:-1:-1;16145:260:0;-1:-1:-1;16145:260:0:o;16297:61::-;16380:7;;16389;;-1:-1:-1;16145:260:0;-1:-1:-1;16145:260:0:o;14315:618::-;14415:7;14437;14459;14481;14503;14525;14561:23;14586:12;14600:13;14630:40;14642:7;14651:9;;14662:7;;14630:11;:40::i;:::-;14560:110;;;;;;14681:19;14703:10;:8;:10::i;:::-;14681:32;;14725:15;14742:23;14767:12;14796:46;14808:7;14817:4;14823:5;14830:11;14796;:46::i;:::-;14724:118;;-1:-1:-1;14724:118:0;-1:-1:-1;14724:118:0;-1:-1:-1;14896:15:0;;-1:-1:-1;14913:4:0;;-1:-1:-1;14919:5:0;;-1:-1:-1;;;;;14315:618:0;;;;;;;:::o;2220:136::-;2278:7;2305:43;2309:1;2312;2305:43;;;;;;;;;;;;;;;;;:3;:43::i;2032:179::-;2090:7;;2122:5;2126:1;2122;:5;:::i;:::-;2110:17;;2151:1;2146;:6;;2138:46;;;;-1:-1:-1;;;2138:46:0;;12274:2:1;2138:46:0;;;12256:21:1;12313:2;12293:18;;;12286:30;12352:29;12332:18;;;12325:57;12399:18;;2138:46:0;12072:351:1;13901:211:0;13954:19;13976:10;:8;:10::i;:::-;13954:32;-1:-1:-1;13997:13:0;14013:22;:5;13954:32;14013:9;:22::i;:::-;14087:4;14071:22;;;;:7;:22;;;;;;13997:38;;-1:-1:-1;14071:33:0;;13997:38;14071:26;:33::i;:::-;14062:4;14046:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;13901:211:0:o;14121:147::-;14199:7;;:17;;14211:4;14199:11;:17::i;:::-;14189:7;:27;14240:10;;:20;;14255:4;14240:14;:20::i;:::-;14227:10;:33;-1:-1:-1;;14121:147:0:o;14942:472::-;15111:7;;;;15205:30;15231:3;15205:21;:7;15217:8;15205:11;:21::i;:::-;:25;;:30::i;:::-;15190:45;-1:-1:-1;15246:13:0;15262:28;15286:3;15262:19;:7;15274:6;15262:11;:19::i;:28::-;15246:44;-1:-1:-1;15301:23:0;15327:28;15246:44;15327:17;:7;15339:4;15327:11;:17::i;:::-;:21;;:28::i;:::-;15301:54;15394:4;;-1:-1:-1;15400:5:0;;-1:-1:-1;14942:472:0;;-1:-1:-1;;;;;14942:472:0:o;15423:537::-;15617:7;;;;15714:24;:7;15726:11;15714;:24::i;:::-;15696:42;-1:-1:-1;15749:12:0;15764:21;:4;15773:11;15764:8;:21::i;:::-;15749:36;-1:-1:-1;15796:13:0;15812:22;:5;15822:11;15812:9;:22::i;:::-;15796:38;-1:-1:-1;15845:23:0;15871:28;15796:38;15871:17;:7;15883:4;15871:11;:17::i;:28::-;15921:7;;;;-1:-1:-1;15947:4:0;;-1:-1:-1;15423:537:0;;-1:-1:-1;;;;;;;15423:537:0:o;2598:246::-;2656:7;2680:6;2676:47;;-1:-1:-1;2710:1:0;2703:8;;2676:47;2733:9;2745:5;2749:1;2745;:5;:::i;:::-;2733:17;-1:-1:-1;2778:1:0;2769:5;2773:1;2733:17;2769:5;:::i;:::-;:10;2761:56;;;;-1:-1:-1;;;2761:56:0;;12803:2:1;2761:56:0;;;12785:21:1;12842:2;12822:18;;;12815:30;12881:34;12861:18;;;12854:62;-1:-1:-1;;;12932:18:1;;;12925:31;12973:19;;2761:56:0;12601:397:1;14:597;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;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:131::-;-1:-1:-1;;;;;691:31:1;;681:42;;671:70;;737:1;734;727:12;752:315;820:6;828;881:2;869:9;860:7;856:23;852:32;849:52;;;897:1;894;887:12;849:52;936:9;923:23;955:31;980:5;955:31;:::i;:::-;1005:5;1057:2;1042:18;;;;1029:32;;-1:-1:-1;;;752:315:1:o;1680:456::-;1757:6;1765;1773;1826:2;1814:9;1805:7;1801:23;1797:32;1794:52;;;1842:1;1839;1832:12;1794:52;1881:9;1868:23;1900:31;1925:5;1900:31;:::i;:::-;1950:5;-1:-1:-1;2007:2:1;1992:18;;1979:32;2020:33;1979:32;2020:33;:::i;:::-;1680:456;;2072:7;;-1:-1:-1;;;2126:2:1;2111:18;;;;2098:32;;1680:456::o;2538:160::-;2603:20;;2659:13;;2652:21;2642:32;;2632:60;;2688:1;2685;2678:12;2632:60;2538:160;;;:::o;2703:180::-;2759:6;2812:2;2800:9;2791:7;2787:23;2783:32;2780:52;;;2828:1;2825;2818:12;2780:52;2851:26;2867:9;2851:26;:::i;2888:247::-;2947:6;3000:2;2988:9;2979:7;2975:23;2971:32;2968:52;;;3016:1;3013;3006:12;2968:52;3055:9;3042:23;3074:31;3099:5;3074:31;:::i;3140:248::-;3208:6;3216;3269:2;3257:9;3248:7;3244:23;3240:32;3237:52;;;3285:1;3282;3275:12;3237:52;-1:-1:-1;;3308:23:1;;;3378:2;3363:18;;;3350:32;;-1:-1:-1;3140:248:1:o;3393:180::-;3452:6;3505:2;3493:9;3484:7;3480:23;3476:32;3473:52;;;3521:1;3518;3511:12;3473:52;-1:-1:-1;3544:23:1;;3393:180;-1:-1:-1;3393:180:1:o;3578:689::-;3670:6;3678;3686;3739:2;3727:9;3718:7;3714:23;3710:32;3707:52;;;3755:1;3752;3745:12;3707:52;3795:9;3782:23;3824:18;3865:2;3857:6;3854:14;3851:34;;;3881:1;3878;3871:12;3851:34;3919:6;3908:9;3904:22;3894:32;;3964:7;3957:4;3953:2;3949:13;3945:27;3935:55;;3986:1;3983;3976:12;3935:55;4026:2;4013:16;4052:2;4044:6;4041:14;4038:34;;;4068:1;4065;4058:12;4038:34;4123:7;4116:4;4106:6;4103:1;4099:14;4095:2;4091:23;4087:34;4084:47;4081:67;;;4144:1;4141;4134:12;4081:67;4175:4;4167:13;;;;-1:-1:-1;4199:6:1;-1:-1:-1;4224:37:1;;4240:20;;;-1:-1:-1;4224:37:1;:::i;:::-;4214:47;;3578:689;;;;;:::o;4272:388::-;4340:6;4348;4401:2;4389:9;4380:7;4376:23;4372:32;4369:52;;;4417:1;4414;4407:12;4369:52;4456:9;4443:23;4475:31;4500:5;4475:31;:::i;:::-;4525:5;-1:-1:-1;4582:2:1;4567:18;;4554:32;4595:33;4554:32;4595:33;:::i;:::-;4647:7;4637:17;;;4272:388;;;;;:::o;4665:356::-;4867:2;4849:21;;;4886:18;;;4879:30;4945:34;4940:2;4925:18;;4918:62;5012:2;4997:18;;4665:356::o;5367:127::-;5428:10;5423:3;5419:20;5416:1;5409:31;5459:4;5456:1;5449:15;5483:4;5480:1;5473:15;5499:127;5560:10;5555:3;5551:20;5548:1;5541:31;5591:4;5588:1;5581:15;5615:4;5612:1;5605:15;5631:135;5670:3;-1:-1:-1;;5691:17:1;;5688:43;;;5711:18;;:::i;:::-;-1:-1:-1;5758:1:1;5747:13;;5631:135::o;9399:128::-;9439:3;9470:1;9466:6;9463:1;9460:13;9457:39;;;9476:18;;:::i;:::-;-1:-1:-1;9512:9:1;;9399:128::o;9936:125::-;9976:4;10004:1;10001;9998:8;9995:34;;;10009:18;;:::i;:::-;-1:-1:-1;10046:9:1;;9936:125::o;10609:251::-;10679:6;10732:2;10720:9;10711:7;10707:23;10703:32;10700:52;;;10748:1;10745;10738:12;10700:52;10780:9;10774:16;10799:31;10824:5;10799:31;:::i;10865:980::-;11127:4;11175:3;11164:9;11160:19;11206:6;11195:9;11188:25;11232:2;11270:6;11265:2;11254:9;11250:18;11243:34;11313:3;11308:2;11297:9;11293:18;11286:31;11337:6;11372;11366:13;11403:6;11395;11388:22;11441:3;11430:9;11426:19;11419:26;;11480:2;11472:6;11468:15;11454:29;;11501:1;11511:195;11525:6;11522:1;11519:13;11511:195;;;11590:13;;-1:-1:-1;;;;;11586:39:1;11574:52;;11681:15;;;;11646:12;;;;11622:1;11540:9;11511:195;;;-1:-1:-1;;;;;;;11762:32:1;;;;11757:2;11742:18;;11735:60;-1:-1:-1;;;11826:3:1;11811:19;11804:35;11723:3;10865:980;-1:-1:-1;;;10865:980:1:o;11850:217::-;11890:1;11916;11906:132;;11960:10;11955:3;11951:20;11948:1;11941:31;11995:4;11992:1;11985:15;12023:4;12020:1;12013:15;11906:132;-1:-1:-1;12052:9:1;;11850:217::o;12428:168::-;12468:7;12534:1;12530;12526:6;12522:14;12519:1;12516:21;12511:1;12504:9;12497:17;12493:45;12490:71;;;12541:18;;:::i;:::-;-1:-1:-1;12581:9:1;;12428:168::o

Swarm Source

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