ETH Price: $3,954.83 (+1.15%)

Token

ERC-20: ERCX (ERCX)
 

Overview

Max Total Supply

20,000,000 ERCX

Holders

159

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
Uniswap V2: ERCX 2
Balance
11,434,448.761222888 ERCX

Value
$0.00
0x25f0d0fb35535495c2798f602408d2cf5ab356d0
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:
EmployeeRetentionCompany

Compiler Version
v0.8.21+commit.d9974bed

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

// SPDX-License-Identifier: Unlicensed

/**
 * 
 *  ERCX | DeFi is the ultimate utility, $ERCX is true DeFi.
 *
 *  $ERCX is a store of value token made available on ($ETH) Ethereum Blockchain.
 *  It’s utility serves to provide a fast, affordable, 24/7 distribution mechanism for Employee Retention Credit refunds.
 * 
 *  Website   - https://ercxfast.com/
 *  Telegram  - https://t.me/ERCfastportal
 *  Twitter   - http://twitter.com/ERCfast
 *  Email     - [email protected]
 */

pragma solidity ^0.8.21;

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

    using SafeMath for uint256;

    string private constant _name = "ERCX";
    string private constant _symbol = "ERCX";
    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) private _isExcludedFromMax;

    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 20 * 10**6 * 10**9; // 20M tokens
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 2;
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 2;

    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;

    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;
    
    address payable private _marketingAddress = payable(0x23c37aCE44Ab62dA0ab74A371A6eC59D94cB1c33);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    bool private tradingOpen = false;
    bool private inSwap = false;
    bool private swapEnabled = true;
    uint private launchTime = 0;

    uint256 public _maxTxAmount = 20 * 10**6 * 10**9;   // set up max transaction once needed
    uint256 public _maxWalletSize = 20 * 10**6 * 10**9; // set up max wallet once needed
    uint256 public _swapTokensAtAmount = 10000 * 10**9; // 0.05% token swap limit

    event MaxTxAmountUpdated(uint256 _maxTxAmount);

    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {

        _rOwned[_msgSender()] = _rTotal;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());

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

        _isExcludedFromMax[owner()] = true;
        _isExcludedFromMax[address(this)] = true;
        _isExcludedFromMax[_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,
                "transfer amount exceeds allowance"
            )
        );
        return true;
    }

    function tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }

    function removeAllFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;

        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        _taxFee = _previoustaxFee;
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0), "approve from the zero address");
        require(spender != address(0), "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), "transfer from the zero address");
        require(to != address(0), "transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        if (from != owner() && to != owner()) {

            require(tradingOpen, "Trading is not enabled");

            if (from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedFromFee[to] ) {
                require(amount <= _maxTxAmount, "Max Transaction Limit");
                require(balanceOf(to) + amount < _maxWalletSize, "Balance exceeds wallet size!");
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;

            if(contractTokenBalance >= _swapTokensAtAmount)
            {
                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;

        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {

            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }

            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;

                if (block.timestamp > launchTime + (15 minutes)) {
                    _taxFee = _taxFeeOnSell;
                } else if (block.timestamp > launchTime + (10 minutes)) {
                    _taxFee = 20;
                } else if (block.timestamp > launchTime + (5 minutes)) {
                    _taxFee = 30;
                } else {
                    _taxFee = 40;
                }
            }

        }

        _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 _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);

        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    receive() external payable {}

    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256)
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _redisFee, _taxFee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    function _getTValues( uint256 tAmount, uint256 redisFee, uint256 taxFee) private pure returns (uint256, uint256, uint256)
    {
        uint256 tFee = tAmount.mul(redisFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

    function _getRValues( uint256 tAmount, uint256 tFee, uint256 tTeam, uint256 currentRate) private pure returns (uint256, uint256, uint256)
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function manualswap() public onlyOwner {
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    function manualsend() public onlyOwner {
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        require(swapTokensAtAmount >= 1000 * 10**9, "Swap tokens below minimal limit.");
        _swapTokensAtAmount = swapTokensAtAmount;
    }

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

    function updateMarketing(address payable marketing) public onlyOwner {
        _marketingAddress = marketing;
    }

    function setMaxTxAmount(uint256 maxTxAmount) public onlyOwner {
        require(maxTxAmount >= 20000 * 10**9, "Max Transaction cant be less than 0.1%");
        _maxTxAmount = maxTxAmount;
    }

    function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        require(maxWalletSize >= 20000 * 10**9, "Max wallet cant be less than 0.1%");
        _maxWalletSize = maxWalletSize;
    }

    function excludeFromFee(address payable account, bool value) public onlyOwner {
        _isExcludedFromFee[account] = value;
    }

    function excludeFromMax(address payable account, bool value) public onlyOwner {
        _isExcludedFromMax[account] = value;
    }

    function openTrading() public onlyOwner {
        tradingOpen = true;
        launchTime = block.timestamp;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address payable","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFromMax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","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"},{"inputs":[{"internalType":"address payable","name":"marketing","type":"address"}],"name":"updateMarketing","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526200001866470de4df8200005f196200034e565b62000025905f196200036e565b6007555f60098190556002600a819055600b829055600c819055600d829055600e819055600f829055601055601180546001600160a01b0319167323c37ace44ab62da0ab74a371a6ec59d94cb1c331790556013805462ffffff60a01b1916600160b01b17905560145566470de4df82000060158190556016556509184e72a000601755348015620000b5575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600754335f9081526002602090815260409182902092909255601280546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155815163c45a015560e01b815291519092839263c45a015592600480830193928290030181865afa1580156200016f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000195919062000394565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001e1573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000207919062000394565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801562000252573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000278919062000394565b601380546001600160a01b0319166001600160a01b039283161790555f805482168152600560209081526040808320805460ff199081166001908117909255308086528386208054831684179055601180548816875284872080548416851790558654881687526006865284872080548416851790559086528386208054831684179055549095168452818420805490951617909355915166470de4df820000815233927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350620003c3565b5f826200036957634e487b7160e01b5f52601260045260245ffd5b500690565b818103818111156200038e57634e487b7160e01b5f52601160045260245ffd5b92915050565b5f60208284031215620003a5575f80fd5b81516001600160a01b0381168114620003bc575f80fd5b9392505050565b611a7a80620003d15f395ff3fe608060405260043610610198575f3560e01c80637d1db4a5116100e7578063c3c8cd8011610087578063df8408fe11610062578063df8408fe1461046b578063ea1644d51461048a578063ec28438a146104a9578063f2fde38b146104c8575f80fd5b8063c3c8cd80146103ff578063c9567bf914610413578063dd62ed3e14610427575f80fd5b806395d89b41116100c257806395d89b41146101a357806398a5c315146103a2578063a9059cbb146103c1578063b91ebc88146103e0575f80fd5b80637d1db4a51461035c5780638da5cb5b146103715780638f9a55c01461038d575f80fd5b80632fd689e3116101525780636d8aa8f81161012d5780636d8aa8f8146102f65780636fc3eaec1461031557806370a0823114610329578063715018a614610348575f80fd5b80632fd689e3146102a7578063313ce567146102bc57806349bd5a5e146102d7575f80fd5b806306fdde03146101a3578063095ea7b3146101de5780631694505e1461020d57806318160ddd1461024457806323b872dd14610267578063249ec2bb14610286575f80fd5b3661019f57005b5f80fd5b3480156101ae575f80fd5b50604080518082018252600481526308aa486b60e31b602082015290516101d59190611750565b60405180910390f35b3480156101e9575f80fd5b506101fd6101f83660046117af565b6104e7565b60405190151581526020016101d5565b348015610218575f80fd5b5060125461022c906001600160a01b031681565b6040516001600160a01b0390911681526020016101d5565b34801561024f575f80fd5b5066470de4df8200005b6040519081526020016101d5565b348015610272575f80fd5b506101fd6102813660046117d9565b6104fd565b348015610291575f80fd5b506102a56102a036600461182b565b610564565b005b3480156102b2575f80fd5b5061025960175481565b3480156102c7575f80fd5b50604051600981526020016101d5565b3480156102e2575f80fd5b5060135461022c906001600160a01b031681565b348015610301575f80fd5b506102a561031036600461185e565b6105c0565b348015610320575f80fd5b506102a5610607565b348015610334575f80fd5b50610259610343366004611877565b61063d565b348015610353575f80fd5b506102a561065e565b348015610367575f80fd5b5061025960155481565b34801561037c575f80fd5b505f546001600160a01b031661022c565b348015610398575f80fd5b5061025960165481565b3480156103ad575f80fd5b506102a56103bc366004611892565b6106cf565b3480156103cc575f80fd5b506101fd6103db3660046117af565b610752565b3480156103eb575f80fd5b506102a56103fa366004611877565b61075e565b34801561040a575f80fd5b506102a56107a9565b34801561041e575f80fd5b506102a56107e7565b348015610432575f80fd5b506102596104413660046118a9565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b348015610476575f80fd5b506102a561048536600461182b565b610829565b348015610495575f80fd5b506102a56104a4366004611892565b61087c565b3480156104b4575f80fd5b506102a56104c3366004611892565b61090a565b3480156104d3575f80fd5b506102a56104e2366004611877565b61099d565b5f6104f3338484610a84565b5060015b92915050565b5f610509848484610b90565b61055a843361055585604051806060016040528060218152602001611a24602191396001600160a01b038a165f908152600460209081526040808320338452909152902054919061105a565b610a84565b5060019392505050565b5f546001600160a01b031633146105965760405162461bcd60e51b815260040161058d906118e0565b60405180910390fd5b6001600160a01b03919091165f908152600660205260409020805460ff1916911515919091179055565b5f546001600160a01b031633146105e95760405162461bcd60e51b815260040161058d906118e0565b60138054911515600160b01b0260ff60b01b19909216919091179055565b5f546001600160a01b031633146106305760405162461bcd60e51b815260040161058d906118e0565b4761063a81611092565b50565b6001600160a01b0381165f908152600260205260408120546104f7906110cd565b5f546001600160a01b031633146106875760405162461bcd60e51b815260040161058d906118e0565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146106f85760405162461bcd60e51b815260040161058d906118e0565b64e8d4a5100081101561074d5760405162461bcd60e51b815260206004820181905260248201527f5377617020746f6b656e732062656c6f77206d696e696d616c206c696d69742e604482015260640161058d565b601755565b5f6104f3338484610b90565b5f546001600160a01b031633146107875760405162461bcd60e51b815260040161058d906118e0565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146107d25760405162461bcd60e51b815260040161058d906118e0565b5f6107dc3061063d565b905061063a8161114f565b5f546001600160a01b031633146108105760405162461bcd60e51b815260040161058d906118e0565b6013805460ff60a01b1916600160a01b17905542601455565b5f546001600160a01b031633146108525760405162461bcd60e51b815260040161058d906118e0565b6001600160a01b03919091165f908152600560205260409020805460ff1916911515919091179055565b5f546001600160a01b031633146108a55760405162461bcd60e51b815260040161058d906118e0565b6512309ce540008110156109055760405162461bcd60e51b815260206004820152602160248201527f4d61782077616c6c65742063616e74206265206c657373207468616e20302e316044820152602560f81b606482015260840161058d565b601655565b5f546001600160a01b031633146109335760405162461bcd60e51b815260040161058d906118e0565b6512309ce540008110156109985760405162461bcd60e51b815260206004820152602660248201527f4d6178205472616e73616374696f6e2063616e74206265206c657373207468616044820152656e20302e312560d01b606482015260840161058d565b601555565b5f546001600160a01b031633146109c65760405162461bcd60e51b815260040161058d906118e0565b6001600160a01b038116610a2b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161058d565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610ada5760405162461bcd60e51b815260206004820152601d60248201527f617070726f76652066726f6d20746865207a65726f2061646472657373000000604482015260640161058d565b6001600160a01b038216610b305760405162461bcd60e51b815260206004820152601b60248201527f617070726f766520746f20746865207a65726f20616464726573730000000000604482015260640161058d565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610be65760405162461bcd60e51b815260206004820152601e60248201527f7472616e736665722066726f6d20746865207a65726f20616464726573730000604482015260640161058d565b6001600160a01b038216610c3c5760405162461bcd60e51b815260206004820152601c60248201527f7472616e7366657220746f20746865207a65726f206164647265737300000000604482015260640161058d565b5f8111610c9d5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161058d565b5f546001600160a01b03848116911614801590610cc757505f546001600160a01b03838116911614155b15610ef057601354600160a01b900460ff16610d1e5760405162461bcd60e51b8152602060048201526016602482015275151c98591a5b99c81a5cc81b9bdd08195b98589b195960521b604482015260640161058d565b6013546001600160a01b038481169116148015610d4957506012546001600160a01b03838116911614155b8015610d6d57506001600160a01b0382165f9081526005602052604090205460ff16155b15610e2057601554811115610dbc5760405162461bcd60e51b815260206004820152601560248201527413585e08151c985b9cd858dd1a5bdb88131a5b5a5d605a1b604482015260640161058d565b60165481610dc98461063d565b610dd39190611929565b10610e205760405162461bcd60e51b815260206004820152601c60248201527f42616c616e636520657863656564732077616c6c65742073697a652100000000604482015260640161058d565b5f610e2a3061063d565b6017549091508110801590610e3f5760175491505b808015610e565750601354600160a81b900460ff16155b8015610e7057506013546001600160a01b03868116911614155b8015610e855750601354600160b01b900460ff165b8015610ea957506001600160a01b0385165f9081526005602052604090205460ff16155b8015610ecd57506001600160a01b0384165f9081526005602052604090205460ff16155b15610eed57610edb8261114f565b478015610eeb57610eeb47611092565b505b50505b6001600160a01b0383165f9081526005602052604090205460019060ff1680610f3057506001600160a01b0383165f9081526005602052604090205460ff165b80610f6257506013546001600160a01b03858116911614801590610f6257506013546001600160a01b03848116911614155b15610f6e57505f611048565b6013546001600160a01b038581169116148015610f9957506012546001600160a01b03848116911614155b15610fab57600954600d55600a54600e555b6013546001600160a01b038481169116148015610fd657506012546001600160a01b03858116911614155b1561104857600b54600d55601454610ff090610384611929565b42111561100257600c54600e55611048565b60145461101190610258611929565b421115611022576014600e55611048565b6014546110319061012c611929565b42111561104257601e600e55611048565b6028600e555b611054848484846112bf565b50505050565b5f818484111561107d5760405162461bcd60e51b815260040161058d9190611750565b505f611089848661193c565b95945050505050565b6011546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156110c9573d5f803e3d5ffd5b5050565b5f6007548211156111335760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840161058d565b5f61113c6112ed565b9050611148838261130e565b9392505050565b6013805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f815181106111955761119561194f565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156111ec573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112109190611963565b816001815181106112235761122361194f565b6001600160a01b0392831660209182029290920101526012546112499130911684610a84565b60125460405163791ac94760e01b81526001600160a01b039091169063791ac947906112819085905f9086903090429060040161197e565b5f604051808303815f87803b158015611298575f80fd5b505af11580156112aa573d5f803e3d5ffd5b50506013805460ff60a81b1916905550505050565b806112cc576112cc61134f565b6112d784848461137c565b8061105457611054600f54600d55601054600e55565b5f805f6112f861146d565b9092509050611307828261130e565b9250505090565b5f61114883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506114aa565b600d5415801561135f5750600e54155b1561136657565b600d8054600f55600e80546010555f9182905555565b5f805f805f8061138b876114d6565b6001600160a01b038f165f90815260026020526040902054959b509399509197509550935091506113bc908761152b565b6001600160a01b03808b165f9081526002602052604080822093909355908a16815220546113ea908661156c565b6001600160a01b0389165f9081526002602052604090205561140b816115ca565b6114158483611610565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161145a91815260200190565b60405180910390a3505050505050505050565b6007545f90819066470de4df820000611486828261130e565b8210156114a15750506007549266470de4df82000092509050565b90939092509050565b5f81836114ca5760405162461bcd60e51b815260040161058d9190611750565b505f61108984866119ed565b5f805f805f805f805f6114ee8a600d54600e54611634565b9250925092505f6114fd6112ed565b90505f805f61150e8e878787611686565b919e509c509a509598509396509194505050505091939550919395565b5f61114883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061105a565b5f806115788385611929565b9050838110156111485760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161058d565b5f6115d36112ed565b90505f6115e083836116d2565b305f908152600260205260409020549091506115fc908261156c565b305f90815260026020526040902055505050565b60075461161d908361152b565b60075560085461162d908261156c565b6008555050565b5f80808061164d606461164789896116d2565b9061130e565b90505f61165f60646116478a896116d2565b90505f611676826116708b8661152b565b9061152b565b9992985090965090945050505050565b5f80808061169488866116d2565b90505f6116a188876116d2565b90505f6116ae88886116d2565b90505f6116bf82611670868661152b565b939b939a50919850919650505050505050565b5f825f036116e157505f6104f7565b5f6116ec8385611a0c565b9050826116f985836119ed565b146111485760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161058d565b5f6020808352835180828501525f5b8181101561177b5785810183015185820160400152820161175f565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461063a575f80fd5b5f80604083850312156117c0575f80fd5b82356117cb8161179b565b946020939093013593505050565b5f805f606084860312156117eb575f80fd5b83356117f68161179b565b925060208401356118068161179b565b929592945050506040919091013590565b80358015158114611826575f80fd5b919050565b5f806040838503121561183c575f80fd5b82356118478161179b565b915061185560208401611817565b90509250929050565b5f6020828403121561186e575f80fd5b61114882611817565b5f60208284031215611887575f80fd5b81356111488161179b565b5f602082840312156118a2575f80fd5b5035919050565b5f80604083850312156118ba575f80fd5b82356118c58161179b565b915060208301356118d58161179b565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156104f7576104f7611915565b818103818111156104f7576104f7611915565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611973575f80fd5b81516111488161179b565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156119cc5784516001600160a01b0316835293830193918301916001016119a7565b50506001600160a01b03969096166060850152505050608001529392505050565b5f82611a0757634e487b7160e01b5f52601260045260245ffd5b500490565b80820281158282048414176104f7576104f761191556fe7472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212207f834a8777d501e4c6e5b86233d29ef51735d2da0efa552cbaeacf7fbeede1b264736f6c63430008150033

Deployed Bytecode

0x608060405260043610610198575f3560e01c80637d1db4a5116100e7578063c3c8cd8011610087578063df8408fe11610062578063df8408fe1461046b578063ea1644d51461048a578063ec28438a146104a9578063f2fde38b146104c8575f80fd5b8063c3c8cd80146103ff578063c9567bf914610413578063dd62ed3e14610427575f80fd5b806395d89b41116100c257806395d89b41146101a357806398a5c315146103a2578063a9059cbb146103c1578063b91ebc88146103e0575f80fd5b80637d1db4a51461035c5780638da5cb5b146103715780638f9a55c01461038d575f80fd5b80632fd689e3116101525780636d8aa8f81161012d5780636d8aa8f8146102f65780636fc3eaec1461031557806370a0823114610329578063715018a614610348575f80fd5b80632fd689e3146102a7578063313ce567146102bc57806349bd5a5e146102d7575f80fd5b806306fdde03146101a3578063095ea7b3146101de5780631694505e1461020d57806318160ddd1461024457806323b872dd14610267578063249ec2bb14610286575f80fd5b3661019f57005b5f80fd5b3480156101ae575f80fd5b50604080518082018252600481526308aa486b60e31b602082015290516101d59190611750565b60405180910390f35b3480156101e9575f80fd5b506101fd6101f83660046117af565b6104e7565b60405190151581526020016101d5565b348015610218575f80fd5b5060125461022c906001600160a01b031681565b6040516001600160a01b0390911681526020016101d5565b34801561024f575f80fd5b5066470de4df8200005b6040519081526020016101d5565b348015610272575f80fd5b506101fd6102813660046117d9565b6104fd565b348015610291575f80fd5b506102a56102a036600461182b565b610564565b005b3480156102b2575f80fd5b5061025960175481565b3480156102c7575f80fd5b50604051600981526020016101d5565b3480156102e2575f80fd5b5060135461022c906001600160a01b031681565b348015610301575f80fd5b506102a561031036600461185e565b6105c0565b348015610320575f80fd5b506102a5610607565b348015610334575f80fd5b50610259610343366004611877565b61063d565b348015610353575f80fd5b506102a561065e565b348015610367575f80fd5b5061025960155481565b34801561037c575f80fd5b505f546001600160a01b031661022c565b348015610398575f80fd5b5061025960165481565b3480156103ad575f80fd5b506102a56103bc366004611892565b6106cf565b3480156103cc575f80fd5b506101fd6103db3660046117af565b610752565b3480156103eb575f80fd5b506102a56103fa366004611877565b61075e565b34801561040a575f80fd5b506102a56107a9565b34801561041e575f80fd5b506102a56107e7565b348015610432575f80fd5b506102596104413660046118a9565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b348015610476575f80fd5b506102a561048536600461182b565b610829565b348015610495575f80fd5b506102a56104a4366004611892565b61087c565b3480156104b4575f80fd5b506102a56104c3366004611892565b61090a565b3480156104d3575f80fd5b506102a56104e2366004611877565b61099d565b5f6104f3338484610a84565b5060015b92915050565b5f610509848484610b90565b61055a843361055585604051806060016040528060218152602001611a24602191396001600160a01b038a165f908152600460209081526040808320338452909152902054919061105a565b610a84565b5060019392505050565b5f546001600160a01b031633146105965760405162461bcd60e51b815260040161058d906118e0565b60405180910390fd5b6001600160a01b03919091165f908152600660205260409020805460ff1916911515919091179055565b5f546001600160a01b031633146105e95760405162461bcd60e51b815260040161058d906118e0565b60138054911515600160b01b0260ff60b01b19909216919091179055565b5f546001600160a01b031633146106305760405162461bcd60e51b815260040161058d906118e0565b4761063a81611092565b50565b6001600160a01b0381165f908152600260205260408120546104f7906110cd565b5f546001600160a01b031633146106875760405162461bcd60e51b815260040161058d906118e0565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146106f85760405162461bcd60e51b815260040161058d906118e0565b64e8d4a5100081101561074d5760405162461bcd60e51b815260206004820181905260248201527f5377617020746f6b656e732062656c6f77206d696e696d616c206c696d69742e604482015260640161058d565b601755565b5f6104f3338484610b90565b5f546001600160a01b031633146107875760405162461bcd60e51b815260040161058d906118e0565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146107d25760405162461bcd60e51b815260040161058d906118e0565b5f6107dc3061063d565b905061063a8161114f565b5f546001600160a01b031633146108105760405162461bcd60e51b815260040161058d906118e0565b6013805460ff60a01b1916600160a01b17905542601455565b5f546001600160a01b031633146108525760405162461bcd60e51b815260040161058d906118e0565b6001600160a01b03919091165f908152600560205260409020805460ff1916911515919091179055565b5f546001600160a01b031633146108a55760405162461bcd60e51b815260040161058d906118e0565b6512309ce540008110156109055760405162461bcd60e51b815260206004820152602160248201527f4d61782077616c6c65742063616e74206265206c657373207468616e20302e316044820152602560f81b606482015260840161058d565b601655565b5f546001600160a01b031633146109335760405162461bcd60e51b815260040161058d906118e0565b6512309ce540008110156109985760405162461bcd60e51b815260206004820152602660248201527f4d6178205472616e73616374696f6e2063616e74206265206c657373207468616044820152656e20302e312560d01b606482015260840161058d565b601555565b5f546001600160a01b031633146109c65760405162461bcd60e51b815260040161058d906118e0565b6001600160a01b038116610a2b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161058d565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610ada5760405162461bcd60e51b815260206004820152601d60248201527f617070726f76652066726f6d20746865207a65726f2061646472657373000000604482015260640161058d565b6001600160a01b038216610b305760405162461bcd60e51b815260206004820152601b60248201527f617070726f766520746f20746865207a65726f20616464726573730000000000604482015260640161058d565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610be65760405162461bcd60e51b815260206004820152601e60248201527f7472616e736665722066726f6d20746865207a65726f20616464726573730000604482015260640161058d565b6001600160a01b038216610c3c5760405162461bcd60e51b815260206004820152601c60248201527f7472616e7366657220746f20746865207a65726f206164647265737300000000604482015260640161058d565b5f8111610c9d5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161058d565b5f546001600160a01b03848116911614801590610cc757505f546001600160a01b03838116911614155b15610ef057601354600160a01b900460ff16610d1e5760405162461bcd60e51b8152602060048201526016602482015275151c98591a5b99c81a5cc81b9bdd08195b98589b195960521b604482015260640161058d565b6013546001600160a01b038481169116148015610d4957506012546001600160a01b03838116911614155b8015610d6d57506001600160a01b0382165f9081526005602052604090205460ff16155b15610e2057601554811115610dbc5760405162461bcd60e51b815260206004820152601560248201527413585e08151c985b9cd858dd1a5bdb88131a5b5a5d605a1b604482015260640161058d565b60165481610dc98461063d565b610dd39190611929565b10610e205760405162461bcd60e51b815260206004820152601c60248201527f42616c616e636520657863656564732077616c6c65742073697a652100000000604482015260640161058d565b5f610e2a3061063d565b6017549091508110801590610e3f5760175491505b808015610e565750601354600160a81b900460ff16155b8015610e7057506013546001600160a01b03868116911614155b8015610e855750601354600160b01b900460ff165b8015610ea957506001600160a01b0385165f9081526005602052604090205460ff16155b8015610ecd57506001600160a01b0384165f9081526005602052604090205460ff16155b15610eed57610edb8261114f565b478015610eeb57610eeb47611092565b505b50505b6001600160a01b0383165f9081526005602052604090205460019060ff1680610f3057506001600160a01b0383165f9081526005602052604090205460ff165b80610f6257506013546001600160a01b03858116911614801590610f6257506013546001600160a01b03848116911614155b15610f6e57505f611048565b6013546001600160a01b038581169116148015610f9957506012546001600160a01b03848116911614155b15610fab57600954600d55600a54600e555b6013546001600160a01b038481169116148015610fd657506012546001600160a01b03858116911614155b1561104857600b54600d55601454610ff090610384611929565b42111561100257600c54600e55611048565b60145461101190610258611929565b421115611022576014600e55611048565b6014546110319061012c611929565b42111561104257601e600e55611048565b6028600e555b611054848484846112bf565b50505050565b5f818484111561107d5760405162461bcd60e51b815260040161058d9190611750565b505f611089848661193c565b95945050505050565b6011546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156110c9573d5f803e3d5ffd5b5050565b5f6007548211156111335760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840161058d565b5f61113c6112ed565b9050611148838261130e565b9392505050565b6013805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f815181106111955761119561194f565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156111ec573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112109190611963565b816001815181106112235761122361194f565b6001600160a01b0392831660209182029290920101526012546112499130911684610a84565b60125460405163791ac94760e01b81526001600160a01b039091169063791ac947906112819085905f9086903090429060040161197e565b5f604051808303815f87803b158015611298575f80fd5b505af11580156112aa573d5f803e3d5ffd5b50506013805460ff60a81b1916905550505050565b806112cc576112cc61134f565b6112d784848461137c565b8061105457611054600f54600d55601054600e55565b5f805f6112f861146d565b9092509050611307828261130e565b9250505090565b5f61114883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506114aa565b600d5415801561135f5750600e54155b1561136657565b600d8054600f55600e80546010555f9182905555565b5f805f805f8061138b876114d6565b6001600160a01b038f165f90815260026020526040902054959b509399509197509550935091506113bc908761152b565b6001600160a01b03808b165f9081526002602052604080822093909355908a16815220546113ea908661156c565b6001600160a01b0389165f9081526002602052604090205561140b816115ca565b6114158483611610565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161145a91815260200190565b60405180910390a3505050505050505050565b6007545f90819066470de4df820000611486828261130e565b8210156114a15750506007549266470de4df82000092509050565b90939092509050565b5f81836114ca5760405162461bcd60e51b815260040161058d9190611750565b505f61108984866119ed565b5f805f805f805f805f6114ee8a600d54600e54611634565b9250925092505f6114fd6112ed565b90505f805f61150e8e878787611686565b919e509c509a509598509396509194505050505091939550919395565b5f61114883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061105a565b5f806115788385611929565b9050838110156111485760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161058d565b5f6115d36112ed565b90505f6115e083836116d2565b305f908152600260205260409020549091506115fc908261156c565b305f90815260026020526040902055505050565b60075461161d908361152b565b60075560085461162d908261156c565b6008555050565b5f80808061164d606461164789896116d2565b9061130e565b90505f61165f60646116478a896116d2565b90505f611676826116708b8661152b565b9061152b565b9992985090965090945050505050565b5f80808061169488866116d2565b90505f6116a188876116d2565b90505f6116ae88886116d2565b90505f6116bf82611670868661152b565b939b939a50919850919650505050505050565b5f825f036116e157505f6104f7565b5f6116ec8385611a0c565b9050826116f985836119ed565b146111485760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161058d565b5f6020808352835180828501525f5b8181101561177b5785810183015185820160400152820161175f565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461063a575f80fd5b5f80604083850312156117c0575f80fd5b82356117cb8161179b565b946020939093013593505050565b5f805f606084860312156117eb575f80fd5b83356117f68161179b565b925060208401356118068161179b565b929592945050506040919091013590565b80358015158114611826575f80fd5b919050565b5f806040838503121561183c575f80fd5b82356118478161179b565b915061185560208401611817565b90509250929050565b5f6020828403121561186e575f80fd5b61114882611817565b5f60208284031215611887575f80fd5b81356111488161179b565b5f602082840312156118a2575f80fd5b5035919050565b5f80604083850312156118ba575f80fd5b82356118c58161179b565b915060208301356118d58161179b565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156104f7576104f7611915565b818103818111156104f7576104f7611915565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611973575f80fd5b81516111488161179b565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156119cc5784516001600160a01b0316835293830193918301916001016119a7565b50506001600160a01b03969096166060850152505050608001529392505050565b5f82611a0757634e487b7160e01b5f52601260045260245ffd5b500490565b80820281158282048414176104f7576104f761191556fe7472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212207f834a8777d501e4c6e5b86233d29ef51735d2da0efa552cbaeacf7fbeede1b264736f6c63430008150033

Deployed Bytecode Sourcemap

4385:12850:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6981:83;;;;;;;;;;-1:-1:-1;7051:5:0;;;;;;;;;;;-1:-1:-1;;;7051:5:0;;;;6981:83;;;;7051:5;6981:83;:::i;:::-;;;;;;;;7906:193;;;;;;;;;;-1:-1:-1;7906:193:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;7906:193:0;1023:187:1;5604:41:0;;;;;;;;;;-1:-1:-1;5604:41:0;;;;-1:-1:-1;;;;;5604:41:0;;;;;;-1:-1:-1;;;;;1405:32:1;;;1387:51;;1375:2;1360:18;5604:41:0;1215:229:1;7258:95:0;;;;;;;;;;-1:-1:-1;5004:18:0;7258:95;;;1595:25:1;;;1583:2;1568:18;7258:95:0;1449:177:1;8107:439:0;;;;;;;;;;-1:-1:-1;8107:439:0;;;;;:::i;:::-;;:::i;16976:132::-;;;;;;;;;;-1:-1:-1;16976:132:0;;;;;:::i;:::-;;:::i;:::-;;6021:50;;;;;;;;;;;;;;;;7167:83;;;;;;;;;;-1:-1:-1;7167:83:0;;4618:1;2727:36:1;;2715:2;2700:18;7167:83:0;2585:184:1;5652:28:0;;;;;;;;;;-1:-1:-1;5652:28:0;;;;-1:-1:-1;;;;;5652:28:0;;;16187:101;;;;;;;;;;-1:-1:-1;16187:101:0;;;;;:::i;:::-;;:::i;15791:151::-;;;;;;;;;;;;;:::i;7361:138::-;;;;;;;;;;-1:-1:-1;7361:138:0;;;;;:::i;:::-;;:::i;1940:148::-;;;;;;;;;;;;;:::i;5836:48::-;;;;;;;;;;;;;;;;1726:79;;;;;;;;;;-1:-1:-1;1764:7:0;1791:6;-1:-1:-1;;;;;1791:6:0;1726:79;;5931:50;;;;;;;;;;;;;;;;15950:229;;;;;;;;;;-1:-1:-1;15950:229:0;;;;;:::i;:::-;;:::i;7507:199::-;;;;;;;;;;-1:-1:-1;7507:199:0;;;;;:::i;:::-;;:::i;16296:117::-;;;;;;;;;;-1:-1:-1;16296:117:0;;;;;:::i;:::-;;:::i;15631:152::-;;;;;;;;;;;;;:::i;17116:116::-;;;;;;;;;;;;;:::i;7714:184::-;;;;;;;;;;-1:-1:-1;7714:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;7863:18:0;;;7831:7;7863:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7714:184;16836:132;;;;;;;;;;-1:-1:-1;16836:132:0;;;;;:::i;:::-;;:::i;16626:202::-;;;;;;;;;;-1:-1:-1;16626:202:0;;;;;:::i;:::-;;:::i;16421:197::-;;;;;;;;;;-1:-1:-1;16421:197:0;;;;;:::i;:::-;;:::i;2096:244::-;;;;;;;;;;-1:-1:-1;2096:244:0;;;;;:::i;:::-;;:::i;7906:193::-;8008:4;8030:39;658:10;8053:7;8062:6;8030:8;:39::i;:::-;-1:-1:-1;8087:4:0;7906:193;;;;;:::o;8107:439::-;8239:4;8256:36;8266:6;8274:9;8285:6;8256:9;:36::i;:::-;8303:213;8326:6;658:10;8374:131;8430:6;8374:131;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8374:19:0;;;;;;:11;:19;;;;;;;;658:10;8374:33;;;;;;;;;;:37;:131::i;:::-;8303:8;:213::i;:::-;-1:-1:-1;8534:4:0;8107:439;;;;;:::o;16976:132::-;1853:6;;-1:-1:-1;;;;;1853:6:0;658:10;1853:22;1845:67;;;;-1:-1:-1;;;1845:67:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;17065:27:0;;;::::1;;::::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;17065:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16976:132::o;16187:101::-;1853:6;;-1:-1:-1;;;;;1853:6:0;658:10;1853:22;1845:67;;;;-1:-1:-1;;;1845:67:0;;;;;;;:::i;:::-;16254:11:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;16254:26:0::1;-1:-1:-1::0;;;;16254:26:0;;::::1;::::0;;;::::1;::::0;;16187:101::o;15791:151::-;1853:6;;-1:-1:-1;;;;;1853:6:0;658:10;1853:22;1845:67;;;;-1:-1:-1;;;1845:67:0;;;;;;;:::i;:::-;15870:21:::1;15902:32;15870:21:::0;15902:12:::1;:32::i;:::-;15830:112;15791:151::o:0;7361:138::-;-1:-1:-1;;;;;7474:16:0;;7427:7;7474:16;;;:7;:16;;;;;;7454:37;;:19;:37::i;1940:148::-;1853:6;;-1:-1:-1;;;;;1853:6:0;658:10;1853:22;1845:67;;;;-1:-1:-1;;;1845:67:0;;;;;;;:::i;:::-;2047:1:::1;2031:6:::0;;2010:40:::1;::::0;-1:-1:-1;;;;;2031:6:0;;::::1;::::0;2010:40:::1;::::0;2047:1;;2010:40:::1;2078:1;2061:19:::0;;-1:-1:-1;;;;;;2061:19:0::1;::::0;;1940:148::o;15950:229::-;1853:6;;-1:-1:-1;;;;;1853:6:0;658:10;1853:22;1845:67;;;;-1:-1:-1;;;1845:67:0;;;;;;;:::i;:::-;16071:12:::1;16049:18;:34;;16041:79;;;::::0;-1:-1:-1;;;16041:79:0;;4820:2:1;16041:79:0::1;::::0;::::1;4802:21:1::0;;;4839:18;;;4832:30;4898:34;4878:18;;;4871:62;4950:18;;16041:79:0::1;4618:356:1::0;16041:79:0::1;16131:19;:40:::0;15950:229::o;7507:199::-;7612:4;7634:42;658:10;7658:9;7669:6;7634:9;:42::i;16296:117::-;1853:6;;-1:-1:-1;;;;;1853:6:0;658:10;1853:22;1845:67;;;;-1:-1:-1;;;1845:67:0;;;;;;;:::i;:::-;16376:17:::1;:29:::0;;-1:-1:-1;;;;;;16376:29:0::1;-1:-1:-1::0;;;;;16376:29:0;;;::::1;::::0;;;::::1;::::0;;16296:117::o;15631:152::-;1853:6;;-1:-1:-1;;;;;1853:6:0;658:10;1853:22;1845:67;;;;-1:-1:-1;;;1845:67:0;;;;;;;:::i;:::-;15681:23:::1;15707:24;15725:4;15707:9;:24::i;:::-;15681:50;;15742:33;15759:15;15742:16;:33::i;17116:116::-:0;1853:6;;-1:-1:-1;;;;;1853:6:0;658:10;1853:22;1845:67;;;;-1:-1:-1;;;1845:67:0;;;;;;;:::i;:::-;17167:11:::1;:18:::0;;-1:-1:-1;;;;17167:18:0::1;-1:-1:-1::0;;;17167:18:0::1;::::0;;17209:15:::1;17167:11;17196:28:::0;17116:116::o;16836:132::-;1853:6;;-1:-1:-1;;;;;1853:6:0;658:10;1853:22;1845:67;;;;-1:-1:-1;;;1845:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16925:27:0;;;::::1;;::::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;16925:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16836:132::o;16626:202::-;1853:6;;-1:-1:-1;;;;;1853:6:0;658:10;1853:22;1845:67;;;;-1:-1:-1;;;1845:67:0;;;;;;;:::i;:::-;16728:13:::1;16711;:30;;16703:76;;;::::0;-1:-1:-1;;;16703:76:0;;5181:2:1;16703:76:0::1;::::0;::::1;5163:21:1::0;5220:2;5200:18;;;5193:30;5259:34;5239:18;;;5232:62;-1:-1:-1;;;5310:18:1;;;5303:31;5351:19;;16703:76:0::1;4979:397:1::0;16703:76:0::1;16790:14;:30:::0;16626:202::o;16421:197::-;1853:6;;-1:-1:-1;;;;;1853:6:0;658:10;1853:22;1845:67;;;;-1:-1:-1;;;1845:67:0;;;;;;;:::i;:::-;16517:13:::1;16502:11;:28;;16494:79;;;::::0;-1:-1:-1;;;16494:79:0;;5583:2:1;16494:79:0::1;::::0;::::1;5565:21:1::0;5622:2;5602:18;;;5595:30;5661:34;5641:18;;;5634:62;-1:-1:-1;;;5712:18:1;;;5705:36;5758:19;;16494:79:0::1;5381:402:1::0;16494:79:0::1;16584:12;:26:::0;16421:197::o;2096:244::-;1853:6;;-1:-1:-1;;;;;1853:6:0;658:10;1853:22;1845:67;;;;-1:-1:-1;;;1845:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2185:22:0;::::1;2177:73;;;::::0;-1:-1:-1;;;2177:73:0;;5990:2:1;2177:73:0::1;::::0;::::1;5972:21:1::0;6029:2;6009:18;;;6002:30;6068:34;6048:18;;;6041:62;-1:-1:-1;;;6119:18:1;;;6112:36;6165:19;;2177:73:0::1;5788:402:1::0;2177:73:0::1;2287:6;::::0;;2266:38:::1;::::0;-1:-1:-1;;;;;2266:38:0;;::::1;::::0;2287:6;::::1;::::0;2266:38:::1;::::0;::::1;2315:6;:17:::0;;-1:-1:-1;;;;;;2315:17:0::1;-1:-1:-1::0;;;;;2315:17:0;;;::::1;::::0;;;::::1;::::0;;2096:244::o;9237:355::-;-1:-1:-1;;;;;9364:19:0;;9356:61;;;;-1:-1:-1;;;9356:61:0;;6397:2:1;9356:61:0;;;6379:21:1;6436:2;6416:18;;;6409:30;6475:31;6455:18;;;6448:59;6524:18;;9356:61:0;6195:353:1;9356:61:0;-1:-1:-1;;;;;9436:21:0;;9428:61;;;;-1:-1:-1;;;9428:61:0;;6755:2:1;9428:61:0;;;6737:21:1;6794:2;6774:18;;;6767:30;6833:29;6813:18;;;6806:57;6880:18;;9428:61:0;6553:351:1;9428:61:0;-1:-1:-1;;;;;9500:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9552:32;;1595:25:1;;;9552:32:0;;1568:18:1;9552:32:0;;;;;;;9237:355;;;:::o;9600:2447::-;-1:-1:-1;;;;;9722:18:0;;9714:61;;;;-1:-1:-1;;;9714:61:0;;7111:2:1;9714:61:0;;;7093:21:1;7150:2;7130:18;;;7123:30;7189:32;7169:18;;;7162:60;7239:18;;9714:61:0;6909:354:1;9714:61:0;-1:-1:-1;;;;;9794:16:0;;9786:57;;;;-1:-1:-1;;;9786:57:0;;7470:2:1;9786:57:0;;;7452:21:1;7509:2;7489:18;;;7482:30;7548;7528:18;;;7521:58;7596:18;;9786:57:0;7268:352:1;9786:57:0;9871:1;9862:6;:10;9854:64;;;;-1:-1:-1;;;9854:64:0;;7827:2:1;9854:64:0;;;7809:21:1;7866:2;7846:18;;;7839:30;7905:34;7885:18;;;7878:62;-1:-1:-1;;;7956:18:1;;;7949:39;8005:19;;9854:64:0;7625:405:1;9854:64:0;1764:7;1791:6;-1:-1:-1;;;;;9935:15:0;;;1791:6;;9935:15;;;;:32;;-1:-1:-1;1764:7:0;1791:6;-1:-1:-1;;;;;9954:13:0;;;1791:6;;9954:13;;9935:32;9931:1109;;;9994:11;;-1:-1:-1;;;9994:11:0;;;;9986:46;;;;-1:-1:-1;;;9986:46:0;;8237:2:1;9986:46:0;;;8219:21:1;8276:2;8256:18;;;8249:30;-1:-1:-1;;;8295:18:1;;;8288:52;8357:18;;9986:46:0;8035:346:1;9986:46:0;10061:13;;-1:-1:-1;;;;;10053:21:0;;;10061:13;;10053:21;:55;;;;-1:-1:-1;10092:15:0;;-1:-1:-1;;;;;10078:30:0;;;10092:15;;10078:30;;10053:55;:82;;;;-1:-1:-1;;;;;;10113:22:0;;;;;;:18;:22;;;;;;;;10112:23;10053:82;10049:279;;;10175:12;;10165:6;:22;;10157:56;;;;-1:-1:-1;;;10157:56:0;;8588:2:1;10157:56:0;;;8570:21:1;8627:2;8607:18;;;8600:30;-1:-1:-1;;;8646:18:1;;;8639:51;8707:18;;10157:56:0;8386:345:1;10157:56:0;10265:14;;10256:6;10240:13;10250:2;10240:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10232:80;;;;-1:-1:-1;;;10232:80:0;;9200:2:1;10232:80:0;;;9182:21:1;9239:2;9219:18;;;9212:30;9278;9258:18;;;9251:58;9326:18;;10232:80:0;8998:352:1;10232:80:0;10344:28;10375:24;10393:4;10375:9;:24::i;:::-;10453:19;;10344:55;;-1:-1:-1;10429:43:0;;;;;10489:138;;10592:19;;10569:42;;10489:138;10647:7;:18;;;;-1:-1:-1;10659:6:0;;-1:-1:-1;;;10659:6:0;;;;10658:7;10647:18;:43;;;;-1:-1:-1;10677:13:0;;-1:-1:-1;;;;;10669:21:0;;;10677:13;;10669:21;;10647:43;:58;;;;-1:-1:-1;10694:11:0;;-1:-1:-1;;;10694:11:0;;;;10647:58;:87;;;;-1:-1:-1;;;;;;10710:24:0;;;;;;:18;:24;;;;;;;;10709:25;10647:87;:114;;;;-1:-1:-1;;;;;;10739:22:0;;;;;;:18;:22;;;;;;;;10738:23;10647:114;10643:386;;;10782:38;10799:20;10782:16;:38::i;:::-;10868:21;10912:22;;10908:106;;10959:35;10972:21;10959:12;:35::i;:::-;10763:266;10643:386;9969:1071;;9931:1109;-1:-1:-1;;;;;11089:24:0;;11052:12;11089:24;;;:18;:24;;;;;;11067:4;;11089:24;;;:50;;-1:-1:-1;;;;;;11117:22:0;;;;;;:18;:22;;;;;;;;11089:50;11088:102;;;-1:-1:-1;11153:13:0;;-1:-1:-1;;;;;11145:21:0;;;11153:13;;11145:21;;;;:44;;-1:-1:-1;11176:13:0;;-1:-1:-1;;;;;11170:19:0;;;11176:13;;11170:19;;11145:44;11084:902;;;-1:-1:-1;11217:5:0;11084:902;;;11268:13;;-1:-1:-1;;;;;11260:21:0;;;11268:13;;11260:21;:55;;;;-1:-1:-1;11299:15:0;;-1:-1:-1;;;;;11285:30:0;;;11299:15;;11285:30;;11260:55;11257:162;;;11348:14;;11336:9;:26;11391:12;;11381:7;:22;11257:162;11445:13;;-1:-1:-1;;;;;11439:19:0;;;11445:13;;11439:19;:55;;;;-1:-1:-1;11478:15:0;;-1:-1:-1;;;;;11462:32:0;;;11478:15;;11462:32;;11439:55;11435:538;;;11527:15;;11515:9;:27;11585:10;;:25;;11599:10;11585:25;:::i;:::-;11567:15;:43;11563:395;;;11645:13;;11635:7;:23;11563:395;;;11706:10;;:25;;11720:10;11706:25;:::i;:::-;11688:15;:43;11684:274;;;11766:2;11756:7;:12;11684:274;;;11816:10;;:24;;11830:9;11816:24;:::i;:::-;11798:15;:42;11794:164;;;11875:2;11865:7;:12;11794:164;;;11936:2;11926:7;:12;11794:164;11998:41;12013:4;12019:2;12023:6;12031:7;11998:14;:41::i;:::-;9703:2344;9600:2447;;;:::o;2704:190::-;2790:7;2826:12;2818:6;;;;2810:29;;;;-1:-1:-1;;;2810:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2850:9:0;2862:5;2866:1;2862;:5;:::i;:::-;2850:17;2704:190;-1:-1:-1;;;;;2704:190:0:o;12546:99::-;12603:17;;:34;;-1:-1:-1;;;;;12603:17:0;;;;:34;;;;;12630:6;;12603:17;:34;:17;:34;12630:6;12603:17;:34;;;;;;;;;;;;;;;;;;;;;12546:99;:::o;8554:323::-;8649:7;8707;;8696;:18;;8674:110;;;;-1:-1:-1;;;8674:110:0;;9690:2:1;8674:110:0;;;9672:21:1;9729:2;9709:18;;;9702:30;9768:34;9748:18;;;9741:62;-1:-1:-1;;;9819:18:1;;;9812:40;9869:19;;8674:110:0;9488:406:1;8674:110:0;8795:19;8817:10;:8;:10::i;:::-;8795:32;-1:-1:-1;8845:24:0;:7;8795:32;8845:11;:24::i;:::-;8838:31;8554:323;-1:-1:-1;;;8554:323:0:o;12055:483::-;6193:6;:13;;-1:-1:-1;;;;6193:13:0;-1:-1:-1;;;6193:13:0;;;12157:16:::1;::::0;;12171:1:::1;12157:16:::0;;;;;::::1;::::0;;-1:-1:-1;;12157:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;12157:16:0::1;12133:40;;12202:4;12184;12189:1;12184:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12184:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;12228:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;12228:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;12184:7;;12228:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12218:4;12223:1;12218:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12218:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;12293:15:::1;::::0;12261:62:::1;::::0;12278:4:::1;::::0;12293:15:::1;12311:11:::0;12261:8:::1;:62::i;:::-;12334:15;::::0;:196:::1;::::0;-1:-1:-1;;;12334:196:0;;-1:-1:-1;;;;;12334:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;12415:11;;12334:15:::1;::::0;12457:4;;12484::::1;::::0;12504:15:::1;::::0;12334:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6229:6:0;:14;;-1:-1:-1;;;;6229:14:0;;;-1:-1:-1;;;;12055:483:0:o;12653:239::-;12766:7;12761:28;;12775:14;:12;:14::i;:::-;12800:44;12818:6;12826:9;12837:6;12800:17;:44::i;:::-;12860:7;12855:29;;12869:15;9168:17;;9156:9;:29;9206:15;;9196:7;:25;9112:117;15194:164;15236:7;15257:15;15274;15293:19;:17;:19::i;:::-;15256:56;;-1:-1:-1;15256:56:0;-1:-1:-1;15330:20:0;15256:56;;15330:11;:20::i;:::-;15323:27;;;;15194:164;:::o;3156:132::-;3214:7;3241:39;3245:1;3248;3241:39;;;;;;;;;;;;;;;;;:3;:39::i;8885:219::-;8932:9;;:14;:30;;;;-1:-1:-1;8950:7:0;;:12;8932:30;8928:43;;;8885:219::o;8928:43::-;9003:9;;;8983:17;:29;9041:7;;;9023:15;:25;-1:-1:-1;9061:13:0;;;;9085:11;8885:219::o;12900:578::-;13013:15;13043:23;13081:12;13108:23;13146:12;13173:13;13200:19;13211:7;13200:10;:19::i;:::-;-1:-1:-1;;;;;13250:15:0;;;;;;:7;:15;;;;;;12998:221;;-1:-1:-1;12998:221:0;;-1:-1:-1;12998:221:0;;-1:-1:-1;12998:221:0;-1:-1:-1;12998:221:0;-1:-1:-1;12998:221:0;-1:-1:-1;13250:28:0;;12998:221;13250:19;:28::i;:::-;-1:-1:-1;;;;;13232:15:0;;;;;;;:7;:15;;;;;;:46;;;;13310:18;;;;;;;:39;;13333:15;13310:22;:39::i;:::-;-1:-1:-1;;;;;13289:18:0;;;;;;:7;:18;;;;;:60;13360:16;13370:5;13360:9;:16::i;:::-;13387:23;13399:4;13405;13387:11;:23::i;:::-;13443:9;-1:-1:-1;;;;;13426:44:0;13435:6;-1:-1:-1;;;;;13426:44:0;;13454:15;13426:44;;;;1595:25:1;;1583:2;1568:18;;1449:177;13426:44:0;;;;;;;;12987:491;;;;;;12900:578;;;:::o;15366:257::-;15464:7;;15417;;;;5004:18;15532:20;15464:7;5004:18;15532:11;:20::i;:::-;15522:7;:30;15518:61;;;-1:-1:-1;;15562:7:0;;;5004:18;;-1:-1:-1;15366:257:0;-1:-1:-1;15366:257:0:o;15518:61::-;15598:7;;15607;;-1:-1:-1;15366:257:0;-1:-1:-1;15366:257:0:o;3296:189::-;3382:7;3417:12;3410:5;3402:28;;;;-1:-1:-1;;;3402:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3441:9:0;3453:5;3457:1;3453;:5;:::i;13897:499::-;13956:7;13965;13974;13983;13992;14001;14027:23;14052:12;14066:13;14096:40;14108:7;14117:9;;14128:7;;14096:11;:40::i;:::-;14026:110;;;;;;14147:19;14169:10;:8;:10::i;:::-;14147:32;;14191:15;14208:23;14233:12;14262:46;14274:7;14283:4;14289:5;14296:11;14262;:46::i;:::-;14190:118;;-1:-1:-1;14190:118:0;-1:-1:-1;14190:118:0;-1:-1:-1;14359:15:0;;-1:-1:-1;14376:4:0;;-1:-1:-1;14382:5:0;;-1:-1:-1;;;;;13897:499:0;;;;;;;:::o;2560:136::-;2618:7;2645:43;2649:1;2652;2645:43;;;;;;;;;;;;;;;;;:3;:43::i;2373:179::-;2431:7;;2463:5;2467:1;2463;:5;:::i;:::-;2451:17;;2492:1;2487;:6;;2479:46;;;;-1:-1:-1;;;2479:46:0;;11828:2:1;2479:46:0;;;11810:21:1;11867:2;11847:18;;;11840:30;11906:29;11886:18;;;11879:57;11953:18;;2479:46:0;11626:351:1;13486:211:0;13539:19;13561:10;:8;:10::i;:::-;13539:32;-1:-1:-1;13582:13:0;13598:22;:5;13539:32;13598:9;:22::i;:::-;13672:4;13656:22;;;;:7;:22;;;;;;13582:38;;-1:-1:-1;13656:33:0;;13582:38;13656:26;:33::i;:::-;13647:4;13631:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;13486:211:0:o;13705:147::-;13783:7;;:17;;13795:4;13783:11;:17::i;:::-;13773:7;:27;13824:10;;:20;;13839:4;13824:14;:20::i;:::-;13811:10;:33;-1:-1:-1;;13705:147:0:o;14404:359::-;14499:7;;;;14557:30;14583:3;14557:21;:7;14569:8;14557:11;:21::i;:::-;:25;;:30::i;:::-;14542:45;-1:-1:-1;14598:13:0;14614:28;14638:3;14614:19;:7;14626:6;14614:11;:19::i;:28::-;14598:44;-1:-1:-1;14653:23:0;14679:28;14598:44;14679:17;:7;14691:4;14679:11;:17::i;:::-;:21;;:28::i;:::-;14653:54;14743:4;;-1:-1:-1;14749:5:0;;-1:-1:-1;14404:359:0;;-1:-1:-1;;;;;14404:359:0:o;14771:415::-;14882:7;;;;14943:24;:7;14955:11;14943;:24::i;:::-;14925:42;-1:-1:-1;14978:12:0;14993:21;:4;15002:11;14993:8;:21::i;:::-;14978:36;-1:-1:-1;15025:13:0;15041:22;:5;15051:11;15041:9;:22::i;:::-;15025:38;-1:-1:-1;15074:23:0;15100:28;15025:38;15100:17;:7;15112:4;15100:11;:17::i;:28::-;15147:7;;;;-1:-1:-1;15173:4:0;;-1:-1:-1;14771:415:0;;-1:-1:-1;;;;;;;14771:415:0:o;2902:246::-;2960:7;2984:1;2989;2984:6;2980:47;;-1:-1:-1;3014:1:0;3007:8;;2980:47;3037:9;3049:5;3053:1;3049;:5;:::i;:::-;3037:17;-1:-1:-1;3082:1:0;3073:5;3077:1;3037:17;3073:5;:::i;:::-;:10;3065:56;;;;-1:-1:-1;;;3065:56:0;;12357:2:1;3065:56:0;;;12339:21:1;12396:2;12376:18;;;12369:30;12435:34;12415:18;;;12408:62;-1:-1:-1;;;12486:18:1;;;12479:31;12527:19;;3065:56:0;12155:397:1;14:548;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1631:456::-;1708:6;1716;1724;1777:2;1765:9;1756:7;1752:23;1748:32;1745:52;;;1793:1;1790;1783:12;1745:52;1832:9;1819:23;1851:31;1876:5;1851:31;:::i;:::-;1901:5;-1:-1:-1;1958:2:1;1943:18;;1930:32;1971:33;1930:32;1971:33;:::i;:::-;1631:456;;2023:7;;-1:-1:-1;;;2077:2:1;2062:18;;;;2049:32;;1631:456::o;2092:160::-;2157:20;;2213:13;;2206:21;2196:32;;2186:60;;2242:1;2239;2232:12;2186:60;2092:160;;;:::o;2257:323::-;2330:6;2338;2391:2;2379:9;2370:7;2366:23;2362:32;2359:52;;;2407:1;2404;2397:12;2359:52;2446:9;2433:23;2465:31;2490:5;2465:31;:::i;:::-;2515:5;-1:-1:-1;2539:35:1;2570:2;2555:18;;2539:35;:::i;:::-;2529:45;;2257:323;;;;;:::o;2982:180::-;3038:6;3091:2;3079:9;3070:7;3066:23;3062:32;3059:52;;;3107:1;3104;3097:12;3059:52;3130:26;3146:9;3130:26;:::i;3167:247::-;3226:6;3279:2;3267:9;3258:7;3254:23;3250:32;3247:52;;;3295:1;3292;3285:12;3247:52;3334:9;3321:23;3353:31;3378:5;3353:31;:::i;3419:180::-;3478:6;3531:2;3519:9;3510:7;3506:23;3502:32;3499:52;;;3547:1;3544;3537:12;3499:52;-1:-1:-1;3570:23:1;;3419:180;-1:-1:-1;3419:180:1:o;3864:388::-;3932:6;3940;3993:2;3981:9;3972:7;3968:23;3964:32;3961:52;;;4009:1;4006;3999:12;3961:52;4048:9;4035:23;4067:31;4092:5;4067:31;:::i;:::-;4117:5;-1:-1:-1;4174:2:1;4159:18;;4146:32;4187:33;4146:32;4187:33;:::i;:::-;4239:7;4229:17;;;3864:388;;;;;:::o;4257:356::-;4459:2;4441:21;;;4478:18;;;4471:30;4537:34;4532:2;4517:18;;4510:62;4604:2;4589:18;;4257:356::o;8736:127::-;8797:10;8792:3;8788:20;8785:1;8778:31;8828:4;8825:1;8818:15;8852:4;8849:1;8842:15;8868:125;8933:9;;;8954:10;;;8951:36;;;8967:18;;:::i;9355:128::-;9422:9;;;9443:11;;;9440:37;;;9457:18;;:::i;10031:127::-;10092:10;10087:3;10083:20;10080:1;10073:31;10123:4;10120:1;10113:15;10147:4;10144:1;10137:15;10163:251;10233:6;10286:2;10274:9;10265:7;10261:23;10257:32;10254:52;;;10302:1;10299;10292:12;10254:52;10334:9;10328:16;10353:31;10378:5;10353:31;:::i;10419:980::-;10681:4;10729:3;10718:9;10714:19;10760:6;10749:9;10742:25;10786:2;10824:6;10819:2;10808:9;10804:18;10797:34;10867:3;10862:2;10851:9;10847:18;10840:31;10891:6;10926;10920:13;10957:6;10949;10942:22;10995:3;10984:9;10980:19;10973:26;;11034:2;11026:6;11022:15;11008:29;;11055:1;11065:195;11079:6;11076:1;11073:13;11065:195;;;11144:13;;-1:-1:-1;;;;;11140:39:1;11128:52;;11235:15;;;;11200:12;;;;11176:1;11094:9;11065:195;;;-1:-1:-1;;;;;;;11316:32:1;;;;11311:2;11296:18;;11289:60;-1:-1:-1;;;11380:3:1;11365:19;11358:35;11277:3;10419:980;-1:-1:-1;;;10419:980:1:o;11404:217::-;11444:1;11470;11460:132;;11514:10;11509:3;11505:20;11502:1;11495:31;11549:4;11546:1;11539:15;11577:4;11574:1;11567:15;11460:132;-1:-1:-1;11606:9:1;;11404:217::o;11982:168::-;12055:9;;;12086;;12103:15;;;12097:22;;12083:37;12073:71;;12124:18;;:::i

Swarm Source

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