ETH Price: $2,696.81 (-1.53%)

Token

Droki ETH (DROKI)
 

Overview

Max Total Supply

100,000,000 DROKI

Holders

20

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
1,529,778.178131707 DROKI

Value
$0.00
0x4b15d7685a21c15a000607109201e91f03fef70e
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:
DrokiEth

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-12-14
*/

// Telegram : https://t.me/DrokiEth


//We are a group of mystery hunters dedicated to DROKI growth.

//Together we can solve the mystery of Droki.

//Keep an 👁 for any clues on chain 

// SPDX-License-Identifier: MIT


pragma solidity ^0.8.17;

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

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

interface DexRouter {
    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 swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

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

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

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

contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        authorizations[_owner] = true;
        emit OwnershipTransferred(address(0), msgSender);
    }
    mapping (address => bool) internal authorizations;

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

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

    modifier authorized() {
        require(isAuthorized(msg.sender), "!AUTHORIZED"); _;
    }

    function isAuthorized(address adr) public view returns (bool) {
        return authorizations[adr];
    }

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

contract DrokiEth is Ownable, IERC20 {
    using SafeMath for uint256;

    address private constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address private constant ZERO = 0x0000000000000000000000000000000000000000;

    address private routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;

    uint8 constant private _decimals = 9;

    uint256 private _totalSupply = 100000000 * (10 ** _decimals);
    uint256 public _maxTxAmount = _totalSupply * 3 / 1000;
    uint256 public _walletMax = _totalSupply * 4 /1000;

    string constant private _name = "Droki ETH";
    string constant private _symbol = "DROKI";

    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    mapping(address => bool) public isFeeExempt;
    mapping(address => bool) public isTxLimitExempt;
 
    uint256 public liquidityFee = 0;
    uint256 public marketingFee = 1;
    uint256 public RewardFee = 0;
    uint256 public tokenFee = 0;

    uint256 public totalFee = 0;
    uint256 public totalFeeIfSelling = 0;

    bool public takeBuyFee = true;
    bool public takeSellFee = true;
    bool public takeTransferFee = true;

    address private lpWallet;
    address private projectAddress;
    address private devWallet;
    address private nativeWallet;

    DexRouter public router;
    address public pair;
    mapping(address => bool) public isPair;

    uint256 public launchedAt;

    bool public tradingOpen = true;
    bool private inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public swapAndLiquifyByLimitOnly = false;

    uint256 public swapThreshold = _totalSupply * 25 / 10000;

    event AutoLiquify(uint256 amountETH, uint256 amountBOG);

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


    constructor() {
        router = DexRouter(routerAddress);
        pair = DexFactory(router.factory()).createPair(router.WETH(), address(this));
        isPair[pair] = true;
        _allowances[address(this)][address(router)] = type(uint256).max;
        _allowances[address(this)][address(pair)] = type(uint256).max;

        isFeeExempt[msg.sender] = true;
        isFeeExempt[address(this)] = true;
        isFeeExempt[DEAD] = true;
        isFeeExempt[nativeWallet] = true;
        isFeeExempt[routerAddress] = true;

        isTxLimitExempt[nativeWallet] = true;
        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[pair] = true;
        isTxLimitExempt[DEAD] = true;
        isTxLimitExempt[routerAddress] = true;

        lpWallet = 0xA057E30bf161EEc744546198b0f9aec36C1719C9;
        projectAddress = 0xA057E30bf161EEc744546198b0f9aec36C1719C9;
        devWallet = 0xA057E30bf161EEc744546198b0f9aec36C1719C9;
        nativeWallet = msg.sender;
         
        isFeeExempt[projectAddress] = true;
        totalFee = liquidityFee.add(marketingFee).add(tokenFee).add(RewardFee);
        totalFeeIfSelling = totalFee;

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable {}

    function name() external pure override returns (string memory) {return _name;}

    function symbol() external pure override returns (string memory) {return _symbol;}

    function decimals() external pure override returns (uint8) {return _decimals;}

    function totalSupply() external view override returns (uint256) {return _totalSupply;}

    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 getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

    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 launched() internal view returns (bool) {
        return launchedAt != 0;
    }

    function launch() internal {
        launchedAt = block.number;
    }

    function checkTxLimit(address sender, uint256 amount) internal view {
    }

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

    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 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) {
        if (inSwapAndLiquify) {return _basicTransfer(sender, recipient, amount);}
        if(!authorizations[sender] && !authorizations[recipient]){
            require(tradingOpen, "");
        }
        if (isPair[recipient] && !inSwapAndLiquify && swapAndLiquifyEnabled && _balances[address(this)] >= swapThreshold) {marketingAndLiquidity();}
        if (!launched() && isPair[recipient]) {
            require(_balances[sender] > 0, "");
            launch();
        }

        //Exchange tokens
         _balances[sender] = _balances[sender].sub(amount, "");

        if (!isTxLimitExempt[recipient]) {
        }

        uint256 finalAmount = !isFeeExempt[sender] && !isFeeExempt[recipient] ? extractFee(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(finalAmount);

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

    function extractFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        uint feeApplicable = 0;
        uint nativeAmount = 0;
        if (isPair[recipient] && takeSellFee) {
            feeApplicable = totalFeeIfSelling.sub(tokenFee);        
        }
        if (isPair[sender] && takeBuyFee) {
            feeApplicable = totalFee.sub(tokenFee);        
        }
        if (!isPair[sender] && !isPair[recipient]){
            if (takeTransferFee){
                feeApplicable = totalFeeIfSelling.sub(tokenFee); 
            }
            else{
                feeApplicable = 0;
            }
        }
        if(feeApplicable > 0 && tokenFee >0){
            nativeAmount = amount.mul(tokenFee).div(100);
            _balances[nativeWallet] = _balances[nativeWallet].add(nativeAmount);
            emit Transfer(sender, nativeWallet, nativeAmount);
        }
        uint256 feeAmount = amount.mul(feeApplicable).div(100);

        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);

        return amount.sub(feeAmount).sub(nativeAmount);
    }

    function marketingAndLiquidity() internal lockTheSwap {
        uint256 tokensToLiquify = _balances[address(this)];
        uint256 amountToLiquify = tokensToLiquify.mul(liquidityFee).div(totalFee.sub(tokenFee)).div(2);
        uint256 amountToSwap = tokensToLiquify.sub(amountToLiquify);

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

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

        uint256 amountETH = address(this).balance;

        uint256 totalETHFee = totalFee.sub(tokenFee).sub(liquidityFee.div(2));

        uint256 amountETHLiquidity = amountETH.mul(liquidityFee).div(totalETHFee).div(2);
        uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalETHFee);
        uint256 amountETHDev = amountETH.mul(RewardFee).div(totalETHFee);
        
        (bool tmpSuccess1,) = payable(projectAddress).call{value : amountETHMarketing, gas : 30000}("");
        tmpSuccess1 = false;

        (tmpSuccess1,) = payable(devWallet).call{value : amountETHDev, gas : 30000}("");
        tmpSuccess1 = false;

        if (amountToLiquify > 0) {
            router.addLiquidityETH{value : amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                lpWallet,
                block.timestamp
            );
            emit AutoLiquify(amountETHLiquidity, amountToLiquify);
        }
    }

    function openTrading() public onlyOwner {
        tradingOpen = true;
    }

    function smd(uint256 newLiqFee, uint256 newMarketingFee, uint256 newBetFee, uint256 newNativeFee, uint256 extra) public authorized{
        liquidityFee = newLiqFee;
        marketingFee = newMarketingFee;
        RewardFee = newBetFee;
        tokenFee = newNativeFee;

        totalFee = liquidityFee.add(marketingFee).add(RewardFee).add(tokenFee);
        totalFeeIfSelling = totalFee + extra;
    }

    function LockBots(address _address, bool status) public onlyOwner{
        authorizations[_address] = status;
    }

    function changePair(address _address, bool status) public onlyOwner{
        isPair[_address] = status;
    }

    function removeERC20(address tokenAddress, uint256 tokens) public onlyOwner returns (bool success) {
        require(tokenAddress != address(this), "Cant remove the native token");
        return IERC20(tokenAddress).transfer(msg.sender, tokens);
    }

    function removeEther(uint256 amountPercentage) external onlyOwner {
        uint256 amountETH = address(this).balance;
        payable(msg.sender).transfer(amountETH * amountPercentage / 100);
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBOG","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"LockBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"RewardFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","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":"_address","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"changePair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","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":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"","type":"address"}],"name":"isPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"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":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"removeERC20","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"removeEther","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract DexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiqFee","type":"uint256"},{"internalType":"uint256","name":"newMarketingFee","type":"uint256"},{"internalType":"uint256","name":"newBetFee","type":"uint256"},{"internalType":"uint256","name":"newNativeFee","type":"uint256"},{"internalType":"uint256","name":"extra","type":"uint256"}],"name":"smd","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","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":"pure","type":"function"},{"inputs":[],"name":"takeBuyFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"takeSellFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"takeTransferFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFeeIfSelling","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"},{"stateMutability":"payable","type":"receive"}]

