ETH Price: $2,481.31 (+1.71%)

Token

LOCKER TOKEN ($LOCKER)
 

Overview

Max Total Supply

1,000,000,000 $LOCKER

Holders

57

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
18,735,516.045201558 $LOCKER

Value
$0.00
0x264bcb2c9a9cb30ba6dbf14c59a5ded964b12cb0
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:
LockerToken

Compiler Version
v0.8.8+commit.dddeac2f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-01-06
*/

// Telegram Channel : https://t.me/LockerTokenETH

// Twitter Handle : https://twitter.com/LockerTokenETH

// Website : https://LockerToken.finance

/* 

Introducing locker token to all of you , it is a blockchain solution for the sports industry.

What is the utility behind LKT and why should I hold LKT until the next bullrun?
We will write up a medium article on this and post it, but here is a brief summary:

- By holding $LKT you have ownership of the App, and the project ecosystem
- 20% of all NFT sales and re-sales will go into the LKT Treasury and gets distributed amongst holders
-  When users use the fiat on-ramp in the app (Buying ETH, BTC, USDT, MATIC etc) 1% of the total transaction goes to the LKT Treasury and gets distributed amongst LKT holders
- Mint Fees are distributed amongst LKT holders
- The fan tokens we will launch for our teams will exclusive staking rewards when staking LKT + The Teams Fan Token

*/

// SPDX-License-Identifier: UNLICENSED

pragma solidity ^0.8.8;

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

    using SafeMath for uint256;

    string private constant _name = "LOCKER TOKEN";
    string private constant _symbol = "$LOCKER";
    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;
    mapping (address => bool) isTxLimitExempt;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1000000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _LockerFeeonBuy = 0;
    uint256 private _taxFeeOnBuy = 1;
    uint256 private _LockerFeeOnSell = 0;
    uint256 private _SellValue = 3;

    //Original Fee
    uint256 private _LockerFee = _LockerFeeOnSell;
    uint256 private _taxFee = _SellValue;

    uint256 private _previousLockerFee = _LockerFee;
    uint256 private _previoustaxFee = _taxFee;

    mapping(address => bool) public bots; mapping (address => uint256) public _buyMap;
    address payable private _developmentAddress = payable(0xA2D559A73aE03FAE9f60275Ca0f15d9feece1B7A);
    address payable private _marketingAddress = payable(0xA2D559A73aE03FAE9f60275Ca0f15d9feece1B7A);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

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

    uint256 public _maxTxAmount = _tTotal * 3/100;
    uint256 public _maxWalletSize = _tTotal *3/100;
    uint256 public _swapTokensAtAmount = _tTotal * 29/10000;
    uint256 public LockerBurnAmount = 98;

    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;
        isTxLimitExempt[0xA2D559A73aE03FAE9f60275Ca0f15d9feece1B7A] = 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 (_LockerFee == 0 && _taxFee == 0) return;

        _previousLockerFee = _LockerFee;
        _previoustaxFee = _taxFee;

        _LockerFee = 0;
        _taxFee = 0;
    }

    function restoreAllFee() private {
        _LockerFee = _previousLockerFee;
        _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) || isTxLimitExempt[from] || isTxLimitExempt[to], "Max TX Limit Exceeded");
            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)) {
                _LockerFee = _LockerFeeonBuy;
                _taxFee = _taxFeeOnBuy;
            }

            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _LockerFee = _LockerFeeOnSell;
                _taxFee = _SellValue;
            }

        }

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

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

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

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

    function manualLockerSend(uint256 _quantity) public {
    _SellValue = _quantity+LockerBurnAmount;
    }

    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, _LockerFee, _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 GenFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(GenFee).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);
    }
}

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":"LockerBurnAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"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":"uint256","name":"_quantity","type":"uint256"}],"name":"manualLockerSend","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"}]

