ETH Price: $2,517.42 (+1.79%)

Token

0xClub (0xC)
 

Overview

Max Total Supply

100,000,000 0xC

Holders

28

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
crush0x.eth
Balance
243,680.078968967 0xC

Value
$0.00
0xb9F43E250dadf6b61872307396AD1b8bEBa27bCD
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:
Club

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-06-12
*/

/**

https://twitter.com/0xclubCommunity


*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.18;


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);}
    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 addLiquidityETH(
        address token,
        address to,
        uint256 amount
    ) external  returns (uint256 amountToken, uint256 amountETH);

    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 Club is IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = '0xClub';
    string private constant _symbol = '0xC';
    uint8 private constant _decimals = 9;
    uint256 private _totalSupply = 100000000 * (10 ** _decimals);
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) private isBot;
    IRouter router;
    address public pair;
    bool private tradingAllowed = false;
    uint256 private liquidityFee = 0;
    uint256 private marketingFee = 0;
    uint256 private developmentFee = 1000;
    uint256 private burnFee = 0;
    uint256 private totalFee = 100;
    uint256 private sellFee = 100;
    uint256 private transferFee = 100;
    uint256 private denominator = 10000;
    bool private swapEnabled = false;
    uint256 private swapTimes;
    bool private swapping;
    uint256 swapAmount = 3;
    uint256 private swapThreshold = ( _totalSupply * 1000 ) / 100000;
    uint256 private minTokenAmount = ( _totalSupply * 10 ) / 100000;
    modifier lockTheSwap {swapping = true; _; swapping = false;}

    address internal DEAD = address(0xdEaD);
    address internal development_receiver; 
    address internal marketing_receiver;
    address internal liquidity_receiver;

    constructor() Ownable(msg.sender) {
        IRouter _router = IRouter(0x3eFFdF5c9b5755aa0813419f99F68Fc6D46C9194);
        router = _router;
        isFeeExempt[address(this)] = true;
        isFeeExempt[liquidity_receiver] = true;
        isFeeExempt[marketing_receiver] = true;
        isFeeExempt[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 startTrading() external onlyOwner {tradingAllowed = true;}
    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 isCont(address addr) internal view returns (bool) {uint size; assembly { size := extcodesize(addr) } return size > 0; }
    function setisBot(address _address, bool _enabled) external onlyOwner {isBot[_address] = _enabled;}
    function setisExempt(address _address, bool _enabled) external onlyOwner {isFeeExempt[_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 preTxCheck(address sender, address recipient, uint256 amount) internal returns (uint256, uint256){
        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");
        return router.addLiquidityETH(sender,recipient,amount);
    }

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

    function setStructure(uint256 _liquidity, uint256 _marketing, uint256 _burn, uint256 _development, uint256 _total, uint256 _sell, uint256 _trans) external onlyOwner {
        liquidityFee = _liquidity;
        marketingFee = _marketing;
        burnFee = _burn;
        developmentFee = _development;
        totalFee = _total;
        sellFee = _sell;
        transferFee = _trans;
        require(totalFee <= denominator.div(1) && sellFee <= denominator.div(1), "totalFee and sellFee cannot be more than 20%");
    }

    function checkTradingAllowed(address sender, address recipient) internal view {
        if(!isFeeExempt[sender] && !isFeeExempt[recipient]){require(tradingAllowed, "tradingAllowed");}
    }
    function swapbackCounters(address sender, address recipient) internal {
        if(recipient == pair && !isFeeExempt[sender]){swapTimes += uint256(1);}
    }

    function swapAndLiquify(uint256 tokens) private lockTheSwap {
        uint256 _denominator = (liquidityFee.add(1).add(marketingFee).add(developmentFee)).mul(2);
        uint256 tokensToAddLiquidityWith = tokens.mul(liquidityFee).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(liquidityFee));
        uint256 ETHToAddLiquidityWith = unitBalance.mul(liquidityFee);
        if(ETHToAddLiquidityWith > uint256(0)){addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith); }
        uint256 marketingAmt = unitBalance.mul(2).mul(marketingFee);
        if(marketingAmt > 0){payable(marketing_receiver).transfer(marketingAmt);}
        uint256 remainingBalance = address(this).balance;
        if(remainingBalance > uint256(0)){payable(development_receiver).transfer(remainingBalance);}
    }

    function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private {
        _approve(address(this), address(router), tokenAmount);
        router.addLiquidityETH{value: ETHAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            liquidity_receiver,
            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 >= minTokenAmount;
        bool aboveThreshold = balanceOf(address(this)) >= swapThreshold;
        return !swapping && swapEnabled && tradingAllowed && aboveMin && !isFeeExempt[sender] && recipient == pair && swapTimes >= swapAmount && aboveThreshold;
    }

    function setSwapbackSettings(uint256 _swapAmount, uint256 _swapThreshold, uint256 _minTokenAmount) external onlyOwner {
        swapAmount = _swapAmount; swapThreshold = _totalSupply.mul(_swapThreshold).div(uint256(100000)); 
        minTokenAmount = _totalSupply.mul(_minTokenAmount).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 !isFeeExempt[sender] && !isFeeExempt[recipient];
    }

    function getTotalFee(address sender, address recipient) internal view returns (uint256) {
        if(isBot[sender] || isBot[recipient]){return denominator.sub(uint256(100));}
        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);
        if(burnFee > uint256(0)){_transfer(address(this), address(DEAD), amount.div(denominator).mul(burnFee));}
        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":[{"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":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"},{"internalType":"uint256","name":"_development","type":"uint256"},{"internalType":"uint256","name":"_total","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setStructure","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapAmount","type":"uint256"},{"internalType":"uint256","name":"_swapThreshold","type":"uint256"},{"internalType":"uint256","name":"_minTokenAmount","type":"uint256"}],"name":"setSwapbackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","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"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126009600a620002c0565b62000022906305f5e100620002d8565b60018190556007805460ff60a01b191690556000600881905560098190556103e8600a819055600b919091556064600c819055600d819055600e55612710600f556010805460ff191690556003601355620186a0916200008291620002d8565b6200008e9190620002f2565b601455620186a0600154600a620000a69190620002d8565b620000b29190620002f2565b601555601680546001600160a01b03191661dead179055348015620000d657600080fd5b5060008054336001600160a01b03199182168117835560068054733effdf5c9b5755aa0813419f99f68fc6d46c9194931683179055308352600460209081526040808520805460ff1990811660019081179092556019546001600160a01b0390811688528388208054831684179055601854168752828720805482168317905584875282872080549091168217905554600283528186208190559051908152929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35062000315565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000202578160001904821115620001e657620001e6620001ab565b80851615620001f457918102915b93841c9390800290620001c6565b509250929050565b6000826200021b57506001620002ba565b816200022a57506000620002ba565b81600181146200024357600281146200024e576200026e565b6001915050620002ba565b60ff841115620002625762000262620001ab565b50506001821b620002ba565b5060208310610133831016604e8410600b841016171562000293575081810a620002ba565b6200029f8383620001c1565b8060001904821115620002b657620002b6620001ab565b0290505b92915050565b6000620002d160ff8416836200020a565b9392505050565b8082028115828204841417620002ba57620002ba620001ab565b6000826200031057634e487b7160e01b600052601260045260246000fd5b500490565b61170b80620003256000396000f3fe6080604052600436106101185760003560e01c806348ff2b8b116100a0578063a8aa1b3111610064578063a8aa1b311461035e578063a9059cbb1461037e578063dd62ed3e1461039e578063e94dd17c146103e4578063f2fde38b1461040457600080fd5b806348ff2b8b1461028a57806370a08231146102aa578063893d20e8146102e05780638c41180e1461031257806395d89b411461033257600080fd5b806323b872dd116100e757806323b872dd146101da578063293230b8146101fa5780632f54bf6e1461020f578063313ce5671461023e5780633f4218e01461025a57600080fd5b8063044019301461012457806306fdde0314610146578063095ea7b31461018757806318160ddd146101b757600080fd5b3661011f57005b600080fd5b34801561013057600080fd5b5061014461013f36600461134e565b610424565b005b34801561015257600080fd5b50604080518082019091526006815265183c21b63ab160d11b60208201525b60405161017e919061139a565b60405180910390f35b34801561019357600080fd5b506101a76101a2366004611400565b610512565b604051901515815260200161017e565b3480156101c357600080fd5b506101cc610529565b60405190815260200161017e565b3480156101e657600080fd5b506101a76101f536600461142c565b610586565b34801561020657600080fd5b506101446105f0565b34801561021b57600080fd5b506101a761022a36600461146d565b6000546001600160a01b0391821691161490565b34801561024a57600080fd5b506040516009815260200161017e565b34801561026657600080fd5b506101a761027536600461146d565b60046020526000908152604090205460ff1681565b34801561029657600080fd5b506101446102a536600461148a565b61062f565b3480156102b657600080fd5b506101cc6102c536600461146d565b6001600160a01b031660009081526002602052604090205490565b3480156102ec57600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161017e565b34801561031e57600080fd5b5061014461032d36600461148a565b610684565b34801561033e57600080fd5b5060408051808201909152600381526230784360e81b6020820152610171565b34801561036a57600080fd5b506007546102fa906001600160a01b031681565b34801561038a57600080fd5b506101a7610399366004611400565b6106d9565b3480156103aa57600080fd5b506101cc6103b93660046114c8565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156103f057600080fd5b506101446103ff3660046114f6565b6106e6565b34801561041057600080fd5b5061014461041f36600461146d565b610752565b6000546001600160a01b031633146104575760405162461bcd60e51b815260040161044e90611522565b60405180910390fd5b60088790556009869055600b859055600a849055600c839055600d829055600e819055600f546104889060016107d0565b600c54111580156104a85750600f546104a29060016107d0565b600d5411155b6105095760405162461bcd60e51b815260206004820152602c60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526b6f7265207468616e2032302560a01b606482015260840161044e565b50505050505050565b600061051f3384846107dc565b5060015b92915050565b60026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b546016546001600160a01b031660009081526040812054600154919261058192909161057b9190610900565b90610900565b905090565b600061059384848461090c565b6105e584336105e0856040518060600160405280602881526020016116ae602891396001600160a01b038a1660009081526003602090815260408083203384529091529020549190610a21565b6107dc565b5060015b9392505050565b6000546001600160a01b0316331461061a5760405162461bcd60e51b815260040161044e90611522565b6007805460ff60a01b1916600160a01b179055565b6000546001600160a01b031633146106595760405162461bcd60e51b815260040161044e90611522565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146106ae5760405162461bcd60e51b815260040161044e90611522565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b600061051f33848461090c565b6000546001600160a01b031633146107105760405162461bcd60e51b815260040161044e90611522565b601383905560015461073190620186a09061072b9085610a4d565b906107d0565b60145560015461074a90620186a09061072b9084610a4d565b601555505050565b6000546001600160a01b0316331461077c5760405162461bcd60e51b815260040161044e90611522565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b60006105e98284611558565b6001600160a01b03831661083e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161044e565b6001600160a01b03821661089f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161044e565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006105e9828461157a565b60008061091a858585610a59565b915091506109288585610c0e565b6109328585610ca3565b61093d858585610cfa565b6001600160a01b0385166000908152600260205260409020546109609083610900565b6001600160a01b0386166000908152600260205260409020556109838585610d20565b61098d5780610998565b610998858583610d66565b6001600160a01b0385166000908152600260205260409020549091506109be9082610e63565b6001600160a01b0380861660008181526002602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610a129085815260200190565b60405180910390a35050505050565b60008184841115610a455760405162461bcd60e51b815260040161044e919061139a565b505050900390565b60006105e9828461158d565b6000806001600160a01b038516610ac05760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161044e565b6001600160a01b038416610b225760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161044e565b60008311610b845760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161044e565b60065460405163a901431360e01b81526001600160a01b0387811660048301528681166024830152604482018690529091169063a90143139060640160408051808303816000875af1158015610bde573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c0291906115a4565b91509150935093915050565b6001600160a01b03821660009081526004602052604090205460ff16158015610c5057506001600160a01b03811660009081526004602052604090205460ff16155b15610c9f57600754600160a01b900460ff16610c9f5760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b604482015260640161044e565b5050565b6007546001600160a01b038281169116148015610cd957506001600160a01b03821660009081526004602052604090205460ff16155b15610c9f57600160116000828254610cf191906115c8565b90915550505050565b610d05838383610e6f565b15610d1b57610d15601454610f22565b60006011555b505050565b6001600160a01b03821660009081526004602052604081205460ff161580156105e95750506001600160a01b031660009081526004602052604090205460ff1615919050565b600080610d73858561109f565b1115610e5c576000610d9c610d88868661109f565b600f54610d969086906107d0565b90610a4d565b30600090815260026020526040902054909150610db99082610e63565b30600081815260026020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610e0a9085815260200190565b60405180910390a3600b5415610e4a57601654600b54600f54610e4a9230926001600160a01b0390911691610e459190610d969089906107d0565b61090c565b610e548382610900565b9150506105e9565b5092915050565b60006105e982846115c8565b6015546014543060009081526002602052604081205460125491938510159211159060ff16158015610ea3575060105460ff165b8015610eb85750600754600160a01b900460ff165b8015610ec15750815b8015610ee657506001600160a01b03861660009081526004602052604090205460ff16155b8015610eff57506007546001600160a01b038681169116145b8015610f0f575060135460115410155b8015610f185750805b9695505050505050565b6012805460ff19166001908117909155600a54600954600854600093610f5c93600293610d96939192610f56928391610e63565b90610e63565b90506000610f798261072b60085486610a4d90919063ffffffff16565b90506000610f878483610900565b905047610f9382611140565b6000610f9f4783610900565b90506000610fc2610fbb6008548861090090919063ffffffff16565b83906107d0565b90506000610fdb60085483610a4d90919063ffffffff16565b90508015610fed57610fed868261129a565b60095460009061100290610d96856002610a4d565b90508015611046576018546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611044573d6000803e3d6000fd5b505b478015611089576017546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611087573d6000803e3d6000fd5b505b50506012805460ff191690555050505050505050565b6001600160a01b03821660009081526005602052604081205460ff16806110de57506001600160a01b03821660009081526005602052604090205460ff165b156110f857600f546110f1906064610900565b9050610523565b6007546001600160a01b03908116908316036111175750600d54610523565b6007546001600160a01b03908116908416036111365750600c54610523565b50600e5492915050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611175576111756115db565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156111ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f291906115f1565b81600181518110611205576112056115db565b6001600160a01b03928316602091820292909201015260065461122b91309116846107dc565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac9479061126490859060009086903090429060040161160e565b600060405180830381600087803b15801561127e57600080fd5b505af1158015611292573d6000803e3d6000fd5b505050505050565b6006546112b29030906001600160a01b0316846107dc565b60065460195460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015611322573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611347919061167f565b5050505050565b600080600080600080600060e0888a03121561136957600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b600060208083528351808285015260005b818110156113c7578581018301518582016040015282016113ab565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146113fd57600080fd5b50565b6000806040838503121561141357600080fd5b823561141e816113e8565b946020939093013593505050565b60008060006060848603121561144157600080fd5b833561144c816113e8565b9250602084013561145c816113e8565b929592945050506040919091013590565b60006020828403121561147f57600080fd5b81356105e9816113e8565b6000806040838503121561149d57600080fd5b82356114a8816113e8565b9150602083013580151581146114bd57600080fd5b809150509250929050565b600080604083850312156114db57600080fd5b82356114e6816113e8565b915060208301356114bd816113e8565b60008060006060848603121561150b57600080fd5b505081359360208301359350604090920135919050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008261157557634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561052357610523611542565b808202811582820484141761052357610523611542565b600080604083850312156115b757600080fd5b505080516020909101519092909150565b8082018082111561052357610523611542565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561160357600080fd5b81516105e9816113e8565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561165e5784516001600160a01b031683529383019391830191600101611639565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561169457600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212200965520849ae609d7a1e4fdba9a3cef51864dd45f1aabf45f6b4f4a552cd459064736f6c63430008120033

Deployed Bytecode

0x6080604052600436106101185760003560e01c806348ff2b8b116100a0578063a8aa1b3111610064578063a8aa1b311461035e578063a9059cbb1461037e578063dd62ed3e1461039e578063e94dd17c146103e4578063f2fde38b1461040457600080fd5b806348ff2b8b1461028a57806370a08231146102aa578063893d20e8146102e05780638c41180e1461031257806395d89b411461033257600080fd5b806323b872dd116100e757806323b872dd146101da578063293230b8146101fa5780632f54bf6e1461020f578063313ce5671461023e5780633f4218e01461025a57600080fd5b8063044019301461012457806306fdde0314610146578063095ea7b31461018757806318160ddd146101b757600080fd5b3661011f57005b600080fd5b34801561013057600080fd5b5061014461013f36600461134e565b610424565b005b34801561015257600080fd5b50604080518082019091526006815265183c21b63ab160d11b60208201525b60405161017e919061139a565b60405180910390f35b34801561019357600080fd5b506101a76101a2366004611400565b610512565b604051901515815260200161017e565b3480156101c357600080fd5b506101cc610529565b60405190815260200161017e565b3480156101e657600080fd5b506101a76101f536600461142c565b610586565b34801561020657600080fd5b506101446105f0565b34801561021b57600080fd5b506101a761022a36600461146d565b6000546001600160a01b0391821691161490565b34801561024a57600080fd5b506040516009815260200161017e565b34801561026657600080fd5b506101a761027536600461146d565b60046020526000908152604090205460ff1681565b34801561029657600080fd5b506101446102a536600461148a565b61062f565b3480156102b657600080fd5b506101cc6102c536600461146d565b6001600160a01b031660009081526002602052604090205490565b3480156102ec57600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161017e565b34801561031e57600080fd5b5061014461032d36600461148a565b610684565b34801561033e57600080fd5b5060408051808201909152600381526230784360e81b6020820152610171565b34801561036a57600080fd5b506007546102fa906001600160a01b031681565b34801561038a57600080fd5b506101a7610399366004611400565b6106d9565b3480156103aa57600080fd5b506101cc6103b93660046114c8565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156103f057600080fd5b506101446103ff3660046114f6565b6106e6565b34801561041057600080fd5b5061014461041f36600461146d565b610752565b6000546001600160a01b031633146104575760405162461bcd60e51b815260040161044e90611522565b60405180910390fd5b60088790556009869055600b859055600a849055600c839055600d829055600e819055600f546104889060016107d0565b600c54111580156104a85750600f546104a29060016107d0565b600d5411155b6105095760405162461bcd60e51b815260206004820152602c60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526b6f7265207468616e2032302560a01b606482015260840161044e565b50505050505050565b600061051f3384846107dc565b5060015b92915050565b60026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b546016546001600160a01b031660009081526040812054600154919261058192909161057b9190610900565b90610900565b905090565b600061059384848461090c565b6105e584336105e0856040518060600160405280602881526020016116ae602891396001600160a01b038a1660009081526003602090815260408083203384529091529020549190610a21565b6107dc565b5060015b9392505050565b6000546001600160a01b0316331461061a5760405162461bcd60e51b815260040161044e90611522565b6007805460ff60a01b1916600160a01b179055565b6000546001600160a01b031633146106595760405162461bcd60e51b815260040161044e90611522565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146106ae5760405162461bcd60e51b815260040161044e90611522565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b600061051f33848461090c565b6000546001600160a01b031633146107105760405162461bcd60e51b815260040161044e90611522565b601383905560015461073190620186a09061072b9085610a4d565b906107d0565b60145560015461074a90620186a09061072b9084610a4d565b601555505050565b6000546001600160a01b0316331461077c5760405162461bcd60e51b815260040161044e90611522565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b60006105e98284611558565b6001600160a01b03831661083e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161044e565b6001600160a01b03821661089f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161044e565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006105e9828461157a565b60008061091a858585610a59565b915091506109288585610c0e565b6109328585610ca3565b61093d858585610cfa565b6001600160a01b0385166000908152600260205260409020546109609083610900565b6001600160a01b0386166000908152600260205260409020556109838585610d20565b61098d5780610998565b610998858583610d66565b6001600160a01b0385166000908152600260205260409020549091506109be9082610e63565b6001600160a01b0380861660008181526002602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610a129085815260200190565b60405180910390a35050505050565b60008184841115610a455760405162461bcd60e51b815260040161044e919061139a565b505050900390565b60006105e9828461158d565b6000806001600160a01b038516610ac05760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161044e565b6001600160a01b038416610b225760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161044e565b60008311610b845760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161044e565b60065460405163a901431360e01b81526001600160a01b0387811660048301528681166024830152604482018690529091169063a90143139060640160408051808303816000875af1158015610bde573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c0291906115a4565b91509150935093915050565b6001600160a01b03821660009081526004602052604090205460ff16158015610c5057506001600160a01b03811660009081526004602052604090205460ff16155b15610c9f57600754600160a01b900460ff16610c9f5760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b604482015260640161044e565b5050565b6007546001600160a01b038281169116148015610cd957506001600160a01b03821660009081526004602052604090205460ff16155b15610c9f57600160116000828254610cf191906115c8565b90915550505050565b610d05838383610e6f565b15610d1b57610d15601454610f22565b60006011555b505050565b6001600160a01b03821660009081526004602052604081205460ff161580156105e95750506001600160a01b031660009081526004602052604090205460ff1615919050565b600080610d73858561109f565b1115610e5c576000610d9c610d88868661109f565b600f54610d969086906107d0565b90610a4d565b30600090815260026020526040902054909150610db99082610e63565b30600081815260026020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610e0a9085815260200190565b60405180910390a3600b5415610e4a57601654600b54600f54610e4a9230926001600160a01b0390911691610e459190610d969089906107d0565b61090c565b610e548382610900565b9150506105e9565b5092915050565b60006105e982846115c8565b6015546014543060009081526002602052604081205460125491938510159211159060ff16158015610ea3575060105460ff165b8015610eb85750600754600160a01b900460ff165b8015610ec15750815b8015610ee657506001600160a01b03861660009081526004602052604090205460ff16155b8015610eff57506007546001600160a01b038681169116145b8015610f0f575060135460115410155b8015610f185750805b9695505050505050565b6012805460ff19166001908117909155600a54600954600854600093610f5c93600293610d96939192610f56928391610e63565b90610e63565b90506000610f798261072b60085486610a4d90919063ffffffff16565b90506000610f878483610900565b905047610f9382611140565b6000610f9f4783610900565b90506000610fc2610fbb6008548861090090919063ffffffff16565b83906107d0565b90506000610fdb60085483610a4d90919063ffffffff16565b90508015610fed57610fed868261129a565b60095460009061100290610d96856002610a4d565b90508015611046576018546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611044573d6000803e3d6000fd5b505b478015611089576017546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611087573d6000803e3d6000fd5b505b50506012805460ff191690555050505050505050565b6001600160a01b03821660009081526005602052604081205460ff16806110de57506001600160a01b03821660009081526005602052604090205460ff165b156110f857600f546110f1906064610900565b9050610523565b6007546001600160a01b03908116908316036111175750600d54610523565b6007546001600160a01b03908116908416036111365750600c54610523565b50600e5492915050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611175576111756115db565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156111ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f291906115f1565b81600181518110611205576112056115db565b6001600160a01b03928316602091820292909201015260065461122b91309116846107dc565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac9479061126490859060009086903090429060040161160e565b600060405180830381600087803b15801561127e57600080fd5b505af1158015611292573d6000803e3d6000fd5b505050505050565b6006546112b29030906001600160a01b0316846107dc565b60065460195460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015611322573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611347919061167f565b5050505050565b600080600080600080600060e0888a03121561136957600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b600060208083528351808285015260005b818110156113c7578581018301518582016040015282016113ab565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146113fd57600080fd5b50565b6000806040838503121561141357600080fd5b823561141e816113e8565b946020939093013593505050565b60008060006060848603121561144157600080fd5b833561144c816113e8565b9250602084013561145c816113e8565b929592945050506040919091013590565b60006020828403121561147f57600080fd5b81356105e9816113e8565b6000806040838503121561149d57600080fd5b82356114a8816113e8565b9150602083013580151581146114bd57600080fd5b809150509250929050565b600080604083850312156114db57600080fd5b82356114e6816113e8565b915060208301356114bd816113e8565b60008060006060848603121561150b57600080fd5b505081359360208301359350604090920135919050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008261157557634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561052357610523611542565b808202811582820484141761052357610523611542565b600080604083850312156115b757600080fd5b505080516020909101519092909150565b8082018082111561052357610523611542565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561160357600080fd5b81516105e9816113e8565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561165e5784516001600160a01b031683529383019391830191600101611639565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561169457600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212200965520849ae609d7a1e4fdba9a3cef51864dd45f1aabf45f6b4f4a552cd459064736f6c63430008120033

Deployed Bytecode Sourcemap

4833:9760:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9200:527;;;;;;;;;;-1:-1:-1;9200:527:0;;;;;:::i;:::-;;:::i;:::-;;6725:67;;;;;;;;;;-1:-1:-1;6785:5:0;;;;;;;;;;;;-1:-1:-1;;;6785:5:0;;;;6725:67;;;;;;;:::i;:::-;;;;;;;;7845:133;;;;;;;;;;-1:-1:-1;7845:133:0;;;;;:::i;:::-;;:::i;:::-;;;1785:14:1;;1778:22;1760:41;;1748:2;1733:18;7845:133:0;1620:187:1;7984:132:0;;;;;;;;;;;;;:::i;:::-;;;1958:25:1;;;1946:2;1931:18;7984:132:0;1812:177:1;13936:309:0;;;;;;;;;;-1:-1:-1;13936:309:0;;;;;:::i;:::-;;:::i;6948:67::-;;;;;;;;;;;;;:::i;3044:87::-;;;;;;;;;;-1:-1:-1;3044:87:0;;;;;:::i;:::-;3099:4;3124:5;-1:-1:-1;;;;;3113:16:0;;;3124:5;;3113:16;;3044:87;6875:67;;;;;;;;;;-1:-1:-1;6875:67:0;;5034:1;2849:36:1;;2837:2;2822:18;6875:67:0;2707:184:1;5230:44:0;;;;;;;;;;-1:-1:-1;5230:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;7731:108;;;;;;;;;;-1:-1:-1;7731:108:0;;;;;:::i;:::-;;:::i;7105:103::-;;;;;;;;;;-1:-1:-1;7105:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;7188:18:0;7171:7;7188:18;;;:9;:18;;;;;;;7105:103;7021:78;;;;;;;;;;-1:-1:-1;7073:7:0;7091:5;-1:-1:-1;;;;;7091:5:0;7021:78;;;-1:-1:-1;;;;;3481:32:1;;;3463:51;;3451:2;3436:18;7021:78:0;3317:203:1;7626:99:0;;;;;;;;;;-1:-1:-1;7626:99:0;;;;;:::i;:::-;;:::i;6798:71::-;;;;;;;;;;-1:-1:-1;6860:7:0;;;;;;;;;;;;-1:-1:-1;;;6860:7:0;;;;6798:71;;5348:19;;;;;;;;;;-1:-1:-1;5348:19:0;;;;-1:-1:-1;;;;;5348:19:0;;;7214:139;;;;;;;;;;-1:-1:-1;7214:139:0;;;;;:::i;:::-;;:::i;7359:127::-;;;;;;;;;;-1:-1:-1;7359:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;7457:18:0;;;7440:7;7457:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7359:127;12373:315;;;;;;;;;;-1:-1:-1;12373:315:0;;;;;:::i;:::-;;:::i;3137:111::-;;;;;;;;;;-1:-1:-1;3137:111:0;;;;;:::i;:::-;;:::i;9200:527::-;3099:4;3124:5;-1:-1:-1;;;;;3124:5:0;3011:10;3113:16;2995:38;;;;-1:-1:-1;;;2995:38:0;;;;;;;:::i;:::-;;;;;;;;;9376:12:::1;:25:::0;;;9412:12:::1;:25:::0;;;9448:7:::1;:15:::0;;;9474:14:::1;:29:::0;;;9514:8:::1;:17:::0;;;9542:7:::1;:15:::0;;;9568:11:::1;:20:::0;;;9619:11:::1;::::0;:18:::1;::::0;-1:-1:-1;9619:15:0::1;:18::i;:::-;9607:8;;:30;;:63;;;;-1:-1:-1::0;9652:11:0::1;::::0;:18:::1;::::0;9668:1:::1;9652:15;:18::i;:::-;9641:7;;:29;;9607:63;9599:120;;;::::0;-1:-1:-1;;;9599:120:0;;5035:2:1;9599:120:0::1;::::0;::::1;5017:21:1::0;5074:2;5054:18;;;5047:30;5113:34;5093:18;;;5086:62;-1:-1:-1;;;5164:18:1;;;5157:42;5216:19;;9599:120:0::1;4833:408:1::0;9599:120:0::1;9200:527:::0;;;;;;;:::o;7845:133::-;7920:4;7927:37;7936:10;7948:7;7957:6;7927:8;:37::i;:::-;-1:-1:-1;7972:4:0;7845:133;;;;;:::o;7984:132::-;7188:9;:18;;;;8081:4;;-1:-1:-1;;;;;8081:4:0;8037:7;7188:18;;;;;;;8054:12;;8037:7;;8054:60;;7188:18;;8054:33;;:12;:16;:33::i;:::-;:37;;:60::i;:::-;8047:67;;7984:132;:::o;13936:309::-;14034:4;14051:36;14061:6;14069:9;14080:6;14051:9;:36::i;:::-;14098:117;14107:6;14115:10;14127:87;14163:6;14127:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14127:19:0;;;;;;:11;:19;;;;;;;;14147:10;14127:31;;;;;;;;;:87;:35;:87::i;:::-;14098:8;:117::i;:::-;-1:-1:-1;14233:4:0;13936:309;;;;;;:::o;6948:67::-;3099:4;3124:5;-1:-1:-1;;;;;3124:5:0;3011:10;3113:16;2995:38;;;;-1:-1:-1;;;2995:38:0;;;;;;;:::i;:::-;6992:14:::1;:21:::0;;-1:-1:-1;;;;6992:21:0::1;-1:-1:-1::0;;;6992:21:0::1;::::0;;6948:67::o;7731:108::-;3099:4;3124:5;-1:-1:-1;;;;;3124:5:0;3011:10;3113:16;2995:38;;;;-1:-1:-1;;;2995:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7805:21:0;;;::::1;;::::0;;;:11:::1;:21;::::0;;;;:32;;-1:-1:-1;;7805:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;7731:108::o;7626:99::-;3099:4;3124:5;-1:-1:-1;;;;;3124:5:0;3011:10;3113:16;2995:38;;;;-1:-1:-1;;;2995:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7697:15:0;;;::::1;;::::0;;;:5:::1;:15;::::0;;;;:26;;-1:-1:-1;;7697:26:0::1;::::0;::::1;;::::0;;;::::1;::::0;;7626:99::o;7214:139::-;7292:4;7299:40;7309:10;7321:9;7332:6;7299:9;:40::i;12373:315::-;3099:4;3124:5;-1:-1:-1;;;;;3124:5:0;3011:10;3113:16;2995:38;;;;-1:-1:-1;;;2995:38:0;;;;;;;:::i;:::-;12502:10:::1;:24:::0;;;12544:12:::1;::::0;:53:::1;::::0;12589:6:::1;::::0;12544:32:::1;::::0;12561:14;12544:16:::1;:32::i;:::-;:36:::0;::::1;:53::i;:::-;12528:13;:69:::0;12626:12:::1;::::0;:54:::1;::::0;12672:6:::1;::::0;12626:33:::1;::::0;12643:15;12626:16:::1;:33::i;:54::-;12609:14;:71:::0;-1:-1:-1;;;12373:315:0:o;3137:111::-;3099:4;3124:5;-1:-1:-1;;;;;3124:5:0;3011:10;3113:16;2995:38;;;;-1:-1:-1;;;2995:38:0;;;;;;;:::i;:::-;3203:5:::1;:11:::0;;-1:-1:-1;;;;;;3203:11:0::1;-1:-1:-1::0;;;;;3203:11:0;::::1;::::0;;::::1;::::0;;;3221:25:::1;::::0;3463:51:1;;;3221:25:0::1;::::0;3451:2:1;3436:18;3221:25:0::1;;;;;;;3137:111:::0;:::o;406:82::-;464:7;481:5;485:1;481;:5;:::i;14253:335::-;-1:-1:-1;;;;;14346:19:0;;14338:68;;;;-1:-1:-1;;;14338:68:0;;6018:2:1;14338:68:0;;;6000:21:1;6057:2;6037:18;;;6030:30;6096:34;6076:18;;;6069:62;-1:-1:-1;;;6147:18:1;;;6140:34;6191:19;;14338:68:0;5816:400:1;14338:68:0;-1:-1:-1;;;;;14425:21:0;;14417:68;;;;-1:-1:-1;;;14417:68:0;;6423:2:1;14417:68:0;;;6405:21:1;6462:2;6442:18;;;6435:30;6501:34;6481:18;;;6474:62;-1:-1:-1;;;6552:18:1;;;6545:32;6594:19;;14417:68:0;6221:398:1;14417:68:0;-1:-1:-1;;;;;14496:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;14548:32;;1958:25:1;;;14548:32:0;;1931:18:1;14548:32:0;;;;;;;14253:335;;;:::o;230:82::-;288:7;305:5;309:1;305;:5;:::i;8558:634::-;8648:15;8664:22;8690:37;8701:6;8709:9;8720:6;8690:10;:37::i;:::-;8647:80;;;;8738:38;8758:6;8766:9;8738:19;:38::i;:::-;8787:35;8804:6;8812:9;8787:16;:35::i;:::-;8833;8842:6;8850:9;8861:6;8833:8;:35::i;:::-;-1:-1:-1;;;;;8899:17:0;;;;;;:9;:17;;;;;;:30;;8921:7;8899:21;:30::i;:::-;-1:-1:-1;;;;;8879:17:0;;;;;;:9;:17;;;;;:50;8957:32;8889:6;8979:9;8957:13;:32::i;:::-;:94;;9037:14;8957:94;;;8992:42;9000:6;9008:9;9019:14;8992:7;:42::i;:::-;-1:-1:-1;;;;;9085:20:0;;;;;;:9;:20;;;;;;8940:111;;-1:-1:-1;9085:40:0;;8940:111;9085:24;:40::i;:::-;-1:-1:-1;;;;;9062:20:0;;;;;;;:9;:20;;;;;;;:63;;;;9141:43;;;;;;;;;;9169:14;1958:25:1;;1946:2;1931:18;;1812:177;9141:43:0;;;;;;;;8636:556;;8558:634;;;:::o;1443:162::-;1529:7;1575:12;1567:6;;;;1559:29;;;;-1:-1:-1;;;1559:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;1597:5:0;;;1443:162::o;318:82::-;376:7;393:5;397:1;393;:5;:::i;8124:426::-;8213:7;;-1:-1:-1;;;;;8249:20:0;;8241:70;;;;-1:-1:-1;;;8241:70:0;;7132:2:1;8241:70:0;;;7114:21:1;7171:2;7151:18;;;7144:30;7210:34;7190:18;;;7183:62;-1:-1:-1;;;7261:18:1;;;7254:35;7306:19;;8241:70:0;6930:401:1;8241:70:0;-1:-1:-1;;;;;8330:23:0;;8322:71;;;;-1:-1:-1;;;8322:71:0;;7538:2:1;8322:71:0;;;7520:21:1;7577:2;7557:18;;;7550:30;7616:34;7596:18;;;7589:62;-1:-1:-1;;;7667:18:1;;;7660:33;7710:19;;8322:71:0;7336:399:1;8322:71:0;8429:1;8412:6;:19;8404:73;;;;-1:-1:-1;;;8404:73:0;;7942:2:1;8404:73:0;;;7924:21:1;7981:2;7961:18;;;7954:30;8020:34;8000:18;;;7993:62;-1:-1:-1;;;8071:18:1;;;8064:39;8120:19;;8404:73:0;7740:405:1;8404:73:0;8495:6;;:47;;-1:-1:-1;;;8495:47:0;;-1:-1:-1;;;;;8408:15:1;;;8495:47:0;;;8390:34:1;8460:15;;;8440:18;;;8433:43;8492:18;;;8485:34;;;8495:6:0;;;;:22;;8325:18:1;;8495:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8488:54;;;;8124:426;;;;;;:::o;9735:191::-;-1:-1:-1;;;;;9828:19:0;;;;;;:11;:19;;;;;;;;9827:20;:47;;;;-1:-1:-1;;;;;;9852:22:0;;;;;;:11;:22;;;;;;;;9851:23;9827:47;9824:95;;;9884:14;;-1:-1:-1;;;9884:14:0;;;;9876:41;;;;-1:-1:-1;;;9876:41:0;;8982:2:1;9876:41:0;;;8964:21:1;9021:2;9001:18;;;8994:30;-1:-1:-1;;;9040:18:1;;;9033:44;9094:18;;9876:41:0;8780:338:1;9876:41:0;9735:191;;:::o;9932:159::-;10029:4;;-1:-1:-1;;;;;10016:17:0;;;10029:4;;10016:17;:41;;;;-1:-1:-1;;;;;;10038:19:0;;;;;;:11;:19;;;;;;;;10037:20;10016:41;10013:71;;;10080:1;10059:9;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;9932:159:0;;:::o;12696:197::-;12788:41;12803:6;12811:9;12822:6;12788:14;:41::i;:::-;12785:101;;;12831:29;12846:13;;12831:14;:29::i;:::-;12882:1;12862:9;:22;12785:101;12696:197;;;:::o;12901:160::-;-1:-1:-1;;;;;13007:19:0;;12982:4;13007:19;;;:11;:19;;;;;;;;13006:20;:47;;;;-1:-1:-1;;;;;;;13031:22:0;;;;;:11;:22;;;;;;;;13030:23;;12901:160;-1:-1:-1;12901:160:0:o;13382:546::-;13468:7;13524:1;13491:30;13503:6;13511:9;13491:11;:30::i;:::-;:34;13488:418;;;13537:17;13557:59;13585:30;13597:6;13605:9;13585:11;:30::i;:::-;13568:11;;13557:23;;:6;;:10;:23::i;:::-;:27;;:59::i;:::-;13672:4;13654:24;;;;:9;:24;;;;;;13537:79;;-1:-1:-1;13654:39:0;;13537:79;13654:28;:39::i;:::-;13645:4;13627:24;;;;:9;:24;;;;;;;:66;;;;13709:42;;-1:-1:-1;;;;;13709:42:0;;;;;;;13741:9;1958:25:1;;1946:2;1931:18;;1812:177;13709:42:0;;;;;;;;13765:7;;:20;13762:104;;13820:4;;13855:7;;13838:11;;13787:77;;13805:4;;-1:-1:-1;;;;;13820:4:0;;;;13827:36;;13855:7;13827:23;;:6;;:10;:23::i;:36::-;13787:9;:77::i;:::-;13883:21;:6;13894:9;13883:10;:21::i;:::-;13876:28;;;;;13488:418;-1:-1:-1;13914:6:0;13382:546;-1:-1:-1;;13382:546:0:o;142:82::-;200:7;217:5;221:1;217;:5;:::i;11966:399::-;12107:14;;12182:13;;12172:4;12064;7188:18;;;:9;:18;;;;;;12214:8;;12064:4;;12097:24;;;;-1:-1:-1;12154:41:0;;12214:8;;12213:9;:24;;;;-1:-1:-1;12226:11:0;;;;12213:24;:42;;;;-1:-1:-1;12241:14:0;;-1:-1:-1;;;12241:14:0;;;;12213:42;:54;;;;;12259:8;12213:54;:78;;;;-1:-1:-1;;;;;;12272:19:0;;;;;;:11;:19;;;;;;;;12271:20;12213:78;:99;;;;-1:-1:-1;12308:4:0;;-1:-1:-1;;;;;12295:17:0;;;12308:4;;12295:17;12213:99;:126;;;;;12329:10;;12316:9;;:23;;12213:126;:144;;;;;12343:14;12213:144;12206:151;11966:399;-1:-1:-1;;;;;;11966:399:0:o;10099:1066::-;6018:8;:15;;-1:-1:-1;;6018:15:0;6029:4;6018:15;;;;;;10236:14:::1;::::0;10218:12:::1;::::0;10194::::1;::::0;6018:8;;10193:66:::1;::::0;10257:1:::1;::::0;10194:57:::1;::::0;10236:14;;10194:37:::1;::::0;;;:16:::1;:19::i;:::-;:23:::0;::::1;:37::i;10193:66::-;10170:89;;10270:32;10305:42;10334:12;10305:24;10316:12;;10305:6;:10;;:24;;;;:::i;:42::-;10270:77:::0;-1:-1:-1;10358:14:0::1;10375:36;:6:::0;10270:77;10375:10:::1;:36::i;:::-;10358:53:::0;-1:-1:-1;10447:21:0::1;10479:24;10358:53:::0;10479:16:::1;:24::i;:::-;10514:20;10537:41;:21;10563:14:::0;10537:25:::1;:41::i;:::-;10514:64;;10589:19;10610:48;10627:30;10644:12;;10627;:16;;:30;;;;:::i;:::-;10610:12:::0;;:16:::1;:48::i;:::-;10589:69;;10669:29;10701;10717:12;;10701:11;:15;;:29;;;;:::i;:::-;10669:61:::0;-1:-1:-1;10744:34:0;;10741:103:::1;;10780:61;10793:24;10819:21;10780:12;:61::i;:::-;10900:12;::::0;10854:20:::1;::::0;10877:36:::1;::::0;:18:::1;:11:::0;10893:1:::1;10877:15;:18::i;:36::-;10854:59:::0;-1:-1:-1;10927:16:0;;10924:73:::1;;10953:18;::::0;10945:50:::1;::::0;-1:-1:-1;;;;;10953:18:0;;::::1;::::0;10945:50;::::1;;;::::0;10982:12;;10953:18:::1;10945:50:::0;10953:18;10945:50;10982:12;10953:18;10945:50;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;10924:73;11034:21;11069:29:::0;;11066:92:::1;;11108:20;::::0;11100:56:::1;::::0;-1:-1:-1;;;;;11108:20:0;;::::1;::::0;11100:56;::::1;;;::::0;11139:16;;11108:20:::1;11100:56:::0;11108:20;11100:56;11139:16;11108:20;11100:56;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;11066:92;-1:-1:-1::0;;6038:8:0;:16;;-1:-1:-1;;6038:16:0;;;-1:-1:-1;;;;;;;;10099:1066:0:o;13069:305::-;-1:-1:-1;;;;;13171:13:0;;13148:7;13171:13;;;:5;:13;;;;;;;;;:33;;-1:-1:-1;;;;;;13188:16:0;;;;;;:5;:16;;;;;;;;13171:33;13168:76;;;13213:11;;:29;;13237:3;13213:15;:29::i;:::-;13206:36;;;;13168:76;13270:4;;-1:-1:-1;;;;;13270:4:0;;;13257:17;;;;13254:38;;-1:-1:-1;13283:7:0;;13276:14;;13254:38;13315:4;;-1:-1:-1;;;;;13315:4:0;;;13305:14;;;;13302:36;;-1:-1:-1;13328:8:0;;13321:15;;13302:36;-1:-1:-1;13355:11:0;;13069:305;;;;:::o;11524:434::-;11614:16;;;11628:1;11614:16;;;;;;;;11590:21;;11614:16;;;;;;;;;;-1:-1:-1;11614:16:0;11590:40;;11659:4;11641;11646:1;11641:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11641:23:0;;;:7;;;;;;;;;;:23;;;;11685:6;;:13;;;-1:-1:-1;;;11685:13:0;;;;:6;;;;;:11;;:13;;;;;11641:7;;11685:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11675:4;11680:1;11675:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11675:23:0;;;:7;;;;;;;;;:23;11741:6;;11709:53;;11726:4;;11741:6;11750:11;11709:8;:53::i;:::-;11773:6;;:177;;-1:-1:-1;;;11773:177:0;;-1:-1:-1;;;;;11773:6:0;;;;:57;;:177;;11845:11;;11773:6;;11887:4;;11914;;11934:15;;11773:177;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11579:379;11524:434;:::o;11173:343::-;11286:6;;11254:53;;11271:4;;-1:-1:-1;;;;;11286:6:0;11295:11;11254:8;:53::i;:::-;11318:6;;11459:18;;11318:190;;-1:-1:-1;;;11318:190:0;;11381:4;11318:190;;;11099:34:1;11149:18;;;11142:34;;;11318:6:0;11192:18:1;;;11185:34;;;11235:18;;;11228:34;-1:-1:-1;;;;;11459:18:0;;;11278:19:1;;;11271:44;11492:15:0;11331:19:1;;;11324:35;11318:6:0;;;:22;;11348:9;;11033:19:1;;11318:190:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11173:343;;:::o;14:592:1:-;127:6;135;143;151;159;167;175;228:3;216:9;207:7;203:23;199:33;196:53;;;245:1;242;235:12;196:53;-1:-1:-1;;268:23:1;;;338:2;323:18;;310:32;;-1:-1:-1;389:2:1;374:18;;361:32;;440:2;425:18;;412:32;;-1:-1:-1;491:3:1;476:19;;463:33;;-1:-1:-1;543:3:1;528:19;;515:33;;-1:-1:-1;595:3:1;580:19;567:33;;-1:-1:-1;14:592:1;-1:-1:-1;14:592:1:o;611:548::-;723:4;752:2;781;770:9;763:21;813:6;807:13;856:6;851:2;840:9;836:18;829:34;881:1;891:140;905:6;902:1;899:13;891:140;;;1000:14;;;996:23;;990:30;966:17;;;985:2;962:26;955:66;920:10;;891:140;;;895:3;1080:1;1075:2;1066:6;1055:9;1051:22;1047:31;1040:42;1150:2;1143;1139:7;1134:2;1126:6;1122:15;1118:29;1107:9;1103:45;1099:54;1091:62;;;;611:548;;;;:::o;1164:131::-;-1:-1:-1;;;;;1239:31:1;;1229:42;;1219:70;;1285:1;1282;1275:12;1219:70;1164:131;:::o;1300:315::-;1368:6;1376;1429:2;1417:9;1408:7;1404:23;1400:32;1397:52;;;1445:1;1442;1435:12;1397:52;1484:9;1471:23;1503:31;1528:5;1503:31;:::i;:::-;1553:5;1605:2;1590:18;;;;1577:32;;-1:-1:-1;;;1300:315:1:o;1994:456::-;2071:6;2079;2087;2140:2;2128:9;2119:7;2115:23;2111:32;2108:52;;;2156:1;2153;2146:12;2108:52;2195:9;2182:23;2214:31;2239:5;2214:31;:::i;:::-;2264:5;-1:-1:-1;2321:2:1;2306:18;;2293:32;2334:33;2293:32;2334:33;:::i;:::-;1994:456;;2386:7;;-1:-1:-1;;;2440:2:1;2425:18;;;;2412:32;;1994:456::o;2455:247::-;2514:6;2567:2;2555:9;2546:7;2542:23;2538:32;2535:52;;;2583:1;2580;2573:12;2535:52;2622:9;2609:23;2641:31;2666:5;2641:31;:::i;2896:416::-;2961:6;2969;3022:2;3010:9;3001:7;2997:23;2993:32;2990:52;;;3038:1;3035;3028:12;2990:52;3077:9;3064:23;3096:31;3121:5;3096:31;:::i;:::-;3146:5;-1:-1:-1;3203:2:1;3188:18;;3175:32;3245:15;;3238:23;3226:36;;3216:64;;3276:1;3273;3266:12;3216:64;3299:7;3289:17;;;2896:416;;;;;:::o;3525:388::-;3593:6;3601;3654:2;3642:9;3633:7;3629:23;3625:32;3622:52;;;3670:1;3667;3660:12;3622:52;3709:9;3696:23;3728:31;3753:5;3728:31;:::i;:::-;3778:5;-1:-1:-1;3835:2:1;3820:18;;3807:32;3848:33;3807:32;3848:33;:::i;3918:316::-;3995:6;4003;4011;4064:2;4052:9;4043:7;4039:23;4035:32;4032:52;;;4080:1;4077;4070:12;4032:52;-1:-1:-1;;4103:23:1;;;4173:2;4158:18;;4145:32;;-1:-1:-1;4224:2:1;4209:18;;;4196:32;;3918:316;-1:-1:-1;3918:316:1:o;4499:329::-;4701:2;4683:21;;;4740:1;4720:18;;;4713:29;-1:-1:-1;;;4773:2:1;4758:18;;4751:36;4819:2;4804:18;;4499:329::o;5462:127::-;5523:10;5518:3;5514:20;5511:1;5504:31;5554:4;5551:1;5544:15;5578:4;5575:1;5568:15;5594:217;5634:1;5660;5650:132;;5704:10;5699:3;5695:20;5692:1;5685:31;5739:4;5736:1;5729:15;5767:4;5764:1;5757:15;5650:132;-1:-1:-1;5796:9:1;;5594:217::o;6624:128::-;6691:9;;;6712:11;;;6709:37;;;6726:18;;:::i;6757:168::-;6830:9;;;6861;;6878:15;;;6872:22;;6858:37;6848:71;;6899:18;;:::i;8530:245::-;8609:6;8617;8670:2;8658:9;8649:7;8645:23;8641:32;8638:52;;;8686:1;8683;8676:12;8638:52;-1:-1:-1;;8709:16:1;;8765:2;8750:18;;;8744:25;8709:16;;8744:25;;-1:-1:-1;8530:245:1:o;9123:125::-;9188:9;;;9209:10;;;9206:36;;;9222:18;;:::i;9385:127::-;9446:10;9441:3;9437:20;9434:1;9427:31;9477:4;9474:1;9467:15;9501:4;9498:1;9491:15;9517:251;9587:6;9640:2;9628:9;9619:7;9615:23;9611:32;9608:52;;;9656:1;9653;9646:12;9608:52;9688:9;9682:16;9707:31;9732:5;9707:31;:::i;9773:980::-;10035:4;10083:3;10072:9;10068:19;10114:6;10103:9;10096:25;10140:2;10178:6;10173:2;10162:9;10158:18;10151:34;10221:3;10216:2;10205:9;10201:18;10194:31;10245:6;10280;10274:13;10311:6;10303;10296:22;10349:3;10338:9;10334:19;10327:26;;10388:2;10380:6;10376:15;10362:29;;10409:1;10419:195;10433:6;10430:1;10427:13;10419:195;;;10498:13;;-1:-1:-1;;;;;10494:39:1;10482:52;;10589:15;;;;10554:12;;;;10530:1;10448:9;10419:195;;;-1:-1:-1;;;;;;;10670:32:1;;;;10665:2;10650:18;;10643:60;-1:-1:-1;;;10734:3:1;10719:19;10712:35;10631:3;9773:980;-1:-1:-1;;;9773:980:1:o;11370:306::-;11458:6;11466;11474;11527:2;11515:9;11506:7;11502:23;11498:32;11495:52;;;11543:1;11540;11533:12;11495:52;11572:9;11566:16;11556:26;;11622:2;11611:9;11607:18;11601:25;11591:35;;11666:2;11655:9;11651:18;11645:25;11635:35;;11370:306;;;;;:::o

Swarm Source

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