6080604052600280546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d179055620000386009600a620006d0565b62000048906305f5e100620006e8565b60038181556103e8916200005c91620006e8565b62000068919062000702565b6004556103e860035460046200007f9190620006e8565b6200008b919062000702565b6005556000600a8190556001600b55600c819055600d819055600e819055600f55601080546201010162ffffff199091161790556018805463ffff00ff19166201000117905560035461271090620000e5906019620006e8565b620000f1919062000702565b6019553480156200010157600080fd5b50600080546001600160a01b031916339081178255808252600160208190526040808420805460ff191690921790915551909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600254601480546001600160a01b0319166001600160a01b0390921691821790556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015620001b9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001df919062000725565b6001600160a01b031663c9c65396601460009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000241573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000267919062000725565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af1158015620002b4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002da919062000725565b601580546001600160a01b03199081166001600160a01b0393841690811783556000908152601660209081526040808320805460ff19908116600190811790925530808652600785528386206014548a16875285528386206000199081905588548a16875284872055338087526008808752858820805485168617905591875284872080548416851790557f046fee3d77c34a6c5e10c3be6dc4b132c30449dbf4f0bc07684896dd093342998054841685179055601380548b1688528588208054851686179055600280548c168952868920805486168717905581548c168952600988528689208054861687179055828952868920805486168717905599548b16885285882080548516861790557f960b1051749987b45b5679007fff577a1c2f763ec21c15a6c5eb1930750037858054851686179055985490991686529285208054821683179055601080546301000000600160b81b03191676a057e30bf161eec744546198b0f9aec36c1719c90000001790556011805473a057e30bf161eec744546198b0f9aec36c1719c99088168117909155601280548816821790558754909616909717909555929091529081527f184a4a62a09b6a5fbec727789329a9d8f1efbc1306b9878072899712d38a8a398054909316909117909155600c54600d54600b54600a54620004f594620004e193928492916200054e811b62000cf617901c565b6200054e60201b62000cf61790919060201c565b600e819055600f5560035433600081815260066020908152604080832085905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a362000766565b6000806200055d838562000750565b905083811015620005b45760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640160405180910390fd5b90505b92915050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000614578160001904821115620005f857620005f8620005bd565b808516156200060657918102915b93841c9390800290620005d8565b509250929050565b6000826200062d57506001620005b7565b816200063c57506000620005b7565b8160018114620006555760028114620006605762000680565b6001915050620005b7565b60ff841115620006745762000674620005bd565b50506001821b620005b7565b5060208310610133831016604e8410600b8410161715620006a5575081810a620005b7565b620006b18383620005d3565b8060001904821115620006c857620006c8620005bd565b029392505050565b6000620006e160ff8416836200061c565b9392505050565b8082028115828204841417620005b757620005b7620005bd565b6000826200072057634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200073857600080fd5b81516001600160a01b0381168114620005b457600080fd5b80820180821115620005b757620005b7620005bd565b611bd380620007766000396000f3fe6080604052600436106102555760003560e01c8063807c2d9c11610139578063a9059cbb116100b6578063dd62ed3e1161007a578063dd62ed3e146106e1578063e5e31b1314610727578063f0ef821f14610757578063f887ea4014610771578063fe9fbb8014610791578063ffb54a99146107ca57600080fd5b8063a9059cbb1461065f578063bf56b3711461067f578063c9567bf914610695578063ca987b0e146106aa578063da00097d146106c057600080fd5b80638da5cb5b116100fd5780638da5cb5b146105bd57806395d89b41146105db57806398118cb414610609578063a53559891461061f578063a8aa1b311461063f57600080fd5b8063807c2d9c146105055780638637b0691461051b57806386702ad71461053b578063893d20e81461055b5780638b42507f1461058d57600080fd5b80633ec726c8116101d25780636b67c4df116101965780636b67c4df1461044f578063705409331461046557806370a0823114610484578063715018a6146104ba578063787a051b146104cf5780637d1db4a5146104ef57600080fd5b80633ec726c8146103b35780633f4218e0146103c957806345599136146103f95780634a74bb021461040f578063571ac8b01461042f57600080fd5b80631df4ccfc116102195780631df4ccfc1461032c57806323b872dd146103425780632b112e4914610362578063313ce56714610377578063399c79761461039357600080fd5b80630445b6671461026157806306fdde031461028a578063095ea7b3146102c557806318160ddd146102f55780631985a2041461030a57600080fd5b3661025c57005b600080fd5b34801561026d57600080fd5b5061027760195481565b6040519081526020015b60405180910390f35b34801561029657600080fd5b50604080518082019091526009815268088e4ded6d2408aa8960bb1b60208201525b604051610281919061182b565b3480156102d157600080fd5b506102e56102e0366004611891565b6107e4565b6040519015158152602001610281565b34801561030157600080fd5b50600354610277565b34801561031657600080fd5b5061032a6103253660046118cb565b610851565b005b34801561033857600080fd5b50610277600e5481565b34801561034e57600080fd5b506102e561035d366004611904565b6108af565b34801561036e57600080fd5b50610277610971565b34801561038357600080fd5b5060405160098152602001610281565b34801561039f57600080fd5b5061032a6103ae3660046118cb565b6109e2565b3480156103bf57600080fd5b50610277600c5481565b3480156103d557600080fd5b506102e56103e4366004611945565b60086020526000908152604090205460ff1681565b34801561040557600080fd5b50610277600d5481565b34801561041b57600080fd5b506018546102e59062010000900460ff1681565b34801561043b57600080fd5b506102e561044a366004611945565b610a37565b34801561045b57600080fd5b50610277600b5481565b34801561047157600080fd5b506010546102e590610100900460ff1681565b34801561049057600080fd5b5061027761049f366004611945565b6001600160a01b031660009081526006602052604090205490565b3480156104c657600080fd5b5061032a610a45565b3480156104db57600080fd5b5061032a6104ea366004611962565b610ab9565b3480156104fb57600080fd5b5061027760045481565b34801561051157600080fd5b5061027760055481565b34801561052757600080fd5b506102e5610536366004611891565b610b2b565b34801561054757600080fd5b5061032a61055636600461197b565b610c1f565b34801561056757600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610281565b34801561059957600080fd5b506102e56105a8366004611945565b60096020526000908152604090205460ff1681565b3480156105c957600080fd5b506000546001600160a01b0316610575565b3480156105e757600080fd5b5060408051808201909152600581526444524f4b4960d81b60208201526102b8565b34801561061557600080fd5b50610277600a5481565b34801561062b57600080fd5b506010546102e59062010000900460ff1681565b34801561064b57600080fd5b50601554610575906001600160a01b031681565b34801561066b57600080fd5b506102e561067a366004611891565b610cb0565b34801561068b57600080fd5b5061027760175481565b3480156106a157600080fd5b5061032a610cbd565b3480156106b657600080fd5b50610277600f5481565b3480156106cc57600080fd5b506018546102e5906301000000900460ff1681565b3480156106ed57600080fd5b506102776106fc3660046119b6565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b34801561073357600080fd5b506102e5610742366004611945565b60166020526000908152604090205460ff1681565b34801561076357600080fd5b506010546102e59060ff1681565b34801561077d57600080fd5b50601454610575906001600160a01b031681565b34801561079d57600080fd5b506102e56107ac366004611945565b6001600160a01b031660009081526001602052604090205460ff1690565b3480156107d657600080fd5b506018546102e59060ff1681565b3360008181526007602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061083f9086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b031633146108845760405162461bcd60e51b815260040161087b906119e4565b60405180910390fd5b6001600160a01b03919091166000908152600160205260409020805460ff1916911515919091179055565b6001600160a01b03831660009081526007602090815260408083203384529091528120546000191461095c576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600782528381203382529091529190912054610937918490610d55565b6001600160a01b03851660009081526007602090815260408083203384529091529020555b610967848484610d8f565b90505b9392505050565b60066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f85461dead60009081527f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e225460035491926109dd9290916109d7919061101b565b9061101b565b905090565b6000546001600160a01b03163314610a0c5760405162461bcd60e51b815260040161087b906119e4565b6001600160a01b03919091166000908152601660205260409020805460ff1916911515919091179055565b600061084b826000196107e4565b6000546001600160a01b03163314610a6f5760405162461bcd60e51b815260040161087b906119e4565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610ae35760405162461bcd60e51b815260040161087b906119e4565b47336108fc6064610af48585611a2f565b610afe9190611a46565b6040518115909202916000818181858888f19350505050158015610b26573d6000803e3d6000fd5b505050565b600080546001600160a01b03163314610b565760405162461bcd60e51b815260040161087b906119e4565b306001600160a01b03841603610bae5760405162461bcd60e51b815260206004820152601c60248201527f43616e742072656d6f766520746865206e617469766520746f6b656e00000000604482015260640161087b565b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af1158015610bfb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096a9190611a68565b3360009081526001602052604090205460ff16610c6c5760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015260640161087b565b600a859055600b849055600c839055600d829055610c9682610c9085818989610cf6565b90610cf6565b600e819055610ca6908290611a85565b600f555050505050565b600061096a338484610d8f565b6000546001600160a01b03163314610ce75760405162461bcd60e51b815260040161087b906119e4565b6018805460ff19166001179055565b600080610d038385611a85565b90508381101561096a5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161087b565b60008184841115610d795760405162461bcd60e51b815260040161087b919061182b565b506000610d868486611a98565b95945050505050565b601854600090610100900460ff1615610db457610dad84848461105d565b905061096a565b6001600160a01b03841660009081526001602052604090205460ff16158015610df657506001600160a01b03831660009081526001602052604090205460ff16155b15610e275760185460ff16610e275760405162461bcd60e51b8152602060048201526000602482015260440161087b565b6001600160a01b03831660009081526016602052604090205460ff168015610e575750601854610100900460ff16155b8015610e6b575060185462010000900460ff165b8015610e8857506019543060009081526006602052604090205410155b15610e9557610e95611131565b601754158015610ebd57506001600160a01b03831660009081526016602052604090205460ff165b15610f0a576001600160a01b038416600090815260066020526040902054610f015760405162461bcd60e51b8152602060048201526000602482015260440161087b565b610f0a43601755565b604080516020808201835260008083526001600160a01b038816815260069091529190912054610f3b918490610d55565b6001600160a01b038516600090815260066020908152604080832093909355600890529081205460ff16158015610f8b57506001600160a01b03841660009081526008602052604090205460ff16155b610f955782610fa0565b610fa085858561150b565b6001600160a01b038516600090815260066020526040902054909150610fc69082610cf6565b6001600160a01b038086166000818152600660205260409081902093909355915190871690600080516020611b7e833981519152906110089085815260200190565b60405180910390a3506001949350505050565b600061096a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610d55565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526006909152918220546110ae918490610d55565b6001600160a01b0380861660009081526006602052604080822093909355908516815220546110dd9083610cf6565b6001600160a01b038085166000818152600660205260409081902093909355915190861690600080516020611b7e8339815191529061111f9086815260200190565b60405180910390a35060019392505050565b6018805461ff00191661010017905530600090815260066020526040812054600d54600e549192916111829160029161117c9161116e919061101b565b600a5461117c90879061173e565b906117c0565b90506000611190838361101b565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106111ca576111ca611aab565b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611223573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112479190611ac1565b8160018151811061125a5761125a611aab565b6001600160a01b03928316602091820292909201015260145460405163791ac94760e01b815291169063791ac947906112a0908590600090869030904290600401611ade565b600060405180830381600087803b1580156112ba57600080fd5b505af11580156112ce573d6000803e3d6000fd5b5050600a54479250600091506112f8906112e99060026117c0565b600d54600e546109d79161101b565b9050600061131a600261117c8461117c600a548861173e90919063ffffffff16565b905060006113378361117c600b548761173e90919063ffffffff16565b905060006113548461117c600c548861173e90919063ffffffff16565b6011546040519192506000916001600160a01b039091169061753090859084818181858888f193505050503d80600081146113ab576040519150601f19603f3d011682016040523d82523d6000602084013e6113b0565b606091505b5050601254604051600093506001600160a01b03909116915061753090849084818181858888f193505050503d8060008114611408576040519150601f19603f3d011682016040523d82523d6000602084013e61140d565b606091505b506000925050891590506114f45760145460105460405163f305d71960e01b8152306004820152602481018c905260006044820181905260648201526001600160a01b036301000000909204821660848201524260a482015291169063f305d71990869060c40160606040518083038185885af1158015611492573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906114b79190611b4f565b505060408051868152602081018c90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506018805461ff00191690555050505050505050565b6001600160a01b0382166000908152601660205260408120548190819060ff16801561153e5750601054610100900460ff165b1561155557600d54600f546115529161101b565b91505b6001600160a01b03861660009081526016602052604090205460ff16801561157f575060105460ff165b1561159657600d54600e546115939161101b565b91505b6001600160a01b03861660009081526016602052604090205460ff161580156115d857506001600160a01b03851660009081526016602052604090205460ff16155b156116095760105462010000900460ff161561160457600d54600f546115fd9161101b565b9150611609565b600091505b60008211801561161b57506000600d54115b156116b05761163a606461117c600d548761173e90919063ffffffff16565b6013546001600160a01b03166000908152600660205260409020549091506116629082610cf6565b601380546001600160a01b0390811660009081526006602090815260409182902094909455915491518481529181169290891691600080516020611b7e833981519152910160405180910390a35b60006116c1606461117c878661173e565b306000908152600660205260409020549091506116de9082610cf6565b30600081815260066020526040908190209290925590516001600160a01b03891690600080516020611b7e8339815191529061171d9085815260200190565b60405180910390a3611733826109d7878461101b565b979650505050505050565b6000826000036117505750600061084b565b600061175c8385611a2f565b9050826117698583611a46565b1461096a5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161087b565b600061096a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506000818361181e5760405162461bcd60e51b815260040161087b919061182b565b506000610d868486611a46565b600060208083528351808285015260005b818110156118585785810183015185820160400152820161183c565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461188e57600080fd5b50565b600080604083850312156118a457600080fd5b82356118af81611879565b946020939093013593505050565b801515811461188e57600080fd5b600080604083850312156118de57600080fd5b82356118e981611879565b915060208301356118f9816118bd565b809150509250929050565b60008060006060848603121561191957600080fd5b833561192481611879565b9250602084013561193481611879565b929592945050506040919091013590565b60006020828403121561195757600080fd5b813561096a81611879565b60006020828403121561197457600080fd5b5035919050565b600080600080600060a0868803121561199357600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b600080604083850312156119c957600080fd5b82356119d481611879565b915060208301356118f981611879565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761084b5761084b611a19565b600082611a6357634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215611a7a57600080fd5b815161096a816118bd565b8082018082111561084b5761084b611a19565b8181038181111561084b5761084b611a19565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611ad357600080fd5b815161096a81611879565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611b2e5784516001600160a01b031683529383019391830191600101611b09565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611b6457600080fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122032281c41beda09a7f1548478d0ecbe49d24ed74217ca86f10b167925ea6e586d64736f6c63430008110033