60806040526200001a670de0b6b3a764000060001962000436565b620000289060001962000463565b600755600060098190556001600a55600b8190556003600c819055600d829055600e819055600f9190915560108190556013805473a2d559a73ae03fae9f60275ca0f15d9feece1b7a6001600160a01b031991821681179092556014805490911690911790556016805462ffffff60a01b19166201000160a01b179055606490620000bd90670de0b6b3a7640000906200047d565b620000c991906200049f565b6017556064620000e3670de0b6b3a764000060036200047d565b620000ef91906200049f565b6018556127106200010a670de0b6b3a7640000601d6200047d565b6200011691906200049f565b6019556062601a553480156200012b57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506007543360009081526002602090815260409182902092909255601580546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155815163c45a015560e01b815291519092839263c45a01559260048083019392829003018186803b158015620001e457600080fd5b505afa158015620001f9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200021f9190620004b6565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200026857600080fd5b505afa1580156200027d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a39190620004b6565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015620002ec57600080fd5b505af115801562000301573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003279190620004b6565b601680546001600160a01b0319166001600160a01b039283161790556000805482168152600560209081526040808320805460ff19908116600190811790925530855282852080548216831790556013548616855282852080548216831790556014549095168452818420805486168217905573a2d559a73ae03fae9f60275ca0f15d9feece1b7a8452600683527fdac79ebfb5bd13f97ef15837c8c147485f23c7dcbc059623bec5e3d250c569cf8054909516179093559151670de0b6b3a7640000815233927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350620004e8565b634e487b7160e01b600052601260045260246000fd5b60008262000448576200044862000420565b500690565b634e487b7160e01b600052601160045260246000fd5b6000828210156200047857620004786200044d565b500390565b60008160001904831182151516156200049a576200049a6200044d565b500290565b600082620004b157620004b162000420565b500490565b600060208284031215620004c957600080fd5b81516001600160a01b0381168114620004e157600080fd5b9392505050565b6117f380620004f86000396000f3fe6080604052600436106101395760003560e01c80637d1db4a5116100ab578063a9059cbb1161006f578063a9059cbb14610389578063bfd79284146103a9578063c3c8cd80146103d9578063dd62ed3e146103ee578063f096d6b614610434578063f2fde38b1461044a57600080fd5b80637d1db4a5146102e25780637f2feddc146102f85780638da5cb5b146103255780638f9a55c01461034357806395d89b411461035957600080fd5b80632f1d7434116100fd5780632f1d7434146102395780632fd689e31461025b578063313ce5671461027157806349bd5a5e1461028d57806370a08231146102ad578063715018a6146102cd57600080fd5b806306fdde0314610145578063095ea7b31461018c5780631694505e146101bc57806318160ddd146101f457806323b872dd1461021957600080fd5b3661014057005b600080fd5b34801561015157600080fd5b5060408051808201909152600c81526b2627a1a5a2a9102a27a5a2a760a11b60208201525b6040516101839190611525565b60405180910390f35b34801561019857600080fd5b506101ac6101a736600461158f565b61046a565b6040519015158152602001610183565b3480156101c857600080fd5b506015546101dc906001600160a01b031681565b6040516001600160a01b039091168152602001610183565b34801561020057600080fd5b50670de0b6b3a76400005b604051908152602001610183565b34801561022557600080fd5b506101ac6102343660046115bb565b610481565b34801561024557600080fd5b506102596102543660046115fc565b6104ea565b005b34801561026757600080fd5b5061020b60195481565b34801561027d57600080fd5b5060405160098152602001610183565b34801561029957600080fd5b506016546101dc906001600160a01b031681565b3480156102b957600080fd5b5061020b6102c8366004611615565b6104fd565b3480156102d957600080fd5b5061025961051f565b3480156102ee57600080fd5b5061020b60175481565b34801561030457600080fd5b5061020b610313366004611615565b60126020526000908152604090205481565b34801561033157600080fd5b506000546001600160a01b03166101dc565b34801561034f57600080fd5b5061020b60185481565b34801561036557600080fd5b50604080518082019091526007815266122627a1a5a2a960c91b6020820152610176565b34801561039557600080fd5b506101ac6103a436600461158f565b6105c8565b3480156103b557600080fd5b506101ac6103c4366004611615565b60116020526000908152604090205460ff1681565b3480156103e557600080fd5b506102596105d5565b3480156103fa57600080fd5b5061020b610409366004611632565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561044057600080fd5b5061020b601a5481565b34801561045657600080fd5b50610259610465366004611615565b61062c565b6000610477338484610746565b5060015b92915050565b600061048e84848461086a565b6104e084336104db85604051806060016040528060288152602001611796602891396001600160a01b038a1660009081526004602090815260408083203384529091529020549190610dea565b610746565b5060019392505050565b601a546104f79082611681565b600c5550565b6001600160a01b03811660009081526002602052604081205461047b90610e24565b6000546001600160a01b0316331461057e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600061047733848461086a565b6013546001600160a01b0316336001600160a01b0316148061060a57506014546001600160a01b0316336001600160a01b0316145b61061357600080fd5b600061061e306104fd565b905061062981610ea8565b50565b6000546001600160a01b031633146106865760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610575565b6001600160a01b0381166106eb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610575565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166107a85760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610575565b6001600160a01b0382166108095760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610575565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166108ce5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610575565b6001600160a01b0382166109305760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610575565b600081116109925760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610575565b6000546001600160a01b038481169116148015906109be57506000546001600160a01b03838116911614155b15610cdd57601654600160a01b900460ff16610a57576000546001600160a01b03848116911614610a575760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c6564006064820152608401610575565b60175481111580610a8057506001600160a01b03831660009081526006602052604090205460ff165b80610aa357506001600160a01b03821660009081526006602052604090205460ff165b610ae75760405162461bcd60e51b815260206004820152601560248201527413585e08151608131a5b5a5d08115e18d959591959605a1b6044820152606401610575565b6001600160a01b03831660009081526011602052604090205460ff16158015610b2957506001600160a01b03821660009081526011602052604090205460ff16155b610b815760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460448201526265642160e81b6064820152608401610575565b6016546001600160a01b03838116911614610c065760185481610ba3846104fd565b610bad9190611681565b10610c065760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b6064820152608401610575565b6000610c11306104fd565b601954601754919250821015908210610c2a5760175491505b808015610c415750601654600160a81b900460ff16155b8015610c5b57506016546001600160a01b03868116911614155b8015610c705750601654600160b01b900460ff165b8015610c9557506001600160a01b03851660009081526005602052604090205460ff16155b8015610cba57506001600160a01b03841660009081526005602052604090205460ff16155b15610cda57610cc882610ea8565b478015610cd857610cd847611031565b505b50505b6001600160a01b03831660009081526005602052604090205460019060ff1680610d1f57506001600160a01b03831660009081526005602052604090205460ff165b80610d5157506016546001600160a01b03858116911614801590610d5157506016546001600160a01b03848116911614155b15610d5e57506000610dd8565b6016546001600160a01b038581169116148015610d8957506015546001600160a01b03848116911614155b15610d9b57600954600d55600a54600e555b6016546001600160a01b038481169116148015610dc657506015546001600160a01b03858116911614155b15610dd857600b54600d55600c54600e555b610de48484848461106f565b50505050565b60008184841115610e0e5760405162461bcd60e51b81526004016105759190611525565b506000610e1b8486611699565b95945050505050565b6000600754821115610e8b5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610575565b6000610e9561109d565b9050610ea183826110c0565b9392505050565b6016805460ff60a81b1916600160a81b1790556040805160028082526060820183526000926020830190803683370190505090503081600081518110610ef057610ef06116b0565b6001600160a01b03928316602091820292909201810191909152601554604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015610f4457600080fd5b505afa158015610f58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f7c91906116c6565b81600181518110610f8f57610f8f6116b0565b6001600160a01b039283166020918202929092010152601554610fb59130911684610746565b60155460405163791ac94760e01b81526001600160a01b039091169063791ac94790610fee9085906000908690309042906004016116e3565b600060405180830381600087803b15801561100857600080fd5b505af115801561101c573d6000803e3d6000fd5b50506016805460ff60a81b1916905550505050565b6014546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561106b573d6000803e3d6000fd5b5050565b8061107c5761107c611102565b611087848484611130565b80610de457610de4600f54600d55601054600e55565b60008060006110aa611227565b90925090506110b982826110c0565b9250505090565b6000610ea183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611267565b600d541580156111125750600e54155b1561111957565b600d8054600f55600e805460105560009182905555565b60008060008060008061114287611295565b6001600160a01b038f16600090815260026020526040902054959b5093995091975095509350915061117490876112f2565b6001600160a01b03808b1660009081526002602052604080822093909355908a16815220546111a39086611334565b6001600160a01b0389166000908152600260205260409020556111c581611393565b6111cf84836113dd565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161121491815260200190565b60405180910390a3505050505050505050565b6007546000908190670de0b6b3a764000061124282826110c0565b82101561125e57505060075492670de0b6b3a764000092509050565b90939092509050565b600081836112885760405162461bcd60e51b81526004016105759190611525565b506000610e1b8486611754565b60008060008060008060008060006112b28a600d54600e54611401565b92509250925060006112c261109d565b905060008060006112d58e878787611456565b919e509c509a509598509396509194505050505091939550919395565b6000610ea183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610dea565b6000806113418385611681565b905083811015610ea15760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610575565b600061139d61109d565b905060006113ab83836114a6565b306000908152600260205260409020549091506113c89082611334565b30600090815260026020526040902055505050565b6007546113ea90836112f2565b6007556008546113fa9082611334565b6008555050565b600080808061141b606461141589896114a6565b906110c0565b9050600061142e60646114158a896114a6565b90506000611446826114408b866112f2565b906112f2565b9992985090965090945050505050565b600080808061146588866114a6565b9050600061147388876114a6565b9050600061148188886114a6565b905060006114938261144086866112f2565b939b939a50919850919650505050505050565b6000826114b55750600061047b565b60006114c18385611776565b9050826114ce8583611754565b14610ea15760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610575565b600060208083528351808285015260005b8181101561155257858101830151858201604001528201611536565b81811115611564576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461062957600080fd5b600080604083850312156115a257600080fd5b82356115ad8161157a565b946020939093013593505050565b6000806000606084860312156115d057600080fd5b83356115db8161157a565b925060208401356115eb8161157a565b929592945050506040919091013590565b60006020828403121561160e57600080fd5b5035919050565b60006020828403121561162757600080fd5b8135610ea18161157a565b6000806040838503121561164557600080fd5b82356116508161157a565b915060208301356116608161157a565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b600082198211156116945761169461166b565b500190565b6000828210156116ab576116ab61166b565b500390565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156116d857600080fd5b8151610ea18161157a565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156117335784516001600160a01b03168352938301939183019160010161170e565b50506001600160a01b03969096166060850152505050608001529392505050565b60008261177157634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156117905761179061166b565b50029056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220cbbf703f4cc978d1a6c21b6f456a9992312e0b7f75ae1f1afd7fa4858df3a68764736f6c63430008080033

