ETH Price: $2,433.69 (+5.57%)

Token

Jujutsu Kaisen (JJK)
 

Overview

Max Total Supply

1,000,000,000 JJK

Holders

39

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
4,000,000 JJK

Value
$0.00
0x149feb62b368b1f3b392ac04834180f1db82f1b5
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:
jujutsukaisen

Compiler Version
v0.8.22+commit.4fc1097e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-01-09
*/

// SPDX-License-Identifier: MIT

/**
 * 
 * TG: https://t.me/jjkanimeEth
 * Web: jjkanime.live
 * X: https://x.com/jujutsukaisenfn
 * Medium: https://medium.com/@jujutsukaiseneth
 * 
 **/

pragma solidity 0.8.22;

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

interface ERC20 {
    function getOwner() external view returns (address);
    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);
}

abstract contract Auth {
    address public owner;

    constructor(address _owner) {
        owner = _owner;
    }

    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }

    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    function renounceOwnership() external onlyOwner {
        owner = address(0);
        emit OwnershipTransferred(owner);
    }
    event OwnershipTransferred(address owner);
}

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

interface IDEXRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

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

contract jujutsukaisen is ERC20, Auth {
    using SafeMath for uint256;

    address immutable WETH;
    address constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address constant ZERO = 0x0000000000000000000000000000000000000000;

    string public constant name = "Jujutsu Kaisen";
    string public constant symbol = "JJK";
    uint8 public constant decimals = 18;

    uint256 public constant totalSupply = 1_000_000_000 * 10**decimals;

    uint256 public _maxWalletToken = totalSupply / 100;

    mapping (address => uint256) public balanceOf;
    mapping (address => mapping (address => uint256)) _allowances;

    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) public isWalletLimitExempt;

    uint256 public marketingFee = 6;
    uint256 public treasuryFee = 4;
    uint256 public totalFee = marketingFee + treasuryFee;
    uint256 public constant feeDenominator = 100;
    
    uint256 buyMultiplier = 250;
    uint256 sellMultiplier = 450;
    uint256 transferMultiplier = 450;

    address public marketingFeeReceiver;
    address public treasuryFeeReceiver;

    IDEXRouter public router;
    address public immutable pair;

    bool public tradingOpen = false;
    bool public swapEnabled = false;

    uint256 public swapThreshold = totalSupply / 500;
    
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor () Auth(msg.sender) {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        WETH = router.WETH();

        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;

        marketingFeeReceiver = 0xa1cbf72363A35f3F7CE5D4766881F7Df31AAc8f2;
        treasuryFeeReceiver = 0x49b82D1E51E11f44c7dD22f1738fA31A7F027c58;

        isFeeExempt[msg.sender] = true;
        isFeeExempt[marketingFeeReceiver] = true;

        isWalletLimitExempt[msg.sender] = true;
        isWalletLimitExempt[marketingFeeReceiver] = true;
        isWalletLimitExempt[address(this)] = true;
        isWalletLimitExempt[DEAD] = true;

        balanceOf[msg.sender] = totalSupply;
        emit Transfer(address(0), msg.sender, totalSupply);
    }

    receive() external payable { }

    function getOwner() external view override returns (address) { return owner; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

    function setMaxWalletPercent(uint256 _newmaxwallet) external onlyOwner {
        require(_newmaxwallet >= 1,"Cannot set max wallet less than 1%");
        _maxWalletToken = (totalSupply * _newmaxwallet ) / 100;
    }

    function removeLimits() external onlyOwner {
        _maxWalletToken = totalSupply;
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if(!isFeeExempt[sender]){
            require(tradingOpen,"trading not open yet");
        }

        if (!isWalletLimitExempt[sender] && !isWalletLimitExempt[recipient] && recipient != pair) {
            require((balanceOf[recipient] + amount) <= _maxWalletToken,"max wallet limit reached");
        }

        if(shouldSwapBack()){ swapBack(); }

        balanceOf[sender] = balanceOf[sender].sub(amount, "Insufficient Balance");

        uint256 amountReceived = (isFeeExempt[sender] || isFeeExempt[recipient]) ? amount : takeFee(sender, amount, recipient);

        balanceOf[recipient] = balanceOf[recipient].add(amountReceived);

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
    
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        balanceOf[sender] = balanceOf[sender].sub(amount, "Insufficient Balance");
        balanceOf[recipient] = balanceOf[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function takeFee(address sender, uint256 amount, address recipient) internal returns (uint256) {
        if(amount == 0 || totalFee == 0){
            return amount;
        }

        uint256 multiplier = transferMultiplier;

        if(recipient == pair) {
            multiplier = sellMultiplier;
        } else if(sender == pair) {
            multiplier = buyMultiplier;
        }

        uint256 feeAmount = amount.mul(totalFee).mul(multiplier).div(feeDenominator * 100);

        if(feeAmount > 0){
            balanceOf[address(this)] = balanceOf[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
        }

        return amount.sub(feeAmount);
    }

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && swapEnabled
        && balanceOf[address(this)] >= swapThreshold;
    }

    function manualSwap() external {
        payable(treasuryFeeReceiver).transfer(address(this).balance);
    }

    function openTrading() external onlyOwner {
        tradingOpen = true;
        swapEnabled = true;
    }

    function manage_FeeExempt(address[] calldata addresses, bool status) external onlyOwner {
        require(addresses.length < 501,"GAS Error: max limit is 500 addresses");
        for (uint256 i=0; i < addresses.length; ++i) {
            isFeeExempt[addresses[i]] = status;
        }
    }

    function manage_WalletLimitExempt(address[] calldata addresses, bool status) external onlyOwner {
        require(addresses.length < 501,"GAS Error: max limit is 500 addresses");
        for (uint256 i=0; i < addresses.length; ++i) {
            isWalletLimitExempt[addresses[i]] = status;
        }
    }

    function swapBack() internal swapping {

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;

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

        uint256 amountETH = address(this).balance;

        uint256 amountETHMarketing = (amountETH * marketingFee) / totalFee;
        uint256 amountETHTreasury = (amountETH * treasuryFee) / totalFee;

        payable(marketingFeeReceiver).transfer(amountETHMarketing);
        payable(treasuryFeeReceiver).transfer(amountETHTreasury);
    }

    function setMultipliers(uint256 _buy, uint256 _sell, uint256 _trans) external onlyOwner {
        sellMultiplier = _sell;
        buyMultiplier = _buy;
        transferMultiplier = _trans;
    }

    function setFees(uint256 _marketing, uint256 _treasury) external onlyOwner {
        marketingFee = _marketing;
        treasuryFee = _treasury;
        totalFee = marketingFee + treasuryFee;
    }

    function setSwapBackSettings(bool _enabled, uint256 _denominator) external onlyOwner {
        swapEnabled = _enabled;
        swapThreshold = totalSupply / _denominator;
    }

    function clearStuckToken(address tokenAddress, uint256 tokens) external onlyOwner returns (bool success) {
        if(tokens == 0){
            tokens = ERC20(tokenAddress).balanceOf(address(this));
        }

        return ERC20(tokenAddress).transfer(treasuryFeeReceiver, tokens);
    }

    function getCirculatingSupply() public view returns (uint256) {
        return (totalSupply - balanceOf[DEAD] - balanceOf[ZERO]);
    }
}

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":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearStuckToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_FeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_WalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","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":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_treasury","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newmaxwallet","type":"uint256"}],"name":"setMaxWalletPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setMultipliers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"treasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasuryFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526064620000146012600a620004c2565b6200002490633b9aca00620004d9565b620000309190620004f3565b6001556006808055600460078190556200004a9162000513565b60085560fa6009556101c2600a818155600b91909155600e805461ffff60a01b191690556101f4906200008090601290620004c2565b6200009090633b9aca00620004d9565b6200009c9190620004f3565b600f55348015620000ab575f80fd5b505f8054336001600160a01b031991821617909155600e8054737a250d5630b4cf539739df2c5dacb4c659f2488d921682179055604080516315ab88c960e31b8152905163ad5c4648916004808201926020929091908290030181865afa15801562000119573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200013f919062000529565b6001600160a01b03908116608052600e546040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa1580156200018e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001b4919062000529565b6080516040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303815f875af115801562000203573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000229919062000529565b6001600160a01b0390811660a052305f818152600360209081526040808320600e548616845282528083205f199055600c80546001600160a01b031990811673a1cbf72363a35f3f7ce5d4766881f7df31aac8f2178255600d80549091167349b82d1e51e11f44c7dd22f1738fa31a7f027c581790553380855260048452828520805460ff199081166001908117909255835489168752848720805482168317905591865260059094528285208054821685179055905490951683528083208054861683179055928252918120805484168317905561dead90527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba80549092161790556200033a6012600a620004c2565b6200034a90633b9aca00620004d9565b335f81815260026020526040812092909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6200038c6012600a620004c2565b6200039c90633b9aca00620004d9565b60405190815260200160405180910390a362000551565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200040757815f1904821115620003eb57620003eb620003b3565b80851615620003f957918102915b93841c9390800290620003cc565b509250929050565b5f826200041f57506001620004bc565b816200042d57505f620004bc565b8160018114620004465760028114620004515762000471565b6001915050620004bc565b60ff841115620004655762000465620003b3565b50506001821b620004bc565b5060208310610133831016604e8410600b841016171562000496575081810a620004bc565b620004a28383620003c7565b805f1904821115620004b857620004b8620003b3565b0290505b92915050565b5f620004d260ff8416836200040f565b9392505050565b8082028115828204841417620004bc57620004bc620003b3565b5f826200050e57634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115620004bc57620004bc620003b3565b5f602082840312156200053a575f80fd5b81516001600160a01b0381168114620004d2575f80fd5b60805160a051611c606200058f5f395f81816105fe01528181610f9801528181611287015281816114da015261150e01525f61134e0152611c605ff3fe608060405260043610610229575f3560e01c80636ddd171311610129578063a8aa1b31116100a8578063dd62ed3e1161006d578063dd62ed3e14610696578063df20fd49146106da578063e96fada2146106f9578063f887ea4014610718578063ffb54a9914610737575f80fd5b8063a8aa1b31146105ed578063a9059cbb14610620578063c867d60b1461063f578063c9567bf91461066d578063cc32d17614610681575f80fd5b806378109e54116100ee57806378109e541461055157806382bf293c14610566578063893d20e8146105855780638da5cb5b146105a157806395d89b41146105bf575f80fd5b80636ddd1713146104bf57806370a08231146104df578063715018a61461050a578063751039fc1461051e57806377b54bad14610532575f80fd5b806323b872dd116101b55780633f4218e01161017a5780633f4218e01461042a57806351bc3c8514610458578063571ac8b01461046c5780636b67c4df1461048b5780636ce46bc3146104a0575f80fd5b806323b872dd1461036d5780632af10fac1461038c5780632b112e49146103c35780632f54bf6e146103d7578063313ce56714610404575f80fd5b8063095ea7b3116101fb578063095ea7b3146102e25780630b78f9c014610311578063180b0d7e1461033057806318160ddd146103445780631df4ccfc14610358575f80fd5b806210868314610234578062bff446146102555780630445b6671461027457806306fdde031461029c575f80fd5b3661023057005b5f80fd5b34801561023f575f80fd5b5061025361024e3660046117a3565b610757565b005b348015610260575f80fd5b5061025361026f3660046117a3565b610814565b34801561027f575f80fd5b50610289600f5481565b6040519081526020015b60405180910390f35b3480156102a7575f80fd5b506102d56040518060400160405280600e81526020016d253ab53aba39ba9025b0b4b9b2b760911b81525081565b6040516102939190611822565b3480156102ed575f80fd5b506103016102fc366004611889565b6108c2565b6040519015158152602001610293565b34801561031c575f80fd5b5061025361032b3660046118b1565b61092e565b34801561033b575f80fd5b50610289606481565b34801561034f575f80fd5b50610289610972565b348015610363575f80fd5b5061028960085481565b348015610378575f80fd5b506103016103873660046118d1565b61098f565b348015610397575f80fd5b50600d546103ab906001600160a01b031681565b6040516001600160a01b039091168152602001610293565b3480156103ce575f80fd5b50610289610a4d565b3480156103e2575f80fd5b506103016103f136600461190a565b5f546001600160a01b0391821691161490565b34801561040f575f80fd5b50610418601281565b60405160ff9091168152602001610293565b348015610435575f80fd5b5061030161044436600461190a565b60046020525f908152604090205460ff1681565b348015610463575f80fd5b50610253610ad3565b348015610477575f80fd5b5061030161048636600461190a565b610b0c565b348015610496575f80fd5b5061028960065481565b3480156104ab575f80fd5b506102536104ba366004611923565b610b18565b3480156104ca575f80fd5b50600e5461030190600160a81b900460ff1681565b3480156104ea575f80fd5b506102896104f936600461190a565b60026020525f908152604090205481565b348015610515575f80fd5b50610253610b52565b348015610529575f80fd5b50610253610bbf565b34801561053d575f80fd5b5061030161054c366004611889565b610c07565b34801561055c575f80fd5b5061028960015481565b348015610571575f80fd5b5061025361058036600461194c565b610d15565b348015610590575f80fd5b505f546001600160a01b03166103ab565b3480156105ac575f80fd5b505f546103ab906001600160a01b031681565b3480156105ca575f80fd5b506102d5604051806040016040528060038152602001624a4a4b60e81b81525081565b3480156105f8575f80fd5b506103ab7f000000000000000000000000000000000000000000000000000000000000000081565b34801561062b575f80fd5b5061030161063a366004611889565b610dd1565b34801561064a575f80fd5b5061030161065936600461190a565b60056020525f908152604090205460ff1681565b348015610678575f80fd5b50610253610ddd565b34801561068c575f80fd5b5061028960075481565b3480156106a1575f80fd5b506102896106b0366004611963565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b3480156106e5575f80fd5b506102536106f4366004611994565b610e1d565b348015610704575f80fd5b50600c546103ab906001600160a01b031681565b348015610723575f80fd5b50600e546103ab906001600160a01b031681565b348015610742575f80fd5b50600e5461030190600160a01b900460ff1681565b5f546001600160a01b031633146107895760405162461bcd60e51b8152600401610780906119b0565b60405180910390fd5b6101f582106107aa5760405162461bcd60e51b8152600401610780906119d0565b5f5b8281101561080e578160055f8686858181106107ca576107ca611a15565b90506020020160208101906107df919061190a565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790556001016107ac565b50505050565b5f546001600160a01b0316331461083d5760405162461bcd60e51b8152600401610780906119b0565b6101f5821061085e5760405162461bcd60e51b8152600401610780906119d0565b5f5b8281101561080e578160045f86868581811061087e5761087e611a15565b9050602002016020810190610893919061190a565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055600101610860565b335f8181526003602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061091c9086815260200190565b60405180910390a35060015b92915050565b5f546001600160a01b031633146109575760405162461bcd60e51b8152600401610780906119b0565b6006829055600781905561096b8183611a3d565b6008555050565b61097e6012600a611b30565b61098c90633b9aca00611b3e565b81565b6001600160a01b0383165f9081526003602090815260408083203384529091528120545f1914610a38576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f908152600382528381203382529091529190912054610a14918490610e89565b6001600160a01b0385165f9081526003602090815260408083203384529091529020555b610a43848484610ec1565b90505b9392505050565b60026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b5461dead5f9081527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc54909190610aac6012600a611b30565b610aba90633b9aca00611b3e565b610ac49190611b55565b610ace9190611b55565b905090565b600d546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015610b09573d5f803e3d5ffd5b50565b5f610928825f196108c2565b5f546001600160a01b03163314610b415760405162461bcd60e51b8152600401610780906119b0565b600a91909155600991909155600b55565b5f546001600160a01b03163314610b7b5760405162461bcd60e51b8152600401610780906119b0565b5f80546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b5f546001600160a01b03163314610be85760405162461bcd60e51b8152600401610780906119b0565b610bf46012600a611b30565b610c0290633b9aca00611b3e565b600155565b5f80546001600160a01b03163314610c315760405162461bcd60e51b8152600401610780906119b0565b815f03610ca1576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610c7a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c9e9190611b68565b91505b600d5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529084169063a9059cbb906044016020604051808303815f875af1158015610cf1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a469190611b7f565b5f546001600160a01b03163314610d3e5760405162461bcd60e51b8152600401610780906119b0565b6001811015610d9a5760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f7420736574206d61782077616c6c6574206c657373207468616e20604482015261312560f01b6064820152608401610780565b606481610da96012600a611b30565b610db790633b9aca00611b3e565b610dc19190611b3e565b610dcb9190611b9a565b60015550565b5f610a46338484610ec1565b5f546001600160a01b03163314610e065760405162461bcd60e51b8152600401610780906119b0565b600e805461ffff60a01b191661010160a01b179055565b5f546001600160a01b03163314610e465760405162461bcd60e51b8152600401610780906119b0565b600e805460ff60a81b1916600160a81b8415150217905580610e6a6012600a611b30565b610e7890633b9aca00611b3e565b610e829190611b9a565b600f555050565b5f8184841115610eac5760405162461bcd60e51b81526004016107809190611822565b505f610eb88486611b55565b95945050505050565b6010545f9060ff1615610ee057610ed9848484611198565b9050610a46565b6001600160a01b0384165f9081526004602052604090205460ff16610f4f57600e54600160a01b900460ff16610f4f5760405162461bcd60e51b81526020600482015260146024820152731d1c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610780565b6001600160a01b0384165f9081526005602052604090205460ff16158015610f8f57506001600160a01b0383165f9081526005602052604090205460ff16155b8015610fcd57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614155b15611046576001546001600160a01b0384165f90815260026020526040902054610ff8908490611a3d565b11156110465760405162461bcd60e51b815260206004820152601860248201527f6d61782077616c6c6574206c696d6974207265616368656400000000000000006044820152606401610780565b61104e61127b565b1561105b5761105b6112ec565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387165f908152600290915291909120546110ac918490610e89565b6001600160a01b0385165f90815260026020908152604080832093909355600490529081205460ff16806110f757506001600160a01b0384165f9081526004602052604090205460ff165b61110b576111068584866114b3565b61110d565b825b6001600160a01b0385165f90815260026020526040902054909150611132908261160c565b6001600160a01b038086165f8181526002602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111859085815260200190565b60405180910390a3506001949350505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f9081526002909152918220546111e8918490610e89565b6001600160a01b038086165f908152600260205260408082209390935590851681522054611216908361160c565b6001600160a01b038085165f8181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112699086815260200190565b60405180910390a35060019392505050565b5f336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015906112b8575060105460ff16155b80156112cd5750600e54600160a81b900460ff165b8015610ace575050600f54305f90815260026020526040902054101590565b6010805460ff191660011790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061132c5761132c611a15565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061138057611380611a15565b6001600160a01b039283166020918202929092010152600e54600f5460405163791ac94760e01b8152919092169163791ac947916113c991905f90869030904290600401611bb9565b5f604051808303815f87803b1580156113e0575f80fd5b505af11580156113f2573d5f803e3d5ffd5b50506008546006544793505f925061140a9084611b3e565b6114149190611b9a565b90505f600854600754846114289190611b3e565b6114329190611b9a565b600c546040519192506001600160a01b03169083156108fc029084905f818181858888f1935050505015801561146a573d5f803e3d5ffd5b50600d546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156114a2573d5f803e3d5ffd5b50506010805460ff19169055505050565b5f8215806114c15750600854155b156114cd575081610a46565b600b546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169084160361150c5750600a5461154a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b03160361154a57506009545b5f61157e611559606480611b3e565b611578846115726008548a61166a90919063ffffffff16565b9061166a565b906116e8565b905080156115f857305f9081526002602052604090205461159f908261160c565b305f81815260026020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906115ef9085815260200190565b60405180910390a35b6116028582611729565b9695505050505050565b5f806116188385611a3d565b905083811015610a465760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610780565b5f825f0361167957505f610928565b5f6116848385611b3e565b9050826116918583611b9a565b14610a465760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610780565b5f610a4683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061176a565b5f610a4683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610e89565b5f818361178a5760405162461bcd60e51b81526004016107809190611822565b505f610eb88486611b9a565b8015158114610b09575f80fd5b5f805f604084860312156117b5575f80fd5b833567ffffffffffffffff808211156117cc575f80fd5b818601915086601f8301126117df575f80fd5b8135818111156117ed575f80fd5b8760208260051b8501011115611801575f80fd5b6020928301955093505084013561181781611796565b809150509250925092565b5f602080835283518060208501525f5b8181101561184e57858101830151858201604001528201611832565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114611884575f80fd5b919050565b5f806040838503121561189a575f80fd5b6118a38361186e565b946020939093013593505050565b5f80604083850312156118c2575f80fd5b50508035926020909101359150565b5f805f606084860312156118e3575f80fd5b6118ec8461186e565b92506118fa6020850161186e565b9150604084013590509250925092565b5f6020828403121561191a575f80fd5b610a468261186e565b5f805f60608486031215611935575f80fd5b505081359360208301359350604090920135919050565b5f6020828403121561195c575f80fd5b5035919050565b5f8060408385031215611974575f80fd5b61197d8361186e565b915061198b6020840161186e565b90509250929050565b5f80604083850312156119a5575f80fd5b82356118a381611796565b60208082526006908201526510a7aba722a960d11b604082015260600190565b60208082526025908201527f474153204572726f723a206d6178206c696d6974206973203530302061646472604082015264657373657360d81b606082015260800190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b8082018082111561092857610928611a29565b600181815b80851115611a8a57815f1904821115611a7057611a70611a29565b80851615611a7d57918102915b93841c9390800290611a55565b509250929050565b5f82611aa057506001610928565b81611aac57505f610928565b8160018114611ac25760028114611acc57611ae8565b6001915050610928565b60ff841115611add57611add611a29565b50506001821b610928565b5060208310610133831016604e8410600b8410161715611b0b575081810a610928565b611b158383611a50565b805f1904821115611b2857611b28611a29565b029392505050565b5f610a4660ff841683611a92565b808202811582820484141761092857610928611a29565b8181038181111561092857610928611a29565b5f60208284031215611b78575f80fd5b5051919050565b5f60208284031215611b8f575f80fd5b8151610a4681611796565b5f82611bb457634e487b7160e01b5f52601260045260245ffd5b500490565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611c095784516001600160a01b031683529383019391830191600101611be4565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220120d75854e81587a8a4dca77d16a62e76d08c7fbbc05583a6eaa98fee015552164736f6c63430008160033

Deployed Bytecode

0x608060405260043610610229575f3560e01c80636ddd171311610129578063a8aa1b31116100a8578063dd62ed3e1161006d578063dd62ed3e14610696578063df20fd49146106da578063e96fada2146106f9578063f887ea4014610718578063ffb54a9914610737575f80fd5b8063a8aa1b31146105ed578063a9059cbb14610620578063c867d60b1461063f578063c9567bf91461066d578063cc32d17614610681575f80fd5b806378109e54116100ee57806378109e541461055157806382bf293c14610566578063893d20e8146105855780638da5cb5b146105a157806395d89b41146105bf575f80fd5b80636ddd1713146104bf57806370a08231146104df578063715018a61461050a578063751039fc1461051e57806377b54bad14610532575f80fd5b806323b872dd116101b55780633f4218e01161017a5780633f4218e01461042a57806351bc3c8514610458578063571ac8b01461046c5780636b67c4df1461048b5780636ce46bc3146104a0575f80fd5b806323b872dd1461036d5780632af10fac1461038c5780632b112e49146103c35780632f54bf6e146103d7578063313ce56714610404575f80fd5b8063095ea7b3116101fb578063095ea7b3146102e25780630b78f9c014610311578063180b0d7e1461033057806318160ddd146103445780631df4ccfc14610358575f80fd5b806210868314610234578062bff446146102555780630445b6671461027457806306fdde031461029c575f80fd5b3661023057005b5f80fd5b34801561023f575f80fd5b5061025361024e3660046117a3565b610757565b005b348015610260575f80fd5b5061025361026f3660046117a3565b610814565b34801561027f575f80fd5b50610289600f5481565b6040519081526020015b60405180910390f35b3480156102a7575f80fd5b506102d56040518060400160405280600e81526020016d253ab53aba39ba9025b0b4b9b2b760911b81525081565b6040516102939190611822565b3480156102ed575f80fd5b506103016102fc366004611889565b6108c2565b6040519015158152602001610293565b34801561031c575f80fd5b5061025361032b3660046118b1565b61092e565b34801561033b575f80fd5b50610289606481565b34801561034f575f80fd5b50610289610972565b348015610363575f80fd5b5061028960085481565b348015610378575f80fd5b506103016103873660046118d1565b61098f565b348015610397575f80fd5b50600d546103ab906001600160a01b031681565b6040516001600160a01b039091168152602001610293565b3480156103ce575f80fd5b50610289610a4d565b3480156103e2575f80fd5b506103016103f136600461190a565b5f546001600160a01b0391821691161490565b34801561040f575f80fd5b50610418601281565b60405160ff9091168152602001610293565b348015610435575f80fd5b5061030161044436600461190a565b60046020525f908152604090205460ff1681565b348015610463575f80fd5b50610253610ad3565b348015610477575f80fd5b5061030161048636600461190a565b610b0c565b348015610496575f80fd5b5061028960065481565b3480156104ab575f80fd5b506102536104ba366004611923565b610b18565b3480156104ca575f80fd5b50600e5461030190600160a81b900460ff1681565b3480156104ea575f80fd5b506102896104f936600461190a565b60026020525f908152604090205481565b348015610515575f80fd5b50610253610b52565b348015610529575f80fd5b50610253610bbf565b34801561053d575f80fd5b5061030161054c366004611889565b610c07565b34801561055c575f80fd5b5061028960015481565b348015610571575f80fd5b5061025361058036600461194c565b610d15565b348015610590575f80fd5b505f546001600160a01b03166103ab565b3480156105ac575f80fd5b505f546103ab906001600160a01b031681565b3480156105ca575f80fd5b506102d5604051806040016040528060038152602001624a4a4b60e81b81525081565b3480156105f8575f80fd5b506103ab7f000000000000000000000000da0b0b617891696a630db4ad35e4f02772a5751c81565b34801561062b575f80fd5b5061030161063a366004611889565b610dd1565b34801561064a575f80fd5b5061030161065936600461190a565b60056020525f908152604090205460ff1681565b348015610678575f80fd5b50610253610ddd565b34801561068c575f80fd5b5061028960075481565b3480156106a1575f80fd5b506102896106b0366004611963565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b3480156106e5575f80fd5b506102536106f4366004611994565b610e1d565b348015610704575f80fd5b50600c546103ab906001600160a01b031681565b348015610723575f80fd5b50600e546103ab906001600160a01b031681565b348015610742575f80fd5b50600e5461030190600160a01b900460ff1681565b5f546001600160a01b031633146107895760405162461bcd60e51b8152600401610780906119b0565b60405180910390fd5b6101f582106107aa5760405162461bcd60e51b8152600401610780906119d0565b5f5b8281101561080e578160055f8686858181106107ca576107ca611a15565b90506020020160208101906107df919061190a565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790556001016107ac565b50505050565b5f546001600160a01b0316331461083d5760405162461bcd60e51b8152600401610780906119b0565b6101f5821061085e5760405162461bcd60e51b8152600401610780906119d0565b5f5b8281101561080e578160045f86868581811061087e5761087e611a15565b9050602002016020810190610893919061190a565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055600101610860565b335f8181526003602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061091c9086815260200190565b60405180910390a35060015b92915050565b5f546001600160a01b031633146109575760405162461bcd60e51b8152600401610780906119b0565b6006829055600781905561096b8183611a3d565b6008555050565b61097e6012600a611b30565b61098c90633b9aca00611b3e565b81565b6001600160a01b0383165f9081526003602090815260408083203384529091528120545f1914610a38576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f908152600382528381203382529091529190912054610a14918490610e89565b6001600160a01b0385165f9081526003602090815260408083203384529091529020555b610a43848484610ec1565b90505b9392505050565b60026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b5461dead5f9081527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc54909190610aac6012600a611b30565b610aba90633b9aca00611b3e565b610ac49190611b55565b610ace9190611b55565b905090565b600d546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015610b09573d5f803e3d5ffd5b50565b5f610928825f196108c2565b5f546001600160a01b03163314610b415760405162461bcd60e51b8152600401610780906119b0565b600a91909155600991909155600b55565b5f546001600160a01b03163314610b7b5760405162461bcd60e51b8152600401610780906119b0565b5f80546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b5f546001600160a01b03163314610be85760405162461bcd60e51b8152600401610780906119b0565b610bf46012600a611b30565b610c0290633b9aca00611b3e565b600155565b5f80546001600160a01b03163314610c315760405162461bcd60e51b8152600401610780906119b0565b815f03610ca1576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610c7a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c9e9190611b68565b91505b600d5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529084169063a9059cbb906044016020604051808303815f875af1158015610cf1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a469190611b7f565b5f546001600160a01b03163314610d3e5760405162461bcd60e51b8152600401610780906119b0565b6001811015610d9a5760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f7420736574206d61782077616c6c6574206c657373207468616e20604482015261312560f01b6064820152608401610780565b606481610da96012600a611b30565b610db790633b9aca00611b3e565b610dc19190611b3e565b610dcb9190611b9a565b60015550565b5f610a46338484610ec1565b5f546001600160a01b03163314610e065760405162461bcd60e51b8152600401610780906119b0565b600e805461ffff60a01b191661010160a01b179055565b5f546001600160a01b03163314610e465760405162461bcd60e51b8152600401610780906119b0565b600e805460ff60a81b1916600160a81b8415150217905580610e6a6012600a611b30565b610e7890633b9aca00611b3e565b610e829190611b9a565b600f555050565b5f8184841115610eac5760405162461bcd60e51b81526004016107809190611822565b505f610eb88486611b55565b95945050505050565b6010545f9060ff1615610ee057610ed9848484611198565b9050610a46565b6001600160a01b0384165f9081526004602052604090205460ff16610f4f57600e54600160a01b900460ff16610f4f5760405162461bcd60e51b81526020600482015260146024820152731d1c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610780565b6001600160a01b0384165f9081526005602052604090205460ff16158015610f8f57506001600160a01b0383165f9081526005602052604090205460ff16155b8015610fcd57507f000000000000000000000000da0b0b617891696a630db4ad35e4f02772a5751c6001600160a01b0316836001600160a01b031614155b15611046576001546001600160a01b0384165f90815260026020526040902054610ff8908490611a3d565b11156110465760405162461bcd60e51b815260206004820152601860248201527f6d61782077616c6c6574206c696d6974207265616368656400000000000000006044820152606401610780565b61104e61127b565b1561105b5761105b6112ec565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387165f908152600290915291909120546110ac918490610e89565b6001600160a01b0385165f90815260026020908152604080832093909355600490529081205460ff16806110f757506001600160a01b0384165f9081526004602052604090205460ff165b61110b576111068584866114b3565b61110d565b825b6001600160a01b0385165f90815260026020526040902054909150611132908261160c565b6001600160a01b038086165f8181526002602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111859085815260200190565b60405180910390a3506001949350505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f9081526002909152918220546111e8918490610e89565b6001600160a01b038086165f908152600260205260408082209390935590851681522054611216908361160c565b6001600160a01b038085165f8181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112699086815260200190565b60405180910390a35060019392505050565b5f336001600160a01b037f000000000000000000000000da0b0b617891696a630db4ad35e4f02772a5751c16148015906112b8575060105460ff16155b80156112cd5750600e54600160a81b900460ff165b8015610ace575050600f54305f90815260026020526040902054101590565b6010805460ff191660011790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061132c5761132c611a15565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28160018151811061138057611380611a15565b6001600160a01b039283166020918202929092010152600e54600f5460405163791ac94760e01b8152919092169163791ac947916113c991905f90869030904290600401611bb9565b5f604051808303815f87803b1580156113e0575f80fd5b505af11580156113f2573d5f803e3d5ffd5b50506008546006544793505f925061140a9084611b3e565b6114149190611b9a565b90505f600854600754846114289190611b3e565b6114329190611b9a565b600c546040519192506001600160a01b03169083156108fc029084905f818181858888f1935050505015801561146a573d5f803e3d5ffd5b50600d546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156114a2573d5f803e3d5ffd5b50506010805460ff19169055505050565b5f8215806114c15750600854155b156114cd575081610a46565b600b546001600160a01b037f000000000000000000000000da0b0b617891696a630db4ad35e4f02772a5751c81169084160361150c5750600a5461154a565b7f000000000000000000000000da0b0b617891696a630db4ad35e4f02772a5751c6001600160a01b0316856001600160a01b03160361154a57506009545b5f61157e611559606480611b3e565b611578846115726008548a61166a90919063ffffffff16565b9061166a565b906116e8565b905080156115f857305f9081526002602052604090205461159f908261160c565b305f81815260026020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906115ef9085815260200190565b60405180910390a35b6116028582611729565b9695505050505050565b5f806116188385611a3d565b905083811015610a465760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610780565b5f825f0361167957505f610928565b5f6116848385611b3e565b9050826116918583611b9a565b14610a465760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610780565b5f610a4683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061176a565b5f610a4683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610e89565b5f818361178a5760405162461bcd60e51b81526004016107809190611822565b505f610eb88486611b9a565b8015158114610b09575f80fd5b5f805f604084860312156117b5575f80fd5b833567ffffffffffffffff808211156117cc575f80fd5b818601915086601f8301126117df575f80fd5b8135818111156117ed575f80fd5b8760208260051b8501011115611801575f80fd5b6020928301955093505084013561181781611796565b809150509250925092565b5f602080835283518060208501525f5b8181101561184e57858101830151858201604001528201611832565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114611884575f80fd5b919050565b5f806040838503121561189a575f80fd5b6118a38361186e565b946020939093013593505050565b5f80604083850312156118c2575f80fd5b50508035926020909101359150565b5f805f606084860312156118e3575f80fd5b6118ec8461186e565b92506118fa6020850161186e565b9150604084013590509250925092565b5f6020828403121561191a575f80fd5b610a468261186e565b5f805f60608486031215611935575f80fd5b505081359360208301359350604090920135919050565b5f6020828403121561195c575f80fd5b5035919050565b5f8060408385031215611974575f80fd5b61197d8361186e565b915061198b6020840161186e565b90509250929050565b5f80604083850312156119a5575f80fd5b82356118a381611796565b60208082526006908201526510a7aba722a960d11b604082015260600190565b60208082526025908201527f474153204572726f723a206d6178206c696d6974206973203530302061646472604082015264657373657360d81b606082015260800190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b8082018082111561092857610928611a29565b600181815b80851115611a8a57815f1904821115611a7057611a70611a29565b80851615611a7d57918102915b93841c9390800290611a55565b509250929050565b5f82611aa057506001610928565b81611aac57505f610928565b8160018114611ac25760028114611acc57611ae8565b6001915050610928565b60ff841115611add57611add611a29565b50506001821b610928565b5060208310610133831016604e8410600b8410161715611b0b575081810a610928565b611b158383611a50565b805f1904821115611b2857611b28611a29565b029392505050565b5f610a4660ff841683611a92565b808202811582820484141761092857610928611a29565b8181038181111561092857610928611a29565b5f60208284031215611b78575f80fd5b5051919050565b5f60208284031215611b8f575f80fd5b8151610a4681611796565b5f82611bb457634e487b7160e01b5f52601260045260245ffd5b500490565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611c095784516001600160a01b031683529383019391830191600101611be4565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220120d75854e81587a8a4dca77d16a62e76d08c7fbbc05583a6eaa98fee015552164736f6c63430008160033

Deployed Bytecode Sourcemap

3028:8619:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9570:310;;;;;;;;;;-1:-1:-1;9570:310:0;;;;;:::i;:::-;;:::i;:::-;;9268:294;;;;;;;;;;-1:-1:-1;9268:294:0;;;;;:::i;:::-;;:::i;4327:48::-;;;;;;;;;;;;;;;;;;;1038:25:1;;;1026:2;1011:18;4327:48:0;;;;;;;;3285:46;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3285:46:0;;;;;;;;;;;;:::i;5603:216::-;;;;;;;;;;-1:-1:-1;5603:216:0;;;;;:::i;:::-;;:::i;:::-;;;2229:14:1;;2222:22;2204:41;;2192:2;2177:18;5603:216:0;2064:187:1;10808:201:0;;;;;;;;;;-1:-1:-1;10808:201:0;;;;;:::i;:::-;;:::i;3928:44::-;;;;;;;;;;;;3969:3;3928:44;;3426:66;;;;;;;;;;;;;:::i;3869:52::-;;;;;;;;;;;;;;;;6121:370;;;;;;;;;;-1:-1:-1;6121:370:0;;;;;:::i;:::-;;:::i;4137:34::-;;;;;;;;;;-1:-1:-1;4137:34:0;;;;-1:-1:-1;;;;;4137:34:0;;;;;;-1:-1:-1;;;;;3006:32:1;;;2988:51;;2976:2;2961:18;4137:34:0;2842:203:1;11507:137:0;;;;;;;;;;;;;:::i;2259:103::-;;;;;;;;;;-1:-1:-1;2259:103:0;;;;;:::i;:::-;2314:4;2349:5;-1:-1:-1;;;;;2338:16:0;;;2349:5;;2338:16;;2259:103;3382:35;;;;;;;;;;;;3415:2;3382:35;;;;;3413:4:1;3401:17;;;3383:36;;3371:2;3356:18;3382:35:0;3241:184:1;3682:44:0;;;;;;;;;;-1:-1:-1;3682:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;9034:110;;;;;;;;;;;;;:::i;5827:122::-;;;;;;;;;;-1:-1:-1;5827:122:0;;;;;:::i;:::-;;:::i;3794:31::-;;;;;;;;;;;;;;;;10602:198;;;;;;;;;;-1:-1:-1;10602:198:0;;;;;:::i;:::-;;:::i;4287:31::-;;;;;;;;;;-1:-1:-1;4287:31:0;;;;-1:-1:-1;;;4287:31:0;;;;;;3560:45;;;;;;;;;;-1:-1:-1;3560:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;2370:128;;;;;;;;;;;;;:::i;6726:91::-;;;;;;;;;;;;;:::i;11204:295::-;;;;;;;;;;-1:-1:-1;11204:295:0;;;;;:::i;:::-;;:::i;3501:50::-;;;;;;;;;;;;;;;;6499:219;;;;;;;;;;-1:-1:-1;6499:219:0;;;;;:::i;:::-;;:::i;5378:78::-;;;;;;;;;;-1:-1:-1;5430:7:0;5448:5;-1:-1:-1;;;;;5448:5:0;5378:78;;2072:20;;;;;;;;;;-1:-1:-1;2072:20:0;;;;-1:-1:-1;;;;;2072:20:0;;;3338:37;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3338:37:0;;;;;4211:29;;;;;;;;;;;;;;;5957:156;;;;;;;;;;-1:-1:-1;5957:156:0;;;;;:::i;:::-;;:::i;3733:52::-;;;;;;;;;;-1:-1:-1;3733:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;9152:108;;;;;;;;;;;;;:::i;3832:30::-;;;;;;;;;;;;;;;;5462:133;;;;;;;;;;-1:-1:-1;5462:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;5564:19:0;;;5546:7;5564:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;5462:133;11017:179;;;;;;;;;;-1:-1:-1;11017:179:0;;;;;:::i;:::-;;:::i;4095:35::-;;;;;;;;;;-1:-1:-1;4095:35:0;;;;-1:-1:-1;;;;;4095:35:0;;;4180:24;;;;;;;;;;-1:-1:-1;4180:24:0;;;;-1:-1:-1;;;;;4180:24:0;;;4249:31;;;;;;;;;;-1:-1:-1;4249:31:0;;;;-1:-1:-1;;;4249:31:0;;;;;;9570:310;2314:4;2349:5;-1:-1:-1;;;;;2349:5:0;2218:10;2338:16;2202:38;;;;-1:-1:-1;;;2202:38:0;;;;;;;:::i;:::-;;;;;;;;;9704:3:::1;9685:22:::0;::::1;9677:71;;;;-1:-1:-1::0;;;9677:71:0::1;;;;;;;:::i;:::-;9764:9;9759:114;9777:20:::0;;::::1;9759:114;;;9855:6;9819:19;:33;9839:9;;9849:1;9839:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9819:33:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;9819:33:0;:42;;-1:-1:-1;;9819:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;9799:3:0::1;9759:114;;;;9570:310:::0;;;:::o;9268:294::-;2314:4;2349:5;-1:-1:-1;;;;;2349:5:0;2218:10;2338:16;2202:38;;;;-1:-1:-1;;;2202:38:0;;;;;;;:::i;:::-;9394:3:::1;9375:22:::0;::::1;9367:71;;;;-1:-1:-1::0;;;9367:71:0::1;;;;;;;:::i;:::-;9454:9;9449:106;9467:20:::0;;::::1;9449:106;;;9537:6;9509:11;:25;9521:9;;9531:1;9521:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9509:25:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;9509:25:0;:34;;-1:-1:-1;;9509:34:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;9489:3:0::1;9449:106;;5603:216:::0;5707:10;5678:4;5695:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;5695:32:0;;;;;;;;;;:41;;;5752:37;5678:4;;5695:32;;5752:37;;;;5730:6;1038:25:1;;1026:2;1011:18;;892:177;5752:37:0;;;;;;;;-1:-1:-1;5807:4:0;5603:216;;;;;:::o;10808:201::-;2314:4;2349:5;-1:-1:-1;;;;;2349:5:0;2218:10;2338:16;2202:38;;;;-1:-1:-1;;;2202:38:0;;;;;;;:::i;:::-;10894:12:::1;:25:::0;;;10930:11:::1;:23:::0;;;10975:26:::1;10944:9:::0;10909:10;10975:26:::1;:::i;:::-;10964:8;:37:::0;-1:-1:-1;;10808:201:0:o;3426:66::-;3480:12;3415:2;3480;:12;:::i;:::-;3464:28;;:13;:28;:::i;:::-;3426:66;:::o;6121:370::-;-1:-1:-1;;;;;6241:19:0;;6221:4;6241:19;;;:11;:19;;;;;;;;6261:10;6241:31;;;;;;;;-1:-1:-1;;6241:52:0;6238:186;;6343:69;;;;;;;;;;;-1:-1:-1;;;6343:69:0;;;;;;;;-1:-1:-1;;;;;6343:19:0;;-1:-1:-1;6343:19:0;;;:11;:19;;;;;6363:10;6343:31;;;;;;;;;;:69;;6379:6;;6343:35;:69::i;:::-;-1:-1:-1;;;;;6309:19:0;;;;;;:11;:19;;;;;;;;6329:10;6309:31;;;;;;;:103;6238:186;6443:40;6457:6;6465:9;6476:6;6443:13;:40::i;:::-;6436:47;;6121:370;;;;;;:::o;11507:137::-;11620:9;:15;;;;3161:42;11560:7;11602:15;;;;;11560:7;;11620:15;3480:12;3415:2;3480;:12;:::i;:::-;3464:28;;:13;:28;:::i;:::-;11588:29;;;;:::i;:::-;:47;;;;:::i;:::-;11580:56;;11507:137;:::o;9034:110::-;9084:19;;9076:60;;-1:-1:-1;;;;;9084:19:0;;;;9114:21;9076:60;;;;;9084:19;9076:60;9084:19;9076:60;9114:21;9084:19;9076:60;;;;;;;;;;;;;;;;;;;;;9034:110::o;5827:122::-;5882:4;5906:35;5914:7;-1:-1:-1;;5906:7:0;:35::i;10602:198::-;2314:4;2349:5;-1:-1:-1;;;;;2349:5:0;2218:10;2338:16;2202:38;;;;-1:-1:-1;;;2202:38:0;;;;;;;:::i;:::-;10701:14:::1;:22:::0;;;;10734:13:::1;:20:::0;;;;10765:18:::1;:27:::0;10602:198::o;2370:128::-;2314:4;2349:5;-1:-1:-1;;;;;2349:5:0;2218:10;2338:16;2202:38;;;;-1:-1:-1;;;2202:38:0;;;;;;;:::i;:::-;2445:1:::1;2429:18:::0;;-1:-1:-1;;;;;;2429:18:0::1;::::0;;2463:27:::1;::::0;2988:51:1;;;2463:27:0::1;::::0;2976:2:1;2961:18;2463:27:0::1;;;;;;;2370:128::o:0;6726:91::-;2314:4;2349:5;-1:-1:-1;;;;;2349:5:0;2218:10;2338:16;2202:38;;;;-1:-1:-1;;;2202:38:0;;;;;;;:::i;:::-;3480:12:::1;3415:2;3480;:12;:::i;:::-;3464:28;::::0;:13:::1;:28;:::i;:::-;6780:15;:29:::0;6726:91::o;11204:295::-;11295:12;2349:5;;-1:-1:-1;;;;;2349:5:0;2218:10;2338:16;2202:38;;;;-1:-1:-1;;;2202:38:0;;;;;;;:::i;:::-;11323:6:::1;11333:1;11323:11:::0;11320:95:::1;;11359:44;::::0;-1:-1:-1;;;11359:44:0;;11397:4:::1;11359:44;::::0;::::1;2988:51:1::0;-1:-1:-1;;;;;11359:29:0;::::1;::::0;::::1;::::0;2961:18:1;;11359:44:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11350:53;;11320:95;11463:19;::::0;11434:57:::1;::::0;-1:-1:-1;;;11434:57:0;;-1:-1:-1;;;;;11463:19:0;;::::1;11434:57;::::0;::::1;7921:51:1::0;7988:18;;;7981:34;;;11434:28:0;;::::1;::::0;::::1;::::0;7894:18:1;;11434:57:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;6499:219::-:0;2314:4;2349:5;-1:-1:-1;;;;;2349:5:0;2218:10;2338:16;2202:38;;;;-1:-1:-1;;;2202:38:0;;;;;;;:::i;:::-;6606:1:::1;6589:13;:18;;6581:64;;;::::0;-1:-1:-1;;;6581:64:0;;8478:2:1;6581:64:0::1;::::0;::::1;8460:21:1::0;8517:2;8497:18;;;8490:30;8556:34;8536:18;;;8529:62;-1:-1:-1;;;8607:18:1;;;8600:32;8649:19;;6581:64:0::1;8276:398:1::0;6581:64:0::1;6707:3;6689:13:::0;3480:12:::1;3415:2;3480;:12;:::i;:::-;3464:28;::::0;:13:::1;:28;:::i;:::-;6675:27;;;;:::i;:::-;6674:36;;;;:::i;:::-;6656:15;:54:::0;-1:-1:-1;6499:219:0:o;5957:156::-;6037:4;6061:44;6075:10;6087:9;6098:6;6061:13;:44::i;9152:108::-;2314:4;2349:5;-1:-1:-1;;;;;2349:5:0;2218:10;2338:16;2202:38;;;;-1:-1:-1;;;2202:38:0;;;;;;;:::i;:::-;9205:11:::1;:18:::0;;-1:-1:-1;;;;9234:18:0;-1:-1:-1;;;9234:18:0;;;9152:108::o;11017:179::-;2314:4;2349:5;-1:-1:-1;;;;;2349:5:0;2218:10;2338:16;2202:38;;;;-1:-1:-1;;;2202:38:0;;;;;;;:::i;:::-;11113:11:::1;:22:::0;;-1:-1:-1;;;;11113:22:0::1;-1:-1:-1::0;;;11113:22:0;::::1;;;;::::0;;11176:12;3480::::1;3415:2;3480;:12;:::i;:::-;3464:28;::::0;:13:::1;:28;:::i;:::-;11162:26;;;;:::i;:::-;11146:13;:42:::0;-1:-1:-1;;11017:179:0:o;580:192::-;666:7;702:12;694:6;;;;686:29;;;;-1:-1:-1;;;686:29:0;;;;;;;;:::i;:::-;-1:-1:-1;726:9:0;738:5;742:1;738;:5;:::i;:::-;726:17;580:192;-1:-1:-1;;;;;580:192:0:o;6825:923::-;6937:6;;6917:4;;6937:6;;6934:63;;;6953:41;6968:6;6976:9;6987:6;6953:14;:41::i;:::-;6946:48;;;;6934:63;-1:-1:-1;;;;;7013:19:0;;;;;;:11;:19;;;;;;;;7009:94;;7056:11;;-1:-1:-1;;;7056:11:0;;;;7048:43;;;;-1:-1:-1;;;7048:43:0;;9103:2:1;7048:43:0;;;9085:21:1;9142:2;9122:18;;;9115:30;-1:-1:-1;;;9161:18:1;;;9154:50;9221:18;;7048:43:0;8901:344:1;7048:43:0;-1:-1:-1;;;;;7120:27:0;;;;;;:19;:27;;;;;;;;7119:28;:63;;;;-1:-1:-1;;;;;;7152:30:0;;;;;;:19;:30;;;;;;;;7151:31;7119:63;:84;;;;;7199:4;-1:-1:-1;;;;;7186:17:0;:9;-1:-1:-1;;;;;7186:17:0;;;7119:84;7115:203;;;7263:15;;-1:-1:-1;;;;;7229:20:0;;;;;;:9;:20;;;;;;:29;;7252:6;;7229:29;:::i;:::-;7228:50;;7220:86;;;;-1:-1:-1;;;7220:86:0;;9452:2:1;7220:86:0;;;9434:21:1;9491:2;9471:18;;;9464:30;9530:26;9510:18;;;9503:54;9574:18;;7220:86:0;9250:348:1;7220:86:0;7333:16;:14;:16::i;:::-;7330:35;;;7352:10;:8;:10::i;:::-;7397:53;;;;;;;;;;;-1:-1:-1;;;7397:53:0;;;;;;;;-1:-1:-1;;;;;7397:17:0;;-1:-1:-1;7397:17:0;;;:9;:17;;;;;;;;:53;;7419:6;;7397:21;:53::i;:::-;-1:-1:-1;;;;;7377:17:0;;;;;;:9;:17;;;;;;;;:73;;;;7489:11;:19;;;;;;;;;:45;;-1:-1:-1;;;;;;7512:22:0;;;;;;:11;:22;;;;;;;;7489:45;7488:93;;7547:34;7555:6;7563;7571:9;7547:7;:34::i;:::-;7488:93;;;7538:6;7488:93;-1:-1:-1;;;;;7617:20:0;;;;;;:9;:20;;;;;;7463:118;;-1:-1:-1;7617:40:0;;7463:118;7617:24;:40::i;:::-;-1:-1:-1;;;;;7594:20:0;;;;;;;:9;:20;;;;;;;:63;;;;7675:43;;;;;;;;;;7703:14;1038:25:1;;1026:2;1011:18;;892:177;7675:43:0;;;;;;;;-1:-1:-1;7736:4:0;;6825:923;-1:-1:-1;;;;6825:923:0:o;7760:330::-;7890:53;;;;;;;;;;;-1:-1:-1;;;7890:53:0;;;;;;;;-1:-1:-1;;;;;7890:17:0;;7853:4;7890:17;;;:9;:17;;;;;;;:53;;7912:6;;7890:21;:53::i;:::-;-1:-1:-1;;;;;7870:17:0;;;;;;;:9;:17;;;;;;:73;;;;7977:20;;;;;;;:32;;8002:6;7977:24;:32::i;:::-;-1:-1:-1;;;;;7954:20:0;;;;;;;:9;:20;;;;;;;:55;;;;8025:35;;;;;;;;;;8053:6;1038:25:1;;1026:2;1011:18;;892:177;8025:35:0;;;;;;;;-1:-1:-1;8078:4:0;7760:330;;;;;:::o;8829:197::-;8878:4;8902:10;-1:-1:-1;;;;;8916:4:0;8902:18;;;;;:38;;-1:-1:-1;8934:6:0;;;;8933:7;8902:38;:62;;;;-1:-1:-1;8953:11:0;;-1:-1:-1;;;8953:11:0;;;;8902:62;:116;;;;-1:-1:-1;;9005:13:0;;8995:4;8977:24;;;;:9;:24;;;;;;:41;;;8829:197::o;9888:706::-;4428:6;:13;;-1:-1:-1;;4428:13:0;4437:4;4428:13;;;9963:16:::1;::::0;;9977:1:::1;9963:16:::0;;;;;::::1;::::0;;-1:-1:-1;;9963:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;9963:16:0::1;9939:40;;10008:4;9990;9995:1;9990:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;9990:23:0::1;;;-1:-1:-1::0;;;;;9990:23:0::1;;;::::0;::::1;10034:4;10024;10029:1;10024:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10024:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;10051:6:::1;::::0;10123:13:::1;::::0;10051:189:::1;::::0;-1:-1:-1;;;10051:189:0;;:6;;;::::1;::::0;:57:::1;::::0;:189:::1;::::0;10123:13;10051:6:::1;::::0;10167:4;;10194::::1;::::0;10214:15:::1;::::0;10051:189:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;10365:8:0::1;::::0;10349:12:::1;::::0;10273:21:::1;::::0;-1:-1:-1;10253:17:0::1;::::0;-1:-1:-1;10337:24:0::1;::::0;10273:21;10337:24:::1;:::i;:::-;10336:37;;;;:::i;:::-;10307:66;;10384:25;10440:8;;10425:11;;10413:9;:23;;;;:::i;:::-;10412:36;;;;:::i;:::-;10469:20;::::0;10461:58:::1;::::0;10384:64;;-1:-1:-1;;;;;;10469:20:0::1;::::0;10461:58;::::1;;;::::0;10500:18;;10469:20:::1;10461:58:::0;10469:20;10461:58;10500:18;10469:20;10461:58;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;10538:19:0::1;::::0;10530:56:::1;::::0;-1:-1:-1;;;;;10538:19:0;;::::1;::::0;10530:56;::::1;;;::::0;10568:17;;10538:19:::1;10530:56:::0;10538:19;10530:56;10568:17;10538:19;10530:56;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;4446:6:0;:14;;-1:-1:-1;;4446:14:0;;;-1:-1:-1;;;9888:706:0:o;8098:723::-;8184:7;8207:11;;;:28;;-1:-1:-1;8222:8:0;;:13;8207:28;8204:72;;;-1:-1:-1;8258:6:0;8251:13;;8204:72;8309:18;;-1:-1:-1;;;;;8356:4:0;8343:17;;;;;;8340:154;;-1:-1:-1;8390:14:0;;8340:154;;;8435:4;-1:-1:-1;;;;;8425:14:0;:6;-1:-1:-1;;;;;8425:14:0;;8422:72;;-1:-1:-1;8469:13:0;;8422:72;8506:17;8526:62;8567:20;3969:3;;8567:20;:::i;:::-;8526:36;8551:10;8526:20;8537:8;;8526:6;:10;;:20;;;;:::i;:::-;:24;;:36::i;:::-;:40;;:62::i;:::-;8506:82;-1:-1:-1;8604:13:0;;8601:172;;8678:4;8660:24;;;;:9;:24;;;;;;:39;;8689:9;8660:28;:39::i;:::-;8651:4;8633:24;;;;:9;:24;;;;;;;:66;;;;8719:42;;-1:-1:-1;;;;;8719:42:0;;;;;;;8751:9;1038:25:1;;1026:2;1011:18;;892:177;8719:42:0;;;;;;;;8601:172;8792:21;:6;8803:9;8792:10;:21::i;:::-;8785:28;8098:723;-1:-1:-1;;;;;;8098:723:0:o;251:181::-;309:7;;341:5;345:1;341;:5;:::i;:::-;329:17;;370:1;365;:6;;357:46;;;;-1:-1:-1;;;357:46:0;;10922:2:1;357:46:0;;;10904:21:1;10961:2;10941:18;;;10934:30;11000:29;10980:18;;;10973:57;11047:18;;357:46:0;10720:351:1;778:250:0;836:7;860:1;865;860:6;856:47;;-1:-1:-1;890:1:0;883:8;;856:47;915:9;927:5;931:1;927;:5;:::i;:::-;915:17;-1:-1:-1;960:1:0;951:5;955:1;915:17;951:5;:::i;:::-;:10;943:56;;;;-1:-1:-1;;;943:56:0;;11278:2:1;943:56:0;;;11260:21:1;11317:2;11297:18;;;11290:30;11356:34;11336:18;;;11329:62;-1:-1:-1;;;11407:18:1;;;11400:31;11448:19;;943:56:0;11076:397:1;1034:132:0;1092:7;1119:39;1123:1;1126;1119:39;;;;;;;;;;;;;;;;;:3;:39::i;438:136::-;496:7;523:43;527:1;530;523:43;;;;;;;;;;;;;;;;;:3;:43::i;1172:189::-;1258:7;1293:12;1286:5;1278:28;;;;-1:-1:-1;;;1278:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1317:9:0;1329:5;1333:1;1329;:5;:::i;14:118:1:-;100:5;93:13;86:21;79:5;76:32;66:60;;122:1;119;112:12;137:750;229:6;237;245;298:2;286:9;277:7;273:23;269:32;266:52;;;314:1;311;304:12;266:52;354:9;341:23;383:18;424:2;416:6;413:14;410:34;;;440:1;437;430:12;410:34;478:6;467:9;463:22;453:32;;523:7;516:4;512:2;508:13;504:27;494:55;;545:1;542;535:12;494:55;585:2;572:16;611:2;603:6;600:14;597:34;;;627:1;624;617:12;597:34;682:7;675:4;665:6;662:1;658:14;654:2;650:23;646:34;643:47;640:67;;;703:1;700;693:12;640:67;734:4;726:13;;;;-1:-1:-1;758:6:1;-1:-1:-1;;799:20:1;;786:34;829:28;786:34;829:28;:::i;:::-;876:5;866:15;;;137:750;;;;;:::o;1074:548::-;1186:4;1215:2;1244;1233:9;1226:21;1276:6;1270:13;1319:6;1314:2;1303:9;1299:18;1292:34;1344:1;1354:140;1368:6;1365:1;1362:13;1354:140;;;1463:14;;;1459:23;;1453:30;1429:17;;;1448:2;1425:26;1418:66;1383:10;;1354:140;;;1358:3;1543:1;1538:2;1529:6;1518:9;1514:22;1510:31;1503:42;1613:2;1606;1602:7;1597:2;1589:6;1585:15;1581:29;1570:9;1566:45;1562:54;1554:62;;;;1074:548;;;;:::o;1627:173::-;1695:20;;-1:-1:-1;;;;;1744:31:1;;1734:42;;1724:70;;1790:1;1787;1780:12;1724:70;1627:173;;;:::o;1805:254::-;1873:6;1881;1934:2;1922:9;1913:7;1909:23;1905:32;1902:52;;;1950:1;1947;1940:12;1902:52;1973:29;1992:9;1973:29;:::i;:::-;1963:39;2049:2;2034:18;;;;2021:32;;-1:-1:-1;;;1805:254:1:o;2256:248::-;2324:6;2332;2385:2;2373:9;2364:7;2360:23;2356:32;2353:52;;;2401:1;2398;2391:12;2353:52;-1:-1:-1;;2424:23:1;;;2494:2;2479:18;;;2466:32;;-1:-1:-1;2256:248:1:o;2509:328::-;2586:6;2594;2602;2655:2;2643:9;2634:7;2630:23;2626:32;2623:52;;;2671:1;2668;2661:12;2623:52;2694:29;2713:9;2694:29;:::i;:::-;2684:39;;2742:38;2776:2;2765:9;2761:18;2742:38;:::i;:::-;2732:48;;2827:2;2816:9;2812:18;2799:32;2789:42;;2509:328;;;;;:::o;3050:186::-;3109:6;3162:2;3150:9;3141:7;3137:23;3133:32;3130:52;;;3178:1;3175;3168:12;3130:52;3201:29;3220:9;3201:29;:::i;3430:316::-;3507:6;3515;3523;3576:2;3564:9;3555:7;3551:23;3547:32;3544:52;;;3592:1;3589;3582:12;3544:52;-1:-1:-1;;3615:23:1;;;3685:2;3670:18;;3657:32;;-1:-1:-1;3736:2:1;3721:18;;;3708:32;;3430:316;-1:-1:-1;3430:316:1:o;3751:180::-;3810:6;3863:2;3851:9;3842:7;3838:23;3834:32;3831:52;;;3879:1;3876;3869:12;3831:52;-1:-1:-1;3902:23:1;;3751:180;-1:-1:-1;3751:180:1:o;3936:260::-;4004:6;4012;4065:2;4053:9;4044:7;4040:23;4036:32;4033:52;;;4081:1;4078;4071:12;4033:52;4104:29;4123:9;4104:29;:::i;:::-;4094:39;;4152:38;4186:2;4175:9;4171:18;4152:38;:::i;:::-;4142:48;;3936:260;;;;;:::o;4201:309::-;4266:6;4274;4327:2;4315:9;4306:7;4302:23;4298:32;4295:52;;;4343:1;4340;4333:12;4295:52;4382:9;4369:23;4401:28;4423:5;4401:28;:::i;4741:329::-;4943:2;4925:21;;;4982:1;4962:18;;;4955:29;-1:-1:-1;;;5015:2:1;5000:18;;4993:36;5061:2;5046:18;;4741:329::o;5075:401::-;5277:2;5259:21;;;5316:2;5296:18;;;5289:30;5355:34;5350:2;5335:18;;5328:62;-1:-1:-1;;;5421:2:1;5406:18;;5399:35;5466:3;5451:19;;5075:401::o;5481:127::-;5542:10;5537:3;5533:20;5530:1;5523:31;5573:4;5570:1;5563:15;5597:4;5594:1;5587:15;5613:127;5674:10;5669:3;5665:20;5662:1;5655:31;5705:4;5702:1;5695:15;5729:4;5726:1;5719:15;5745:125;5810:9;;;5831:10;;;5828:36;;;5844:18;;:::i;5875:416::-;5964:1;6001:5;5964:1;6015:270;6036:7;6026:8;6023:21;6015:270;;;6095:4;6091:1;6087:6;6083:17;6077:4;6074:27;6071:53;;;6104:18;;:::i;:::-;6154:7;6144:8;6140:22;6137:55;;;6174:16;;;;6137:55;6253:22;;;;6213:15;;;;6015:270;;;6019:3;5875:416;;;;;:::o;6296:806::-;6345:5;6375:8;6365:80;;-1:-1:-1;6416:1:1;6430:5;;6365:80;6464:4;6454:76;;-1:-1:-1;6501:1:1;6515:5;;6454:76;6546:4;6564:1;6559:59;;;;6632:1;6627:130;;;;6539:218;;6559:59;6589:1;6580:10;;6603:5;;;6627:130;6664:3;6654:8;6651:17;6648:43;;;6671:18;;:::i;:::-;-1:-1:-1;;6727:1:1;6713:16;;6742:5;;6539:218;;6841:2;6831:8;6828:16;6822:3;6816:4;6813:13;6809:36;6803:2;6793:8;6790:16;6785:2;6779:4;6776:12;6772:35;6769:77;6766:159;;;-1:-1:-1;6878:19:1;;;6910:5;;6766:159;6957:34;6982:8;6976:4;6957:34;:::i;:::-;7027:6;7023:1;7019:6;7015:19;7006:7;7003:32;7000:58;;;7038:18;;:::i;:::-;7076:20;;6296:806;-1:-1:-1;;;6296:806:1:o;7107:140::-;7165:5;7194:47;7235:4;7225:8;7221:19;7215:4;7194:47;:::i;7252:168::-;7325:9;;;7356;;7373:15;;;7367:22;;7353:37;7343:71;;7394:18;;:::i;7425:128::-;7492:9;;;7513:11;;;7510:37;;;7527:18;;:::i;7558:184::-;7628:6;7681:2;7669:9;7660:7;7656:23;7652:32;7649:52;;;7697:1;7694;7687:12;7649:52;-1:-1:-1;7720:16:1;;7558:184;-1:-1:-1;7558:184:1:o;8026:245::-;8093:6;8146:2;8134:9;8125:7;8121:23;8117:32;8114:52;;;8162:1;8159;8152:12;8114:52;8194:9;8188:16;8213:28;8235:5;8213:28;:::i;8679:217::-;8719:1;8745;8735:132;;8789:10;8784:3;8780:20;8777:1;8770:31;8824:4;8821:1;8814:15;8852:4;8849:1;8842:15;8735:132;-1:-1:-1;8881:9:1;;8679:217::o;9735:980::-;9997:4;10045:3;10034:9;10030:19;10076:6;10065:9;10058:25;10102:2;10140:6;10135:2;10124:9;10120:18;10113:34;10183:3;10178:2;10167:9;10163:18;10156:31;10207:6;10242;10236:13;10273:6;10265;10258:22;10311:3;10300:9;10296:19;10289:26;;10350:2;10342:6;10338:15;10324:29;;10371:1;10381:195;10395:6;10392:1;10389:13;10381:195;;;10460:13;;-1:-1:-1;;;;;10456:39:1;10444:52;;10551:15;;;;10516:12;;;;10492:1;10410:9;10381:195;;;-1:-1:-1;;;;;;;10632:32:1;;;;10627:2;10612:18;;10605:60;-1:-1:-1;;;10696:3:1;10681:19;10674:35;10593:3;9735:980;-1:-1:-1;;;9735:980:1:o

Swarm Source

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