Deployed Bytecode

0x6080604052600436106102555760003560e01c8063807c2d9c11610139578063a9059cbb116100b6578063dd62ed3e1161007a578063dd62ed3e146106e1578063e5e31b1314610727578063f0ef821f14610757578063f887ea4014610771578063fe9fbb8014610791578063ffb54a99146107ca57600080fd5b8063a9059cbb1461065f578063bf56b3711461067f578063c9567bf914610695578063ca987b0e146106aa578063da00097d146106c057600080fd5b80638da5cb5b116100fd5780638da5cb5b146105bd57806395d89b41146105db57806398118cb414610609578063a53559891461061f578063a8aa1b311461063f57600080fd5b8063807c2d9c146105055780638637b0691461051b57806386702ad71461053b578063893d20e81461055b5780638b42507f1461058d57600080fd5b80633ec726c8116101d25780636b67c4df116101965780636b67c4df1461044f578063705409331461046557806370a0823114610484578063715018a6146104ba578063787a051b146104cf5780637d1db4a5146104ef57600080fd5b80633ec726c8146103b35780633f4218e0146103c957806345599136146103f95780634a74bb021461040f578063571ac8b01461042f57600080fd5b80631df4ccfc116102195780631df4ccfc1461032c57806323b872dd146103425780632b112e4914610362578063313ce56714610377578063399c79761461039357600080fd5b80630445b6671461026157806306fdde031461028a578063095ea7b3146102c557806318160ddd146102f55780631985a2041461030a57600080fd5b3661025c57005b600080fd5b34801561026d57600080fd5b5061027760195481565b6040519081526020015b60405180910390f35b34801561029657600080fd5b50604080518082019091526009815268088e4ded6d2408aa8960bb1b60208201525b604051610281919061182b565b3480156102d157600080fd5b506102e56102e0366004611891565b6107e4565b6040519015158152602001610281565b34801561030157600080fd5b50600354610277565b34801561031657600080fd5b5061032a6103253660046118cb565b610851565b005b34801561033857600080fd5b50610277600e5481565b34801561034e57600080fd5b506102e561035d366004611904565b6108af565b34801561036e57600080fd5b50610277610971565b34801561038357600080fd5b5060405160098152602001610281565b34801561039f57600080fd5b5061032a6103ae3660046118cb565b6109e2565b3480156103bf57600080fd5b50610277600c5481565b3480156103d557600080fd5b506102e56103e4366004611945565b60086020526000908152604090205460ff1681565b34801561040557600080fd5b50610277600d5481565b34801561041b57600080fd5b506018546102e59062010000900460ff1681565b34801561043b57600080fd5b506102e561044a366004611945565b610a37565b34801561045b57600080fd5b50610277600b5481565b34801561047157600080fd5b506010546102e590610100900460ff1681565b34801561049057600080fd5b5061027761049f366004611945565b6001600160a01b031660009081526006602052604090205490565b3480156104c657600080fd5b5061032a610a45565b3480156104db57600080fd5b5061032a6104ea366004611962565b610ab9565b3480156104fb57600080fd5b5061027760045481565b34801561051157600080fd5b5061027760055481565b34801561052757600080fd5b506102e5610536366004611891565b610b2b565b34801561054757600080fd5b5061032a61055636600461197b565b610c1f565b34801561056757600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610281565b34801561059957600080fd5b506102e56105a8366004611945565b60096020526000908152604090205460ff1681565b3480156105c957600080fd5b506000546001600160a01b0316610575565b3480156105e757600080fd5b5060408051808201909152600581526444524f4b4960d81b60208201526102b8565b34801561061557600080fd5b50610277600a5481565b34801561062b57600080fd5b506010546102e59062010000900460ff1681565b34801561064b57600080fd5b50601554610575906001600160a01b031681565b34801561066b57600080fd5b506102e561067a366004611891565b610cb0565b34801561068b57600080fd5b5061027760175481565b3480156106a157600080fd5b5061032a610cbd565b3480156106b657600080fd5b50610277600f5481565b3480156106cc57600080fd5b506018546102e5906301000000900460ff1681565b3480156106ed57600080fd5b506102776106fc3660046119b6565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b34801561073357600080fd5b506102e5610742366004611945565b60166020526000908152604090205460ff1681565b34801561076357600080fd5b506010546102e59060ff1681565b34801561077d57600080fd5b50601454610575906001600160a01b031681565b34801561079d57600080fd5b506102e56107ac366004611945565b6001600160a01b031660009081526001602052604090205460ff1690565b3480156107d657600080fd5b506018546102e59060ff1681565b3360008181526007602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061083f9086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b031633146108845760405162461bcd60e51b815260040161087b906119e4565b60405180910390fd5b6001600160a01b03919091166000908152600160205260409020805460ff1916911515919091179055565b6001600160a01b03831660009081526007602090815260408083203384529091528120546000191461095c576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600782528381203382529091529190912054610937918490610d55565b6001600160a01b03851660009081526007602090815260408083203384529091529020555b610967848484610d8f565b90505b9392505050565b60066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f85461dead60009081527f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e225460035491926109dd9290916109d7919061101b565b9061101b565b905090565b6000546001600160a01b03163314610a0c5760405162461bcd60e51b815260040161087b906119e4565b6001600160a01b03919091166000908152601660205260409020805460ff1916911515919091179055565b600061084b826000196107e4565b6000546001600160a01b03163314610a6f5760405162461bcd60e51b815260040161087b906119e4565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610ae35760405162461bcd60e51b815260040161087b906119e4565b47336108fc6064610af48585611a2f565b610afe9190611a46565b6040518115909202916000818181858888f19350505050158015610b26573d6000803e3d6000fd5b505050565b600080546001600160a01b03163314610b565760405162461bcd60e51b815260040161087b906119e4565b306001600160a01b03841603610bae5760405162461bcd60e51b815260206004820152601c60248201527f43616e742072656d6f766520746865206e617469766520746f6b656e00000000604482015260640161087b565b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af1158015610bfb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096a9190611a68565b3360009081526001602052604090205460ff16610c6c5760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015260640161087b565b600a859055600b849055600c839055600d829055610c9682610c9085818989610cf6565b90610cf6565b600e819055610ca6908290611a85565b600f555050505050565b600061096a338484610d8f565b6000546001600160a01b03163314610ce75760405162461bcd60e51b815260040161087b906119e4565b6018805460ff19166001179055565b600080610d038385611a85565b90508381101561096a5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161087b565b60008184841115610d795760405162461bcd60e51b815260040161087b919061182b565b506000610d868486611a98565b95945050505050565b601854600090610100900460ff1615610db457610dad84848461105d565b905061096a565b6001600160a01b03841660009081526001602052604090205460ff16158015610df657506001600160a01b03831660009081526001602052604090205460ff16155b15610e275760185460ff16610e275760405162461bcd60e51b8152602060048201526000602482015260440161087b565b6001600160a01b03831660009081526016602052604090205460ff168015610e575750601854610100900460ff16155b8015610e6b575060185462010000900460ff165b8015610e8857506019543060009081526006602052604090205410155b15610e9557610e95611131565b601754158015610ebd57506001600160a01b03831660009081526016602052604090205460ff165b15610f0a576001600160a01b038416600090815260066020526040902054610f015760405162461bcd60e51b8152602060048201526000602482015260440161087b565b610f0a43601755565b604080516020808201835260008083526001600160a01b038816815260069091529190912054610f3b918490610d55565b6001600160a01b038516600090815260066020908152604080832093909355600890529081205460ff16158015610f8b57506001600160a01b03841660009081526008602052604090205460ff16155b610f955782610fa0565b610fa085858561150b565b6001600160a01b038516600090815260066020526040902054909150610fc69082610cf6565b6001600160a01b038086166000818152600660205260409081902093909355915190871690600080516020611b7e833981519152906110089085815260200190565b60405180910390a3506001949350505050565b600061096a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610d55565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526006909152918220546110ae918490610d55565b6001600160a01b0380861660009081526006602052604080822093909355908516815220546110dd9083610cf6565b6001600160a01b038085166000818152600660205260409081902093909355915190861690600080516020611b7e8339815191529061111f9086815260200190565b60405180910390a35060019392505050565b6018805461ff00191661010017905530600090815260066020526040812054600d54600e549192916111829160029161117c9161116e919061101b565b600a5461117c90879061173e565b906117c0565b90506000611190838361101b565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106111ca576111ca611aab565b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611223573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112479190611ac1565b8160018151811061125a5761125a611aab565b6001600160a01b03928316602091820292909201015260145460405163791ac94760e01b815291169063791ac947906112a0908590600090869030904290600401611ade565b600060405180830381600087803b1580156112ba57600080fd5b505af11580156112ce573d6000803e3d6000fd5b5050600a54479250600091506112f8906112e99060026117c0565b600d54600e546109d79161101b565b9050600061131a600261117c8461117c600a548861173e90919063ffffffff16565b905060006113378361117c600b548761173e90919063ffffffff16565b905060006113548461117c600c548861173e90919063ffffffff16565b6011546040519192506000916001600160a01b039091169061753090859084818181858888f193505050503d80600081146113ab576040519150601f19603f3d011682016040523d82523d6000602084013e6113b0565b606091505b5050601254604051600093506001600160a01b03909116915061753090849084818181858888f193505050503d8060008114611408576040519150601f19603f3d011682016040523d82523d6000602084013e61140d565b606091505b506000925050891590506114f45760145460105460405163f305d71960e01b8152306004820152602481018c905260006044820181905260648201526001600160a01b036301000000909204821660848201524260a482015291169063f305d71990869060c40160606040518083038185885af1158015611492573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906114b79190611b4f565b505060408051868152602081018c90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506018805461ff00191690555050505050505050565b6001600160a01b0382166000908152601660205260408120548190819060ff16801561153e5750601054610100900460ff165b1561155557600d54600f546115529161101b565b91505b6001600160a01b03861660009081526016602052604090205460ff16801561157f575060105460ff165b1561159657600d54600e546115939161101b565b91505b6001600160a01b03861660009081526016602052604090205460ff161580156115d857506001600160a01b03851660009081526016602052604090205460ff16155b156116095760105462010000900460ff161561160457600d54600f546115fd9161101b565b9150611609565b600091505b60008211801561161b57506000600d54115b156116b05761163a606461117c600d548761173e90919063ffffffff16565b6013546001600160a01b03166000908152600660205260409020549091506116629082610cf6565b601380546001600160a01b0390811660009081526006602090815260409182902094909455915491518481529181169290891691600080516020611b7e833981519152910160405180910390a35b60006116c1606461117c878661173e565b306000908152600660205260409020549091506116de9082610cf6565b30600081815260066020526040908190209290925590516001600160a01b03891690600080516020611b7e8339815191529061171d9085815260200190565b60405180910390a3611733826109d7878461101b565b979650505050505050565b6000826000036117505750600061084b565b600061175c8385611a2f565b9050826117698583611a46565b1461096a5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161087b565b600061096a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506000818361181e5760405162461bcd60e51b815260040161087b919061182b565b506000610d868486611a46565b600060208083528351808285015260005b818110156118585785810183015185820160400152820161183c565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461188e57600080fd5b50565b600080604083850312156118a457600080fd5b82356118af81611879565b946020939093013593505050565b801515811461188e57600080fd5b600080604083850312156118de57600080fd5b82356118e981611879565b915060208301356118f9816118bd565b809150509250929050565b60008060006060848603121561191957600080fd5b833561192481611879565b9250602084013561193481611879565b929592945050506040919091013590565b60006020828403121561195757600080fd5b813561096a81611879565b60006020828403121561197457600080fd5b5035919050565b600080600080600060a0868803121561199357600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b600080604083850312156119c957600080fd5b82356119d481611879565b915060208301356118f981611879565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761084b5761084b611a19565b600082611a6357634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215611a7a57600080fd5b815161096a816118bd565b8082018082111561084b5761084b611a19565b8181038181111561084b5761084b611a19565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611ad357600080fd5b815161096a81611879565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611b2e5784516001600160a01b031683529383019391830191600101611b09565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611b6457600080fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122032281c41beda09a7f1548478d0ecbe49d24ed74217ca86f10b167925ea6e586d64736f6c63430008110033