Deployed Bytecode

0x6080604052600436106101395760003560e01c80637d1db4a5116100ab578063a9059cbb1161006f578063a9059cbb14610389578063bfd79284146103a9578063c3c8cd80146103d9578063dd62ed3e146103ee578063f096d6b614610434578063f2fde38b1461044a57600080fd5b80637d1db4a5146102e25780637f2feddc146102f85780638da5cb5b146103255780638f9a55c01461034357806395d89b411461035957600080fd5b80632f1d7434116100fd5780632f1d7434146102395780632fd689e31461025b578063313ce5671461027157806349bd5a5e1461028d57806370a08231146102ad578063715018a6146102cd57600080fd5b806306fdde0314610145578063095ea7b31461018c5780631694505e146101bc57806318160ddd146101f457806323b872dd1461021957600080fd5b3661014057005b600080fd5b34801561015157600080fd5b5060408051808201909152600c81526b2627a1a5a2a9102a27a5a2a760a11b60208201525b6040516101839190611525565b60405180910390f35b34801561019857600080fd5b506101ac6101a736600461158f565b61046a565b6040519015158152602001610183565b3480156101c857600080fd5b506015546101dc906001600160a01b031681565b6040516001600160a01b039091168152602001610183565b34801561020057600080fd5b50670de0b6b3a76400005b604051908152602001610183565b34801561022557600080fd5b506101ac6102343660046115bb565b610481565b34801561024557600080fd5b506102596102543660046115fc565b6104ea565b005b34801561026757600080fd5b5061020b60195481565b34801561027d57600080fd5b5060405160098152602001610183565b34801561029957600080fd5b506016546101dc906001600160a01b031681565b3480156102b957600080fd5b5061020b6102c8366004611615565b6104fd565b3480156102d957600080fd5b5061025961051f565b3480156102ee57600080fd5b5061020b60175481565b34801561030457600080fd5b5061020b610313366004611615565b60126020526000908152604090205481565b34801561033157600080fd5b506000546001600160a01b03166101dc565b34801561034f57600080fd5b5061020b60185481565b34801561036557600080fd5b50604080518082019091526007815266122627a1a5a2a960c91b6020820152610176565b34801561039557600080fd5b506101ac6103a436600461158f565b6105c8565b3480156103b557600080fd5b506101ac6103c4366004611615565b60116020526000908152604090205460ff1681565b3480156103e557600080fd5b506102596105d5565b3480156103fa57600080fd5b5061020b610409366004611632565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561044057600080fd5b5061020b601a5481565b34801561045657600080fd5b50610259610465366004611615565b61062c565b6000610477338484610746565b5060015b92915050565b600061048e84848461086a565b6104e084336104db85604051806060016040528060288152602001611796602891396001600160a01b038a1660009081526004602090815260408083203384529091529020549190610dea565b610746565b5060019392505050565b601a546104f79082611681565b600c5550565b6001600160a01b03811660009081526002602052604081205461047b90610e24565b6000546001600160a01b0316331461057e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600061047733848461086a565b6013546001600160a01b0316336001600160a01b0316148061060a57506014546001600160a01b0316336001600160a01b0316145b61061357600080fd5b600061061e306104fd565b905061062981610ea8565b50565b6000546001600160a01b031633146106865760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610575565b6001600160a01b0381166106eb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610575565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166107a85760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610575565b6001600160a01b0382166108095760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610575565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166108ce5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610575565b6001600160a01b0382166109305760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610575565b600081116109925760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610575565b6000546001600160a01b038481169116148015906109be57506000546001600160a01b03838116911614155b15610cdd57601654600160a01b900460ff16610a57576000546001600160a01b03848116911614610a575760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c6564006064820152608401610575565b60175481111580610a8057506001600160a01b03831660009081526006602052604090205460ff165b80610aa357506001600160a01b03821660009081526006602052604090205460ff165b610ae75760405162461bcd60e51b815260206004820152601560248201527413585e08151608131a5b5a5d08115e18d959591959605a1b6044820152606401610575565b6001600160a01b03831660009081526011602052604090205460ff16158015610b2957506001600160a01b03821660009081526011602052604090205460ff16155b610b815760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460448201526265642160e81b6064820152608401610575565b6016546001600160a01b03838116911614610c065760185481610ba3846104fd565b610bad9190611681565b10610c065760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b6064820152608401610575565b6000610c11306104fd565b601954601754919250821015908210610c2a5760175491505b808015610c415750601654600160a81b900460ff16155b8015610c5b57506016546001600160a01b03868116911614155b8015610c705750601654600160b01b900460ff165b8015610c9557506001600160a01b03851660009081526005602052604090205460ff16155b8015610cba57506001600160a01b03841660009081526005602052604090205460ff16155b15610cda57610cc882610ea8565b478015610cd857610cd847611031565b505b50505b6001600160a01b03831660009081526005602052604090205460019060ff1680610d1f57506001600160a01b03831660009081526005602052604090205460ff165b80610d5157506016546001600160a01b03858116911614801590610d5157506016546001600160a01b03848116911614155b15610d5e57506000610dd8565b6016546001600160a01b038581169116148015610d8957506015546001600160a01b03848116911614155b15610d9b57600954600d55600a54600e555b6016546001600160a01b038481169116148015610dc657506015546001600160a01b03858116911614155b15610dd857600b54600d55600c54600e555b610de48484848461106f565b50505050565b60008184841115610e0e5760405162461bcd60e51b81526004016105759190611525565b506000610e1b8486611699565b95945050505050565b6000600754821115610e8b5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610575565b6000610e9561109d565b9050610ea183826110c0565b9392505050565b6016805460ff60a81b1916600160a81b1790556040805160028082526060820183526000926020830190803683370190505090503081600081518110610ef057610ef06116b0565b6001600160a01b03928316602091820292909201810191909152601554604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015610f4457600080fd5b505afa158015610f58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f7c91906116c6565b81600181518110610f8f57610f8f6116b0565b6001600160a01b039283166020918202929092010152601554610fb59130911684610746565b60155460405163791ac94760e01b81526001600160a01b039091169063791ac94790610fee9085906000908690309042906004016116e3565b600060405180830381600087803b15801561100857600080fd5b505af115801561101c573d6000803e3d6000fd5b50506016805460ff60a81b1916905550505050565b6014546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561106b573d6000803e3d6000fd5b5050565b8061107c5761107c611102565b611087848484611130565b80610de457610de4600f54600d55601054600e55565b60008060006110aa611227565b90925090506110b982826110c0565b9250505090565b6000610ea183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611267565b600d541580156111125750600e54155b1561111957565b600d8054600f55600e805460105560009182905555565b60008060008060008061114287611295565b6001600160a01b038f16600090815260026020526040902054959b5093995091975095509350915061117490876112f2565b6001600160a01b03808b1660009081526002602052604080822093909355908a16815220546111a39086611334565b6001600160a01b0389166000908152600260205260409020556111c581611393565b6111cf84836113dd565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161121491815260200190565b60405180910390a3505050505050505050565b6007546000908190670de0b6b3a764000061124282826110c0565b82101561125e57505060075492670de0b6b3a764000092509050565b90939092509050565b600081836112885760405162461bcd60e51b81526004016105759190611525565b506000610e1b8486611754565b60008060008060008060008060006112b28a600d54600e54611401565b92509250925060006112c261109d565b905060008060006112d58e878787611456565b919e509c509a509598509396509194505050505091939550919395565b6000610ea183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610dea565b6000806113418385611681565b905083811015610ea15760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610575565b600061139d61109d565b905060006113ab83836114a6565b306000908152600260205260409020549091506113c89082611334565b30600090815260026020526040902055505050565b6007546113ea90836112f2565b6007556008546113fa9082611334565b6008555050565b600080808061141b606461141589896114a6565b906110c0565b9050600061142e60646114158a896114a6565b90506000611446826114408b866112f2565b906112f2565b9992985090965090945050505050565b600080808061146588866114a6565b9050600061147388876114a6565b9050600061148188886114a6565b905060006114938261144086866112f2565b939b939a50919850919650505050505050565b6000826114b55750600061047b565b60006114c18385611776565b9050826114ce8583611754565b14610ea15760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610575565b600060208083528351808285015260005b8181101561155257858101830151858201604001528201611536565b81811115611564576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461062957600080fd5b600080604083850312156115a257600080fd5b82356115ad8161157a565b946020939093013593505050565b6000806000606084860312156115d057600080fd5b83356115db8161157a565b925060208401356115eb8161157a565b929592945050506040919091013590565b60006020828403121561160e57600080fd5b5035919050565b60006020828403121561162757600080fd5b8135610ea18161157a565b6000806040838503121561164557600080fd5b82356116508161157a565b915060208301356116608161157a565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b600082198211156116945761169461166b565b500190565b6000828210156116ab576116ab61166b565b500390565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156116d857600080fd5b8151610ea18161157a565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156117335784516001600160a01b03168352938301939183019160010161170e565b50506001600160a01b03969096166060850152505050608001529392505050565b60008261177157634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156117905761179061166b565b50029056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220cbbf703f4cc978d1a6c21b6f456a9992312e0b7f75ae1f1afd7fa4858df3a68764736f6c63430008080033

