ETH Price: $2,296.20 (+1.38%)

Token

Anzeigenhauptmeister ($AZHM)
 

Overview

Max Total Supply

100,000,000 $AZHM

Holders

44

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
ginobiligoat.eth
Balance
500,000 $AZHM

Value
$0.00
0xe00244b4f2f63b034dbf9d3e88cdfd606ad950df
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:
AZHM

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

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

// SPDX-License-Identifier: MIT

pragma solidity 0.8.16;


library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {return a + b;}
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {return a - b;}
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {return a * b;}
    function div(uint256 a, uint256 b) internal pure returns (uint256) {return a / b;}
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {return a % b;}
    
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {uint256 c = a + b; if(c < a) return(false, 0); return(true, c);}}

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {if(b > a) return(false, 0); return (true, a - b);}}

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {if (a == 0) return(true, 0); uint256 c = a * b;
        if(c / a != b) return(false, 0); return(true, c);}}

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {if(b == 0) return(false, 0); return(true, a / b);}}

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {if(b == 0) return(false, 0); return(true, a % b);}}

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

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

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked{require(b > 0, errorMessage); return a % b;}}}

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

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 transferOwnership(address payable adr) public onlyOwner {owner = adr; emit OwnershipTransferred(adr);}

    function renounceOwnership() public onlyOwner {owner = 0x000000000000000000000000000000000000dEaD; emit OwnershipTransferred(0x000000000000000000000000000000000000dEaD);}

    event OwnershipTransferred(address owner);
}

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

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

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);

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

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

    string private constant _name = "Anzeigenhauptmeister";
    string private constant _symbol = "$AZHM";

    uint8 private constant _decimals = 18;

    uint256 private _totalSupply = 100000000 * (10 ** _decimals);

    uint256 private _maxTxAmountPercent = 2; 
    uint256 private _maxTransferPercent = 2;
    uint256 private _maxWalletPercent = 2;


    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public isExcludedFromFees;

    IRouter router;
    address public pair;

    bool private tradingOpen = true;

    uint256 private liqFee = 0;
    uint256 private devFee = 4;
    uint256 private totalFee = 4;
    uint256 private sellFee = 4;
    uint256 private transferFee = 0;
    uint256 private denominator = 100;


    bool private contractSwapEnabled = true;

    uint256 private swapTimes;
    bool private swapping;
    uint256 swapAmount = 3;

    uint256 private swapThreshold = ( _totalSupply * 1000 ) / 100000; //2%
    uint256 private minSwapTokenAmount = ( _totalSupply * 10 ) / 100000;
    modifier lockTheSwap {swapping = true; _; swapping = false;}

    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address public devWallet = 0x2b55C16eb8E5b2735A62D6D6EB9bC9893F4deF3D; 

    constructor() Ownable(msg.sender) {
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());
        router = _router;
        pair = _pair;
        isExcludedFromFees[address(this)] = true;
        isExcludedFromFees[msg.sender] = true;
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable {}

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

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

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

    function getOwner() external view override returns (address) { 
        
    return owner; 
    
    }

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

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

    function allowance(address owner, address spender) public view override returns (uint256) {

        return _allowances[owner][spender];
        
    }


    function excludeFromFees(address _address, bool _enabled) external onlyOwner {
        isExcludedFromFees[_address] = _enabled;
        
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(msg.sender, spender, amount);return true;
    }

    function totalSupply() public view override returns (uint256) {
        
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));
        
    }

    function _maxWalletToken() public view returns (uint256) {
        return totalSupply() * _maxWalletPercent / denominator;
        
    }

    function _maxTxAmount() public view returns (uint256) {
        return totalSupply() * _maxTxAmountPercent / denominator;
    }

    function _maxTransferAmount() public view returns (uint256) {
        return totalSupply() * _maxTransferPercent / denominator;
    }

    function preTxCheck(address sender, address recipient, uint256 amount) internal view {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount > uint256(0), "Transfer amount must be greater than zero");
        require(amount <= balanceOf(sender),"You are trying to transfer more than your balance");
    }


    function _transfer(address sender, address recipient, uint256 amount) private {
        preTxCheck(sender, recipient, amount);
        checkIfTradingIsAllowed(sender, recipient);
        checkMaxWalletLimit(sender, recipient, amount); 
        swapbackCounters(sender, recipient);
        checkTxLimit(sender, recipient, amount); 
        swapBack(sender, recipient, amount);
        _balances[sender] = _balances[sender].sub(amount);
        uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
    }

    


 
    function updateDevWallet(address newDevWallet) external onlyOwner{
        	devWallet = newDevWallet;

    }


   

     function removeLimits() external onlyOwner {
        _maxTxAmountPercent = totalSupply();
        _maxTransferPercent = totalSupply();
        _maxWalletPercent = totalSupply();
    }

    function openTrade() external onlyOwner {
        tradingOpen = true;
        
        }


    function checkIfTradingIsAllowed(address sender, address recipient) internal view {
        if(!isExcludedFromFees[sender] && !isExcludedFromFees[recipient]){require(tradingOpen, "tradingAllowed");}
    }
    
    function checkMaxWalletLimit(address sender, address recipient, uint256 amount) internal view {
        if(!isExcludedFromFees[sender] && !isExcludedFromFees[recipient] && recipient != address(pair) && recipient != address(DEAD)){
            require((_balances[recipient].add(amount)) <= _maxWalletToken(), "Exceeds maximum wallet amount.");}
    }

    function swapbackCounters(address sender, address recipient) internal {
        if(recipient == pair && !isExcludedFromFees[sender]){swapTimes += uint256(1);}
    }

    function checkTxLimit(address sender, address recipient, uint256 amount) internal view {
        if(sender != pair){require(amount <= _maxTransferAmount() || isExcludedFromFees[sender] || isExcludedFromFees[recipient], "TX Limit Exceeded");}
        require(amount <= _maxTxAmount() || isExcludedFromFees[sender] || isExcludedFromFees[recipient], "TX Limit Exceeded");
    }

    function swapAndLiquify(uint256 tokens) private lockTheSwap {

        uint256 _denominator = (liqFee.add(1).add(devFee)).mul(2);

        uint256 tokensToAddLiquidityWith = tokens.mul(liqFee).div(_denominator);

        uint256 toSwap = tokens.sub(tokensToAddLiquidityWith);
        uint256 initialBalance = address(this).balance;

        swapTokensForETH(toSwap);
        uint256 deltaBalance = address(this).balance.sub(initialBalance);
        uint256 unitBalance= deltaBalance.div(_denominator.sub(liqFee));
        uint256 ETHToAddLiquidityWith = unitBalance.mul(liqFee);

        if(ETHToAddLiquidityWith > uint256(0)){addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith); }
        uint256 remainingBalance = address(this).balance;

        if(remainingBalance > uint256(0)){payable(devWallet).transfer(remainingBalance);}
    }

    function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private {
        _approve(address(this), address(router), tokenAmount);
        router.addLiquidityETH{value: ETHAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            devWallet,
            block.timestamp);
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
        _approve(address(this), address(router), tokenAmount);
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp);
    }

    function shouldSwapBack(address sender, address recipient, uint256 amount) internal view returns (bool) {
        bool aboveMin = amount >= minSwapTokenAmount;
        bool aboveThreshold = balanceOf(address(this)) >= swapThreshold;
        return !swapping && contractSwapEnabled && tradingOpen && aboveMin && !isExcludedFromFees[sender] && recipient == pair && swapTimes >= swapAmount && aboveThreshold;
    }

    function updateSwapTrheshold(uint256 _newSwapTreshold) external onlyOwner{
        swapThreshold = _totalSupply.mul(_newSwapTreshold).div(uint256(100000)); 
    }


    function updateMinSwapTokensAmount(uint256 _newMinSwapTokensAtAmount) external onlyOwner{
        minSwapTokenAmount = _totalSupply.mul(_newMinSwapTokensAtAmount).div(uint256(100000));
    }
    

    function swapBack(address sender, address recipient, uint256 amount) internal {
        if(shouldSwapBack(sender, recipient, amount)){swapAndLiquify(swapThreshold); swapTimes = uint256(0);}
    }

    function shouldTakeFee(address sender, address recipient) internal view returns (bool) {
        return !isExcludedFromFees[sender] && !isExcludedFromFees[recipient];
    }

    function getTotalFee(address sender, address recipient) internal view returns (uint256) {
        if(recipient == pair){return sellFee;}
        if(sender == pair){return totalFee;}
        return transferFee;
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        if(getTotalFee(sender, recipient) > 0){
        uint256 feeAmount = amount.div(denominator).mul(getTotalFee(sender, recipient));
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
        return amount.sub(feeAmount);} return amount;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTransferAmount","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":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFees","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":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newDevWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newMinSwapTokensAtAmount","type":"uint256"}],"name":"updateMinSwapTokensAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newSwapTreshold","type":"uint256"}],"name":"updateSwapTrheshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126012600a6200042a565b62000022906305f5e10062000442565b60018181556002808055600381815560049182556009805460ff60a01b1916600160a01b1790556000600a819055600b839055600c839055600d92909255600e919091556064600f556010805460ff1916909217909155601355620186a0906200008f906103e862000442565b6200009b919062000464565b601455620186a0600154600a620000b3919062000442565b620000bf919062000464565b601555601680546001600160a01b031916732b55c16eb8e5b2735a62d6d6eb9bc9893f4def3d179055348015620000f557600080fd5b50600080546001600160a01b031916331781556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9291839163c45a0155916004808201926020929091908290030181865afa1580156200015d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000183919062000487565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001d1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f7919062000487565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000245573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200026b919062000487565b600880546001600160a01b038581166001600160a01b0319928316179092556009805492841692909116919091179055306000908152600760209081526040808320805460ff199081166001908117909255338086528386208054909216831790915590546005845282852081905591519182529394507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050620004b2565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200036c57816000190482111562000350576200035062000315565b808516156200035e57918102915b93841c939080029062000330565b509250929050565b600082620003855750600162000424565b81620003945750600062000424565b8160018114620003ad5760028114620003b857620003d8565b600191505062000424565b60ff841115620003cc57620003cc62000315565b50506001821b62000424565b5060208310610133831016604e8410600b8410161715620003fd575081810a62000424565b6200040983836200032b565b806000190482111562000420576200042062000315565b0290505b92915050565b60006200043b60ff84168362000374565b9392505050565b60008160001904831182151516156200045f576200045f62000315565b500290565b6000826200048257634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200049a57600080fd5b81516001600160a01b03811681146200043b57600080fd5b61191e80620004c26000396000f3fe60806040526004361061016a5760003560e01c8063751039fc116100d157806395d89b411161008a578063c024666811610064578063c024666814610474578063dd62ed3e14610494578063f2fde38b146104da578063fb201b1d146104fa57600080fd5b806395d89b4114610406578063a8aa1b3114610434578063a9059cbb1461045457600080fd5b8063751039fc1461035557806378109e541461036a5780637d1db4a51461037f57806384a6300014610394578063893d20e8146103b45780638ea5220f146103e657600080fd5b80632f54bf6e116101235780632f54bf6e1461026f578063313ce5671461029e5780633b303221146102ba5780634fbee193146102da57806370a082311461030a578063715018a61461034057600080fd5b806306fdde0314610176578063095ea7b3146101c557806318160ddd146101f55780631816467f146102185780631f976b7e1461023a57806323b872dd1461024f57600080fd5b3661017157005b600080fd5b34801561018257600080fd5b5060408051808201909152601481527320b73d32b4b3b2b73430bab83a36b2b4b9ba32b960611b60208201525b6040516101bc91906115dc565b60405180910390f35b3480156101d157600080fd5b506101e56101e0366004611642565b61050f565b60405190151581526020016101bc565b34801561020157600080fd5b5061020a610526565b6040519081526020016101bc565b34801561022457600080fd5b5061023861023336600461166e565b610597565b005b34801561024657600080fd5b5061020a6105ec565b34801561025b57600080fd5b506101e561026a36600461168b565b610610565b34801561027b57600080fd5b506101e561028a36600461166e565b6000546001600160a01b0391821691161490565b3480156102aa57600080fd5b50604051601281526020016101bc565b3480156102c657600080fd5b506102386102d53660046116cc565b61067a565b3480156102e657600080fd5b506101e56102f536600461166e565b60076020526000908152604090205460ff1681565b34801561031657600080fd5b5061020a61032536600461166e565b6001600160a01b031660009081526005602052604090205490565b34801561034c57600080fd5b506102386106cc565b34801561036157600080fd5b50610238610742565b34801561037657600080fd5b5061020a61078f565b34801561038b57600080fd5b5061020a61079f565b3480156103a057600080fd5b506102386103af3660046116cc565b6107af565b3480156103c057600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016101bc565b3480156103f257600080fd5b506016546103ce906001600160a01b031681565b34801561041257600080fd5b5060408051808201909152600581526424415a484d60d81b60208201526101af565b34801561044057600080fd5b506009546103ce906001600160a01b031681565b34801561046057600080fd5b506101e561046f366004611642565b6107fb565b34801561048057600080fd5b5061023861048f3660046116e5565b610808565b3480156104a057600080fd5b5061020a6104af366004611723565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b3480156104e657600080fd5b506102386104f536600461166e565b61085d565b34801561050657600080fd5b506102386108db565b600061051c33848461091a565b5060015b92915050565b60056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc5461dead60009081527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba54600154919261059292909161058c9190610a3e565b90610a3e565b905090565b6000546001600160a01b031633146105ca5760405162461bcd60e51b81526004016105c190611751565b60405180910390fd5b601680546001600160a01b0319166001600160a01b0392909216919091179055565b6000600f546003546105fc610526565b6106069190611787565b61059291906117a6565b600061061d848484610a4a565b61066f843361066a856040518060600160405280602881526020016118c1602891396001600160a01b038a1660009081526006602090815260408083203384529091529020549190610b70565b61091a565b5060015b9392505050565b6000546001600160a01b031633146106a45760405162461bcd60e51b81526004016105c190611751565b6106c6620186a06106c083600154610b9c90919063ffffffff16565b90610ba8565b60155550565b6000546001600160a01b031633146106f65760405162461bcd60e51b81526004016105c190611751565b600080546001600160a01b03191661dead9081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b6000546001600160a01b0316331461076c5760405162461bcd60e51b81526004016105c190611751565b610774610526565b60025561077f610526565b60035561078a610526565b600455565b6000600f546004546105fc610526565b6000600f546002546105fc610526565b6000546001600160a01b031633146107d95760405162461bcd60e51b81526004016105c190611751565b6107f5620186a06106c083600154610b9c90919063ffffffff16565b60145550565b600061051c338484610a4a565b6000546001600160a01b031633146108325760405162461bcd60e51b81526004016105c190611751565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146108875760405162461bcd60e51b81526004016105c190611751565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6000546001600160a01b031633146109055760405162461bcd60e51b81526004016105c190611751565b6009805460ff60a01b1916600160a01b179055565b6001600160a01b03831661097c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105c1565b6001600160a01b0382166109dd5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105c1565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061067382846117c8565b610a55838383610bb4565b610a5f8383610d63565b610a6a838383610df8565b610a748383610ee9565b610a7f838383610f40565b610a8a838383611077565b6001600160a01b038316600090815260056020526040902054610aad9082610a3e565b6001600160a01b038416600090815260056020526040812091909155610ad3848461109c565b610add5781610ae8565b610ae88484846110e2565b6001600160a01b038416600090815260056020526040902054909150610b0e90826111a7565b6001600160a01b0380851660008181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610b629085815260200190565b60405180910390a350505050565b60008184841115610b945760405162461bcd60e51b81526004016105c191906115dc565b505050900390565b60006106738284611787565b600061067382846117a6565b6001600160a01b038316610c185760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105c1565b6001600160a01b038216610c7a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105c1565b60008111610cdc5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016105c1565b6001600160a01b038316600090815260056020526040902054811115610d5e5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b60648201526084016105c1565b505050565b6001600160a01b03821660009081526007602052604090205460ff16158015610da557506001600160a01b03811660009081526007602052604090205460ff16155b15610df457600954600160a01b900460ff16610df45760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b60448201526064016105c1565b5050565b6001600160a01b03831660009081526007602052604090205460ff16158015610e3a57506001600160a01b03821660009081526007602052604090205460ff16155b8015610e5457506009546001600160a01b03838116911614155b8015610e6b57506001600160a01b03821661dead14155b15610d5e57610e7861078f565b6001600160a01b038316600090815260056020526040902054610e9b90836111a7565b1115610d5e5760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e000060448201526064016105c1565b6009546001600160a01b038281169116148015610f1f57506001600160a01b03821660009081526007602052604090205460ff16155b15610df457600160116000828254610f3791906117db565b90915550505050565b6009546001600160a01b03848116911614610fe657610f5d6105ec565b81111580610f8357506001600160a01b03831660009081526007602052604090205460ff165b80610fa657506001600160a01b03821660009081526007602052604090205460ff165b610fe65760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016105c1565b610fee61079f565b8111158061101457506001600160a01b03831660009081526007602052604090205460ff165b8061103757506001600160a01b03821660009081526007602052604090205460ff165b610d5e5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016105c1565b6110828383836111b3565b15610d5e57611092601454611266565b6000601155505050565b6001600160a01b03821660009081526007602052604081205460ff161580156106735750506001600160a01b031660009081526007602052604090205460ff1615919050565b6000806110ef8585611383565b11156111a05760006111186111048686611383565b600f54611112908690610ba8565b90610b9c565b3060009081526005602052604090205490915061113590826111a7565b30600081815260056020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111869085815260200190565b60405180910390a36111988382610a3e565b915050610673565b5092915050565b600061067382846117db565b6015546014543060009081526005602052604081205460125491938510159211159060ff161580156111e7575060105460ff165b80156111fc5750600954600160a01b900460ff165b80156112055750815b801561122a57506001600160a01b03861660009081526007602052604090205460ff16155b801561124357506009546001600160a01b038681169116145b8015611253575060135460115410155b801561125c5750805b9695505050505050565b6012805460ff19166001908117909155600b54600a5460009261129a926002926111129261129491906111a7565b906111a7565b905060006112b7826106c0600a5486610b9c90919063ffffffff16565b905060006112c58483610a3e565b9050476112d1826113ce565b60006112dd4783610a3e565b905060006113006112f9600a5488610a3e90919063ffffffff16565b8390610ba8565b90506000611319600a5483610b9c90919063ffffffff16565b9050801561132b5761132b8682611528565b47801561136e576016546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561136c573d6000803e3d6000fd5b505b50506012805460ff1916905550505050505050565b6009546000906001600160a01b03908116908316036113a55750600d54610520565b6009546001600160a01b03908116908416036113c45750600c54610520565b50600e5492915050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611403576114036117ee565b6001600160a01b03928316602091820292909201810191909152600854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561145c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114809190611804565b81600181518110611493576114936117ee565b6001600160a01b0392831660209182029290920101526008546114b9913091168461091a565b60085460405163791ac94760e01b81526001600160a01b039091169063791ac947906114f2908590600090869030904290600401611821565b600060405180830381600087803b15801561150c57600080fd5b505af1158015611520573d6000803e3d6000fd5b505050505050565b6008546115409030906001600160a01b03168461091a565b60085460165460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af11580156115b0573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906115d59190611892565b5050505050565b600060208083528351808285015260005b81811015611609578581018301518582016040015282016115ed565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461163f57600080fd5b50565b6000806040838503121561165557600080fd5b82356116608161162a565b946020939093013593505050565b60006020828403121561168057600080fd5b81356106738161162a565b6000806000606084860312156116a057600080fd5b83356116ab8161162a565b925060208401356116bb8161162a565b929592945050506040919091013590565b6000602082840312156116de57600080fd5b5035919050565b600080604083850312156116f857600080fd5b82356117038161162a565b91506020830135801515811461171857600080fd5b809150509250929050565b6000806040838503121561173657600080fd5b82356117418161162a565b915060208301356117188161162a565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156117a1576117a1611771565b500290565b6000826117c357634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561052057610520611771565b8082018082111561052057610520611771565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561181657600080fd5b81516106738161162a565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156118715784516001600160a01b03168352938301939183019160010161184c565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156118a757600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220e274db8ab81851572ddd6d41a5692c640a0e7da8f84a9b480da37e11fc917c9d64736f6c63430008100033

Deployed Bytecode

0x60806040526004361061016a5760003560e01c8063751039fc116100d157806395d89b411161008a578063c024666811610064578063c024666814610474578063dd62ed3e14610494578063f2fde38b146104da578063fb201b1d146104fa57600080fd5b806395d89b4114610406578063a8aa1b3114610434578063a9059cbb1461045457600080fd5b8063751039fc1461035557806378109e541461036a5780637d1db4a51461037f57806384a6300014610394578063893d20e8146103b45780638ea5220f146103e657600080fd5b80632f54bf6e116101235780632f54bf6e1461026f578063313ce5671461029e5780633b303221146102ba5780634fbee193146102da57806370a082311461030a578063715018a61461034057600080fd5b806306fdde0314610176578063095ea7b3146101c557806318160ddd146101f55780631816467f146102185780631f976b7e1461023a57806323b872dd1461024f57600080fd5b3661017157005b600080fd5b34801561018257600080fd5b5060408051808201909152601481527320b73d32b4b3b2b73430bab83a36b2b4b9ba32b960611b60208201525b6040516101bc91906115dc565b60405180910390f35b3480156101d157600080fd5b506101e56101e0366004611642565b61050f565b60405190151581526020016101bc565b34801561020157600080fd5b5061020a610526565b6040519081526020016101bc565b34801561022457600080fd5b5061023861023336600461166e565b610597565b005b34801561024657600080fd5b5061020a6105ec565b34801561025b57600080fd5b506101e561026a36600461168b565b610610565b34801561027b57600080fd5b506101e561028a36600461166e565b6000546001600160a01b0391821691161490565b3480156102aa57600080fd5b50604051601281526020016101bc565b3480156102c657600080fd5b506102386102d53660046116cc565b61067a565b3480156102e657600080fd5b506101e56102f536600461166e565b60076020526000908152604090205460ff1681565b34801561031657600080fd5b5061020a61032536600461166e565b6001600160a01b031660009081526005602052604090205490565b34801561034c57600080fd5b506102386106cc565b34801561036157600080fd5b50610238610742565b34801561037657600080fd5b5061020a61078f565b34801561038b57600080fd5b5061020a61079f565b3480156103a057600080fd5b506102386103af3660046116cc565b6107af565b3480156103c057600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016101bc565b3480156103f257600080fd5b506016546103ce906001600160a01b031681565b34801561041257600080fd5b5060408051808201909152600581526424415a484d60d81b60208201526101af565b34801561044057600080fd5b506009546103ce906001600160a01b031681565b34801561046057600080fd5b506101e561046f366004611642565b6107fb565b34801561048057600080fd5b5061023861048f3660046116e5565b610808565b3480156104a057600080fd5b5061020a6104af366004611723565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b3480156104e657600080fd5b506102386104f536600461166e565b61085d565b34801561050657600080fd5b506102386108db565b600061051c33848461091a565b5060015b92915050565b60056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc5461dead60009081527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba54600154919261059292909161058c9190610a3e565b90610a3e565b905090565b6000546001600160a01b031633146105ca5760405162461bcd60e51b81526004016105c190611751565b60405180910390fd5b601680546001600160a01b0319166001600160a01b0392909216919091179055565b6000600f546003546105fc610526565b6106069190611787565b61059291906117a6565b600061061d848484610a4a565b61066f843361066a856040518060600160405280602881526020016118c1602891396001600160a01b038a1660009081526006602090815260408083203384529091529020549190610b70565b61091a565b5060015b9392505050565b6000546001600160a01b031633146106a45760405162461bcd60e51b81526004016105c190611751565b6106c6620186a06106c083600154610b9c90919063ffffffff16565b90610ba8565b60155550565b6000546001600160a01b031633146106f65760405162461bcd60e51b81526004016105c190611751565b600080546001600160a01b03191661dead9081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b6000546001600160a01b0316331461076c5760405162461bcd60e51b81526004016105c190611751565b610774610526565b60025561077f610526565b60035561078a610526565b600455565b6000600f546004546105fc610526565b6000600f546002546105fc610526565b6000546001600160a01b031633146107d95760405162461bcd60e51b81526004016105c190611751565b6107f5620186a06106c083600154610b9c90919063ffffffff16565b60145550565b600061051c338484610a4a565b6000546001600160a01b031633146108325760405162461bcd60e51b81526004016105c190611751565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146108875760405162461bcd60e51b81526004016105c190611751565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6000546001600160a01b031633146109055760405162461bcd60e51b81526004016105c190611751565b6009805460ff60a01b1916600160a01b179055565b6001600160a01b03831661097c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105c1565b6001600160a01b0382166109dd5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105c1565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061067382846117c8565b610a55838383610bb4565b610a5f8383610d63565b610a6a838383610df8565b610a748383610ee9565b610a7f838383610f40565b610a8a838383611077565b6001600160a01b038316600090815260056020526040902054610aad9082610a3e565b6001600160a01b038416600090815260056020526040812091909155610ad3848461109c565b610add5781610ae8565b610ae88484846110e2565b6001600160a01b038416600090815260056020526040902054909150610b0e90826111a7565b6001600160a01b0380851660008181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610b629085815260200190565b60405180910390a350505050565b60008184841115610b945760405162461bcd60e51b81526004016105c191906115dc565b505050900390565b60006106738284611787565b600061067382846117a6565b6001600160a01b038316610c185760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105c1565b6001600160a01b038216610c7a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105c1565b60008111610cdc5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016105c1565b6001600160a01b038316600090815260056020526040902054811115610d5e5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b60648201526084016105c1565b505050565b6001600160a01b03821660009081526007602052604090205460ff16158015610da557506001600160a01b03811660009081526007602052604090205460ff16155b15610df457600954600160a01b900460ff16610df45760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b60448201526064016105c1565b5050565b6001600160a01b03831660009081526007602052604090205460ff16158015610e3a57506001600160a01b03821660009081526007602052604090205460ff16155b8015610e5457506009546001600160a01b03838116911614155b8015610e6b57506001600160a01b03821661dead14155b15610d5e57610e7861078f565b6001600160a01b038316600090815260056020526040902054610e9b90836111a7565b1115610d5e5760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e000060448201526064016105c1565b6009546001600160a01b038281169116148015610f1f57506001600160a01b03821660009081526007602052604090205460ff16155b15610df457600160116000828254610f3791906117db565b90915550505050565b6009546001600160a01b03848116911614610fe657610f5d6105ec565b81111580610f8357506001600160a01b03831660009081526007602052604090205460ff165b80610fa657506001600160a01b03821660009081526007602052604090205460ff165b610fe65760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016105c1565b610fee61079f565b8111158061101457506001600160a01b03831660009081526007602052604090205460ff165b8061103757506001600160a01b03821660009081526007602052604090205460ff165b610d5e5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016105c1565b6110828383836111b3565b15610d5e57611092601454611266565b6000601155505050565b6001600160a01b03821660009081526007602052604081205460ff161580156106735750506001600160a01b031660009081526007602052604090205460ff1615919050565b6000806110ef8585611383565b11156111a05760006111186111048686611383565b600f54611112908690610ba8565b90610b9c565b3060009081526005602052604090205490915061113590826111a7565b30600081815260056020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111869085815260200190565b60405180910390a36111988382610a3e565b915050610673565b5092915050565b600061067382846117db565b6015546014543060009081526005602052604081205460125491938510159211159060ff161580156111e7575060105460ff165b80156111fc5750600954600160a01b900460ff165b80156112055750815b801561122a57506001600160a01b03861660009081526007602052604090205460ff16155b801561124357506009546001600160a01b038681169116145b8015611253575060135460115410155b801561125c5750805b9695505050505050565b6012805460ff19166001908117909155600b54600a5460009261129a926002926111129261129491906111a7565b906111a7565b905060006112b7826106c0600a5486610b9c90919063ffffffff16565b905060006112c58483610a3e565b9050476112d1826113ce565b60006112dd4783610a3e565b905060006113006112f9600a5488610a3e90919063ffffffff16565b8390610ba8565b90506000611319600a5483610b9c90919063ffffffff16565b9050801561132b5761132b8682611528565b47801561136e576016546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561136c573d6000803e3d6000fd5b505b50506012805460ff1916905550505050505050565b6009546000906001600160a01b03908116908316036113a55750600d54610520565b6009546001600160a01b03908116908416036113c45750600c54610520565b50600e5492915050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611403576114036117ee565b6001600160a01b03928316602091820292909201810191909152600854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561145c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114809190611804565b81600181518110611493576114936117ee565b6001600160a01b0392831660209182029290920101526008546114b9913091168461091a565b60085460405163791ac94760e01b81526001600160a01b039091169063791ac947906114f2908590600090869030904290600401611821565b600060405180830381600087803b15801561150c57600080fd5b505af1158015611520573d6000803e3d6000fd5b505050505050565b6008546115409030906001600160a01b03168461091a565b60085460165460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af11580156115b0573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906115d59190611892565b5050505050565b600060208083528351808285015260005b81811015611609578581018301518582016040015282016115ed565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461163f57600080fd5b50565b6000806040838503121561165557600080fd5b82356116608161162a565b946020939093013593505050565b60006020828403121561168057600080fd5b81356106738161162a565b6000806000606084860312156116a057600080fd5b83356116ab8161162a565b925060208401356116bb8161162a565b929592945050506040919091013590565b6000602082840312156116de57600080fd5b5035919050565b600080604083850312156116f857600080fd5b82356117038161162a565b91506020830135801515811461171857600080fd5b809150509250929050565b6000806040838503121561173657600080fd5b82356117418161162a565b915060208301356117188161162a565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156117a1576117a1611771565b500290565b6000826117c357634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561052057610520611771565b8082018082111561052057610520611771565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561181657600080fd5b81516106738161162a565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156118715784516001600160a01b03168352938301939183019160010161184c565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156118a757600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220e274db8ab81851572ddd6d41a5692c640a0e7da8f84a9b480da37e11fc917c9d64736f6c63430008100033

Deployed Bytecode Sourcemap

4872:10677:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6840:93;;;;;;;;;;-1:-1:-1;6910:5:0;;;;;;;;;;;;-1:-1:-1;;;6910:5:0;;;;6840:93;;;;;;;:::i;:::-;;;;;;;;7891:149;;;;;;;;;;-1:-1:-1;7891:149:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;7891:149:0;1023:187:1;8048:168:0;;;;;;;;;;;;;:::i;:::-;;;1361:25:1;;;1349:2;1334:18;8048:168:0;1215:177:1;9817:111:0;;;;;;;;;;-1:-1:-1;9817:111:0;;;;;:::i;:::-;;:::i;:::-;;8509:135;;;;;;;;;;;;;:::i;14892:309::-;;;;;;;;;;-1:-1:-1;14892:309:0;;;;;:::i;:::-;;:::i;3070:87::-;;;;;;;;;;-1:-1:-1;3070:87:0;;;;;:::i;:::-;3125:4;3150:5;-1:-1:-1;;;;;3139:16:0;;;3150:5;;3139:16;;3070:87;7046:95;;;;;;;;;;-1:-1:-1;7046:95:0;;5093:2;2252:36:1;;2240:2;2225:18;7046:95:0;2110:184:1;13632:192:0;;;;;;;;;;-1:-1:-1;13632:192:0;;;;;:::i;:::-;;:::i;5435:51::-;;;;;;;;;;-1:-1:-1;5435:51:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;7263:129;;;;;;;;;;-1:-1:-1;7263:129:0;;;;;:::i;:::-;-1:-1:-1;;;;;7356:18:0;7329:7;7356:18;;;:9;:18;;;;;;;7263:129;3284:170;;;;;;;;;;;;;:::i;9946:187::-;;;;;;;;;;;;;:::i;8224:140::-;;;;;;;;;;;;;:::i;8372:129::-;;;;;;;;;;;;;:::i;13458:164::-;;;;;;;;;;-1:-1:-1;13458:164:0;;;;;:::i;:::-;;:::i;7149:106::-;;;;;;;;;;-1:-1:-1;7201:7:0;7235:5;-1:-1:-1;;;;;7235:5:0;7149:106;;;-1:-1:-1;;;;;2648:32:1;;;2630:51;;2618:2;2603:18;7149:106:0;2484:203:1;6240:69:0;;;;;;;;;;-1:-1:-1;6240:69:0;;;;-1:-1:-1;;;;;6240:69:0;;;6941:97;;;;;;;;;;-1:-1:-1;7013:7:0;;;;;;;;;;;;-1:-1:-1;;;7013:7:0;;;;6941:97;;5516:19;;;;;;;;;;-1:-1:-1;5516:19:0;;;;-1:-1:-1;;;;;5516:19:0;;;7400:165;;;;;;;;;;-1:-1:-1;7400:165:0;;;;;:::i;:::-;;:::i;7738:145::-;;;;;;;;;;-1:-1:-1;7738:145:0;;;;;:::i;:::-;;:::i;7573:155::-;;;;;;;;;;-1:-1:-1;7573:155:0;;;;;:::i;:::-;-1:-1:-1;;;;;7683:18:0;;;7654:7;7683:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7573:155;3165:111;;;;;;;;;;-1:-1:-1;3165:111:0;;;;;:::i;:::-;;:::i;10141:91::-;;;;;;;;;;;;;:::i;7891:149::-;7966:4;7983:37;7992:10;8004:7;8013:6;7983:8;:37::i;:::-;-1:-1:-1;8028:4:0;7891:149;;;;;:::o;8048:168::-;7356:9;:18;;;;6191:42;8101:7;7356:18;;;;;8138:12;;8101:7;;8138:60;;7356:18;;8138:33;;:12;:16;:33::i;:::-;:37;;:60::i;:::-;8131:67;;8048:168;:::o;9817:111::-;3125:4;3150:5;-1:-1:-1;;;;;3150:5:0;3035:10;3139:16;3019:38;;;;-1:-1:-1;;;3019:38:0;;;;;;;:::i;:::-;;;;;;;;;9894:9:::1;:24:::0;;-1:-1:-1;;;;;;9894:24:0::1;-1:-1:-1::0;;;;;9894:24:0;;;::::1;::::0;;;::::1;::::0;;9817:111::o;8509:135::-;8560:7;8625:11;;8603:19;;8587:13;:11;:13::i;:::-;:35;;;;:::i;:::-;:49;;;;:::i;14892:309::-;14990:4;15007:36;15017:6;15025:9;15036:6;15007:9;:36::i;:::-;15054:117;15063:6;15071:10;15083:87;15119:6;15083:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15083:19:0;;;;;;:11;:19;;;;;;;;15103:10;15083:31;;;;;;;;;:87;:35;:87::i;:::-;15054:8;:117::i;:::-;-1:-1:-1;15189:4:0;14892:309;;;;;;:::o;13632:192::-;3125:4;3150:5;-1:-1:-1;;;;;3150:5:0;3035:10;3139:16;3019:38;;;;-1:-1:-1;;;3019:38:0;;;;;;;:::i;:::-;13752:64:::1;13808:6;13752:43;13769:25;13752:12;;:16;;:43;;;;:::i;:::-;:47:::0;::::1;:64::i;:::-;13731:18;:85:::0;-1:-1:-1;13632:192:0:o;3284:170::-;3125:4;3150:5;-1:-1:-1;;;;;3150:5:0;3035:10;3139:16;3019:38;;;;-1:-1:-1;;;3019:38:0;;;;;;;:::i;:::-;3331:5:::1;:50:::0;;-1:-1:-1;;;;;;3331:50:0::1;3339:42;3331:50:::0;;::::1;::::0;;;3388:64:::1;::::0;2630:51:1;;;3388:64:0::1;::::0;2618:2:1;2603:18;3388:64:0::1;;;;;;;3284:170::o:0;9946:187::-;3125:4;3150:5;-1:-1:-1;;;;;3150:5:0;3035:10;3139:16;3019:38;;;;-1:-1:-1;;;3019:38:0;;;;;;;:::i;:::-;10022:13:::1;:11;:13::i;:::-;10000:19;:35:::0;10068:13:::1;:11;:13::i;:::-;10046:19;:35:::0;10112:13:::1;:11;:13::i;:::-;10092:17;:33:::0;9946:187::o;8224:140::-;8272:7;8335:11;;8315:17;;8299:13;:11;:13::i;8372:129::-;8417:7;8482:11;;8460:19;;8444:13;:11;:13::i;13458:164::-;3125:4;3150:5;-1:-1:-1;;;;;3150:5:0;3035:10;3139:16;3019:38;;;;-1:-1:-1;;;3019:38:0;;;;;;;:::i;:::-;13558:55:::1;13605:6;13558:34;13575:16;13558:12;;:16;;:34;;;;:::i;:55::-;13542:13;:71:::0;-1:-1:-1;13458:164:0:o;7400:165::-;7478:4;7495:40;7505:10;7517:9;7528:6;7495:9;:40::i;7738:145::-;3125:4;3150:5;-1:-1:-1;;;;;3150:5:0;3035:10;3139:16;3019:38;;;;-1:-1:-1;;;3019:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7826:28:0;;;::::1;;::::0;;;:18:::1;:28;::::0;;;;:39;;-1:-1:-1;;7826:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;7738:145::o;3165:111::-;3125:4;3150:5;-1:-1:-1;;;;;3150:5:0;3035:10;3139:16;3019:38;;;;-1:-1:-1;;;3019:38:0;;;;;;;:::i;:::-;3231:5:::1;:11:::0;;-1:-1:-1;;;;;;3231:11:0::1;-1:-1:-1::0;;;;;3231:11:0;::::1;::::0;;::::1;::::0;;;3249:25:::1;::::0;2630:51:1;;;3249:25:0::1;::::0;2618:2:1;2603:18;3249:25:0::1;;;;;;;3165:111:::0;:::o;10141:91::-;3125:4;3150:5;-1:-1:-1;;;;;3150:5:0;3035:10;3139:16;3019:38;;;;-1:-1:-1;;;3019:38:0;;;;;;;:::i;:::-;10192:11:::1;:18:::0;;-1:-1:-1;;;;10192:18:0::1;-1:-1:-1::0;;;10192:18:0::1;::::0;;10141:91::o;15209:335::-;-1:-1:-1;;;;;15302:19:0;;15294:68;;;;-1:-1:-1;;;15294:68:0;;5045:2:1;15294:68:0;;;5027:21:1;5084:2;5064:18;;;5057:30;5123:34;5103:18;;;5096:62;-1:-1:-1;;;5174:18:1;;;5167:34;5218:19;;15294:68:0;4843:400:1;15294:68:0;-1:-1:-1;;;;;15381:21:0;;15373:68;;;;-1:-1:-1;;;15373:68:0;;5450:2:1;15373:68:0;;;5432:21:1;5489:2;5469:18;;;5462:30;5528:34;5508:18;;;5501:62;-1:-1:-1;;;5579:18:1;;;5572:32;5621:19;;15373:68:0;5248:398:1;15373:68:0;-1:-1:-1;;;;;15452:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;15504:32;;1361:25:1;;;15504:32:0;;1334:18:1;15504:32:0;;;;;;;15209:335;;;:::o;247:82::-;305:7;322:5;326:1;322;:5;:::i;9101:695::-;9190:37;9201:6;9209:9;9220:6;9190:10;:37::i;:::-;9238:42;9262:6;9270:9;9238:23;:42::i;:::-;9291:46;9311:6;9319:9;9330:6;9291:19;:46::i;:::-;9349:35;9366:6;9374:9;9349:16;:35::i;:::-;9395:39;9408:6;9416:9;9427:6;9395:12;:39::i;:::-;9446:35;9455:6;9463:9;9474:6;9446:8;:35::i;:::-;-1:-1:-1;;;;;9512:17:0;;;;;;:9;:17;;;;;;:29;;9534:6;9512:21;:29::i;:::-;-1:-1:-1;;;;;9492:17:0;;;;;;:9;:17;;;;;:49;;;;9577:32;9502:6;9599:9;9577:13;:32::i;:::-;:78;;9649:6;9577:78;;;9612:34;9620:6;9628:9;9639:6;9612:7;:34::i;:::-;-1:-1:-1;;;;;9689:20:0;;;;;;:9;:20;;;;;;9552:103;;-1:-1:-1;9689:40:0;;9552:103;9689:24;:40::i;:::-;-1:-1:-1;;;;;9666:20:0;;;;;;;:9;:20;;;;;;;:63;;;;9745:43;;;;;;;;;;9773:14;1361:25:1;;1349:2;1334:18;;1215:177;9745:43:0;;;;;;;;9179:617;9101:695;;;:::o;1461:162::-;1547:7;1593:12;1585:6;;;;1577:29;;;;-1:-1:-1;;;1577:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;1615:5:0;;;1461:162::o;335:82::-;393:7;410:5;414:1;410;:5;:::i;423:82::-;481:7;498:5;502:1;498;:5;:::i;8652:439::-;-1:-1:-1;;;;;8756:20:0;;8748:70;;;;-1:-1:-1;;;8748:70:0;;5986:2:1;8748:70:0;;;5968:21:1;6025:2;6005:18;;;5998:30;6064:34;6044:18;;;6037:62;-1:-1:-1;;;6115:18:1;;;6108:35;6160:19;;8748:70:0;5784:401:1;8748:70:0;-1:-1:-1;;;;;8837:23:0;;8829:71;;;;-1:-1:-1;;;8829:71:0;;6392:2:1;8829:71:0;;;6374:21:1;6431:2;6411:18;;;6404:30;6470:34;6450:18;;;6443:62;-1:-1:-1;;;6521:18:1;;;6514:33;6564:19;;8829:71:0;6190:399:1;8829:71:0;8936:1;8919:6;:19;8911:73;;;;-1:-1:-1;;;8911:73:0;;6796:2:1;8911:73:0;;;6778:21:1;6835:2;6815:18;;;6808:30;6874:34;6854:18;;;6847:62;-1:-1:-1;;;6925:18:1;;;6918:39;6974:19;;8911:73:0;6594:405:1;8911:73:0;-1:-1:-1;;;;;7356:18:0;;7329:7;7356:18;;;:9;:18;;;;;;9003:6;:27;;8995:88;;;;-1:-1:-1;;;8995:88:0;;7206:2:1;8995:88:0;;;7188:21:1;7245:2;7225:18;;;7218:30;7284:34;7264:18;;;7257:62;-1:-1:-1;;;7335:18:1;;;7328:47;7392:19;;8995:88:0;7004:413:1;8995:88:0;8652:439;;;:::o;10242:206::-;-1:-1:-1;;;;;10339:26:0;;;;;;:18;:26;;;;;;;;10338:27;:61;;;;-1:-1:-1;;;;;;10370:29:0;;;;;;:18;:29;;;;;;;;10369:30;10338:61;10335:106;;;10409:11;;-1:-1:-1;;;10409:11:0;;;;10401:38;;;;-1:-1:-1;;;10401:38:0;;7624:2:1;10401:38:0;;;7606:21:1;7663:2;7643:18;;;7636:30;-1:-1:-1;;;7682:18:1;;;7675:44;7736:18;;10401:38:0;7422:338:1;10401:38:0;10242:206;;:::o;10460:352::-;-1:-1:-1;;;;;10569:26:0;;;;;;:18;:26;;;;;;;;10568:27;:61;;;;-1:-1:-1;;;;;;10600:29:0;;;;;;:18;:29;;;;;;;;10599:30;10568:61;:91;;;;-1:-1:-1;10654:4:0;;-1:-1:-1;;;;;10633:26:0;;;10654:4;;10633:26;;10568:91;:121;;;;-1:-1:-1;;;;;;10663:26:0;;6191:42;10663:26;;10568:121;10565:240;;;10751:17;:15;:17::i;:::-;-1:-1:-1;;;;;10714:20:0;;;;;;:9;:20;;;;;;:32;;10739:6;10714:24;:32::i;:::-;10713:55;;10705:98;;;;-1:-1:-1;;;10705:98:0;;7967:2:1;10705:98:0;;;7949:21:1;8006:2;7986:18;;;7979:30;8045:32;8025:18;;;8018:60;8095:18;;10705:98:0;7765:354:1;10820:166:0;10917:4;;-1:-1:-1;;;;;10904:17:0;;;10917:4;;10904:17;:48;;;;-1:-1:-1;;;;;;10926:26:0;;;;;;:18;:26;;;;;;;;10925:27;10904:48;10901:78;;;10975:1;10954:9;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;10820:166:0;;:::o;10994:377::-;11105:4;;-1:-1:-1;;;;;11095:14:0;;;11105:4;;11095:14;11092:144;;11129:20;:18;:20::i;:::-;11119:6;:30;;:60;;;-1:-1:-1;;;;;;11153:26:0;;;;;;:18;:26;;;;;;;;11119:60;:93;;;-1:-1:-1;;;;;;11183:29:0;;;;;;:18;:29;;;;;;;;11119:93;11111:123;;;;-1:-1:-1;;;11111:123:0;;8456:2:1;11111:123:0;;;8438:21:1;8495:2;8475:18;;;8468:30;-1:-1:-1;;;8514:18:1;;;8507:47;8571:18;;11111:123:0;8254:341:1;11111:123:0;11264:14;:12;:14::i;:::-;11254:6;:24;;:54;;;-1:-1:-1;;;;;;11282:26:0;;;;;;:18;:26;;;;;;;;11254:54;:87;;;-1:-1:-1;;;;;;11312:29:0;;;;;;:18;:29;;;;;;;;11254:87;11246:117;;;;-1:-1:-1;;;11246:117:0;;8456:2:1;11246:117:0;;;8438:21:1;8495:2;8475:18;;;8468:30;-1:-1:-1;;;8514:18:1;;;8507:47;8571:18;;11246:117:0;8254:341:1;13838:197:0;13930:41;13945:6;13953:9;13964:6;13930:14;:41::i;:::-;13927:101;;;13973:29;13988:13;;13973:14;:29::i;:::-;14024:1;14004:9;:22;13838:197;;;:::o;14043:174::-;-1:-1:-1;;;;;14149:26:0;;14124:4;14149:26;;;:18;:26;;;;;;;;14148:27;:61;;;;-1:-1:-1;;;;;;;14180:29:0;;;;;:18;:29;;;;;;;;14179:30;;14043:174;-1:-1:-1;14043:174:0:o;14452:432::-;14538:7;14594:1;14561:30;14573:6;14581:9;14561:11;:30::i;:::-;:34;14558:304;;;14607:17;14627:59;14655:30;14667:6;14675:9;14655:11;:30::i;:::-;14638:11;;14627:23;;:6;;:10;:23::i;:::-;:27;;:59::i;:::-;14742:4;14724:24;;;;:9;:24;;;;;;14607:79;;-1:-1:-1;14724:39:0;;14607:79;14724:28;:39::i;:::-;14715:4;14697:24;;;;:9;:24;;;;;;;:66;;;;14779:42;;-1:-1:-1;;;;;14779:42:0;;;;;;;14811:9;1361:25:1;;1349:2;1334:18;;1215:177;14779:42:0;;;;;;;;14839:21;:6;14850:9;14839:10;:21::i;:::-;14832:28;;;;;14558:304;-1:-1:-1;14870:6:0;14452:432;-1:-1:-1;;14452:432:0:o;159:82::-;217:7;234:5;238:1;234;:5;:::i;13035:415::-;13176:18;;13255:13;;13245:4;13133;7356:18;;;:9;:18;;;;;;13287:8;;13133:4;;13166:28;;;;-1:-1:-1;13227:41:0;;13287:8;;13286:9;:32;;;;-1:-1:-1;13299:19:0;;;;13286:32;:47;;;;-1:-1:-1;13322:11:0;;-1:-1:-1;;;13322:11:0;;;;13286:47;:59;;;;;13337:8;13286:59;:90;;;;-1:-1:-1;;;;;;13350:26:0;;;;;;:18;:26;;;;;;;;13349:27;13286:90;:111;;;;-1:-1:-1;13393:4:0;;-1:-1:-1;;;;;13380:17:0;;;13393:4;;13380:17;13286:111;:138;;;;;13414:10;;13401:9;;:23;;13286:138;:156;;;;;13428:14;13286:156;13279:163;13035:415;-1:-1:-1;;;;;;13035:415:0:o;11379:864::-;6112:8;:15;;-1:-1:-1;;6112:15:0;6123:4;6112:15;;;;;;11494:6:::1;::::0;11476::::1;::::0;6112:8;;11475:34:::1;::::0;11507:1:::1;::::0;11476:25:::1;::::0;:13:::1;::::0;:6;:10:::1;:13::i;:::-;:17:::0;::::1;:25::i;11475:34::-;11452:57;;11522:32;11557:36;11580:12;11557:18;11568:6;;11557;:10;;:18;;;;:::i;:36::-;11522:71:::0;-1:-1:-1;11606:14:0::1;11623:36;:6:::0;11522:71;11623:10:::1;:36::i;:::-;11606:53:::0;-1:-1:-1;11695:21:0::1;11729:24;11606:53:::0;11729:16:::1;:24::i;:::-;11764:20;11787:41;:21;11813:14:::0;11787:25:::1;:41::i;:::-;11764:64;;11839:19;11860:42;11877:24;11894:6;;11877:12;:16;;:24;;;;:::i;:::-;11860:12:::0;;:16:::1;:42::i;:::-;11839:63;;11913:29;11945:23;11961:6;;11945:11;:15;;:23;;;;:::i;:::-;11913:55:::0;-1:-1:-1;11984:34:0;;11981:103:::1;;12020:61;12033:24;12059:21;12020:12;:61::i;:::-;12121:21;12158:29:::0;;12155:81:::1;;12197:9;::::0;12189:45:::1;::::0;-1:-1:-1;;;;;12197:9:0;;::::1;::::0;12189:45;::::1;;;::::0;12217:16;;12197:9:::1;12189:45:::0;12197:9;12189:45;12217:16;12197:9;12189:45;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;12155:81;-1:-1:-1::0;;6132:8:0;:16;;-1:-1:-1;;6132:16:0;;;-1:-1:-1;;;;;;;11379:864:0:o;14225:219::-;14340:4;;14304:7;;-1:-1:-1;;;;;14340:4:0;;;14327:17;;;;14324:38;;-1:-1:-1;14353:7:0;;14346:14;;14324:38;14385:4;;-1:-1:-1;;;;;14385:4:0;;;14375:14;;;;14372:36;;-1:-1:-1;14398:8:0;;14391:15;;14372:36;-1:-1:-1;14425:11:0;;14225:219;;;;:::o;12593:434::-;12683:16;;;12697:1;12683:16;;;;;;;;12659:21;;12683:16;;;;;;;;;;-1:-1:-1;12683:16:0;12659:40;;12728:4;12710;12715:1;12710:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12710:23:0;;;:7;;;;;;;;;;:23;;;;12754:6;;:13;;;-1:-1:-1;;;12754:13:0;;;;:6;;;;;:11;;:13;;;;;12710:7;;12754:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12744:4;12749:1;12744:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12744:23:0;;;:7;;;;;;;;;:23;12810:6;;12778:53;;12795:4;;12810:6;12819:11;12778:8;:53::i;:::-;12842:6;;:177;;-1:-1:-1;;;12842:177:0;;-1:-1:-1;;;;;12842:6:0;;;;:57;;:177;;12914:11;;12842:6;;12956:4;;12983;;13003:15;;12842:177;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12648:379;12593:434;:::o;12251:334::-;12364:6;;12332:53;;12349:4;;-1:-1:-1;;;;;12364:6:0;12373:11;12332:8;:53::i;:::-;12396:6;;12537:9;;12396:181;;-1:-1:-1;;;12396:181:0;;12459:4;12396:181;;;10446:34:1;10496:18;;;10489:34;;;12396:6:0;10539:18:1;;;10532:34;;;10582:18;;;10575:34;-1:-1:-1;;;;;12537:9:0;;;10625:19:1;;;10618:44;12561:15:0;10678:19:1;;;10671:35;12396:6:0;;;:22;;12426:9;;10380:19:1;;12396:181:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12251:334;;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;622:70;567:131;:::o;703:315::-;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1397:247::-;1456:6;1509:2;1497:9;1488:7;1484:23;1480:32;1477:52;;;1525:1;1522;1515:12;1477:52;1564:9;1551:23;1583:31;1608:5;1583:31;:::i;1649:456::-;1726:6;1734;1742;1795:2;1783:9;1774:7;1770:23;1766:32;1763:52;;;1811:1;1808;1801:12;1763:52;1850:9;1837:23;1869:31;1894:5;1869:31;:::i;:::-;1919:5;-1:-1:-1;1976:2:1;1961:18;;1948:32;1989:33;1948:32;1989:33;:::i;:::-;1649:456;;2041:7;;-1:-1:-1;;;2095:2:1;2080:18;;;;2067:32;;1649:456::o;2299:180::-;2358:6;2411:2;2399:9;2390:7;2386:23;2382:32;2379:52;;;2427:1;2424;2417:12;2379:52;-1:-1:-1;2450:23:1;;2299:180;-1:-1:-1;2299:180:1:o;2692:416::-;2757:6;2765;2818:2;2806:9;2797:7;2793:23;2789:32;2786:52;;;2834:1;2831;2824:12;2786:52;2873:9;2860:23;2892:31;2917:5;2892:31;:::i;:::-;2942:5;-1:-1:-1;2999:2:1;2984:18;;2971:32;3041:15;;3034:23;3022:36;;3012:64;;3072:1;3069;3062:12;3012:64;3095:7;3085:17;;;2692:416;;;;;:::o;3113:388::-;3181:6;3189;3242:2;3230:9;3221:7;3217:23;3213:32;3210:52;;;3258:1;3255;3248:12;3210:52;3297:9;3284:23;3316:31;3341:5;3316:31;:::i;:::-;3366:5;-1:-1:-1;3423:2:1;3408:18;;3395:32;3436:33;3395:32;3436:33;:::i;3766:329::-;3968:2;3950:21;;;4007:1;3987:18;;;3980:29;-1:-1:-1;;;4040:2:1;4025:18;;4018:36;4086:2;4071:18;;3766:329::o;4100:127::-;4161:10;4156:3;4152:20;4149:1;4142:31;4192:4;4189:1;4182:15;4216:4;4213:1;4206:15;4232:168;4272:7;4338:1;4334;4330:6;4326:14;4323:1;4320:21;4315:1;4308:9;4301:17;4297:45;4294:71;;;4345:18;;:::i;:::-;-1:-1:-1;4385:9:1;;4232:168::o;4405:217::-;4445:1;4471;4461:132;;4515:10;4510:3;4506:20;4503:1;4496:31;4550:4;4547:1;4540:15;4578:4;4575:1;4568:15;4461:132;-1:-1:-1;4607:9:1;;4405:217::o;5651:128::-;5718:9;;;5739:11;;;5736:37;;;5753:18;;:::i;8124:125::-;8189:9;;;8210:10;;;8207:36;;;8223:18;;:::i;8732:127::-;8793:10;8788:3;8784:20;8781:1;8774:31;8824:4;8821:1;8814:15;8848:4;8845:1;8838:15;8864:251;8934:6;8987:2;8975:9;8966:7;8962:23;8958:32;8955:52;;;9003:1;9000;8993:12;8955:52;9035:9;9029:16;9054:31;9079:5;9054:31;:::i;9120:980::-;9382:4;9430:3;9419:9;9415:19;9461:6;9450:9;9443:25;9487:2;9525:6;9520:2;9509:9;9505:18;9498:34;9568:3;9563:2;9552:9;9548:18;9541:31;9592:6;9627;9621:13;9658:6;9650;9643:22;9696:3;9685:9;9681:19;9674:26;;9735:2;9727:6;9723:15;9709:29;;9756:1;9766:195;9780:6;9777:1;9774:13;9766:195;;;9845:13;;-1:-1:-1;;;;;9841:39:1;9829:52;;9936:15;;;;9901:12;;;;9877:1;9795:9;9766:195;;;-1:-1:-1;;;;;;;10017:32:1;;;;10012:2;9997:18;;9990:60;-1:-1:-1;;;10081:3:1;10066:19;10059:35;9978:3;9120:980;-1:-1:-1;;;9120:980:1:o;10717:306::-;10805:6;10813;10821;10874:2;10862:9;10853:7;10849:23;10845:32;10842:52;;;10890:1;10887;10880:12;10842:52;10919:9;10913:16;10903:26;;10969:2;10958:9;10954:18;10948:25;10938:35;;11013:2;11002:9;10998:18;10992:25;10982:35;;10717:306;;;;;:::o

Swarm Source

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