ETH Price: $3,399.82 (+3.18%)

Token

Izumi (IZUMI)
 

Overview

Max Total Supply

420,690,000,000 IZUMI

Holders

217

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
3.172850767 IZUMI

Value
$0.00
0xf2b53e4e2f04ab6f1b623ca2a0ee85f6116d1a8a
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:
IZUMI

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-10-18
*/

// SPDX-License-Identifier: MIT

/*
$IZUMI - Neiro's First Name (OG NEIRO)

Izumi’s story is one of resilience and new beginnings. Rescued by an animal shelter and named for a fresh start, she found love with Riko Wako Mama before her journey led to Kabosu Mama, who saw her true potential. Renamed Neiro, she became the heir to the Doge name. Her rise to greatness began with the name Izumi.

Website: https://izumierc.com
Telegram: https://t.me/Izumioneth
Twitter: https://x.com/Izumioneth
Medium : https://medium.com/@izumioneth
*/

pragma solidity 0.8.23;

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

interface IToken {
    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);
}

library MathLib {
    function safeAdd(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "MathLib: addition overflow");
        return c;
    }

    function safeSub(uint256 a, uint256 b) internal pure returns (uint256) {
        return safeSub(a, b, "MathLib: subtraction overflow");
    }

    function safeSub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }

    function safeMul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "MathLib: multiplication overflow");
        return c;
    }

    function safeDiv(uint256 a, uint256 b) internal pure returns (uint256) {
        return safeDiv(a, b, "MathLib: division by zero");
    }

    function safeDiv(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

contract OwnerControl is Context {
    address private contractOwner;
    event OwnershipChanged(address indexed previousOwner, address indexed newOwner);

    constructor() {
        address msgSender = _msgSender();
        contractOwner = msgSender;
        emit OwnershipChanged(address(0), msgSender);
    }

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

    modifier onlyContractOwner() {
        require(contractOwner == _msgSender(), "OwnerControl: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyContractOwner {
        emit OwnershipChanged(contractOwner, address(0));
        contractOwner = address(0);
        remove_Max_Limits();
    }

    function remove_Max_Limits() internal virtual {}

    function changeOwnership(address newOwner) public virtual onlyContractOwner {
        require(newOwner != address(0), "OwnerControl: new owner is the zero address");
        emit OwnershipChanged(contractOwner, newOwner);
        contractOwner = newOwner;
    }
}

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

interface IUniswapRouter {
    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);
}

contract IZUMI is Context, IToken, OwnerControl {
    using MathLib for uint256;
    
    mapping (address => uint256) private balances;
    mapping (address => mapping (address => uint256)) private allowances;
    mapping (address => bool) private exAddrs;
    mapping (uint256 => uint256) private buyTxns_Count; 
    address payable private fee_Wallet_Addr;


    struct Fees {
        uint256 iBFee;
        uint256 iSFee;
        uint256 eBFee;
        uint256 eSFee;
    }

    struct Threshold {
        uint256 thresBFee;
        uint256 thresSFee;
        uint256 swapThresL;
    }
    
    uint256 private initialBlock = 0; uint256 private total_Buys_Count = 0; 
    uint256 private total_Sells_Count = 0; uint256 private lastSellBlock = 0;


    uint8 private constant DECIMALS = 9;
    uint256 private constant TOTAL_SUPPLY = 420690000000 * 10 ** DECIMALS;
    string private constant NAME = unicode"Izumi";
    string private constant SYMBOL = unicode"IZUMI";
    
    uint256 public maxTransactionAmount = 4206900000 * 10 ** DECIMALS;
    uint256 public maxWalletSize = 4206900000 * 10 ** DECIMALS;
    uint256 public swapFeeThreshold = 4200000000 * 10 ** DECIMALS;
    uint256 public feeSwapLimit = 4206900000 * 10 ** DECIMALS;

    IUniswapRouter private uniswapRouter;
    address public uniswapPair;
    bool private isTradingOpen;
    uint256 public maxCaNum = 3;
    bool private isSwapping = false;
    bool private swapEnabled = false;
    bool public swapCaNum = true;

    event MaxTransactionAmountUpdated(uint256 maxTransactionAmount);
    
    modifier swapLock {
        isSwapping = true;
        _;
        isSwapping = false;
    }

    constructor() {
        fee_Wallet_Addr = payable(0x53b9183AA2eb36865c8F1E06F805D7DfDED31a92);
        balances[_msgSender()] = TOTAL_SUPPLY;
        exAddrs[owner()] = true;
        exAddrs[address(this)] = true;
        exAddrs[address(uniswapPair)] = true;
        
        emit Transfer(address(0), _msgSender(), TOTAL_SUPPLY);
    }

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

    function balanceOf(address account) public view override returns (uint256) {
        return balances[account];
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _executeTransfer(_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) {
        _setApproval(_msgSender(), spender, amount);
        return true;
    }

    Fees private feeInfo = Fees(20, 20, 0, 0);
    Threshold private thresInfo = Threshold(30, 30, 30);

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _executeTransfer(sender, recipient, amount);
        _setApproval(sender, _msgSender(), allowances[sender][_msgSender()].safeSub(amount, "transfer exceeds allowance"));
        return true;
    }

    function _setApproval(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "approve from zero address");
        require(spender != address(0), "approve to zero address");
        allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _executeTransfer(address from, address to, uint256 amount) private {
        require(from != address(0), "transfer from zero address");
        require(to != address(0), "transfer to zero address");
        require(amount > 0, "transfer amount must be greater than zero");
        
        uint256 feeAmount = 0;

        if (from != owner() && to != owner()) {
            feeAmount = amount.safeMul((total_Buys_Count > thresInfo.thresBFee) ? feeInfo.eBFee : feeInfo.iBFee).safeDiv(100);

            if (block.number == initialBlock) {
                require(buyTxns_Count[block.number] < 40, "exceeds buy limit for initial block.");
                buyTxns_Count[block.number]++;
            }

            if (from == uniswapPair && to != address(uniswapRouter) && !exAddrs[to]) {
                require(amount <= maxTransactionAmount, "exceeds max transaction amount.");
                require(balanceOf(to) + amount <= maxWalletSize, "exceeds max wallet size.");
                total_Buys_Count++;
            }

            if (to != uniswapPair && !exAddrs[to]) {
                require(balanceOf(to) + amount <= maxWalletSize, "exceeds max wallet size.");
            }

            if (to == uniswapPair && from != address(this)) {
                feeAmount = amount.safeMul((total_Buys_Count > thresInfo.thresSFee) ? feeInfo.eSFee : feeInfo.iSFee).safeDiv(100);
            }

            if (from != uniswapPair && to != uniswapPair && from != address(this)) {
                feeAmount = 0;
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (swapCaNum && !isSwapping && to == uniswapPair && swapEnabled && contractTokenBalance > swapFeeThreshold && total_Buys_Count > thresInfo.swapThresL) {
                if (block.number > lastSellBlock) {
                    total_Sells_Count = 0;
                }
                require(total_Sells_Count < maxCaNum, "CA balance sell limit reached");
                _swapTokensForEth(min(amount, min(contractTokenBalance, feeSwapLimit)));
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
                total_Sells_Count++;
                lastSellBlock = block.number;
            } else if (!isSwapping && to == uniswapPair && swapEnabled && contractTokenBalance > swapFeeThreshold && total_Buys_Count > thresInfo.swapThresL) {
                _swapTokensForEth(min(amount, min(contractTokenBalance, feeSwapLimit)));
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        if (feeAmount > 0) {
            balances[address(this)] = balances[address(this)].safeAdd(feeAmount);
            emit Transfer(from, address(this), feeAmount);
        }
        balances[from] = balances[from].safeSub(amount);
        balances[to] = balances[to].safeAdd(amount.safeSub(feeAmount));
        emit Transfer(from, to, amount.safeSub(feeAmount));
    }

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

    function _swapTokensForEth(uint256 tokenAmount) private swapLock {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapRouter.WETH();
        _setApproval(address(this), address(uniswapRouter), tokenAmount);
        uniswapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

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

    function configThresLimit(bool swapStatus, uint256 swapAmount, bool caStatus, uint256 caAmount) external onlyContractOwner {
        swapEnabled = swapStatus;
        feeSwapLimit = swapAmount;
        swapCaNum = caStatus;
        maxCaNum = caAmount;
    }

    function rescue_StuckETH() external onlyContractOwner {
        payable(fee_Wallet_Addr).transfer(address(this).balance);
    }

    function rescue_Any_ERC20Tokens(address tokenAddr, uint amount) external onlyContractOwner {
        IToken(tokenAddr).transfer(fee_Wallet_Addr, amount);
    }

    function remove_Max_Limits() internal override {
        maxTransactionAmount = TOTAL_SUPPLY;
        maxWalletSize = TOTAL_SUPPLY;
        emit MaxTransactionAmountUpdated(TOTAL_SUPPLY);
    }

    function enableTrading() external onlyContractOwner() {
        require(!isTradingOpen, "trading is already open");
        uniswapRouter = IUniswapRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _setApproval(address(this), address(uniswapRouter), TOTAL_SUPPLY);
        uniswapPair = IUniswapFactory(uniswapRouter.factory()).createPair(address(this), uniswapRouter.WETH());
        exAddrs[address(uniswapPair)] = true;
        uniswapRouter.addLiquidityETH{value: address(this).balance}(address(this), balanceOf(address(this)), 0, 0, owner(), block.timestamp);
        IToken(uniswapPair).approve(address(uniswapRouter), type(uint).max);
        swapEnabled = true;
        isTradingOpen = true;
        initialBlock = block.number;
    }

    receive() external payable {}
}

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":"maxTransactionAmount","type":"uint256"}],"name":"MaxTransactionAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipChanged","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":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"changeOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"swapStatus","type":"bool"},{"internalType":"uint256","name":"swapAmount","type":"uint256"},{"internalType":"bool","name":"caStatus","type":"bool"},{"internalType":"uint256","name":"caAmount","type":"uint256"}],"name":"configThresLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeSwapLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxCaNum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","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":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddr","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescue_Any_ERC20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescue_StuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapCaNum","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapFeeThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040525f6006555f6007555f6008555f6009556009600a62000024919062000399565b620000349063fac03320620003b0565b600a556009600a62000047919062000399565b620000579063fac03320620003b0565b600b55620000686009600a62000399565b620000789063fa56ea00620003b0565b600c55620000896009600a62000399565b620000999063fac03320620003b0565b600d5560036010556011805462ffffff19166201000017905560408051608081018252601480825260208083018290525f8385018190526060938401819052601283905560138390559182905560159190915582519182018352601e8083529082018190529101819052601681905560178190556018553480156200011c575f80fd5b505f80546001600160a01b031916339081178255604051909182917f0384899bd253d83b23daa4d29aaa2efe0563d1132b43101e9ad667235aeb951b908290a350600580546001600160a01b0319167353b9183aa2eb36865c8f1e06f805d7dfded31a92179055620001916009600a62000399565b620001a2906461f313f880620003b0565b335f908152600160208190526040822092909255600390620001cb5f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff199687161790553081526003909352818320805485166001908117909155600f54909116835291208054909216179055620002293390565b6001600160a01b03165f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620002626009600a62000399565b62000273906461f313f880620003b0565b60405190815260200160405180910390a3620003ca565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620002de57815f1904821115620002c257620002c26200028a565b80851615620002d057918102915b93841c9390800290620002a3565b509250929050565b5f82620002f65750600162000393565b816200030457505f62000393565b81600181146200031d5760028114620003285762000348565b600191505062000393565b60ff8411156200033c576200033c6200028a565b50506001821b62000393565b5060208310610133831016604e8410600b84101617156200036d575081810a62000393565b6200037983836200029e565b805f19048211156200038f576200038f6200028a565b0290505b92915050565b5f620003a960ff841683620002e6565b9392505050565b80820281158282048414176200039357620003936200028a565b611c8580620003d85f395ff3fe60806040526004361061013f575f3560e01c8063715018a6116100b3578063a9059cbb1161006d578063a9059cbb1461038a578063c816841b146103a9578063c8c8ebe4146103c8578063d5b3173e146103dd578063dd62ed3e146103f2578063fcb4082d14610436575f80fd5b8063715018a6146102d15780638a8c523c146102e55780638da5cb5b146102f95780638f3fa8601461032957806395d89b411461033e578063a5de50f91461036b575f80fd5b806323b872dd1161010457806323b872dd1461020e578063288db6831461022d5780632af4c31e14610242578063313ce5671461026357806345220c091461027e57806370a082311461029d575f80fd5b806306fdde031461014a578063095ea7b31461018957806318160ddd146101b85780631a4dcd85146101da5780631e15007f146101f9575f80fd5b3661014657005b5f80fd5b348015610155575f80fd5b50604080518082019091526005815264497a756d6960d81b60208201525b6040516101809190611842565b60405180910390f35b348015610194575f80fd5b506101a86101a33660046118a2565b61044a565b6040519015158152602001610180565b3480156101c3575f80fd5b506101cc610460565b604051908152602001610180565b3480156101e5575f80fd5b506011546101a89062010000900460ff1681565b348015610204575f80fd5b506101cc600c5481565b348015610219575f80fd5b506101a86102283660046118cc565b610481565b348015610238575f80fd5b506101cc600d5481565b34801561024d575f80fd5b5061026161025c36600461190a565b610526565b005b34801561026e575f80fd5b5060405160098152602001610180565b348015610289575f80fd5b506102616102983660046118a2565b61061b565b3480156102a8575f80fd5b506101cc6102b736600461190a565b6001600160a01b03165f9081526001602052604090205490565b3480156102dc575f80fd5b506102616106bd565b3480156102f0575f80fd5b50610261610736565b348015610304575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610180565b348015610334575f80fd5b506101cc600b5481565b348015610349575f80fd5b50604080518082019091526005815264495a554d4960d81b6020820152610173565b348015610376575f80fd5b50610261610385366004611932565b610b09565b348015610395575f80fd5b506101a86103a43660046118a2565b610b6b565b3480156103b4575f80fd5b50600f54610311906001600160a01b031681565b3480156103d3575f80fd5b506101cc600a5481565b3480156103e8575f80fd5b506101cc60105481565b3480156103fd575f80fd5b506101cc61040c366004611977565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b348015610441575f80fd5b50610261610b77565b5f610456338484610bd9565b5060015b92915050565b5f61046d6009600a611aa2565b61047c906461f313f880611ab0565b905090565b5f61048d848484610ce5565b61051c8433610517856040518060400160405280601a81526020017f7472616e73666572206578636565647320616c6c6f77616e636500000000000081525060025f8b6001600160a01b03166001600160a01b031681526020019081526020015f205f6104f73390565b6001600160a01b0316815260208101919091526040015f20549190611440565b610bd9565b5060019392505050565b5f546001600160a01b031633146105585760405162461bcd60e51b815260040161054f90611ac7565b60405180910390fd5b6001600160a01b0381166105c25760405162461bcd60e51b815260206004820152602b60248201527f4f776e6572436f6e74726f6c3a206e6577206f776e657220697320746865207a60448201526a65726f206164647265737360a81b606482015260840161054f565b5f80546040516001600160a01b03808516939216917f0384899bd253d83b23daa4d29aaa2efe0563d1132b43101e9ad667235aeb951b91a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146106445760405162461bcd60e51b815260040161054f90611ac7565b60055460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303815f875af1158015610694573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106b89190611b0c565b505050565b5f546001600160a01b031633146106e65760405162461bcd60e51b815260040161054f90611ac7565b5f80546040516001600160a01b03909116907f0384899bd253d83b23daa4d29aaa2efe0563d1132b43101e9ad667235aeb951b908390a35f80546001600160a01b0319169055610734611478565b565b5f546001600160a01b0316331461075f5760405162461bcd60e51b815260040161054f90611ac7565b600f54600160a01b900460ff16156107b95760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e000000000000000000604482015260640161054f565b600e80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556108039030906107f46009600a611aa2565b610517906461f313f880611ab0565b600e5f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610853573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108779190611b27565b6001600160a01b031663c9c6539630600e5f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108d6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108fa9190611b27565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610944573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109689190611b27565b600f80546001600160a01b039283166001600160a01b031990911681179091555f908152600360205260409020805460ff19166001179055600e541663f305d71947306109c9816001600160a01b03165f9081526001602052604090205490565b5f806109dc5f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610a42573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610a679190611b42565b5050600f54600e5460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610abc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ae09190611b0c565b506011805461ff001916610100179055600f805460ff60a01b1916600160a01b17905543600655565b5f546001600160a01b03163314610b325760405162461bcd60e51b815260040161054f90611ac7565b60118054600d9490945562ffff00199093166101009415159490940262ff00001916939093176201000091151591909102179055601055565b5f610456338484610ce5565b5f546001600160a01b03163314610ba05760405162461bcd60e51b815260040161054f90611ac7565b6005546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015610bd6573d5f803e3d5ffd5b50565b6001600160a01b038316610c2f5760405162461bcd60e51b815260206004820152601960248201527f617070726f76652066726f6d207a65726f206164647265737300000000000000604482015260640161054f565b6001600160a01b038216610c855760405162461bcd60e51b815260206004820152601760248201527f617070726f766520746f207a65726f2061646472657373000000000000000000604482015260640161054f565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610d3b5760405162461bcd60e51b815260206004820152601a60248201527f7472616e736665722066726f6d207a65726f2061646472657373000000000000604482015260640161054f565b6001600160a01b038216610d915760405162461bcd60e51b815260206004820152601860248201527f7472616e7366657220746f207a65726f20616464726573730000000000000000604482015260640161054f565b5f8111610df25760405162461bcd60e51b815260206004820152602960248201527f7472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161054f565b5f80546001600160a01b03858116911614801590610e1d57505f546001600160a01b03848116911614155b1561130357610e506064610e4a60165f015460075411610e3f57601254610e43565b6014545b8590611505565b90611580565b90506006544303610ee557435f90815260046020526040902054602811610ec55760405162461bcd60e51b8152602060048201526024808201527f6578636565647320627579206c696d697420666f7220696e697469616c20626c60448201526337b1b59760e11b606482015260840161054f565b435f908152600460205260408120805491610edf83611b6d565b91905055505b600f546001600160a01b038581169116148015610f105750600e546001600160a01b03848116911614155b8015610f3457506001600160a01b0383165f9081526003602052604090205460ff16155b1561101557600a54821115610f8b5760405162461bcd60e51b815260206004820152601f60248201527f65786365656473206d6178207472616e73616374696f6e20616d6f756e742e00604482015260640161054f565b600b5482610fad856001600160a01b03165f9081526001602052604090205490565b610fb79190611b85565b11156110005760405162461bcd60e51b815260206004820152601860248201527732bc31b2b2b2399036b0bc103bb0b63632ba1039b4bd329760411b604482015260640161054f565b60078054905f61100f83611b6d565b91905055505b600f546001600160a01b0384811691161480159061104b57506001600160a01b0383165f9081526003602052604090205460ff16155b156110c557600b5482611072856001600160a01b03165f9081526001602052604090205490565b61107c9190611b85565b11156110c55760405162461bcd60e51b815260206004820152601860248201527732bc31b2b2b2399036b0bc103bb0b63632ba1039b4bd329760411b604482015260640161054f565b600f546001600160a01b0384811691161480156110eb57506001600160a01b0384163014155b1561111b576111186064610e4a6016600101546007541161110e57601354610e43565b6015548590611505565b90505b600f546001600160a01b038581169116148015906111475750600f546001600160a01b03848116911614155b801561115c57506001600160a01b0384163014155b1561116457505f5b305f9081526001602052604090205460115462010000900460ff16801561118e575060115460ff16155b80156111a75750600f546001600160a01b038581169116145b80156111ba5750601154610100900460ff165b80156111c75750600c5481115b80156111d65750601854600754115b15611288576009544311156111ea575f6008555b6010546008541061123d5760405162461bcd60e51b815260206004820152601d60248201527f43412062616c616e63652073656c6c206c696d69742072656163686564000000604482015260640161054f565b61125a6112558461125084600d546115c1565b6115c1565b6115d5565b47801561126a5761126a4761173c565b60088054905f61127983611b6d565b90915550504360095550611301565b60115460ff161580156112a85750600f546001600160a01b038581169116145b80156112bb5750601154610100900460ff165b80156112c85750600c5481115b80156112d75750601854600754115b15611301576112ef6112558461125084600d546115c1565b4780156112ff576112ff4761173c565b505b505b801561137b57305f908152600160205260409020546113229082611777565b305f81815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906113729085815260200190565b60405180910390a35b6001600160a01b0384165f9081526001602052604090205461139d90836117d5565b6001600160a01b0385165f908152600160205260409020556113e06113c283836117d5565b6001600160a01b0385165f9081526001602052604090205490611777565b6001600160a01b038085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61142985856117d5565b60405190815260200160405180910390a350505050565b5f81848411156114635760405162461bcd60e51b815260040161054f9190611842565b505f61146f8486611b98565b95945050505050565b6114846009600a611aa2565b611493906461f313f880611ab0565b600a9081556114a490600990611aa2565b6114b3906461f313f880611ab0565b600b557f7c1cb3702d8e1fa6d24b12dd90670ab69c6d66d58233103d37da8b07d6b850ac6114e36009600a611aa2565b6114f2906461f313f880611ab0565b60405190815260200160405180910390a1565b5f825f0361151457505f61045a565b5f61151f8385611ab0565b90508261152c8583611bab565b146115795760405162461bcd60e51b815260206004820181905260248201527f4d6174684c69623a206d756c7469706c69636174696f6e206f766572666c6f77604482015260640161054f565b9392505050565b5f61157983836040518060400160405280601981526020017f4d6174684c69623a206469766973696f6e206279207a65726f00000000000000815250611816565b5f8183116115cf5782611579565b50919050565b6011805460ff191660011790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061161557611615611bca565b6001600160a01b03928316602091820292909201810191909152600e54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561166c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116909190611b27565b816001815181106116a3576116a3611bca565b6001600160a01b039283166020918202929092010152600e546116c99130911684610bd9565b600e5460405163791ac94760e01b81526001600160a01b039091169063791ac947906117019085905f90869030904290600401611bde565b5f604051808303815f87803b158015611718575f80fd5b505af115801561172a573d5f803e3d5ffd5b50506011805460ff1916905550505050565b6005546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611773573d5f803e3d5ffd5b5050565b5f806117838385611b85565b9050838110156115795760405162461bcd60e51b815260206004820152601a60248201527f4d6174684c69623a206164646974696f6e206f766572666c6f77000000000000604482015260640161054f565b5f61157983836040518060400160405280601d81526020017f4d6174684c69623a207375627472616374696f6e206f766572666c6f77000000815250611440565b5f81836118365760405162461bcd60e51b815260040161054f9190611842565b505f61146f8486611bab565b5f602080835283518060208501525f5b8181101561186e57858101830151858201604001528201611852565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610bd6575f80fd5b5f80604083850312156118b3575f80fd5b82356118be8161188e565b946020939093013593505050565b5f805f606084860312156118de575f80fd5b83356118e98161188e565b925060208401356118f98161188e565b929592945050506040919091013590565b5f6020828403121561191a575f80fd5b81356115798161188e565b8015158114610bd6575f80fd5b5f805f8060808587031215611945575f80fd5b843561195081611925565b935060208501359250604085013561196781611925565b9396929550929360600135925050565b5f8060408385031215611988575f80fd5b82356119938161188e565b915060208301356119a38161188e565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156119fc57815f19048211156119e2576119e26119ae565b808516156119ef57918102915b93841c93908002906119c7565b509250929050565b5f82611a125750600161045a565b81611a1e57505f61045a565b8160018114611a345760028114611a3e57611a5a565b600191505061045a565b60ff841115611a4f57611a4f6119ae565b50506001821b61045a565b5060208310610133831016604e8410600b8410161715611a7d575081810a61045a565b611a8783836119c2565b805f1904821115611a9a57611a9a6119ae565b029392505050565b5f61157960ff841683611a04565b808202811582820484141761045a5761045a6119ae565b60208082526025908201527f4f776e6572436f6e74726f6c3a2063616c6c6572206973206e6f74207468652060408201526437bbb732b960d91b606082015260800190565b5f60208284031215611b1c575f80fd5b815161157981611925565b5f60208284031215611b37575f80fd5b81516115798161188e565b5f805f60608486031215611b54575f80fd5b8351925060208401519150604084015190509250925092565b5f60018201611b7e57611b7e6119ae565b5060010190565b8082018082111561045a5761045a6119ae565b8181038181111561045a5761045a6119ae565b5f82611bc557634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611c2e5784516001600160a01b031683529383019391830191600101611c09565b50506001600160a01b0396909616606085015250505060800152939250505056fea264697066735822122080e9f2367262082823c3492c2729d700d1f386f4da5691ce2c5a1c17a2c1888664736f6c63430008170033

Deployed Bytecode

0x60806040526004361061013f575f3560e01c8063715018a6116100b3578063a9059cbb1161006d578063a9059cbb1461038a578063c816841b146103a9578063c8c8ebe4146103c8578063d5b3173e146103dd578063dd62ed3e146103f2578063fcb4082d14610436575f80fd5b8063715018a6146102d15780638a8c523c146102e55780638da5cb5b146102f95780638f3fa8601461032957806395d89b411461033e578063a5de50f91461036b575f80fd5b806323b872dd1161010457806323b872dd1461020e578063288db6831461022d5780632af4c31e14610242578063313ce5671461026357806345220c091461027e57806370a082311461029d575f80fd5b806306fdde031461014a578063095ea7b31461018957806318160ddd146101b85780631a4dcd85146101da5780631e15007f146101f9575f80fd5b3661014657005b5f80fd5b348015610155575f80fd5b50604080518082019091526005815264497a756d6960d81b60208201525b6040516101809190611842565b60405180910390f35b348015610194575f80fd5b506101a86101a33660046118a2565b61044a565b6040519015158152602001610180565b3480156101c3575f80fd5b506101cc610460565b604051908152602001610180565b3480156101e5575f80fd5b506011546101a89062010000900460ff1681565b348015610204575f80fd5b506101cc600c5481565b348015610219575f80fd5b506101a86102283660046118cc565b610481565b348015610238575f80fd5b506101cc600d5481565b34801561024d575f80fd5b5061026161025c36600461190a565b610526565b005b34801561026e575f80fd5b5060405160098152602001610180565b348015610289575f80fd5b506102616102983660046118a2565b61061b565b3480156102a8575f80fd5b506101cc6102b736600461190a565b6001600160a01b03165f9081526001602052604090205490565b3480156102dc575f80fd5b506102616106bd565b3480156102f0575f80fd5b50610261610736565b348015610304575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610180565b348015610334575f80fd5b506101cc600b5481565b348015610349575f80fd5b50604080518082019091526005815264495a554d4960d81b6020820152610173565b348015610376575f80fd5b50610261610385366004611932565b610b09565b348015610395575f80fd5b506101a86103a43660046118a2565b610b6b565b3480156103b4575f80fd5b50600f54610311906001600160a01b031681565b3480156103d3575f80fd5b506101cc600a5481565b3480156103e8575f80fd5b506101cc60105481565b3480156103fd575f80fd5b506101cc61040c366004611977565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b348015610441575f80fd5b50610261610b77565b5f610456338484610bd9565b5060015b92915050565b5f61046d6009600a611aa2565b61047c906461f313f880611ab0565b905090565b5f61048d848484610ce5565b61051c8433610517856040518060400160405280601a81526020017f7472616e73666572206578636565647320616c6c6f77616e636500000000000081525060025f8b6001600160a01b03166001600160a01b031681526020019081526020015f205f6104f73390565b6001600160a01b0316815260208101919091526040015f20549190611440565b610bd9565b5060019392505050565b5f546001600160a01b031633146105585760405162461bcd60e51b815260040161054f90611ac7565b60405180910390fd5b6001600160a01b0381166105c25760405162461bcd60e51b815260206004820152602b60248201527f4f776e6572436f6e74726f6c3a206e6577206f776e657220697320746865207a60448201526a65726f206164647265737360a81b606482015260840161054f565b5f80546040516001600160a01b03808516939216917f0384899bd253d83b23daa4d29aaa2efe0563d1132b43101e9ad667235aeb951b91a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146106445760405162461bcd60e51b815260040161054f90611ac7565b60055460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303815f875af1158015610694573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106b89190611b0c565b505050565b5f546001600160a01b031633146106e65760405162461bcd60e51b815260040161054f90611ac7565b5f80546040516001600160a01b03909116907f0384899bd253d83b23daa4d29aaa2efe0563d1132b43101e9ad667235aeb951b908390a35f80546001600160a01b0319169055610734611478565b565b5f546001600160a01b0316331461075f5760405162461bcd60e51b815260040161054f90611ac7565b600f54600160a01b900460ff16156107b95760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e000000000000000000604482015260640161054f565b600e80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556108039030906107f46009600a611aa2565b610517906461f313f880611ab0565b600e5f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610853573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108779190611b27565b6001600160a01b031663c9c6539630600e5f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108d6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108fa9190611b27565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610944573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109689190611b27565b600f80546001600160a01b039283166001600160a01b031990911681179091555f908152600360205260409020805460ff19166001179055600e541663f305d71947306109c9816001600160a01b03165f9081526001602052604090205490565b5f806109dc5f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610a42573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610a679190611b42565b5050600f54600e5460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610abc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ae09190611b0c565b506011805461ff001916610100179055600f805460ff60a01b1916600160a01b17905543600655565b5f546001600160a01b03163314610b325760405162461bcd60e51b815260040161054f90611ac7565b60118054600d9490945562ffff00199093166101009415159490940262ff00001916939093176201000091151591909102179055601055565b5f610456338484610ce5565b5f546001600160a01b03163314610ba05760405162461bcd60e51b815260040161054f90611ac7565b6005546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015610bd6573d5f803e3d5ffd5b50565b6001600160a01b038316610c2f5760405162461bcd60e51b815260206004820152601960248201527f617070726f76652066726f6d207a65726f206164647265737300000000000000604482015260640161054f565b6001600160a01b038216610c855760405162461bcd60e51b815260206004820152601760248201527f617070726f766520746f207a65726f2061646472657373000000000000000000604482015260640161054f565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610d3b5760405162461bcd60e51b815260206004820152601a60248201527f7472616e736665722066726f6d207a65726f2061646472657373000000000000604482015260640161054f565b6001600160a01b038216610d915760405162461bcd60e51b815260206004820152601860248201527f7472616e7366657220746f207a65726f20616464726573730000000000000000604482015260640161054f565b5f8111610df25760405162461bcd60e51b815260206004820152602960248201527f7472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161054f565b5f80546001600160a01b03858116911614801590610e1d57505f546001600160a01b03848116911614155b1561130357610e506064610e4a60165f015460075411610e3f57601254610e43565b6014545b8590611505565b90611580565b90506006544303610ee557435f90815260046020526040902054602811610ec55760405162461bcd60e51b8152602060048201526024808201527f6578636565647320627579206c696d697420666f7220696e697469616c20626c60448201526337b1b59760e11b606482015260840161054f565b435f908152600460205260408120805491610edf83611b6d565b91905055505b600f546001600160a01b038581169116148015610f105750600e546001600160a01b03848116911614155b8015610f3457506001600160a01b0383165f9081526003602052604090205460ff16155b1561101557600a54821115610f8b5760405162461bcd60e51b815260206004820152601f60248201527f65786365656473206d6178207472616e73616374696f6e20616d6f756e742e00604482015260640161054f565b600b5482610fad856001600160a01b03165f9081526001602052604090205490565b610fb79190611b85565b11156110005760405162461bcd60e51b815260206004820152601860248201527732bc31b2b2b2399036b0bc103bb0b63632ba1039b4bd329760411b604482015260640161054f565b60078054905f61100f83611b6d565b91905055505b600f546001600160a01b0384811691161480159061104b57506001600160a01b0383165f9081526003602052604090205460ff16155b156110c557600b5482611072856001600160a01b03165f9081526001602052604090205490565b61107c9190611b85565b11156110c55760405162461bcd60e51b815260206004820152601860248201527732bc31b2b2b2399036b0bc103bb0b63632ba1039b4bd329760411b604482015260640161054f565b600f546001600160a01b0384811691161480156110eb57506001600160a01b0384163014155b1561111b576111186064610e4a6016600101546007541161110e57601354610e43565b6015548590611505565b90505b600f546001600160a01b038581169116148015906111475750600f546001600160a01b03848116911614155b801561115c57506001600160a01b0384163014155b1561116457505f5b305f9081526001602052604090205460115462010000900460ff16801561118e575060115460ff16155b80156111a75750600f546001600160a01b038581169116145b80156111ba5750601154610100900460ff165b80156111c75750600c5481115b80156111d65750601854600754115b15611288576009544311156111ea575f6008555b6010546008541061123d5760405162461bcd60e51b815260206004820152601d60248201527f43412062616c616e63652073656c6c206c696d69742072656163686564000000604482015260640161054f565b61125a6112558461125084600d546115c1565b6115c1565b6115d5565b47801561126a5761126a4761173c565b60088054905f61127983611b6d565b90915550504360095550611301565b60115460ff161580156112a85750600f546001600160a01b038581169116145b80156112bb5750601154610100900460ff165b80156112c85750600c5481115b80156112d75750601854600754115b15611301576112ef6112558461125084600d546115c1565b4780156112ff576112ff4761173c565b505b505b801561137b57305f908152600160205260409020546113229082611777565b305f81815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906113729085815260200190565b60405180910390a35b6001600160a01b0384165f9081526001602052604090205461139d90836117d5565b6001600160a01b0385165f908152600160205260409020556113e06113c283836117d5565b6001600160a01b0385165f9081526001602052604090205490611777565b6001600160a01b038085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61142985856117d5565b60405190815260200160405180910390a350505050565b5f81848411156114635760405162461bcd60e51b815260040161054f9190611842565b505f61146f8486611b98565b95945050505050565b6114846009600a611aa2565b611493906461f313f880611ab0565b600a9081556114a490600990611aa2565b6114b3906461f313f880611ab0565b600b557f7c1cb3702d8e1fa6d24b12dd90670ab69c6d66d58233103d37da8b07d6b850ac6114e36009600a611aa2565b6114f2906461f313f880611ab0565b60405190815260200160405180910390a1565b5f825f0361151457505f61045a565b5f61151f8385611ab0565b90508261152c8583611bab565b146115795760405162461bcd60e51b815260206004820181905260248201527f4d6174684c69623a206d756c7469706c69636174696f6e206f766572666c6f77604482015260640161054f565b9392505050565b5f61157983836040518060400160405280601981526020017f4d6174684c69623a206469766973696f6e206279207a65726f00000000000000815250611816565b5f8183116115cf5782611579565b50919050565b6011805460ff191660011790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061161557611615611bca565b6001600160a01b03928316602091820292909201810191909152600e54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561166c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116909190611b27565b816001815181106116a3576116a3611bca565b6001600160a01b039283166020918202929092010152600e546116c99130911684610bd9565b600e5460405163791ac94760e01b81526001600160a01b039091169063791ac947906117019085905f90869030904290600401611bde565b5f604051808303815f87803b158015611718575f80fd5b505af115801561172a573d5f803e3d5ffd5b50506011805460ff1916905550505050565b6005546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611773573d5f803e3d5ffd5b5050565b5f806117838385611b85565b9050838110156115795760405162461bcd60e51b815260206004820152601a60248201527f4d6174684c69623a206164646974696f6e206f766572666c6f77000000000000604482015260640161054f565b5f61157983836040518060400160405280601d81526020017f4d6174684c69623a207375627472616374696f6e206f766572666c6f77000000815250611440565b5f81836118365760405162461bcd60e51b815260040161054f9190611842565b505f61146f8486611bab565b5f602080835283518060208501525f5b8181101561186e57858101830151858201604001528201611852565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610bd6575f80fd5b5f80604083850312156118b3575f80fd5b82356118be8161188e565b946020939093013593505050565b5f805f606084860312156118de575f80fd5b83356118e98161188e565b925060208401356118f98161188e565b929592945050506040919091013590565b5f6020828403121561191a575f80fd5b81356115798161188e565b8015158114610bd6575f80fd5b5f805f8060808587031215611945575f80fd5b843561195081611925565b935060208501359250604085013561196781611925565b9396929550929360600135925050565b5f8060408385031215611988575f80fd5b82356119938161188e565b915060208301356119a38161188e565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156119fc57815f19048211156119e2576119e26119ae565b808516156119ef57918102915b93841c93908002906119c7565b509250929050565b5f82611a125750600161045a565b81611a1e57505f61045a565b8160018114611a345760028114611a3e57611a5a565b600191505061045a565b60ff841115611a4f57611a4f6119ae565b50506001821b61045a565b5060208310610133831016604e8410600b8410161715611a7d575081810a61045a565b611a8783836119c2565b805f1904821115611a9a57611a9a6119ae565b029392505050565b5f61157960ff841683611a04565b808202811582820484141761045a5761045a6119ae565b60208082526025908201527f4f776e6572436f6e74726f6c3a2063616c6c6572206973206e6f74207468652060408201526437bbb732b960d91b606082015260800190565b5f60208284031215611b1c575f80fd5b815161157981611925565b5f60208284031215611b37575f80fd5b81516115798161188e565b5f805f60608486031215611b54575f80fd5b8351925060208401519150604084015190509250925092565b5f60018201611b7e57611b7e6119ae565b5060010190565b8082018082111561045a5761045a6119ae565b8181038181111561045a5761045a6119ae565b5f82611bc557634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611c2e5784516001600160a01b031683529383019391830191600101611c09565b50506001600160a01b0396909616606085015250505060800152939250505056fea264697066735822122080e9f2367262082823c3492c2729d700d1f386f4da5691ce2c5a1c17a2c1888664736f6c63430008170033

Deployed Bytecode Sourcemap

4420:9359:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6493:82;;;;;;;;;;-1:-1:-1;6563:4:0;;;;;;;;;;;;-1:-1:-1;;;6563:4:0;;;;6493:82;;;;;;;:::i;:::-;;;;;;;;7333:165;;;;;;;;;;-1:-1:-1;7333:165:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;7333:165:0;1023:187:1;6767:100:0;;;;;;;;;;;;;:::i;:::-;;;1361:25:1;;;1349:2;1334:18;6767:100:0;1215:177:1;5924:28:0;;;;;;;;;;-1:-1:-1;5924:28:0;;;;;;;;;;;5570:61;;;;;;;;;;;;;;;;7614:313;;;;;;;;;;-1:-1:-1;7614:313:0;;;;;:::i;:::-;;:::i;5638:57::-;;;;;;;;;;;;;;;;3392:265;;;;;;;;;;-1:-1:-1;3392:265:0;;;;;:::i;:::-;;:::i;:::-;;6677:82;;;;;;;;;;-1:-1:-1;6677:82:0;;5237:1;2252:36:1;;2240:2;2225:18;6677:82:0;2110:184:1;12602:161:0;;;;;;;;;;-1:-1:-1;12602:161:0;;;;;:::i;:::-;;:::i;6875:118::-;;;;;;;;;;-1:-1:-1;6875:118:0;;;;;:::i;:::-;-1:-1:-1;;;;;6968:17:0;6941:7;6968:17;;;:8;:17;;;;;;;6875:118;3132:196;;;;;;;;;;;;;:::i;12976:763::-;;;;;;;;;;;;;:::i;2891:86::-;;;;;;;;;;-1:-1:-1;2929:7:0;2956:13;-1:-1:-1;;;;;2956:13:0;2891:86;;;-1:-1:-1;;;;;2463:32:1;;;2445:51;;2433:2;2418:18;2891:86:0;2299:203:1;5505:58:0;;;;;;;;;;;;;;;;6583:86;;;;;;;;;;-1:-1:-1;6655:6:0;;;;;;;;;;;;-1:-1:-1;;;6655:6:0;;;;6583:86;;12194:263;;;;;;;;;;-1:-1:-1;12194:263:0;;;;;:::i;:::-;;:::i;7001:174::-;;;;;;;;;;-1:-1:-1;7001:174:0;;;;;:::i;:::-;;:::i;5747:26::-;;;;;;;;;;-1:-1:-1;5747:26:0;;;;-1:-1:-1;;;;;5747:26:0;;;5433:65;;;;;;;;;;;;;;;;5813:27;;;;;;;;;;;;;;;;7183:142;;;;;;;;;;-1:-1:-1;7183:142:0;;;;;:::i;:::-;-1:-1:-1;;;;;7291:17:0;;;7264:7;7291:17;;;:10;:17;;;;;;;;:26;;;;;;;;;;;;;7183:142;12465:129;;;;;;;;;;;;;:::i;7333:165::-;7408:4;7425:43;691:10;7452:7;7461:6;7425:12;:43::i;:::-;-1:-1:-1;7486:4:0;7333:165;;;;;:::o;6767:100::-;6820:7;5300:14;5237:1;5300:2;:14;:::i;:::-;5285:29;;:12;:29;:::i;:::-;6840:19;;6767:100;:::o;7614:313::-;7712:4;7729:43;7746:6;7754:9;7765:6;7729:16;:43::i;:::-;7783:114;7796:6;691:10;7818:78;7859:6;7818:78;;;;;;;;;;;;;;;;;:10;:18;7829:6;-1:-1:-1;;;;;7818:18:0;-1:-1:-1;;;;;7818:18:0;;;;;;;;;;;;:32;7837:12;691:10;;611:98;7837:12;-1:-1:-1;;;;;7818:32:0;;;;;;;;;;;;-1:-1:-1;7818:32:0;;;:78;:40;:78::i;:::-;7783:12;:114::i;:::-;-1:-1:-1;7915:4:0;7614:313;;;;;:::o;3392:265::-;3033:13;;-1:-1:-1;;;;;3033:13:0;691:10;3033:29;3025:79;;;;-1:-1:-1;;;3025:79:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;3487:22:0;::::1;3479:78;;;::::0;-1:-1:-1;;;3479:78:0;;5831:2:1;3479:78:0::1;::::0;::::1;5813:21:1::0;5870:2;5850:18;;;5843:30;5909:34;5889:18;;;5882:62;-1:-1:-1;;;5960:18:1;;;5953:41;6011:19;;3479:78:0::1;5629:407:1::0;3479:78:0::1;3590:13;::::0;;3573:41:::1;::::0;-1:-1:-1;;;;;3573:41:0;;::::1;::::0;3590:13;::::1;::::0;3573:41:::1;::::0;::::1;3625:13;:24:::0;;-1:-1:-1;;;;;;3625:24:0::1;-1:-1:-1::0;;;;;3625:24:0;;;::::1;::::0;;;::::1;::::0;;3392:265::o;12602:161::-;3033:13;;-1:-1:-1;;;;;3033:13:0;691:10;3033:29;3025:79;;;;-1:-1:-1;;;3025:79:0;;;;;;;:::i;:::-;12731:15:::1;::::0;12704:51:::1;::::0;-1:-1:-1;;;12704:51:0;;-1:-1:-1;;;;;12731:15:0;;::::1;12704:51;::::0;::::1;6223::1::0;6290:18;;;6283:34;;;12704:26:0;;::::1;::::0;::::1;::::0;6196:18:1;;12704:51:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12602:161:::0;;:::o;3132:196::-;3033:13;;-1:-1:-1;;;;;3033:13:0;691:10;3033:29;3025:79;;;;-1:-1:-1;;;3025:79:0;;;;;;;:::i;:::-;3250:1:::1;3227:13:::0;;3210:43:::1;::::0;-1:-1:-1;;;;;3227:13:0;;::::1;::::0;3210:43:::1;::::0;3250:1;;3210:43:::1;3288:1;3264:26:::0;;-1:-1:-1;;;;;;3264:26:0::1;::::0;;3301:19:::1;:17;:19::i;:::-;3132:196::o:0;12976:763::-;3033:13;;-1:-1:-1;;;;;3033:13:0;691:10;3033:29;3025:79;;;;-1:-1:-1;;;3025:79:0;;;;;;;:::i;:::-;13050:13:::1;::::0;-1:-1:-1;;;13050:13:0;::::1;;;13049:14;13041:50;;;::::0;-1:-1:-1;;;13041:50:0;;6780:2:1;13041:50:0::1;::::0;::::1;6762:21:1::0;6819:2;6799:18;;;6792:30;6858:25;6838:18;;;6831:53;6901:18;;13041:50:0::1;6578:347:1::0;13041:50:0::1;13102:13;:74:::0;;-1:-1:-1;;;;;;13102:74:0::1;13133:42;13102:74:::0;;::::1;::::0;;;13187:65:::1;::::0;13208:4:::1;::::0;5300:14:::1;5237:1;5300:2;:14;:::i;:::-;5285:29;::::0;:12:::1;:29;:::i;13187:65::-;13293:13;;;;;;;;;-1:-1:-1::0;;;;;13293:13:0::1;-1:-1:-1::0;;;;;13293:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13277:51:0::1;;13337:4;13344:13;;;;;;;;;-1:-1:-1::0;;;;;13344:13:0::1;-1:-1:-1::0;;;;;13344:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13277:88;::::0;-1:-1:-1;;;;;;13277:88:0::1;::::0;;;;;;-1:-1:-1;;;;;7416:15:1;;;13277:88:0::1;::::0;::::1;7398:34:1::0;7468:15;;7448:18;;;7441:43;7333:18;;13277:88:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13263:11;:102:::0;;-1:-1:-1;;;;;13263:102:0;;::::1;-1:-1:-1::0;;;;;;13263:102:0;;::::1;::::0;::::1;::::0;;;:11:::1;13376:29:::0;;;:7:::1;:29;::::0;;;;:36;;-1:-1:-1;;13376:36:0::1;13263:102:::0;13376:36:::1;::::0;;13423:13:::1;::::0;::::1;:29;13460:21;13491:4;13498:24;13491:4:::0;-1:-1:-1;;;;;6968:17:0;6941:7;6968:17;;;:8;:17;;;;;;;6875:118;13498:24:::1;13524:1;13527::::0;13530:7:::1;2929::::0;2956:13;-1:-1:-1;;;;;2956:13:0;;2891:86;13530:7:::1;13423:132;::::0;::::1;::::0;;;-1:-1:-1;;;;;;13423:132:0;;;-1:-1:-1;;;;;7854:15:1;;;13423:132:0::1;::::0;::::1;7836:34:1::0;7886:18;;;7879:34;;;;7929:18;;;7922:34;;;;7972:18;;;7965:34;8036:15;;;8015:19;;;8008:44;13539:15:0::1;8068:19:1::0;;;8061:35;7770:19;;13423:132:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;13573:11:0::1;::::0;13602:13:::1;::::0;13566:67:::1;::::0;-1:-1:-1;;;13566:67:0;;-1:-1:-1;;;;;13602:13:0;;::::1;13566:67;::::0;::::1;6223:51:1::0;-1:-1:-1;;6290:18:1;;;6283:34;13573:11:0;::::1;::::0;-1:-1:-1;13566:27:0::1;::::0;6196:18:1;;13566:67:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;13644:11:0::1;:18:::0;;-1:-1:-1;;13644:18:0::1;;;::::0;;13673:13:::1;:20:::0;;-1:-1:-1;;;;13673:20:0::1;-1:-1:-1::0;;;13673:20:0::1;::::0;;13719:12:::1;13704;:27:::0;12976:763::o;12194:263::-;3033:13;;-1:-1:-1;;;;;3033:13:0;691:10;3033:29;3025:79;;;;-1:-1:-1;;;3025:79:0;;;;;;;:::i;:::-;12328:11:::1;:24:::0;;12363:12:::1;:25:::0;;;;-1:-1:-1;;12399:20:0;;;12328:24:::1;::::0;::::1;;::::0;;;::::1;-1:-1:-1::0;;12399:20:0;;;;;;;::::1;;::::0;;;::::1;;::::0;;12430:8:::1;:19:::0;12194:263::o;7001:174::-;7079:4;7096:49;691:10;7127:9;7138:6;7096:16;:49::i;12465:129::-;3033:13;;-1:-1:-1;;;;;3033:13:0;691:10;3033:29;3025:79;;;;-1:-1:-1;;;3025:79:0;;;;;;;:::i;:::-;12538:15:::1;::::0;12530:56:::1;::::0;-1:-1:-1;;;;;12538:15:0;;::::1;::::0;12564:21:::1;12530:56:::0;::::1;;;::::0;12538:15:::1;12530:56:::0;12538:15;12530:56;12564:21;12538:15;12530:56;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;12465:129::o:0;7935:316::-;-1:-1:-1;;;;;8032:19:0;;8024:57;;;;-1:-1:-1;;;8024:57:0;;8899:2:1;8024:57:0;;;8881:21:1;8938:2;8918:18;;;8911:30;8977:27;8957:18;;;8950:55;9022:18;;8024:57:0;8697:349:1;8024:57:0;-1:-1:-1;;;;;8100:21:0;;8092:57;;;;-1:-1:-1;;;8092:57:0;;9253:2:1;8092:57:0;;;9235:21:1;9292:2;9272:18;;;9265:30;9331:25;9311:18;;;9304:53;9374:18;;8092:57:0;9051:347:1;8092:57:0;-1:-1:-1;;;;;8160:17:0;;;;;;;:10;:17;;;;;;;;:26;;;;;;;;;;;;;:35;;;8211:32;;1361:25:1;;;8211:32:0;;1334:18:1;8211:32:0;;;;;;;7935:316;;;:::o;8259:3229::-;-1:-1:-1;;;;;8354:18:0;;8346:57;;;;-1:-1:-1;;;8346:57:0;;9605:2:1;8346:57:0;;;9587:21:1;9644:2;9624:18;;;9617:30;9683:28;9663:18;;;9656:56;9729:18;;8346:57:0;9403:350:1;8346:57:0;-1:-1:-1;;;;;8422:16:0;;8414:53;;;;-1:-1:-1;;;8414:53:0;;9960:2:1;8414:53:0;;;9942:21:1;9999:2;9979:18;;;9972:30;10038:26;10018:18;;;10011:54;10082:18;;8414:53:0;9758:348:1;8414:53:0;8495:1;8486:6;:10;8478:64;;;;-1:-1:-1;;;8478:64:0;;10313:2:1;8478:64:0;;;10295:21:1;10352:2;10332:18;;;10325:30;10391:34;10371:18;;;10364:62;-1:-1:-1;;;10442:18:1;;;10435:39;10491:19;;8478:64:0;10111:405:1;8478:64:0;8563:17;2956:13;;-1:-1:-1;;;;;8601:15:0;;;2956:13;;8601:15;;;;:32;;-1:-1:-1;2929:7:0;2956:13;-1:-1:-1;;;;;8620:13:0;;;2956;;8620;;8601:32;8597:2506;;;8662:101;8759:3;8662:88;8697:9;:19;;;8678:16;;:38;8677:72;;8736:7;:13;8677:72;;;8720:13;;8677:72;8662:6;;:14;:88::i;:::-;:96;;:101::i;:::-;8650:113;;8800:12;;8784;:28;8780:198;;8855:12;8841:27;;;;:13;:27;;;;;;8871:2;-1:-1:-1;8833:81:0;;;;-1:-1:-1;;;8833:81:0;;10723:2:1;8833:81:0;;;10705:21:1;10762:2;10742:18;;;10735:30;10801:34;10781:18;;;10774:62;-1:-1:-1;;;10852:18:1;;;10845:34;10896:19;;8833:81:0;10521:400:1;8833:81:0;8947:12;8933:27;;;;:13;:27;;;;;:29;;;;;;:::i;:::-;;;;;;8780:198;9006:11;;-1:-1:-1;;;;;8998:19:0;;;9006:11;;8998:19;:51;;;;-1:-1:-1;9035:13:0;;-1:-1:-1;;;;;9021:28:0;;;9035:13;;9021:28;;8998:51;:67;;;;-1:-1:-1;;;;;;9054:11:0;;;;;;:7;:11;;;;;;;;9053:12;8998:67;8994:314;;;9104:20;;9094:6;:30;;9086:74;;;;-1:-1:-1;;;9086:74:0;;11268:2:1;9086:74:0;;;11250:21:1;11307:2;11287:18;;;11280:30;11346:33;11326:18;;;11319:61;11397:18;;9086:74:0;11066:355:1;9086:74:0;9213:13;;9203:6;9187:13;9197:2;-1:-1:-1;;;;;6968:17:0;6941:7;6968:17;;;:8;:17;;;;;;;6875:118;9187:13;:22;;;;:::i;:::-;:39;;9179:76;;;;-1:-1:-1;;;9179:76:0;;11758:2:1;9179:76:0;;;11740:21:1;11797:2;11777:18;;;11770:30;-1:-1:-1;;;11816:18:1;;;11809:54;11880:18;;9179:76:0;11556:348:1;9179:76:0;9274:16;:18;;;:16;:18;;;:::i;:::-;;;;;;8994:314;9334:11;;-1:-1:-1;;;;;9328:17:0;;;9334:11;;9328:17;;;;:33;;-1:-1:-1;;;;;;9350:11:0;;;;;;:7;:11;;;;;;;;9349:12;9328:33;9324:150;;;9416:13;;9406:6;9390:13;9400:2;-1:-1:-1;;;;;6968:17:0;6941:7;6968:17;;;:8;:17;;;;;;;6875:118;9390:13;:22;;;;:::i;:::-;:39;;9382:76;;;;-1:-1:-1;;;9382:76:0;;11758:2:1;9382:76:0;;;11740:21:1;11797:2;11777:18;;;11770:30;-1:-1:-1;;;11816:18:1;;;11809:54;11880:18;;9382:76:0;11556:348:1;9382:76:0;9500:11;;-1:-1:-1;;;;;9494:17:0;;;9500:11;;9494:17;:42;;;;-1:-1:-1;;;;;;9515:21:0;;9531:4;9515:21;;9494:42;9490:196;;;9569:101;9666:3;9569:88;9604:9;:19;;;9585:16;;:38;9584:72;;9643:13;;9584:72;;;9627:13;;9569:6;;:14;:88::i;:101::-;9557:113;;9490:196;9714:11;;-1:-1:-1;;;;;9706:19:0;;;9714:11;;9706:19;;;;:40;;-1:-1:-1;9735:11:0;;-1:-1:-1;;;;;9729:17:0;;;9735:11;;9729:17;;9706:40;:65;;;;-1:-1:-1;;;;;;9750:21:0;;9766:4;9750:21;;9706:65;9702:119;;;-1:-1:-1;9804:1:0;9702:119;9886:4;9837:28;6968:17;;;:8;:17;;;;;;9911:9;;;;;;;:24;;;;-1:-1:-1;9925:10:0;;;;9924:11;9911:24;:45;;;;-1:-1:-1;9945:11:0;;-1:-1:-1;;;;;9939:17:0;;;9945:11;;9939:17;9911:45;:60;;;;-1:-1:-1;9960:11:0;;;;;;;9911:60;:103;;;;;9998:16;;9975:20;:39;9911:103;:146;;;;-1:-1:-1;10037:20:0;;10018:16;;:39;9911:146;9907:1185;;;10097:13;;10082:12;:28;10078:98;;;10155:1;10135:17;:21;10078:98;10222:8;;10202:17;;:28;10194:70;;;;-1:-1:-1;;;10194:70:0;;12111:2:1;10194:70:0;;;12093:21:1;12150:2;12130:18;;;12123:30;12189:31;12169:18;;;12162:59;12238:18;;10194:70:0;11909:353:1;10194:70:0;10283:71;10301:52;10305:6;10313:39;10317:20;10339:12;;10313:3;:39::i;:::-;10301:3;:52::i;:::-;10283:17;:71::i;:::-;10402:21;10446:22;;10442:106;;10493:35;10506:21;10493:12;:35::i;:::-;10566:17;:19;;;:17;:19;;;:::i;:::-;;;;-1:-1:-1;;10620:12:0;10604:13;:28;-1:-1:-1;9907:1185:0;;;10659:10;;;;10658:11;:32;;;;-1:-1:-1;10679:11:0;;-1:-1:-1;;;;;10673:17:0;;;10679:11;;10673:17;10658:32;:47;;;;-1:-1:-1;10694:11:0;;;;;;;10658:47;:90;;;;;10732:16;;10709:20;:39;10658:90;:133;;;;-1:-1:-1;10771:20:0;;10752:16;;:39;10658:133;10654:438;;;10812:71;10830:52;10834:6;10842:39;10846:20;10868:12;;10842:3;:39::i;10812:71::-;10931:21;10975:22;;10971:106;;11022:35;11035:21;11022:12;:35::i;:::-;10793:299;10654:438;8635:2468;8597:2506;11119:13;;11115:174;;11192:4;11175:23;;;;:8;:23;;;;;;:42;;11207:9;11175:31;:42::i;:::-;11166:4;11149:23;;;;:8;:23;;;;;;;:68;;;;11237:40;;-1:-1:-1;;;;;11237:40:0;;;;;;;11267:9;1361:25:1;;1349:2;1334:18;;1215:177;11237:40:0;;;;;;;;11115:174;-1:-1:-1;;;;;11316:14:0;;;;;;:8;:14;;;;;;:30;;11339:6;11316:22;:30::i;:::-;-1:-1:-1;;;;;11299:14:0;;;;;;:8;:14;;;;;:47;11372;11393:25;:6;11408:9;11393:14;:25::i;:::-;-1:-1:-1;;;;;11372:12:0;;;;;;:8;:12;;;;;;;:20;:47::i;:::-;-1:-1:-1;;;;;11357:12:0;;;;;;;:8;:12;;;;;:62;;;;11435:45;;;11454:25;:6;11469:9;11454:14;:25::i;:::-;11435:45;;1361:25:1;;;1349:2;1334:18;11435:45:0;;;;;;;8335:3153;8259:3229;;;:::o;1757:194::-;1847:7;1883:12;1875:6;;;;1867:29;;;;-1:-1:-1;;;1867:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1907:9:0;1919:5;1923:1;1919;:5;:::i;:::-;1907:17;1757:194;-1:-1:-1;;;;;1757:194:0:o;12771:197::-;5300:14;5237:1;5300:2;:14;:::i;:::-;5285:29;;:12;:29;:::i;:::-;12829:20;:35;;;5300:14;;5237:1;;5300:14;:::i;:::-;5285:29;;:12;:29;:::i;:::-;12875:13;:28;12919:41;5300:14;5237:1;5300:2;:14;:::i;:::-;5285:29;;:12;:29;:::i;:::-;12919:41;;1361:25:1;;;1349:2;1334:18;12919:41:0;;;;;;;12771:197::o;1959:249::-;2021:7;2045:1;2050;2045:6;2041:47;;-1:-1:-1;2075:1:0;2068:8;;2041:47;2098:9;2110:5;2114:1;2110;:5;:::i;:::-;2098:17;-1:-1:-1;2143:1:0;2134:5;2138:1;2098:17;2134:5;:::i;:::-;:10;2126:55;;;;-1:-1:-1;;;2126:55:0;;12824:2:1;2126:55:0;;;12806:21:1;;;12843:18;;;12836:30;12902:34;12882:18;;;12875:62;12954:18;;2126:55:0;12622:356:1;2126:55:0;2199:1;1959:249;-1:-1:-1;;;1959:249:0:o;2216:139::-;2278:7;2305:42;2313:1;2316;2305:42;;;;;;;;;;;;;;;;;:7;:42::i;11496:98::-;11553:7;11580:1;11578;:3;11577:9;;11585:1;11577:9;;;-1:-1:-1;11583:1:0;11496:98;-1:-1:-1;11496:98:0:o;11602:479::-;6066:10;:17;;-1:-1:-1;;6066:17:0;6079:4;6066:17;;;11702:16:::1;::::0;;11716:1:::1;11702:16:::0;;;;;::::1;::::0;;-1:-1:-1;;11702:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;11702:16:0::1;11678:40;;11747:4;11729;11734:1;11729:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11729:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;11773:13:::1;::::0;:20:::1;::::0;;-1:-1:-1;;;11773:20:0;;;;:13;;;::::1;::::0;:18:::1;::::0;:20:::1;::::0;;::::1;::::0;11729:7;;11773:20;;;;;:13;:20:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11763:4;11768:1;11763:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11763:30:0;;::::1;:7;::::0;;::::1;::::0;;;;;:30;11840:13:::1;::::0;11804:64:::1;::::0;11825:4:::1;::::0;11840:13:::1;11856:11:::0;11804:12:::1;:64::i;:::-;11879:13;::::0;:194:::1;::::0;-1:-1:-1;;;11879:194:0;;-1:-1:-1;;;;;11879:13:0;;::::1;::::0;:64:::1;::::0;:194:::1;::::0;11958:11;;11879:13:::1;::::0;12000:4;;12027::::1;::::0;12047:15:::1;::::0;11879:194:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6106:10:0;:18;;-1:-1:-1;;6106:18:0;;;-1:-1:-1;;;;11602:479:0:o;12089:97::-;12146:15;;:32;;-1:-1:-1;;;;;12146:15:0;;;;:32;;;;;12171:6;;12146:15;:32;:15;:32;12171:6;12146:15;:32;;;;;;;;;;;;;;;;;;;;;12089:97;:::o;1416:182::-;1478:7;;1510:5;1514:1;1510;:5;:::i;:::-;1498:17;;1539:1;1534;:6;;1526:45;;;;-1:-1:-1;;;1526:45:0;;14434:2:1;1526:45:0;;;14416:21:1;14473:2;14453:18;;;14446:30;14512:28;14492:18;;;14485:56;14558:18;;1526:45:0;14232:350:1;1606:143:0;1668:7;1695:46;1703:1;1706;1695:46;;;;;;;;;;;;;;;;;:7;:46::i;2363:193::-;2453:7;2488:12;2481:5;2473:28;;;;-1:-1:-1;;;2473:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2512:9:0;2524:5;2528:1;2524;: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;1858:247::-;1917:6;1970:2;1958:9;1949:7;1945:23;1941:32;1938:52;;;1986:1;1983;1976:12;1938:52;2025:9;2012:23;2044:31;2069:5;2044:31;:::i;2507:118::-;2593:5;2586:13;2579:21;2572:5;2569:32;2559:60;;2615:1;2612;2605:12;2630:513;2710:6;2718;2726;2734;2787:3;2775:9;2766:7;2762:23;2758:33;2755:53;;;2804:1;2801;2794:12;2755:53;2843:9;2830:23;2862:28;2884:5;2862:28;:::i;:::-;2909:5;-1:-1:-1;2961:2:1;2946:18;;2933:32;;-1:-1:-1;3017:2:1;3002:18;;2989:32;3030:30;2989:32;3030:30;:::i;:::-;2630:513;;;;-1:-1:-1;3079:7:1;;3133:2;3118:18;3105:32;;-1:-1:-1;;2630:513:1:o;3148:388::-;3216:6;3224;3277:2;3265:9;3256:7;3252:23;3248:32;3245:52;;;3293:1;3290;3283:12;3245:52;3332:9;3319:23;3351:31;3376:5;3351:31;:::i;:::-;3401:5;-1:-1:-1;3458:2:1;3443:18;;3430:32;3471:33;3430:32;3471:33;:::i;:::-;3523:7;3513:17;;;3148:388;;;;;:::o;3541:127::-;3602:10;3597:3;3593:20;3590:1;3583:31;3633:4;3630:1;3623:15;3657:4;3654:1;3647:15;3673:416;3762:1;3799:5;3762:1;3813:270;3834:7;3824:8;3821:21;3813:270;;;3893:4;3889:1;3885:6;3881:17;3875:4;3872:27;3869:53;;;3902:18;;:::i;:::-;3952:7;3942:8;3938:22;3935:55;;;3972:16;;;;3935:55;4051:22;;;;4011:15;;;;3813:270;;;3817:3;3673:416;;;;;:::o;4094:806::-;4143:5;4173:8;4163:80;;-1:-1:-1;4214:1:1;4228:5;;4163:80;4262:4;4252:76;;-1:-1:-1;4299:1:1;4313:5;;4252:76;4344:4;4362:1;4357:59;;;;4430:1;4425:130;;;;4337:218;;4357:59;4387:1;4378:10;;4401:5;;;4425:130;4462:3;4452:8;4449:17;4446:43;;;4469:18;;:::i;:::-;-1:-1:-1;;4525:1:1;4511:16;;4540:5;;4337:218;;4639:2;4629:8;4626:16;4620:3;4614:4;4611:13;4607:36;4601:2;4591:8;4588:16;4583:2;4577:4;4574:12;4570:35;4567:77;4564:159;;;-1:-1:-1;4676:19:1;;;4708:5;;4564:159;4755:34;4780:8;4774:4;4755:34;:::i;:::-;4825:6;4821:1;4817:6;4813:19;4804:7;4801:32;4798:58;;;4836:18;;:::i;:::-;4874:20;;4094:806;-1:-1:-1;;;4094:806:1:o;4905:140::-;4963:5;4992:47;5033:4;5023:8;5019:19;5013:4;4992:47;:::i;5050:168::-;5123:9;;;5154;;5171:15;;;5165:22;;5151:37;5141:71;;5192:18;;:::i;5223:401::-;5425:2;5407:21;;;5464:2;5444:18;;;5437:30;5503:34;5498:2;5483:18;;5476:62;-1:-1:-1;;;5569:2:1;5554:18;;5547:35;5614:3;5599:19;;5223:401::o;6328:245::-;6395:6;6448:2;6436:9;6427:7;6423:23;6419:32;6416:52;;;6464:1;6461;6454:12;6416:52;6496:9;6490:16;6515:28;6537:5;6515:28;:::i;6930:251::-;7000:6;7053:2;7041:9;7032:7;7028:23;7024:32;7021:52;;;7069:1;7066;7059:12;7021:52;7101:9;7095:16;7120:31;7145:5;7120:31;:::i;8107:306::-;8195:6;8203;8211;8264:2;8252:9;8243:7;8239:23;8235:32;8232:52;;;8280:1;8277;8270:12;8232:52;8309:9;8303:16;8293:26;;8359:2;8348:9;8344:18;8338:25;8328:35;;8403:2;8392:9;8388:18;8382:25;8372:35;;8107:306;;;;;:::o;10926:135::-;10965:3;10986:17;;;10983:43;;11006:18;;:::i;:::-;-1:-1:-1;11053:1:1;11042:13;;10926:135::o;11426:125::-;11491:9;;;11512:10;;;11509:36;;;11525:18;;:::i;12267:128::-;12334:9;;;12355:11;;;12352:37;;;12369:18;;:::i;12400:217::-;12440:1;12466;12456:132;;12510:10;12505:3;12501:20;12498:1;12491:31;12545:4;12542:1;12535:15;12573:4;12570:1;12563:15;12456:132;-1:-1:-1;12602:9:1;;12400:217::o;13115:127::-;13176:10;13171:3;13167:20;13164:1;13157:31;13207:4;13204:1;13197:15;13231:4;13228:1;13221:15;13247:980;13509:4;13557:3;13546:9;13542:19;13588:6;13577:9;13570:25;13614:2;13652:6;13647:2;13636:9;13632:18;13625:34;13695:3;13690:2;13679:9;13675:18;13668:31;13719:6;13754;13748:13;13785:6;13777;13770:22;13823:3;13812:9;13808:19;13801:26;;13862:2;13854:6;13850:15;13836:29;;13883:1;13893:195;13907:6;13904:1;13901:13;13893:195;;;13972:13;;-1:-1:-1;;;;;13968:39:1;13956:52;;14063:15;;;;14028:12;;;;14004:1;13922:9;13893:195;;;-1:-1:-1;;;;;;;14144:32:1;;;;14139:2;14124:18;;14117:60;-1:-1:-1;;;14208:3:1;14193:19;14186:35;14105:3;13247:980;-1:-1:-1;;;13247:980:1:o

Swarm Source

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