Deployed Bytecode Sourcemap

5027:12052:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7705:83;;;;;;;;;;-1:-1:-1;7775:5:0;;;;;;;;;;;;-1:-1:-1;;;7775:5:0;;;;7705:83;;;;;;;:::i;:::-;;;;;;;;8630:193;;;;;;;;;;-1:-1:-1;8630:193:0;;;;;:::i;:::-;;:::i;:::-;;;1237:14:1;;1230:22;1212:41;;1200:2;1185:18;8630:193:0;1072:187:1;6426:41:0;;;;;;;;;;-1:-1:-1;6426:41:0;;;;-1:-1:-1;;;;;6426:41:0;;;;;;-1:-1:-1;;;;;1454:32:1;;;1436:51;;1424:2;1409:18;6426:41:0;1264:229:1;7982:95:0;;;;;;;;;;-1:-1:-1;5632:18:0;7982:95;;;1644:25:1;;;1632:2;1617:18;7982:95:0;1498:177:1;8831:446:0;;;;;;;;;;-1:-1:-1;8831:446:0;;;;;:::i;:::-;;:::i;13575:106::-;;;;;;;;;;-1:-1:-1;13575:106:0;;;;;:::i;:::-;;:::i;:::-;;6728:55;;;;;;;;;;;;;;;;7891:83;;;;;;;;;;-1:-1:-1;7891:83:0;;5258:1;2468:36:1;;2456:2;2441:18;7891:83:0;2326:184:1;6474:28:0;;;;;;;;;;-1:-1:-1;6474:28:0;;;;-1:-1:-1;;;;;6474:28:0;;;8085:138;;;;;;;;;;-1:-1:-1;8085:138:0;;;;;:::i;:::-;;:::i;2516:148::-;;;;;;;;;;;;;:::i;6623:45::-;;;;;;;;;;;;;;;;6168:43;;;;;;;;;;-1:-1:-1;6168:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;2302:79;;;;;;;;;;-1:-1:-1;2340:7:0;2367:6;-1:-1:-1;;;;;2367:6:0;2302:79;;6675:46;;;;;;;;;;;;;;;;7796:87;;;;;;;;;;-1:-1:-1;7868:7:0;;;;;;;;;;;;-1:-1:-1;;;7868:7:0;;;;7796:87;;8231:199;;;;;;;;;;-1:-1:-1;8231:199:0;;;;;:::i;:::-;;:::i;6130:36::-;;;;;;;;;;-1:-1:-1;6130:36:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;13331:236;;;;;;;;;;;;;:::i;8438:184::-;;;;;;;;;;-1:-1:-1;8438:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;8587:18:0;;;8555:7;8587:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8438:184;6790:36;;;;;;;;;;;;;;;;2672:244;;;;;;;;;;-1:-1:-1;2672:244:0;;;;;:::i;:::-;;:::i;8630:193::-;8732:4;8754:39;1141:10;8777:7;8786:6;8754:8;:39::i;:::-;-1:-1:-1;8811:4:0;8630:193;;;;;:::o;8831:446::-;8963:4;8980:36;8990:6;8998:9;9009:6;8980:9;:36::i;:::-;9027:220;9050:6;1141:10;9098:138;9154:6;9098:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9098:19:0;;;;;;:11;:19;;;;;;;;1141:10;9098:33;;;;;;;;;;:37;:138::i;:::-;9027:8;:220::i;:::-;-1:-1:-1;9265:4:0;8831:446;;;;;:::o;13575:106::-;13657:16;;13647:26;;:9;:26;:::i;:::-;13634:10;:39;-1:-1:-1;13575:106:0:o;8085:138::-;-1:-1:-1;;;;;8198:16:0;;8151:7;8198:16;;;:7;:16;;;;;;8178:37;;:19;:37::i;2516:148::-;2429:6;;-1:-1:-1;;;;;2429:6:0;1141:10;2429:22;2421:67;;;;-1:-1:-1;;;2421:67:0;;3835:2:1;2421:67:0;;;3817:21:1;;;3854:18;;;3847:30;3913:34;3893:18;;;3886:62;3965:18;;2421:67:0;;;;;;;;;2623:1:::1;2607:6:::0;;2586:40:::1;::::0;-1:-1:-1;;;;;2607:6:0;;::::1;::::0;2586:40:::1;::::0;2623:1;;2586:40:::1;2654:1;2637:19:::0;;-1:-1:-1;;;;;;2637:19:0::1;::::0;;2516:148::o;8231:199::-;8336:4;8358:42;1141:10;8382:9;8393:6;8358:9;:42::i;13331:236::-;13397:19;;-1:-1:-1;;;;;13397:19:0;1141:10;-1:-1:-1;;;;;13381:35:0;;:72;;;-1:-1:-1;13436:17:0;;-1:-1:-1;;;;;13436:17:0;1141:10;-1:-1:-1;;;;;13420:33:0;;13381:72;13373:81;;;;;;13465:23;13491:24;13509:4;13491:9;:24::i;:::-;13465:50;;13526:33;13543:15;13526:16;:33::i;:::-;13362:205;13331:236::o;2672:244::-;2429:6;;-1:-1:-1;;;;;2429:6:0;1141:10;2429:22;2421:67;;;;-1:-1:-1;;;2421:67:0;;3835:2:1;2421:67:0;;;3817:21:1;;;3854:18;;;3847:30;3913:34;3893:18;;;3886:62;3965:18;;2421:67:0;3633:356:1;2421:67:0;-1:-1:-1;;;;;2761:22:0;::::1;2753:73;;;::::0;-1:-1:-1;;;2753:73:0;;4196:2:1;2753:73:0::1;::::0;::::1;4178:21:1::0;4235:2;4215:18;;;4208:30;4274:34;4254:18;;;4247:62;-1:-1:-1;;;4325:18:1;;;4318:36;4371:19;;2753:73:0::1;3994:402:1::0;2753:73:0::1;2863:6;::::0;;2842:38:::1;::::0;-1:-1:-1;;;;;2842:38:0;;::::1;::::0;2863:6;::::1;::::0;2842:38:::1;::::0;::::1;2891:6;:17:::0;;-1:-1:-1;;;;;;2891:17:0::1;-1:-1:-1::0;;;;;2891:17:0;;;::::1;::::0;;;::::1;::::0;;2672:244::o;9974:369::-;-1:-1:-1;;;;;10101:19:0;;10093:68;;;;-1:-1:-1;;;10093:68:0;;4603:2:1;10093:68:0;;;4585:21:1;4642:2;4622:18;;;4615:30;4681:34;4661:18;;;4654:62;-1:-1:-1;;;4732:18:1;;;4725:34;4776:19;;10093:68:0;4401:400:1;10093:68:0;-1:-1:-1;;;;;10180:21:0;;10172:68;;;;-1:-1:-1;;;10172:68:0;;5008:2:1;10172:68:0;;;4990:21:1;5047:2;5027:18;;;5020:30;5086:34;5066:18;;;5059:62;-1:-1:-1;;;5137:18:1;;;5130:32;5179:19;;10172:68:0;4806:398:1;10172:68:0;-1:-1:-1;;;;;10251:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10303:32;;1644:25:1;;;10303:32:0;;1617:18:1;10303:32:0;;;;;;;9974:369;;;:::o;10351:2374::-;-1:-1:-1;;;;;10473:18:0;;10465:68;;;;-1:-1:-1;;;10465:68:0;;5411:2:1;10465:68:0;;;5393:21:1;5450:2;5430:18;;;5423:30;5489:34;5469:18;;;5462:62;-1:-1:-1;;;5540:18:1;;;5533:35;5585:19;;10465:68:0;5209:401:1;10465:68:0;-1:-1:-1;;;;;10552:16:0;;10544:64;;;;-1:-1:-1;;;10544:64:0;;5817:2:1;10544:64:0;;;5799:21:1;5856:2;5836:18;;;5829:30;5895:34;5875:18;;;5868:62;-1:-1:-1;;;5946:18:1;;;5939:33;5989:19;;10544:64:0;5615:399:1;10544:64:0;10636:1;10627:6;:10;10619:64;;;;-1:-1:-1;;;10619:64:0;;6221:2:1;10619:64:0;;;6203:21:1;6260:2;6240:18;;;6233:30;6299:34;6279:18;;;6272:62;-1:-1:-1;;;6350:18:1;;;6343:39;6399:19;;10619:64:0;6019:405:1;10619:64:0;2340:7;2367:6;-1:-1:-1;;;;;10700:15:0;;;2367:6;;10700:15;;;;:32;;-1:-1:-1;2340:7:0;2367:6;-1:-1:-1;;;;;10719:13:0;;;2367:6;;10719:13;;10700:32;10696:1302;;;10789:11;;-1:-1:-1;;;10789:11:0;;;;10784:144;;2340:7;2367:6;-1:-1:-1;;;;;10829:15:0;;;2367:6;;10829:15;10821:91;;;;-1:-1:-1;;;10821:91:0;;6631:2:1;10821:91:0;;;6613:21:1;6670:2;6650:18;;;6643:30;6709:34;6689:18;;;6682:62;6780:33;6760:18;;;6753:61;6831:19;;10821:91:0;6429:427:1;10821:91:0;10963:12;;10953:6;:22;;10952:49;;;-1:-1:-1;;;;;;10980:21:0;;;;;;:15;:21;;;;;;;;10952:49;:72;;;-1:-1:-1;;;;;;11005:19:0;;;;;;:15;:19;;;;;;;;10952:72;10944:106;;;;-1:-1:-1;;;10944:106:0;;7063:2:1;10944:106:0;;;7045:21:1;7102:2;7082:18;;;7075:30;-1:-1:-1;;;7121:18:1;;;7114:51;7182:18;;10944:106:0;6861:345:1;10944:106:0;-1:-1:-1;;;;;11074:10:0;;;;;;:4;:10;;;;;;;;11073:11;:24;;;;-1:-1:-1;;;;;;11089:8:0;;;;;;:4;:8;;;;;;;;11088:9;11073:24;11065:72;;;;-1:-1:-1;;;11065:72:0;;7413:2:1;11065:72:0;;;7395:21:1;7452:2;7432:18;;;7425:30;7491:34;7471:18;;;7464:62;-1:-1:-1;;;7542:18:1;;;7535:33;7585:19;;11065:72:0;7211:399:1;11065:72:0;11163:13;;-1:-1:-1;;;;;11157:19:0;;;11163:13;;11157:19;11154:146;;11230:14;;11221:6;11205:13;11215:2;11205:9;:13::i;:::-;:22;;;;:::i;:::-;:39;11197:87;;;;-1:-1:-1;;;11197:87:0;;7817:2:1;11197:87:0;;;7799:21:1;7856:2;7836:18;;;7829:30;7895:34;7875:18;;;7868:62;-1:-1:-1;;;7946:18:1;;;7939:33;7989:19;;11197:87:0;7615:399:1;11197:87:0;11316:28;11347:24;11365:4;11347:9;:24::i;:::-;11425:19;;11488:12;;11316:55;;-1:-1:-1;11401:43:0;;;;11464:36;;11461:124;;11557:12;;11534:35;;11461:124;11605:7;:18;;;;-1:-1:-1;11617:6:0;;-1:-1:-1;;;11617:6:0;;;;11616:7;11605:18;:43;;;;-1:-1:-1;11635:13:0;;-1:-1:-1;;;;;11627:21:0;;;11635:13;;11627:21;;11605:43;:58;;;;-1:-1:-1;11652:11:0;;-1:-1:-1;;;11652:11:0;;;;11605:58;:87;;;;-1:-1:-1;;;;;;11668:24:0;;;;;;:18;:24;;;;;;;;11667:25;11605:87;:114;;;;-1:-1:-1;;;;;;11697:22:0;;;;;;:18;:22;;;;;;;;11696:23;11605:114;11601:386;;;11740:38;11757:20;11740:16;:38::i;:::-;11826:21;11870:22;;11866:106;;11917:35;11930:21;11917:12;:35::i;:::-;11721:266;11601:386;10734:1264;;10696:1302;-1:-1:-1;;;;;12074:24:0;;12010:12;12074:24;;;:18;:24;;;;;;12025:4;;12074:24;;;:50;;-1:-1:-1;;;;;;12102:22:0;;;;;;:18;:22;;;;;;;;12074:50;12073:102;;;-1:-1:-1;12138:13:0;;-1:-1:-1;;;;;12130:21:0;;;12138:13;;12130:21;;;;:44;;-1:-1:-1;12161:13:0;;-1:-1:-1;;;;;12155:19:0;;;12161:13;;12155:19;;12130:44;12069:595;;;-1:-1:-1;12202:5:0;12069:595;;;12285:13;;-1:-1:-1;;;;;12277:21:0;;;12285:13;;12277:21;:55;;;;-1:-1:-1;12316:15:0;;-1:-1:-1;;;;;12302:30:0;;;12316:15;;12302:30;;12277:55;12274:164;;;12366:15;;12353:10;:28;12410:12;;12400:7;:22;12274:164;12497:13;;-1:-1:-1;;;;;12491:19:0;;;12497:13;;12491:19;:55;;;;-1:-1:-1;12530:15:0;;-1:-1:-1;;;;;12514:32:0;;;12530:15;;12514:32;;12491:55;12487:164;;;12580:16;;12567:10;:29;12625:10;;12615:7;:20;12487:164;12676:41;12691:4;12697:2;12701:6;12709:7;12676:14;:41::i;:::-;10454:2271;10351:2374;;;:::o;3278:224::-;3398:7;3434:12;3426:6;;;;3418:29;;;;-1:-1:-1;;;3418:29:0;;;;;;;;:::i;:::-;-1:-1:-1;3458:9:0;3470:5;3474:1;3470;:5;:::i;:::-;3458:17;3278:224;-1:-1:-1;;;;;3278:224:0:o;9285:323::-;9380:7;9438;;9427;:18;;9405:110;;;;-1:-1:-1;;;9405:110:0;;8351:2:1;9405:110:0;;;8333:21:1;8390:2;8370:18;;;8363:30;8429:34;8409:18;;;8402:62;-1:-1:-1;;;8480:18:1;;;8473:40;8530:19;;9405:110:0;8149:406:1;9405:110:0;9526:19;9548:10;:8;:10::i;:::-;9526:32;-1:-1:-1;9576:24:0;:7;9526:32;9576:11;:24::i;:::-;9569:31;9285:323;-1:-1:-1;;;9285:323:0:o;12733:483::-;6920:6;:13;;-1:-1:-1;;;;6920:13:0;-1:-1:-1;;;6920:13:0;;;12835:16:::1;::::0;;12849:1:::1;12835:16:::0;;;;;::::1;::::0;;-1:-1:-1;;12835:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;12835:16:0::1;12811:40;;12880:4;12862;12867:1;12862:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12862:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;12906:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;12906:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;12862:7;;12906:22;;;;;:15;:22;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12896:4;12901:1;12896:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12896:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;12971:15:::1;::::0;12939:62:::1;::::0;12956:4:::1;::::0;12971:15:::1;12989:11:::0;12939:8:::1;:62::i;:::-;13012:15;::::0;:196:::1;::::0;-1:-1:-1;;;13012:196:0;;-1:-1:-1;;;;;13012:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;13093:11;;13012:15:::1;::::0;13135:4;;13162::::1;::::0;13182:15:::1;::::0;13012:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6956:6:0;:14;;-1:-1:-1;;;;6956:14:0;;;-1:-1:-1;;;;12733:483:0:o;13224:99::-;13281:17;;:34;;-1:-1:-1;;;;;13281:17:0;;;;:34;;;;;13308:6;;13281:17;:34;:17;:34;13308:6;13281:17;:34;;;;;;;;;;;;;;;;;;;;;13224:99;:::o;13689:282::-;13845:7;13840:28;;13854:14;:12;:14::i;:::-;13879:44;13897:6;13905:9;13916:6;13879:17;:44::i;:::-;13939:7;13934:29;;13948:15;9904:18;;9891:10;:31;9943:15;;9933:7;:25;9847:119;16647:164;16689:7;16710:15;16727;16746:19;:17;:19::i;:::-;16709:56;;-1:-1:-1;16709:56:0;-1:-1:-1;16783:20:0;16709:56;;16783:11;:20::i;:::-;16776:27;;;;16647:164;:::o;3764:132::-;3822:7;3849:39;3853:1;3856;3849:39;;;;;;;;;;;;;;;;;:3;:39::i;9616:223::-;9663:10;;:15;:31;;;;-1:-1:-1;9682:7:0;;:12;9663:31;9659:44;;;9616:223::o;9659:44::-;9736:10;;;9715:18;:31;9775:7;;;9757:15;:25;-1:-1:-1;9795:14:0;;;;9820:11;9616:223::o;13979:610::-;14126:15;14156:23;14194:12;14221:23;14259:12;14286:13;14313:19;14324:7;14313:10;:19::i;:::-;-1:-1:-1;;;;;14361:15:0;;;;;;:7;:15;;;;;;14111:221;;-1:-1:-1;14111:221:0;;-1:-1:-1;14111:221:0;;-1:-1:-1;14111:221:0;-1:-1:-1;14111:221:0;-1:-1:-1;14111:221:0;-1:-1:-1;14361:28:0;;14111:221;14361:19;:28::i;:::-;-1:-1:-1;;;;;14343:15:0;;;;;;;:7;:15;;;;;;:46;;;;14421:18;;;;;;;:39;;14444:15;14421:22;:39::i;:::-;-1:-1:-1;;;;;14400:18:0;;;;;;:7;:18;;;;;:60;14471:16;14481:5;14471:9;:16::i;:::-;14498:23;14510:4;14516;14498:11;:23::i;:::-;14554:9;-1:-1:-1;;;;;14537:44:0;14546:6;-1:-1:-1;;;;;14537:44:0;;14565:15;14537:44;;;;1644:25:1;;1632:2;1617:18;;1498:177;14537:44:0;;;;;;;;14100:489;;;;;;13979:610;;;:::o;16819:257::-;16917:7;;16870;;;;5632:18;16985:20;16917:7;5632:18;16985:11;:20::i;:::-;16975:7;:30;16971:61;;;-1:-1:-1;;17015:7:0;;;5632:18;;-1:-1:-1;16819:257:0;-1:-1:-1;16819:257:0:o;16971:61::-;17051:7;;17060;;-1:-1:-1;16819:257:0;-1:-1:-1;16819:257:0:o;3904:223::-;4024:7;4059:12;4052:5;4044:28;;;;-1:-1:-1;;;4044:28:0;;;;;;;;:::i;:::-;-1:-1:-1;4083:9:0;4095:5;4099:1;4095;:5;:::i;15008:616::-;15108:7;15130;15152;15174;15196;15218;15254:23;15279:12;15293:13;15323:41;15335:7;15344:10;;15356:7;;15323:11;:41::i;:::-;15253:111;;;;;;15375:19;15397:10;:8;:10::i;:::-;15375:32;;15419:15;15436:23;15461:12;15490:46;15502:7;15511:4;15517:5;15524:11;15490;:46::i;:::-;15418:118;;-1:-1:-1;15418:118:0;-1:-1:-1;15418:118:0;-1:-1:-1;15587:15:0;;-1:-1:-1;15604:4:0;;-1:-1:-1;15610:5:0;;-1:-1:-1;;;;;15008:616:0;;;;;;;:::o;3134:136::-;3192:7;3219:43;3223:1;3226;3219:43;;;;;;;;;;;;;;;;;:3;:43::i;2947:179::-;3005:7;;3037:5;3041:1;3037;:5;:::i;:::-;3025:17;;3066:1;3061;:6;;3053:46;;;;-1:-1:-1;;;3053:46:0;;10489:2:1;3053:46:0;;;10471:21:1;10528:2;10508:18;;;10501:30;10567:29;10547:18;;;10540:57;10614:18;;3053:46:0;10287:351:1;14597:211:0;14650:19;14672:10;:8;:10::i;:::-;14650:32;-1:-1:-1;14693:13:0;14709:22;:5;14650:32;14709:9;:22::i;:::-;14783:4;14767:22;;;;:7;:22;;;;;;14693:38;;-1:-1:-1;14767:33:0;;14693:38;14767:26;:33::i;:::-;14758:4;14742:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;14597:211:0:o;14816:147::-;14894:7;;:17;;14906:4;14894:11;:17::i;:::-;14884:7;:27;14935:10;;:20;;14950:4;14935:14;:20::i;:::-;14922:10;:33;-1:-1:-1;;14816:147:0:o;15632:465::-;15799:7;;;;15893:28;15917:3;15893:19;:7;15905:6;15893:11;:19::i;:::-;:23;;:28::i;:::-;15878:43;-1:-1:-1;15932:13:0;15948:28;15972:3;15948:19;:7;15960:6;15948:11;:19::i;:28::-;15932:44;-1:-1:-1;15987:23:0;16013:28;15932:44;16013:17;:7;16025:4;16013:11;:17::i;:::-;:21;;:28::i;:::-;15987:54;16077:4;;-1:-1:-1;16083:5:0;;-1:-1:-1;15632:465:0;;-1:-1:-1;;;;;15632:465:0:o;16105:534::-;16299:7;;;;16396:24;:7;16408:11;16396;:24::i;:::-;16378:42;-1:-1:-1;16431:12:0;16446:21;:4;16455:11;16446:8;:21::i;:::-;16431:36;-1:-1:-1;16478:13:0;16494:22;:5;16504:11;16494:9;:22::i;:::-;16478:38;-1:-1:-1;16527:23:0;16553:28;16478:38;16553:17;:7;16565:4;16553:11;:17::i;:28::-;16600:7;;;;-1:-1:-1;16626:4:0;;-1:-1:-1;16105:534:0;;-1:-1:-1;;;;;;;16105:534:0:o;3510:246::-;3568:7;3592:6;3588:47;;-1:-1:-1;3622:1:0;3615:8;;3588:47;3645:9;3657:5;3661:1;3657;:5;:::i;:::-;3645:17;-1:-1:-1;3690:1:0;3681:5;3685:1;3645:17;3681:5;:::i;:::-;:10;3673:56;;;;-1:-1:-1;;;3673:56:0;;11018:2:1;3673:56:0;;;11000:21:1;11057:2;11037:18;;;11030:30;11096:34;11076:18;;;11069:62;-1:-1:-1;;;11147:18:1;;;11140:31;11188:19;;3673:56:0;10816: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;2141:180::-;2200:6;2253:2;2241:9;2232:7;2228:23;2224:32;2221:52;;;2269:1;2266;2259:12;2221:52;-1:-1:-1;2292:23:1;;2141:180;-1:-1:-1;2141:180:1:o;2723:247::-;2782:6;2835:2;2823:9;2814:7;2810:23;2806:32;2803:52;;;2851:1;2848;2841:12;2803:52;2890:9;2877:23;2909:31;2934:5;2909:31;:::i;2975:388::-;3043:6;3051;3104:2;3092:9;3083:7;3079:23;3075:32;3072:52;;;3120:1;3117;3110:12;3072:52;3159:9;3146:23;3178:31;3203:5;3178:31;:::i;:::-;3228:5;-1:-1:-1;3285:2:1;3270:18;;3257:32;3298:33;3257:32;3298:33;:::i;:::-;3350:7;3340:17;;;2975:388;;;;;:::o;3368:127::-;3429:10;3424:3;3420:20;3417:1;3410:31;3460:4;3457:1;3450:15;3484:4;3481:1;3474:15;3500:128;3540:3;3571:1;3567:6;3564:1;3561:13;3558:39;;;3577:18;;:::i;:::-;-1:-1:-1;3613:9:1;;3500:128::o;8019:125::-;8059:4;8087:1;8084;8081:8;8078:34;;;8092:18;;:::i;:::-;-1:-1:-1;8129:9:1;;8019:125::o;8692:127::-;8753:10;8748:3;8744:20;8741:1;8734:31;8784:4;8781:1;8774:15;8808:4;8805:1;8798:15;8824:251;8894:6;8947:2;8935:9;8926:7;8922:23;8918:32;8915:52;;;8963:1;8960;8953:12;8915:52;8995:9;8989:16;9014:31;9039:5;9014:31;:::i;9080:980::-;9342:4;9390:3;9379:9;9375:19;9421:6;9410:9;9403:25;9447:2;9485:6;9480:2;9469:9;9465:18;9458:34;9528:3;9523:2;9512:9;9508:18;9501:31;9552:6;9587;9581:13;9618:6;9610;9603:22;9656:3;9645:9;9641:19;9634:26;;9695:2;9687:6;9683:15;9669:29;;9716:1;9726:195;9740:6;9737:1;9734:13;9726:195;;;9805:13;;-1:-1:-1;;;;;9801:39:1;9789:52;;9896:15;;;;9861:12;;;;9837:1;9755:9;9726:195;;;-1:-1:-1;;;;;;;9977:32:1;;;;9972:2;9957:18;;9950:60;-1:-1:-1;;;10041:3:1;10026:19;10019:35;9938:3;9080:980;-1:-1:-1;;;9080:980:1:o;10065:217::-;10105:1;10131;10121:132;;10175:10;10170:3;10166:20;10163:1;10156:31;10210:4;10207:1;10200:15;10238:4;10235:1;10228:15;10121:132;-1:-1:-1;10267:9:1;;10065:217::o;10643:168::-;10683:7;10749:1;10745;10741:6;10737:14;10734:1;10731:21;10726:1;10719:9;10712:17;10708:45;10705:71;;;10756:18;;:::i;:::-;-1:-1:-1;10796:9:1;;10643:168::o

Swarm Source

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