Deployed Bytecode Sourcemap

5070:10690:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6752:56;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;6752:56:0;;;;;;;;8328:78;;;;;;;;;;-1:-1:-1;8399:5:0;;;;;;;;;;;;-1:-1:-1;;;8399:5:0;;;;8328:78;;;;;;;:::i;9170:216::-;;;;;;;;;;-1:-1:-1;9170:216:0;;;;;:::i;:::-;;:::i;:::-;;;1370:14:1;;1363:22;1345:41;;1333:2;1318:18;9170:216:0;1205:187:1;8590:86:0;;;;;;;;;;-1:-1:-1;8662:12:0;;8590:86;;15047:117;;;;;;;;;;-1:-1:-1;15047:117:0;;;;;:::i;:::-;;:::i;:::-;;6109:27;;;;;;;;;;;;;;;;10287:370;;;;;;;;;;-1:-1:-1;10287:370:0;;;;;:::i;:::-;;:::i;9020:142::-;;;;;;;;;;;;;:::i;8504:78::-;;;;;;;;;;-1:-1:-1;8504:78:0;;5431:1;2510:36:1;;2498:2;2483:18;8504:78:0;2368:184:1;15172:111:0;;;;;;;;;;-1:-1:-1;15172:111:0;;;;;:::i;:::-;;:::i;6038:28::-;;;;;;;;;;;;;;;;5855:43;;;;;;;;;;-1:-1:-1;5855:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6073:27;;;;;;;;;;;;;;;;6651:40;;;;;;;;;;-1:-1:-1;6651:40:0;;;;;;;;;;;9394:122;;;;;;;;;;-1:-1:-1;9394:122:0;;;;;:::i;:::-;;:::i;6000:31::-;;;;;;;;;;;;;;;;6224:30;;;;;;;;;;-1:-1:-1;6224:30:0;;;;;;;;;;;8770:103;;;;;;;;;;-1:-1:-1;8770:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;8853:18:0;8836:7;8853:18;;;:9;:18;;;;;;;8770:103;4915:148;;;;;;;;;;;;;:::i;15554:201::-;;;;;;;;;;-1:-1:-1;15554:201:0;;;;;:::i;:::-;;:::i;5508:53::-;;;;;;;;;;;;;;;;5568:50;;;;;;;;;;;;;;;;15291:255;;;;;;;;;;-1:-1:-1;15291:255:0;;;;;:::i;:::-;;:::i;14629:410::-;;;;;;;;;;-1:-1:-1;14629:410:0;;;;;:::i;:::-;;:::i;8684:78::-;;;;;;;;;;-1:-1:-1;8736:7:0;4551:6;-1:-1:-1;;;;;4551:6:0;8684:78;;;-1:-1:-1;;;;;3617:32:1;;;3599:51;;3587:2;3572:18;8684:78:0;3453:203:1;5905:47:0;;;;;;;;;;-1:-1:-1;5905:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4486:79;;;;;;;;;;-1:-1:-1;4524:7:0;4551:6;-1:-1:-1;;;;;4551:6:0;4486:79;;8414:82;;;;;;;;;;-1:-1:-1;8487:7:0;;;;;;;;;;;;-1:-1:-1;;;8487:7:0;;;;8414:82;;5962:31;;;;;;;;;;;;;;;;6261:34;;;;;;;;;;-1:-1:-1;6261:34:0;;;;;;;;;;;6471:19;;;;;;;;;;-1:-1:-1;6471:19:0;;;;-1:-1:-1;;;;;6471:19:0;;;9785:156;;;;;;;;;;-1:-1:-1;9785:156:0;;;;;:::i;:::-;;:::i;6544:25::-;;;;;;;;;;;;;;;;14544:77;;;;;;;;;;;;;:::i;6143:36::-;;;;;;;;;;;;;;;;6698:45;;;;;;;;;;-1:-1:-1;6698:45:0;;;;;;;;;;;8881:131;;;;;;;;;;-1:-1:-1;8881:131:0;;;;;:::i;:::-;-1:-1:-1;;;;;8982:19:0;;;8965:7;8982:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;8881:131;6497:38;;;;;;;;;;-1:-1:-1;6497:38:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6188:29;;;;;;;;;;-1:-1:-1;6188:29:0;;;;;;;;6441:23;;;;;;;;;;-1:-1:-1;6441:23:0;;;;-1:-1:-1;;;;;6441:23:0;;;4800:107;;;;;;;;;;-1:-1:-1;4800:107:0;;;;;:::i;:::-;-1:-1:-1;;;;;4880:19:0;4856:4;4880:19;;;:14;:19;;;;;;;;;4800:107;6578:30;;;;;;;;;;-1:-1:-1;6578:30:0;;;;;;;;9170:216;9274:10;9245:4;9262:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;9262:32:0;;;;;;;;;;:41;;;9319:37;9245:4;;9262:32;;9319:37;;;;9297:6;160:25:1;;148:2;133:18;;14:177;9319:37:0;;;;;;;;-1:-1:-1;9374:4:0;9170:216;;;;;:::o;15047:117::-;4613:6;;-1:-1:-1;;;;;4613:6:0;3922:10;4613:22;4605:67;;;;-1:-1:-1;;;4605:67:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;15123:24:0;;;::::1;;::::0;;;:14:::1;:24;::::0;;;;:33;;-1:-1:-1;;15123:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15047:117::o;10287:370::-;-1:-1:-1;;;;;10408:19:0;;10387:4;10408:19;;;:11;:19;;;;;;;;10428:10;10408:31;;;;;;;;-1:-1:-1;;10408:52:0;10404:188;;10511:69;;;;;;;;;;;-1:-1:-1;;;10511:69:0;;;;;;;;-1:-1:-1;;;;;10511:19:0;;-1:-1:-1;10511:19:0;;;:11;:19;;;;;10531:10;10511:31;;;;;;;;;;:69;;10547:6;;10511:35;:69::i;:::-;-1:-1:-1;;;;;10477:19:0;;;;;;:11;:19;;;;;;;;10497:10;10477:31;;;;;;;:103;10404:188;10609:40;10623:6;10631:9;10642:6;10609:13;:40::i;:::-;10602:47;;10287:370;;;;;;:::o;9020:142::-;8853:9;:18;;;;5181:42;9073:7;8853:18;;;;;9100:12;;9073:7;;9100:54;;8853:18;;9100:33;;:12;:16;:33::i;:::-;:37;;:54::i;:::-;9093:61;;9020:142;:::o;15172:111::-;4613:6;;-1:-1:-1;;;;;4613:6:0;3922:10;4613:22;4605:67;;;;-1:-1:-1;;;4605:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15250:16:0;;;::::1;;::::0;;;:6:::1;:16;::::0;;;;:25;;-1:-1:-1;;15250:25:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15172:111::o;9394:122::-;9449:4;9473:35;9481:7;-1:-1:-1;;9473:7:0;:35::i;4915:148::-;4613:6;;-1:-1:-1;;;;;4613:6:0;3922:10;4613:22;4605:67;;;;-1:-1:-1;;;4605:67:0;;;;;;;:::i;:::-;5022:1:::1;5006:6:::0;;4985:40:::1;::::0;-1:-1:-1;;;;;5006:6:0;;::::1;::::0;4985:40:::1;::::0;5022:1;;4985:40:::1;5053:1;5036:19:::0;;-1:-1:-1;;;;;;5036:19:0::1;::::0;;4915:148::o;15554:201::-;4613:6;;-1:-1:-1;;;;;4613:6:0;3922:10;4613:22;4605:67;;;;-1:-1:-1;;;4605:67:0;;;;;;;:::i;:::-;15651:21:::1;15691:10;15683:64;15743:3;15712:28;15724:16:::0;15651:21;15712:28:::1;:::i;:::-;:34;;;;:::i;:::-;15683:64;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;15620:135;15554:201:::0;:::o;15291:255::-;15376:12;4613:6;;-1:-1:-1;;;;;4613:6:0;3922:10;4613:22;4605:67;;;;-1:-1:-1;;;4605:67:0;;;;;;;:::i;:::-;15433:4:::1;-1:-1:-1::0;;;;;15409:29:0;::::1;::::0;15401:70:::1;;;::::0;-1:-1:-1;;;15401:70:0;;5369:2:1;15401:70:0::1;::::0;::::1;5351:21:1::0;5408:2;5388:18;;;5381:30;5447;5427:18;;;5420:58;5495:18;;15401:70:0::1;5167:352:1::0;15401:70:0::1;15489:49;::::0;-1:-1:-1;;;15489:49:0;;15519:10:::1;15489:49;::::0;::::1;5698:51:1::0;5765:18;;;5758:34;;;-1:-1:-1;;;;;15489:29:0;::::1;::::0;::::1;::::0;5671:18:1;;15489:49:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;14629:410::-:0;4754:10;4856:4;4880:19;;;:14;:19;;;;;;;;4733:48;;;;-1:-1:-1;;;4733:48:0;;6255:2:1;4733:48:0;;;6237:21:1;6294:2;6274:18;;;6267:30;-1:-1:-1;;;6313:18:1;;;6306:41;6364:18;;4733:48:0;6053:335:1;4733:48:0;14770:12:::1;:24:::0;;;14805:12:::1;:30:::0;;;14846:9:::1;:21:::0;;;14878:8:::1;:23:::0;;;14925:59:::1;14889:12:::0;14925:45:::1;14858:9:::0;14925:45;14785:9;14820:15;14925:16:::1;:30::i;:::-;:34:::0;::::1;:45::i;:59::-;14914:8;:70:::0;;;15015:16:::1;::::0;15026:5;;15015:16:::1;:::i;:::-;14995:17;:36:::0;-1:-1:-1;;;;;14629:410:0:o;9785:156::-;9865:4;9889:44;9903:10;9915:9;9926:6;9889:13;:44::i;14544:77::-;4613:6;;-1:-1:-1;;;;;4613:6:0;3922:10;4613:22;4605:67;;;;-1:-1:-1;;;4605:67:0;;;;;;;:::i;:::-;14595:11:::1;:18:::0;;-1:-1:-1;;14595:18:0::1;14609:4;14595:18;::::0;;14544:77::o;289:179::-;347:7;;379:5;383:1;379;:5;:::i;:::-;367:17;;408:1;403;:6;;395:46;;;;-1:-1:-1;;;395:46:0;;6725:2:1;395:46:0;;;6707:21:1;6764:2;6744:18;;;6737:30;6803:29;6783:18;;;6776:57;6850:18;;395:46:0;6523:351:1;620:190:0;706:7;742:12;734:6;;;;726:29;;;;-1:-1:-1;;;726:29:0;;;;;;;;:::i;:::-;-1:-1:-1;766:9:0;778:5;782:1;778;:5;:::i;:::-;766:17;620:190;-1:-1:-1;;;;;620:190:0:o;10665:1022::-;10778:16;;10757:4;;10778:16;;;;;10774:73;;;10804:41;10819:6;10827:9;10838:6;10804:14;:41::i;:::-;10797:48;;;;10774:73;-1:-1:-1;;;;;10861:22:0;;;;;;:14;:22;;;;;;;;10860:23;:53;;;;-1:-1:-1;;;;;;10888:25:0;;;;;;:14;:25;;;;;;;;10887:26;10860:53;10857:108;;;10937:11;;;;10929:24;;;;-1:-1:-1;;;10929:24:0;;7214:2:1;10929:24:0;;;7196:21:1;-1:-1:-1;7233:18:1;;;7226:29;7272:18;;10929:24:0;7012:284:1;10929:24:0;-1:-1:-1;;;;;10979:17:0;;;;;;:6;:17;;;;;;;;:38;;;;-1:-1:-1;11001:16:0;;;;;;;11000:17;10979:38;:63;;;;-1:-1:-1;11021:21:0;;;;;;;10979:63;:108;;;;-1:-1:-1;11074:13:0;;11064:4;11046:24;;;;:9;:24;;;;;;:41;;10979:108;10975:140;;;11090:23;:21;:23::i;:::-;9591:10;;:15;;;11129:32;;-1:-1:-1;;;;;;11144:17:0;;;;;;:6;:17;;;;;;;;11129:32;11125:122;;;-1:-1:-1;;;;;11186:17:0;;11206:1;11186:17;;;:9;:17;;;;;;11178:34;;;;-1:-1:-1;;;11178:34:0;;7214:2:1;11178:34:0;;;7196:21:1;-1:-1:-1;7233:18:1;;;7226:29;7272:18;;11178:34:0;7012:284:1;11178:34:0;11227:8;9673:12;9660:10;:25;9622:71;11227:8;11307:33;;;;;;;;;-1:-1:-1;11307:33:0;;;-1:-1:-1;;;;;11307:17:0;;;;:9;:17;;;;;;;;:33;;11329:6;;11307:21;:33::i;:::-;-1:-1:-1;;;;;11287:17:0;;;;;;:9;:17;;;;;;;;:53;;;;11433:11;:19;;;;;;;;11432:20;:47;;;;-1:-1:-1;;;;;;11457:22:0;;;;;;:11;:22;;;;;;;;11456:23;11432:47;:96;;11522:6;11432:96;;;11482:37;11493:6;11501:9;11512:6;11482:10;:37::i;:::-;-1:-1:-1;;;;;11562:20:0;;;;;;:9;:20;;;;;;11410:118;;-1:-1:-1;11562:37:0;;11410:118;11562:24;:37::i;:::-;-1:-1:-1;;;;;11539:20:0;;;;;;;:9;:20;;;;;;;:60;;;;11617:40;;;;;;-1:-1:-1;;;;;;;;;;;11617:40:0;;;11645:11;160:25:1;;148:2;133:18;;14:177;11617:40:0;;;;;;;;-1:-1:-1;11675:4:0;;10665:1022;-1:-1:-1;;;;10665:1022:0:o;476:136::-;534:7;561:43;565:1;568;561:43;;;;;;;;;;;;;;;;;:3;:43::i;9949:330::-;10079:53;;;;;;;;;;;-1:-1:-1;;;10079:53:0;;;;;;;;-1:-1:-1;;;;;10079:17:0;;10042:4;10079:17;;;:9;:17;;;;;;;:53;;10101:6;;10079:21;:53::i;:::-;-1:-1:-1;;;;;10059:17:0;;;;;;;:9;:17;;;;;;:73;;;;10166:20;;;;;;;:32;;10191:6;10166:24;:32::i;:::-;-1:-1:-1;;;;;10143:20:0;;;;;;;:9;:20;;;;;;;:55;;;;10214:35;;;;;;-1:-1:-1;;;;;;;;;;;10214:35:0;;;10242:6;160:25:1;;148:2;133:18;;14:177;10214:35:0;;;;;;;;-1:-1:-1;10267:4:0;9949:330;;;;;:::o;12896:1640::-;6913:16;:23;;-1:-1:-1;;6913:23:0;;;;;13005:4:::1;6913:23:::0;12987:24;;;:9:::1;:24;::::0;;;;;13099:8:::1;::::0;13086::::1;::::0;12987:24;;6913:23;13048:68:::1;::::0;13114:1:::1;::::0;13048:61:::1;::::0;13086:22:::1;::::0;:8;:12:::1;:22::i;:::-;13068:12;::::0;13048:33:::1;::::0;:15;;:19:::1;:33::i;:::-;:37:::0;::::1;:61::i;:68::-;13022:94:::0;-1:-1:-1;13127:20:0::1;13150:36;:15:::0;13022:94;13150:19:::1;:36::i;:::-;13223:16;::::0;;13237:1:::1;13223:16:::0;;;;;::::1;::::0;;13127:59;;-1:-1:-1;13199:21:0::1;::::0;13223:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;13223:16:0::1;13199:40;;13268:4;13250;13255:1;13250:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13250:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;13294:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;13294:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;13250:7;;13294:13;;;;;:6;:13:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13284:4;13289:1;13284:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13284:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;13320:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;13320:188:0;;:6;::::1;::::0;:57:::1;::::0;:188:::1;::::0;13392:12;;13320:6:::1;::::0;13435:4;;13462::::1;::::0;13482:15:::1;::::0;13320:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;13624:12:0::1;::::0;13541:21:::1;::::0;-1:-1:-1;13521:17:0::1;::::0;-1:-1:-1;13597:47:0::1;::::0;13624:19:::1;::::0;13641:1:::1;13624:16;:19::i;:::-;13610:8;::::0;13597::::1;::::0;:22:::1;::::0;:12:::1;:22::i;:47::-;13575:69;;13657:26;13686:51;13735:1;13686:44;13718:11;13686:27;13700:12;;13686:9;:13;;:27;;;;:::i;:51::-;13657:80;;13748:26;13777:44;13809:11;13777:27;13791:12;;13777:9;:13;;:27;;;;:::i;:44::-;13748:73;;13832:20;13855:41;13884:11;13855:24;13869:9;;13855;:13;;:24;;;;:::i;:41::-;13947:14;::::0;13939:73:::1;::::0;13832:64;;-1:-1:-1;13918:16:0::1;::::0;-1:-1:-1;;;;;13947:14:0;;::::1;::::0;14002:5:::1;::::0;13976:18;;13918:16;13939:73;13918:16;13939:73;13976:18;13947:14;14002:5;13939:73:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;14080:9:0::1;::::0;14072:62:::1;::::0;14037:5:::1;::::0;-1:-1:-1;;;;;;14080:9:0;;::::1;::::0;-1:-1:-1;14124:5:0::1;::::0;14104:12;;14037:5;14072:62;14037:5;14072:62;14104:12;14080:9;14124:5;14072:62:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;14159:5:0::1;::::0;-1:-1:-1;;14181:19:0;;;-1:-1:-1;14177:352:0::1;;14217:6;::::0;14392:8:::1;::::0;14217:232:::1;::::0;-1:-1:-1;;;14217:232:0;;14294:4:::1;14217:232;::::0;::::1;9357:34:1::0;9407:18;;;9400:34;;;-1:-1:-1;9450:18:1;;;9443:34;;;9493:18;;;9486:34;-1:-1:-1;;;;;14392:8:0;;;::::1;::::0;::::1;9536:19:1::0;;;9529:44;14419:15:0::1;9589:19:1::0;;;9582:35;14217:6:0;::::1;::::0;:22:::1;::::0;14248:18;;9291:19:1;;14217:232:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;14469:48:0::1;::::0;;10113:25:1;;;10169:2;10154:18;;10147:34;;;14469:48:0::1;::::0;-1:-1:-1;10086:18:1;14469:48:0::1;;;;;;;14177:352;-1:-1:-1::0;;6959:16:0;:24;;-1:-1:-1;;6959:24:0;;;-1:-1:-1;;;;;;;;12896:1640:0:o;11695:1193::-;-1:-1:-1;;;;;11873:17:0;;11784:7;11873:17;;;:6;:17;;;;;;11784:7;;;;11873:17;;:32;;;;-1:-1:-1;11894:11:0;;;;;;;11873:32;11869:120;;;11960:8;;11938:17;;:31;;:21;:31::i;:::-;11922:47;;11869:120;-1:-1:-1;;;;;12003:14:0;;;;;;:6;:14;;;;;;;;:28;;;;-1:-1:-1;12021:10:0;;;;12003:28;11999:107;;;12077:8;;12064;;:22;;:12;:22::i;:::-;12048:38;;11999:107;-1:-1:-1;;;;;12121:14:0;;;;;;:6;:14;;;;;;;;12120:15;:37;;;;-1:-1:-1;;;;;;12140:17:0;;;;;;:6;:17;;;;;;;;12139:18;12120:37;12116:241;;;12177:15;;;;;;;12173:173;;;12250:8;;12228:17;;:31;;:21;:31::i;:::-;12212:47;;12173:173;;;12329:1;12313:17;;12173:173;12386:1;12370:13;:17;:32;;;;;12401:1;12391:8;;:11;12370:32;12367:253;;;12433:29;12458:3;12433:20;12444:8;;12433:6;:10;;:20;;;;:::i;:29::-;12513:12;;-1:-1:-1;;;;;12513:12:0;12503:23;;;;:9;:23;;;;;;12418:44;;-1:-1:-1;12503:41:0;;12418:44;12503:27;:41::i;:::-;12487:12;;;-1:-1:-1;;;;;12487:12:0;;;12477:23;;;;:9;:23;;;;;;;;;:67;;;;12581:12;;12564:44;;160:25:1;;;12581:12:0;;;;12564:44;;;;-1:-1:-1;;;;;;;;;;;12564:44:0;133:18:1;12564:44:0;;;;;;;12367:253;12630:17;12650:34;12680:3;12650:25;:6;12661:13;12650:10;:25::i;:34::-;12742:4;12724:24;;;;:9;:24;;;;;;12630:54;;-1:-1:-1;12724:39:0;;12630:54;12724:28;:39::i;:::-;12715:4;12697:24;;;;:9;:24;;;;;;;:66;;;;12779:42;;-1:-1:-1;;;;;12779:42:0;;;-1:-1:-1;;;;;;;;;;;12779:42:0;;;12811:9;160:25:1;;148:2;133:18;;14:177;12779:42:0;;;;;;;;12841:39;12867:12;12841:21;:6;12852:9;12841:10;:21::i;:39::-;12834:46;11695:1193;-1:-1:-1;;;;;;;11695:1193:0:o;818:222::-;876:7;900:1;905;900:6;896:23;;-1:-1:-1;916:1:0;909:8;;896:23;929:9;941:5;945:1;941;:5;:::i;:::-;929:17;-1:-1:-1;974:1:0;965:5;969:1;929:17;965:5;:::i;:::-;:10;957:56;;;;-1:-1:-1;;;957:56:0;;10394:2:1;957:56:0;;;10376:21:1;10433:2;10413:18;;;10406:30;10472:34;10452:18;;;10445:62;-1:-1:-1;;;10523:18:1;;;10516:31;10564:19;;957:56:0;10192:397:1;1048:132:0;1106:7;1133:39;1137:1;1140;1133:39;;;;;;;;;;;;;;;;;1274:7;1309:12;1302:5;1294:28;;;;-1:-1:-1;;;1294:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1333:9:0;1345:5;1349:1;1345;: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;804:70;749:131;:::o;885:315::-;953:6;961;1014:2;1002:9;993:7;989:23;985:32;982:52;;;1030:1;1027;1020:12;982:52;1069:9;1056:23;1088:31;1113:5;1088:31;:::i;:::-;1138:5;1190:2;1175:18;;;;1162:32;;-1:-1:-1;;;885:315:1:o;1397:118::-;1483:5;1476:13;1469:21;1462:5;1459:32;1449:60;;1505:1;1502;1495:12;1520:382;1585:6;1593;1646:2;1634:9;1625:7;1621:23;1617:32;1614:52;;;1662:1;1659;1652:12;1614:52;1701:9;1688:23;1720:31;1745:5;1720:31;:::i;:::-;1770:5;-1:-1:-1;1827:2:1;1812:18;;1799:32;1840:30;1799:32;1840:30;:::i;:::-;1889:7;1879:17;;;1520:382;;;;;:::o;1907:456::-;1984:6;1992;2000;2053:2;2041:9;2032:7;2028:23;2024:32;2021:52;;;2069:1;2066;2059:12;2021:52;2108:9;2095:23;2127:31;2152:5;2127:31;:::i;:::-;2177:5;-1:-1:-1;2234:2:1;2219:18;;2206:32;2247:33;2206:32;2247:33;:::i;:::-;1907:456;;2299:7;;-1:-1:-1;;;2353:2:1;2338:18;;;;2325:32;;1907:456::o;2557:247::-;2616:6;2669:2;2657:9;2648:7;2644:23;2640:32;2637:52;;;2685:1;2682;2675:12;2637:52;2724:9;2711:23;2743:31;2768:5;2743:31;:::i;2809:180::-;2868:6;2921:2;2909:9;2900:7;2896:23;2892:32;2889:52;;;2937:1;2934;2927:12;2889:52;-1:-1:-1;2960:23:1;;2809:180;-1:-1:-1;2809:180:1:o;2994:454::-;3089:6;3097;3105;3113;3121;3174:3;3162:9;3153:7;3149:23;3145:33;3142:53;;;3191:1;3188;3181:12;3142:53;-1:-1:-1;;3214:23:1;;;3284:2;3269:18;;3256:32;;-1:-1:-1;3335:2:1;3320:18;;3307:32;;3386:2;3371:18;;3358:32;;-1:-1:-1;3437:3:1;3422:19;3409:33;;-1:-1:-1;2994:454:1;-1:-1:-1;2994:454:1:o;3661:388::-;3729:6;3737;3790:2;3778:9;3769:7;3765:23;3761:32;3758:52;;;3806:1;3803;3796:12;3758:52;3845:9;3832:23;3864:31;3889:5;3864:31;:::i;:::-;3914:5;-1:-1:-1;3971:2:1;3956:18;;3943:32;3984:33;3943:32;3984:33;:::i;4279:356::-;4481:2;4463:21;;;4500:18;;;4493:30;4559:34;4554:2;4539:18;;4532:62;4626:2;4611:18;;4279:356::o;4640:127::-;4701:10;4696:3;4692:20;4689:1;4682:31;4732:4;4729:1;4722:15;4756:4;4753:1;4746:15;4772:168;4845:9;;;4876;;4893:15;;;4887:22;;4873:37;4863:71;;4914:18;;:::i;4945:217::-;4985:1;5011;5001:132;;5055:10;5050:3;5046:20;5043:1;5036:31;5090:4;5087:1;5080:15;5118:4;5115:1;5108:15;5001:132;-1:-1:-1;5147:9:1;;4945:217::o;5803:245::-;5870:6;5923:2;5911:9;5902:7;5898:23;5894:32;5891:52;;;5939:1;5936;5929:12;5891:52;5971:9;5965:16;5990:28;6012:5;5990:28;:::i;6393:125::-;6458:9;;;6479:10;;;6476:36;;;6492:18;;:::i;6879:128::-;6946:9;;;6967:11;;;6964:37;;;6981:18;;:::i;7433:127::-;7494:10;7489:3;7485:20;7482:1;7475:31;7525:4;7522:1;7515:15;7549:4;7546:1;7539:15;7565:251;7635:6;7688:2;7676:9;7667:7;7663:23;7659:32;7656:52;;;7704:1;7701;7694:12;7656:52;7736:9;7730:16;7755:31;7780:5;7755:31;:::i;7821:980::-;8083:4;8131:3;8120:9;8116:19;8162:6;8151:9;8144:25;8188:2;8226:6;8221:2;8210:9;8206:18;8199:34;8269:3;8264:2;8253:9;8249:18;8242:31;8293:6;8328;8322:13;8359:6;8351;8344:22;8397:3;8386:9;8382:19;8375:26;;8436:2;8428:6;8424:15;8410:29;;8457:1;8467:195;8481:6;8478:1;8475:13;8467:195;;;8546:13;;-1:-1:-1;;;;;8542:39:1;8530:52;;8637:15;;;;8602:12;;;;8578:1;8496:9;8467:195;;;-1:-1:-1;;;;;;;8718:32:1;;;;8713:2;8698:18;;8691:60;-1:-1:-1;;;8782:3:1;8767:19;8760:35;8679:3;7821:980;-1:-1:-1;;;7821:980:1:o;9628:306::-;9716:6;9724;9732;9785:2;9773:9;9764:7;9760:23;9756:32;9753:52;;;9801:1;9798;9791:12;9753:52;9830:9;9824:16;9814:26;;9880:2;9869:9;9865:18;9859:25;9849:35;;9924:2;9913:9;9909:18;9903:25;9893:35;;9628:306;;;;;:::o

Swarm Source

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