ETH Price: $3,851.41 (-0.28%)

Token

ERC-20: Gigachad (GIGA)
 

Overview

Max Total Supply

10,000,000,000 GIGA

Holders

45

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
90,229,971.821988647 GIGA

Value
$0.00
0x59836499521db675f62826fc3a3e0053af648740
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:
Gigachad

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/**
 ________  ___  ________  ________  ________  ___  ___  ________  ________     
|\   ____\|\  \|\   ____\|\   __  \|\   ____\|\  \|\  \|\   __  \|\   ___ \    
\ \  \___|\ \  \ \  \___|\ \  \|\  \ \  \___|\ \  \\\  \ \  \|\  \ \  \_|\ \   
 \ \  \  __\ \  \ \  \  __\ \   __  \ \  \    \ \   __  \ \   __  \ \  \ \\ \  
  \ \  \|\  \ \  \ \  \|\  \ \  \ \  \ \  \____\ \  \ \  \ \  \ \  \ \  \_\\ \ 
   \ \_______\ \__\ \_______\ \__\ \__\ \_______\ \__\ \__\ \__\ \__\ \_______\
    \|_______|\|__|\|_______|\|__|\|__|\|_______|\|__|\|__|\|__|\|__|\|_______|
                                                                                                                                                                                                                                            
*/

/**

Web:        gigachaderc20.com
Twitter:    twitter.com/gigachad_erc20
Telegram:   t.me/OfficialGigachadERC20

*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.18;

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

    function _msgData() internal view virtual returns (bytes memory) {
        this;
        return msg.data;
    }
}

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;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

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

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

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

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

interface IUniswapV2Router02 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

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

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

interface IUniswapV2Pair {
    function sync() external;
}

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

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

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


contract Gigachad is Context, IERC20, Ownable {
    using SafeMath for uint256;
    IUniswapV2Router02 public uniswapV2Router;

    address public uniswapV2Pair;
    mapping (address => uint256) private balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;

    string private constant _name = "Gigachad";
    string private constant _symbol = "GIGA";
    uint8 private constant _decimals = 9;
    uint256 private _tTotal =  10000000000  * 10**_decimals;
    bool public tradingActive = false;
    uint256 private liquidityFee;
    uint256 private marketingFee;
    BuyFees public buyFee;
    SellFees public sellFee;
    bool private swapping;
    uint256 public _maxWalletAmount = 100000000 * 10**_decimals;
    uint256 public _maxTxAmount =  100000000 * 10**_decimals;
    uint256 public swapTokenAtAmount = 100000000 * 10**_decimals;
    uint256 public forceSwapCount;
    address public liquidityReceiver;
    address public marketingWallet;
    struct BuyFees{uint256 liquidity;uint256 marketing;}
    struct SellFees{uint256 liquidity;uint256 marketing;}

    event SwapAndLiquify(uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity);

    constructor (address marketingAddress, address liquidityAddress) {
        marketingWallet = marketingAddress;
        liquidityReceiver = liquidityAddress;

        balances[_msgSender()] = _tTotal;
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        buyFee.liquidity = 5;
        buyFee.marketing = 10;
        sellFee.liquidity = 5;
        sellFee.marketing = 30;

        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = _uniswapV2Pair;
        
        _isExcludedFromFee[msg.sender] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[address(0x00)] = true;
        _isExcludedFromFee[address(0xdead)] = true;

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

    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 totalSupply() public view override returns (uint256) {return _tTotal;}
    function balanceOf(address account) public view override returns (uint256) {return balances[account];}
    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        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 transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()] - amount);
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }
    
    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFee[address(account)] = excluded;
    }

    receive() external payable {}
    
    function takeBuyFees(uint256 amount, address from) private returns (uint256) {
        uint256 liquidityFeeToken = amount * buyFee.liquidity / 100; 
        uint256 marketingFeeTokens = amount * buyFee.marketing / 100;

        balances[address(this)] += liquidityFeeToken + marketingFeeTokens;
        emit Transfer (from, address(this), marketingFeeTokens + liquidityFeeToken);
        return (amount -liquidityFeeToken -marketingFeeTokens);
    }

    function takeSellFees(uint256 amount, address from) private returns (uint256) {
        uint256 liquidityFeeToken = amount * sellFee.liquidity / 100; 
        uint256 marketingFeeTokens = amount * sellFee.marketing / 100;

        balances[address(this)] += liquidityFeeToken + marketingFeeTokens;
        emit Transfer (from, address(this), marketingFeeTokens + liquidityFeeToken );
        return (amount -liquidityFeeToken -marketingFeeTokens);
    }

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

    function startTrade() external onlyOwner {
        tradingActive = true;
    }

    function adjustFees(uint256 _buyMarketingFee, uint256 _buyLiquidityFee, uint256 _sellMarketingFee, uint256 _sellLiquidityFee) public onlyOwner {
        buyFee.liquidity = _buyLiquidityFee;
        buyFee.marketing = _buyMarketingFee;
        sellFee.liquidity = _sellLiquidityFee;
        sellFee.marketing = _sellMarketingFee;
    }

    function updateMaxTransactions(uint256 _maxTx, uint256 _maxWallet) public onlyOwner {
        require(_maxTx + _maxWallet > _tTotal / 1000, "Should be bigger than 0,1%");
        _maxTxAmount = _maxTx;
        _maxWalletAmount = _maxWallet;
    }

    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");
        
        balances[from] -= amount;
        uint256 transferAmount = amount;
        
        bool takeFee;

        if(!_isExcludedFromFee[from] && !_isExcludedFromFee[to]){
            takeFee = true;
        }

        if (!tradingActive) {
                    require(
                        _isExcludedFromFee[from] || _isExcludedFromFee[to],
                        "Trading is not active."
                    );
                }

        if(takeFee){
            if(to != uniswapV2Pair){
                require(amount <= _maxTxAmount, "Transfer Amount exceeds the maxTxnsAmount");
                require(balanceOf(to) + amount <= _maxWalletAmount, "Transfer amount exceeds the maxWalletAmount.");
                transferAmount = takeBuyFees(amount, to);
            }

            if(from != uniswapV2Pair){
                require(amount <= _maxTxAmount, "Transfer Amount exceeds the maxTxnsAmount");
                transferAmount = takeSellFees(amount, from);
                forceSwapCount += 1;

               if (balanceOf(address(this)) >= swapTokenAtAmount && !swapping) {
                    swapping = true;
                    swapBack(swapTokenAtAmount);
                    swapping = false;
                    forceSwapCount = 0;
              }

                if (forceSwapCount > 5 && !swapping) {
                    swapping = true;
                    swapBack(balanceOf(address(this)));
                    swapping = false;
                    forceSwapCount = 0;
              }
            }

            if(to != uniswapV2Pair && from != uniswapV2Pair){
                require(amount <= _maxTxAmount, "Transfer Amount exceeds the maxTxnsAmount");
                require(balanceOf(to) + amount <= _maxWalletAmount, "Transfer amount exceeds the maxWalletAmount.");
            }
        }
        
        balances[to] += transferAmount;
        emit Transfer(from, to, transferAmount);
    }
   
    function swapBack(uint256 amount) private {
        uint256 contractBalance = amount;
        uint256 liquidityTokens = contractBalance * (buyFee.liquidity + sellFee.liquidity) / (buyFee.marketing + buyFee.liquidity + sellFee.marketing + sellFee.liquidity);
        uint256 marketingTokens = contractBalance * (buyFee.marketing + sellFee.marketing) / (buyFee.marketing + buyFee.liquidity + sellFee.marketing + sellFee.liquidity);
        uint256 totalTokensToSwap = liquidityTokens + marketingTokens;
        
        uint256 tokensForLiquidity = liquidityTokens.div(2);
        uint256 amountToSwapForETH = contractBalance.sub(tokensForLiquidity);
        uint256 initialETHBalance = address(this).balance;
        swapTokensForEth(amountToSwapForETH); 
        uint256 ethBalance = address(this).balance.sub(initialETHBalance);
        
        uint256 ethForLiquidity = ethBalance.mul(liquidityTokens).div(totalTokensToSwap);
        addLiquidity(tokensForLiquidity, ethForLiquidity);
        payable(marketingWallet).transfer(address(this).balance);
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        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 addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        uniswapV2Router.addLiquidityETH {value: ethAmount} (
            address(this),
            tokenAmount,
            0,
            0,
            liquidityReceiver,
            block.timestamp
        );
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"marketingAddress","type":"address"},{"internalType":"address","name":"liquidityAddress","type":"address"}],"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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","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":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyMarketingFee","type":"uint256"},{"internalType":"uint256","name":"_buyLiquidityFee","type":"uint256"},{"internalType":"uint256","name":"_sellMarketingFee","type":"uint256"},{"internalType":"uint256","name":"_sellLiquidityFee","type":"uint256"}],"name":"adjustFees","outputs":[],"stateMutability":"nonpayable","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":"buyFee","outputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"forceSwapCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"liquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokenAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","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 IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxTx","type":"uint256"},{"internalType":"uint256","name":"_maxWallet","type":"uint256"}],"name":"updateMaxTransactions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526009600a62000014919062000820565b6402540be40062000026919062000871565b6006556000600760006101000a81548160ff0219169083151502179055506009600a62000054919062000820565b6305f5e10062000065919062000871565b600f556009600a62000078919062000820565b6305f5e10062000089919062000871565b6010556009600a6200009c919062000820565b6305f5e100620000ad919062000871565b601155348015620000bd57600080fd5b5060405162003e5f38038062003e5f8339818101604052810190620000e3919062000926565b6000620000f56200067e60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35081601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600654600360006200022c6200067e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002d1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f791906200096d565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200035f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200038591906200096d565b6040518363ffffffff1660e01b8152600401620003a4929190620009b0565b6020604051808303816000875af1158015620003c4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003ea91906200096d565b90506005600a60000181905550600a80600101819055506005600c60000181905550601e600c6001018190555081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016005600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200060b6200067e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6006546040516200066c9190620009ee565b60405180910390a35050505062000a0b565b600033905090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200071457808604811115620006ec57620006eb62000686565b5b6001851615620006fc5780820291505b80810290506200070c85620006b5565b9450620006cc565b94509492505050565b6000826200072f576001905062000802565b816200073f576000905062000802565b8160018114620007585760028114620007635762000799565b600191505062000802565b60ff84111562000778576200077762000686565b5b8360020a91508482111562000792576200079162000686565b5b5062000802565b5060208310610133831016604e8410600b8410161715620007d35782820a905083811115620007cd57620007cc62000686565b5b62000802565b620007e28484846001620006c2565b92509050818404811115620007fc57620007fb62000686565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b60006200082d8262000809565b91506200083a8362000813565b9250620008697fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200071d565b905092915050565b60006200087e8262000809565b91506200088b8362000809565b92508282026200089b8162000809565b91508282048414831517620008b557620008b462000686565b5b5092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620008ee82620008c1565b9050919050565b6200090081620008e1565b81146200090c57600080fd5b50565b6000815190506200092081620008f5565b92915050565b6000806040838503121562000940576200093f620008bc565b5b600062000950858286016200090f565b925050602062000963858286016200090f565b9150509250929050565b600060208284031215620009865762000985620008bc565b5b600062000996848285016200090f565b91505092915050565b620009aa81620008e1565b82525050565b6000604082019050620009c760008301856200099f565b620009d660208301846200099f565b9392505050565b620009e88162000809565b82525050565b600060208201905062000a056000830184620009dd565b92915050565b6134448062000a1b6000396000f3fe6080604052600436106101c65760003560e01c80634fbee193116100f75780638da5cb5b11610095578063c024666811610064578063c024666814610647578063c589829d14610670578063dd62ed3e1461069b578063f2fde38b146106d8576101cd565b80638da5cb5b1461058957806395d89b41146105b4578063a9059cbb146105df578063bbc0c7421461061c576101cd565b806370a08231116100d157806370a08231146104df578063715018a61461051c57806375f0a874146105335780637d1db4a51461055e576101cd565b80634fbee193146104605780636c0a24eb1461049d5780636c580801146104c8576101cd565b8063264d26dd11610164578063363ff4801161013e578063363ff480146103a357806339509351146103cc578063470624021461040957806349bd5a5e14610435576101cd565b8063264d26dd146103215780632b14ca561461034c578063313ce56714610378576101cd565b80631694505e116101a05780631694505e1461026557806317e1df5b1461029057806318160ddd146102b957806323b872dd146102e4576101cd565b806303e403b0146101d257806306fdde03146101fd578063095ea7b314610228576101cd565b366101cd57005b600080fd5b3480156101de57600080fd5b506101e7610701565b6040516101f4919061250a565b60405180910390f35b34801561020957600080fd5b50610212610707565b60405161021f91906125b5565b60405180910390f35b34801561023457600080fd5b5061024f600480360381019061024a9190612666565b610744565b60405161025c91906126c1565b60405180910390f35b34801561027157600080fd5b5061027a610762565b604051610287919061273b565b60405180910390f35b34801561029c57600080fd5b506102b760048036038101906102b29190612756565b610788565b005b3480156102c557600080fd5b506102ce61084b565b6040516102db919061250a565b60405180910390f35b3480156102f057600080fd5b5061030b600480360381019061030691906127bd565b610855565b60405161031891906126c1565b60405180910390f35b34801561032d57600080fd5b5061033661090d565b604051610343919061281f565b60405180910390f35b34801561035857600080fd5b50610361610933565b60405161036f92919061283a565b60405180910390f35b34801561038457600080fd5b5061038d610945565b60405161039a919061287f565b60405180910390f35b3480156103af57600080fd5b506103ca60048036038101906103c5919061289a565b61094e565b005b3480156103d857600080fd5b506103f360048036038101906103ee9190612666565b610a51565b60405161040091906126c1565b60405180910390f35b34801561041557600080fd5b5061041e610afd565b60405161042c92919061283a565b60405180910390f35b34801561044157600080fd5b5061044a610b0f565b604051610457919061281f565b60405180910390f35b34801561046c57600080fd5b50610487600480360381019061048291906128da565b610b35565b60405161049491906126c1565b60405180910390f35b3480156104a957600080fd5b506104b2610b8b565b6040516104bf919061250a565b60405180910390f35b3480156104d457600080fd5b506104dd610b91565b005b3480156104eb57600080fd5b50610506600480360381019061050191906128da565b610c43565b604051610513919061250a565b60405180910390f35b34801561052857600080fd5b50610531610c8c565b005b34801561053f57600080fd5b50610548610ddf565b604051610555919061281f565b60405180910390f35b34801561056a57600080fd5b50610573610e05565b604051610580919061250a565b60405180910390f35b34801561059557600080fd5b5061059e610e0b565b6040516105ab919061281f565b60405180910390f35b3480156105c057600080fd5b506105c9610e34565b6040516105d691906125b5565b60405180910390f35b3480156105eb57600080fd5b5061060660048036038101906106019190612666565b610e71565b60405161061391906126c1565b60405180910390f35b34801561062857600080fd5b50610631610e8f565b60405161063e91906126c1565b60405180910390f35b34801561065357600080fd5b5061066e60048036038101906106699190612933565b610ea2565b005b34801561067c57600080fd5b50610685610f92565b604051610692919061250a565b60405180910390f35b3480156106a757600080fd5b506106c260048036038101906106bd9190612973565b610f98565b6040516106cf919061250a565b60405180910390f35b3480156106e457600080fd5b506106ff60048036038101906106fa91906128da565b61101f565b005b60115481565b60606040518060400160405280600881526020017f4769676163686164000000000000000000000000000000000000000000000000815250905090565b60006107586107516111e0565b84846111e8565b6001905092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6107906111e0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461081d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610814906129ff565b60405180910390fd5b82600a6000018190555083600a6001018190555080600c6000018190555081600c6001018190555050505050565b6000600654905090565b60006108628484846113b1565b6109028461086e6111e0565b84600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108b86111e0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546108fd9190612a4e565b6111e8565b600190509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c8060000154908060010154905082565b60006009905090565b6109566111e0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109da906129ff565b60405180910390fd5b6103e86006546109f39190612ab1565b81836109ff9190612ae2565b11610a3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3690612b62565b60405180910390fd5b8160108190555080600f819055505050565b6000610af3610a5e6111e0565b848460046000610a6c6111e0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610aee9190612ae2565b6111e8565b6001905092915050565b600a8060000154908060010154905082565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600f5481565b610b996111e0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1d906129ff565b60405180910390fd5b6001600760006101000a81548160ff021916908315150217905550565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610c946111e0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d18906129ff565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f4749474100000000000000000000000000000000000000000000000000000000815250905090565b6000610e85610e7e6111e0565b84846113b1565b6001905092915050565b600760009054906101000a900460ff1681565b610eaa6111e0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2e906129ff565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60125481565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6110276111e0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ab906129ff565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611123576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111a90612bf4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611257576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124e90612c86565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112bd90612d18565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516113a4919061250a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611420576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141790612daa565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361148f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148690612e3c565b60405180910390fd5b600081116114d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c990612ece565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546115219190612a4e565b9250508190555060008190506000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156115d35750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156115dd57600190505b600760009054906101000a900460ff166116d257600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806116925750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6116d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c890612f3a565b60405180910390fd5b5b8015611ad257600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146117d757601054831115611772576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176990612fcc565b60405180910390fd5b600f548361177f86610c43565b6117899190612ae2565b11156117ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c19061305e565b60405180910390fd5b6117d48385611b94565b91505b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161461198257601054831115611871576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186890612fcc565b60405180910390fd5b61187b8386611cc9565b91506001601260008282546118909190612ae2565b925050819055506011546118a330610c43565b101580156118be5750600e60009054906101000a900460ff16155b1561190d576001600e60006101000a81548160ff0219169083151502179055506118e9601154611dfe565b6000600e60006101000a81548160ff02191690831515021790555060006012819055505b600560125411801561192c5750600e60009054906101000a900460ff16155b15611981576001600e60006101000a81548160ff02191690831515021790555061195d61195830610c43565b611dfe565b6000600e60006101000a81548160ff02191690831515021790555060006012819055505b5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611a2e5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15611ad157601054831115611a78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6f90612fcc565b60405180910390fd5b600f5483611a8586610c43565b611a8f9190612ae2565b1115611ad0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac79061305e565b60405180910390fd5b5b5b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611b219190612ae2565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611b85919061250a565b60405180910390a35050505050565b6000806064600a6000015485611baa919061307e565b611bb49190612ab1565b905060006064600a6001015486611bcb919061307e565b611bd59190612ab1565b90508082611be39190612ae2565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c319190612ae2565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8484611c939190612ae2565b604051611ca0919061250a565b60405180910390a3808286611cb59190612a4e565b611cbf9190612a4e565b9250505092915050565b6000806064600c6000015485611cdf919061307e565b611ce99190612ab1565b905060006064600c6001015486611d00919061307e565b611d0a9190612ab1565b90508082611d189190612ae2565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611d669190612ae2565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8484611dc89190612ae2565b604051611dd5919061250a565b60405180910390a3808286611dea9190612a4e565b611df49190612a4e565b9250505092915050565b60008190506000600c60000154600c60010154600a60000154600a60010154611e279190612ae2565b611e319190612ae2565b611e3b9190612ae2565b600c60000154600a60000154611e519190612ae2565b83611e5c919061307e565b611e669190612ab1565b90506000600c60000154600c60010154600a60000154600a60010154611e8c9190612ae2565b611e969190612ae2565b611ea09190612ae2565b600c60010154600a60010154611eb69190612ae2565b84611ec1919061307e565b611ecb9190612ab1565b905060008183611edb9190612ae2565b90506000611ef3600285611fd990919063ffffffff16565b90506000611f0a828761202390919063ffffffff16565b90506000479050611f1a8261206d565b6000611f2f824761202390919063ffffffff16565b90506000611f5886611f4a8a856122b090919063ffffffff16565b611fd990919063ffffffff16565b9050611f64858261232a565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611fcc573d6000803e3d6000fd5b5050505050505050505050565b600061201b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061242a565b905092915050565b600061206583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061248d565b905092915050565b6000600267ffffffffffffffff81111561208a576120896130c0565b5b6040519080825280602002602001820160405280156120b85781602001602082028036833780820191505090505b50905030816000815181106120d0576120cf6130ef565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612177573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061219b9190613133565b816001815181106121af576121ae6130ef565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061221630600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846111e8565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161227a959493929190613259565b600060405180830381600087803b15801561229457600080fd5b505af11580156122a8573d6000803e3d6000fd5b505050505050565b60008083036122c25760009050612324565b600082846122d0919061307e565b90508284826122df9190612ab1565b1461231f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231690613325565b60405180910390fd5b809150505b92915050565b61235730600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846111e8565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016123e096959493929190613345565b60606040518083038185885af11580156123fe573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061242391906133bb565b5050505050565b60008083118290612471576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246891906125b5565b60405180910390fd5b50600083856124809190612ab1565b9050809150509392505050565b60008383111582906124d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124cc91906125b5565b60405180910390fd5b50600083856124e49190612a4e565b9050809150509392505050565b6000819050919050565b612504816124f1565b82525050565b600060208201905061251f60008301846124fb565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561255f578082015181840152602081019050612544565b60008484015250505050565b6000601f19601f8301169050919050565b600061258782612525565b6125918185612530565b93506125a1818560208601612541565b6125aa8161256b565b840191505092915050565b600060208201905081810360008301526125cf818461257c565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612607826125dc565b9050919050565b612617816125fc565b811461262257600080fd5b50565b6000813590506126348161260e565b92915050565b612643816124f1565b811461264e57600080fd5b50565b6000813590506126608161263a565b92915050565b6000806040838503121561267d5761267c6125d7565b5b600061268b85828601612625565b925050602061269c85828601612651565b9150509250929050565b60008115159050919050565b6126bb816126a6565b82525050565b60006020820190506126d660008301846126b2565b92915050565b6000819050919050565b60006127016126fc6126f7846125dc565b6126dc565b6125dc565b9050919050565b6000612713826126e6565b9050919050565b600061272582612708565b9050919050565b6127358161271a565b82525050565b6000602082019050612750600083018461272c565b92915050565b600080600080608085870312156127705761276f6125d7565b5b600061277e87828801612651565b945050602061278f87828801612651565b93505060406127a087828801612651565b92505060606127b187828801612651565b91505092959194509250565b6000806000606084860312156127d6576127d56125d7565b5b60006127e486828701612625565b93505060206127f586828701612625565b925050604061280686828701612651565b9150509250925092565b612819816125fc565b82525050565b60006020820190506128346000830184612810565b92915050565b600060408201905061284f60008301856124fb565b61285c60208301846124fb565b9392505050565b600060ff82169050919050565b61287981612863565b82525050565b60006020820190506128946000830184612870565b92915050565b600080604083850312156128b1576128b06125d7565b5b60006128bf85828601612651565b92505060206128d085828601612651565b9150509250929050565b6000602082840312156128f0576128ef6125d7565b5b60006128fe84828501612625565b91505092915050565b612910816126a6565b811461291b57600080fd5b50565b60008135905061292d81612907565b92915050565b6000806040838503121561294a576129496125d7565b5b600061295885828601612625565b92505060206129698582860161291e565b9150509250929050565b6000806040838503121561298a576129896125d7565b5b600061299885828601612625565b92505060206129a985828601612625565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006129e9602083612530565b91506129f4826129b3565b602082019050919050565b60006020820190508181036000830152612a18816129dc565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612a59826124f1565b9150612a64836124f1565b9250828203905081811115612a7c57612a7b612a1f565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612abc826124f1565b9150612ac7836124f1565b925082612ad757612ad6612a82565b5b828204905092915050565b6000612aed826124f1565b9150612af8836124f1565b9250828201905080821115612b1057612b0f612a1f565b5b92915050565b7f53686f756c6420626520626967676572207468616e20302c3125000000000000600082015250565b6000612b4c601a83612530565b9150612b5782612b16565b602082019050919050565b60006020820190508181036000830152612b7b81612b3f565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612bde602683612530565b9150612be982612b82565b604082019050919050565b60006020820190508181036000830152612c0d81612bd1565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612c70602483612530565b9150612c7b82612c14565b604082019050919050565b60006020820190508181036000830152612c9f81612c63565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612d02602283612530565b9150612d0d82612ca6565b604082019050919050565b60006020820190508181036000830152612d3181612cf5565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612d94602583612530565b9150612d9f82612d38565b604082019050919050565b60006020820190508181036000830152612dc381612d87565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612e26602383612530565b9150612e3182612dca565b604082019050919050565b60006020820190508181036000830152612e5581612e19565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612eb8602983612530565b9150612ec382612e5c565b604082019050919050565b60006020820190508181036000830152612ee781612eab565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000612f24601683612530565b9150612f2f82612eee565b602082019050919050565b60006020820190508181036000830152612f5381612f17565b9050919050565b7f5472616e7366657220416d6f756e74206578636565647320746865206d61785460008201527f786e73416d6f756e740000000000000000000000000000000000000000000000602082015250565b6000612fb6602983612530565b9150612fc182612f5a565b604082019050919050565b60006020820190508181036000830152612fe581612fa9565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785760008201527f616c6c6574416d6f756e742e0000000000000000000000000000000000000000602082015250565b6000613048602c83612530565b915061305382612fec565b604082019050919050565b600060208201905081810360008301526130778161303b565b9050919050565b6000613089826124f1565b9150613094836124f1565b92508282026130a2816124f1565b915082820484148315176130b9576130b8612a1f565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061312d8161260e565b92915050565b600060208284031215613149576131486125d7565b5b60006131578482850161311e565b91505092915050565b6000819050919050565b600061318561318061317b84613160565b6126dc565b6124f1565b9050919050565b6131958161316a565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6131d0816125fc565b82525050565b60006131e283836131c7565b60208301905092915050565b6000602082019050919050565b60006132068261319b565b61321081856131a6565b935061321b836131b7565b8060005b8381101561324c57815161323388826131d6565b975061323e836131ee565b92505060018101905061321f565b5085935050505092915050565b600060a08201905061326e60008301886124fb565b61327b602083018761318c565b818103604083015261328d81866131fb565b905061329c6060830185612810565b6132a960808301846124fb565b9695505050505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061330f602183612530565b915061331a826132b3565b604082019050919050565b6000602082019050818103600083015261333e81613302565b9050919050565b600060c08201905061335a6000830189612810565b61336760208301886124fb565b613374604083018761318c565b613381606083018661318c565b61338e6080830185612810565b61339b60a08301846124fb565b979650505050505050565b6000815190506133b58161263a565b92915050565b6000806000606084860312156133d4576133d36125d7565b5b60006133e2868287016133a6565b93505060206133f3868287016133a6565b9250506040613404868287016133a6565b915050925092509256fea2646970667358221220eda8e454d24b1d579fd1893c7194389a43a501468bf50cdd79d85e62db8ee23664736f6c634300081200330000000000000000000000009a68c213bf2498faf24b3c5e8bf017191027c2b50000000000000000000000009a68c213bf2498faf24b3c5e8bf017191027c2b5

Deployed Bytecode

0x6080604052600436106101c65760003560e01c80634fbee193116100f75780638da5cb5b11610095578063c024666811610064578063c024666814610647578063c589829d14610670578063dd62ed3e1461069b578063f2fde38b146106d8576101cd565b80638da5cb5b1461058957806395d89b41146105b4578063a9059cbb146105df578063bbc0c7421461061c576101cd565b806370a08231116100d157806370a08231146104df578063715018a61461051c57806375f0a874146105335780637d1db4a51461055e576101cd565b80634fbee193146104605780636c0a24eb1461049d5780636c580801146104c8576101cd565b8063264d26dd11610164578063363ff4801161013e578063363ff480146103a357806339509351146103cc578063470624021461040957806349bd5a5e14610435576101cd565b8063264d26dd146103215780632b14ca561461034c578063313ce56714610378576101cd565b80631694505e116101a05780631694505e1461026557806317e1df5b1461029057806318160ddd146102b957806323b872dd146102e4576101cd565b806303e403b0146101d257806306fdde03146101fd578063095ea7b314610228576101cd565b366101cd57005b600080fd5b3480156101de57600080fd5b506101e7610701565b6040516101f4919061250a565b60405180910390f35b34801561020957600080fd5b50610212610707565b60405161021f91906125b5565b60405180910390f35b34801561023457600080fd5b5061024f600480360381019061024a9190612666565b610744565b60405161025c91906126c1565b60405180910390f35b34801561027157600080fd5b5061027a610762565b604051610287919061273b565b60405180910390f35b34801561029c57600080fd5b506102b760048036038101906102b29190612756565b610788565b005b3480156102c557600080fd5b506102ce61084b565b6040516102db919061250a565b60405180910390f35b3480156102f057600080fd5b5061030b600480360381019061030691906127bd565b610855565b60405161031891906126c1565b60405180910390f35b34801561032d57600080fd5b5061033661090d565b604051610343919061281f565b60405180910390f35b34801561035857600080fd5b50610361610933565b60405161036f92919061283a565b60405180910390f35b34801561038457600080fd5b5061038d610945565b60405161039a919061287f565b60405180910390f35b3480156103af57600080fd5b506103ca60048036038101906103c5919061289a565b61094e565b005b3480156103d857600080fd5b506103f360048036038101906103ee9190612666565b610a51565b60405161040091906126c1565b60405180910390f35b34801561041557600080fd5b5061041e610afd565b60405161042c92919061283a565b60405180910390f35b34801561044157600080fd5b5061044a610b0f565b604051610457919061281f565b60405180910390f35b34801561046c57600080fd5b50610487600480360381019061048291906128da565b610b35565b60405161049491906126c1565b60405180910390f35b3480156104a957600080fd5b506104b2610b8b565b6040516104bf919061250a565b60405180910390f35b3480156104d457600080fd5b506104dd610b91565b005b3480156104eb57600080fd5b50610506600480360381019061050191906128da565b610c43565b604051610513919061250a565b60405180910390f35b34801561052857600080fd5b50610531610c8c565b005b34801561053f57600080fd5b50610548610ddf565b604051610555919061281f565b60405180910390f35b34801561056a57600080fd5b50610573610e05565b604051610580919061250a565b60405180910390f35b34801561059557600080fd5b5061059e610e0b565b6040516105ab919061281f565b60405180910390f35b3480156105c057600080fd5b506105c9610e34565b6040516105d691906125b5565b60405180910390f35b3480156105eb57600080fd5b5061060660048036038101906106019190612666565b610e71565b60405161061391906126c1565b60405180910390f35b34801561062857600080fd5b50610631610e8f565b60405161063e91906126c1565b60405180910390f35b34801561065357600080fd5b5061066e60048036038101906106699190612933565b610ea2565b005b34801561067c57600080fd5b50610685610f92565b604051610692919061250a565b60405180910390f35b3480156106a757600080fd5b506106c260048036038101906106bd9190612973565b610f98565b6040516106cf919061250a565b60405180910390f35b3480156106e457600080fd5b506106ff60048036038101906106fa91906128da565b61101f565b005b60115481565b60606040518060400160405280600881526020017f4769676163686164000000000000000000000000000000000000000000000000815250905090565b60006107586107516111e0565b84846111e8565b6001905092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6107906111e0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461081d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610814906129ff565b60405180910390fd5b82600a6000018190555083600a6001018190555080600c6000018190555081600c6001018190555050505050565b6000600654905090565b60006108628484846113b1565b6109028461086e6111e0565b84600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108b86111e0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546108fd9190612a4e565b6111e8565b600190509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c8060000154908060010154905082565b60006009905090565b6109566111e0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109da906129ff565b60405180910390fd5b6103e86006546109f39190612ab1565b81836109ff9190612ae2565b11610a3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3690612b62565b60405180910390fd5b8160108190555080600f819055505050565b6000610af3610a5e6111e0565b848460046000610a6c6111e0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610aee9190612ae2565b6111e8565b6001905092915050565b600a8060000154908060010154905082565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600f5481565b610b996111e0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1d906129ff565b60405180910390fd5b6001600760006101000a81548160ff021916908315150217905550565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610c946111e0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d18906129ff565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f4749474100000000000000000000000000000000000000000000000000000000815250905090565b6000610e85610e7e6111e0565b84846113b1565b6001905092915050565b600760009054906101000a900460ff1681565b610eaa6111e0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2e906129ff565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60125481565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6110276111e0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ab906129ff565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611123576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111a90612bf4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611257576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124e90612c86565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112bd90612d18565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516113a4919061250a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611420576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141790612daa565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361148f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148690612e3c565b60405180910390fd5b600081116114d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c990612ece565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546115219190612a4e565b9250508190555060008190506000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156115d35750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156115dd57600190505b600760009054906101000a900460ff166116d257600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806116925750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6116d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c890612f3a565b60405180910390fd5b5b8015611ad257600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146117d757601054831115611772576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176990612fcc565b60405180910390fd5b600f548361177f86610c43565b6117899190612ae2565b11156117ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c19061305e565b60405180910390fd5b6117d48385611b94565b91505b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161461198257601054831115611871576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186890612fcc565b60405180910390fd5b61187b8386611cc9565b91506001601260008282546118909190612ae2565b925050819055506011546118a330610c43565b101580156118be5750600e60009054906101000a900460ff16155b1561190d576001600e60006101000a81548160ff0219169083151502179055506118e9601154611dfe565b6000600e60006101000a81548160ff02191690831515021790555060006012819055505b600560125411801561192c5750600e60009054906101000a900460ff16155b15611981576001600e60006101000a81548160ff02191690831515021790555061195d61195830610c43565b611dfe565b6000600e60006101000a81548160ff02191690831515021790555060006012819055505b5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611a2e5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15611ad157601054831115611a78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6f90612fcc565b60405180910390fd5b600f5483611a8586610c43565b611a8f9190612ae2565b1115611ad0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac79061305e565b60405180910390fd5b5b5b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611b219190612ae2565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611b85919061250a565b60405180910390a35050505050565b6000806064600a6000015485611baa919061307e565b611bb49190612ab1565b905060006064600a6001015486611bcb919061307e565b611bd59190612ab1565b90508082611be39190612ae2565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c319190612ae2565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8484611c939190612ae2565b604051611ca0919061250a565b60405180910390a3808286611cb59190612a4e565b611cbf9190612a4e565b9250505092915050565b6000806064600c6000015485611cdf919061307e565b611ce99190612ab1565b905060006064600c6001015486611d00919061307e565b611d0a9190612ab1565b90508082611d189190612ae2565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611d669190612ae2565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8484611dc89190612ae2565b604051611dd5919061250a565b60405180910390a3808286611dea9190612a4e565b611df49190612a4e565b9250505092915050565b60008190506000600c60000154600c60010154600a60000154600a60010154611e279190612ae2565b611e319190612ae2565b611e3b9190612ae2565b600c60000154600a60000154611e519190612ae2565b83611e5c919061307e565b611e669190612ab1565b90506000600c60000154600c60010154600a60000154600a60010154611e8c9190612ae2565b611e969190612ae2565b611ea09190612ae2565b600c60010154600a60010154611eb69190612ae2565b84611ec1919061307e565b611ecb9190612ab1565b905060008183611edb9190612ae2565b90506000611ef3600285611fd990919063ffffffff16565b90506000611f0a828761202390919063ffffffff16565b90506000479050611f1a8261206d565b6000611f2f824761202390919063ffffffff16565b90506000611f5886611f4a8a856122b090919063ffffffff16565b611fd990919063ffffffff16565b9050611f64858261232a565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611fcc573d6000803e3d6000fd5b5050505050505050505050565b600061201b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061242a565b905092915050565b600061206583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061248d565b905092915050565b6000600267ffffffffffffffff81111561208a576120896130c0565b5b6040519080825280602002602001820160405280156120b85781602001602082028036833780820191505090505b50905030816000815181106120d0576120cf6130ef565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612177573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061219b9190613133565b816001815181106121af576121ae6130ef565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061221630600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846111e8565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161227a959493929190613259565b600060405180830381600087803b15801561229457600080fd5b505af11580156122a8573d6000803e3d6000fd5b505050505050565b60008083036122c25760009050612324565b600082846122d0919061307e565b90508284826122df9190612ab1565b1461231f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231690613325565b60405180910390fd5b809150505b92915050565b61235730600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846111e8565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016123e096959493929190613345565b60606040518083038185885af11580156123fe573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061242391906133bb565b5050505050565b60008083118290612471576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246891906125b5565b60405180910390fd5b50600083856124809190612ab1565b9050809150509392505050565b60008383111582906124d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124cc91906125b5565b60405180910390fd5b50600083856124e49190612a4e565b9050809150509392505050565b6000819050919050565b612504816124f1565b82525050565b600060208201905061251f60008301846124fb565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561255f578082015181840152602081019050612544565b60008484015250505050565b6000601f19601f8301169050919050565b600061258782612525565b6125918185612530565b93506125a1818560208601612541565b6125aa8161256b565b840191505092915050565b600060208201905081810360008301526125cf818461257c565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612607826125dc565b9050919050565b612617816125fc565b811461262257600080fd5b50565b6000813590506126348161260e565b92915050565b612643816124f1565b811461264e57600080fd5b50565b6000813590506126608161263a565b92915050565b6000806040838503121561267d5761267c6125d7565b5b600061268b85828601612625565b925050602061269c85828601612651565b9150509250929050565b60008115159050919050565b6126bb816126a6565b82525050565b60006020820190506126d660008301846126b2565b92915050565b6000819050919050565b60006127016126fc6126f7846125dc565b6126dc565b6125dc565b9050919050565b6000612713826126e6565b9050919050565b600061272582612708565b9050919050565b6127358161271a565b82525050565b6000602082019050612750600083018461272c565b92915050565b600080600080608085870312156127705761276f6125d7565b5b600061277e87828801612651565b945050602061278f87828801612651565b93505060406127a087828801612651565b92505060606127b187828801612651565b91505092959194509250565b6000806000606084860312156127d6576127d56125d7565b5b60006127e486828701612625565b93505060206127f586828701612625565b925050604061280686828701612651565b9150509250925092565b612819816125fc565b82525050565b60006020820190506128346000830184612810565b92915050565b600060408201905061284f60008301856124fb565b61285c60208301846124fb565b9392505050565b600060ff82169050919050565b61287981612863565b82525050565b60006020820190506128946000830184612870565b92915050565b600080604083850312156128b1576128b06125d7565b5b60006128bf85828601612651565b92505060206128d085828601612651565b9150509250929050565b6000602082840312156128f0576128ef6125d7565b5b60006128fe84828501612625565b91505092915050565b612910816126a6565b811461291b57600080fd5b50565b60008135905061292d81612907565b92915050565b6000806040838503121561294a576129496125d7565b5b600061295885828601612625565b92505060206129698582860161291e565b9150509250929050565b6000806040838503121561298a576129896125d7565b5b600061299885828601612625565b92505060206129a985828601612625565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006129e9602083612530565b91506129f4826129b3565b602082019050919050565b60006020820190508181036000830152612a18816129dc565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612a59826124f1565b9150612a64836124f1565b9250828203905081811115612a7c57612a7b612a1f565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612abc826124f1565b9150612ac7836124f1565b925082612ad757612ad6612a82565b5b828204905092915050565b6000612aed826124f1565b9150612af8836124f1565b9250828201905080821115612b1057612b0f612a1f565b5b92915050565b7f53686f756c6420626520626967676572207468616e20302c3125000000000000600082015250565b6000612b4c601a83612530565b9150612b5782612b16565b602082019050919050565b60006020820190508181036000830152612b7b81612b3f565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612bde602683612530565b9150612be982612b82565b604082019050919050565b60006020820190508181036000830152612c0d81612bd1565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612c70602483612530565b9150612c7b82612c14565b604082019050919050565b60006020820190508181036000830152612c9f81612c63565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612d02602283612530565b9150612d0d82612ca6565b604082019050919050565b60006020820190508181036000830152612d3181612cf5565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612d94602583612530565b9150612d9f82612d38565b604082019050919050565b60006020820190508181036000830152612dc381612d87565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612e26602383612530565b9150612e3182612dca565b604082019050919050565b60006020820190508181036000830152612e5581612e19565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612eb8602983612530565b9150612ec382612e5c565b604082019050919050565b60006020820190508181036000830152612ee781612eab565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000612f24601683612530565b9150612f2f82612eee565b602082019050919050565b60006020820190508181036000830152612f5381612f17565b9050919050565b7f5472616e7366657220416d6f756e74206578636565647320746865206d61785460008201527f786e73416d6f756e740000000000000000000000000000000000000000000000602082015250565b6000612fb6602983612530565b9150612fc182612f5a565b604082019050919050565b60006020820190508181036000830152612fe581612fa9565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785760008201527f616c6c6574416d6f756e742e0000000000000000000000000000000000000000602082015250565b6000613048602c83612530565b915061305382612fec565b604082019050919050565b600060208201905081810360008301526130778161303b565b9050919050565b6000613089826124f1565b9150613094836124f1565b92508282026130a2816124f1565b915082820484148315176130b9576130b8612a1f565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061312d8161260e565b92915050565b600060208284031215613149576131486125d7565b5b60006131578482850161311e565b91505092915050565b6000819050919050565b600061318561318061317b84613160565b6126dc565b6124f1565b9050919050565b6131958161316a565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6131d0816125fc565b82525050565b60006131e283836131c7565b60208301905092915050565b6000602082019050919050565b60006132068261319b565b61321081856131a6565b935061321b836131b7565b8060005b8381101561324c57815161323388826131d6565b975061323e836131ee565b92505060018101905061321f565b5085935050505092915050565b600060a08201905061326e60008301886124fb565b61327b602083018761318c565b818103604083015261328d81866131fb565b905061329c6060830185612810565b6132a960808301846124fb565b9695505050505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061330f602183612530565b915061331a826132b3565b604082019050919050565b6000602082019050818103600083015261333e81613302565b9050919050565b600060c08201905061335a6000830189612810565b61336760208301886124fb565b613374604083018761318c565b613381606083018661318c565b61338e6080830185612810565b61339b60a08301846124fb565b979650505050505050565b6000815190506133b58161263a565b92915050565b6000806000606084860312156133d4576133d36125d7565b5b60006133e2868287016133a6565b93505060206133f3868287016133a6565b9250506040613404868287016133a6565b915050925092509256fea2646970667358221220eda8e454d24b1d579fd1893c7194389a43a501468bf50cdd79d85e62db8ee23664736f6c63430008120033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000009a68c213bf2498faf24b3c5e8bf017191027c2b50000000000000000000000009a68c213bf2498faf24b3c5e8bf017191027c2b5

-----Decoded View---------------
Arg [0] : marketingAddress (address): 0x9A68c213BF2498Faf24b3C5e8Bf017191027C2b5
Arg [1] : liquidityAddress (address): 0x9A68c213BF2498Faf24b3C5e8Bf017191027C2b5

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000009a68c213bf2498faf24b3c5e8bf017191027c2b5
Arg [1] : 0000000000000000000000009a68c213bf2498faf24b3c5e8bf017191027c2b5


Deployed Bytecode Sourcemap

5588:10230:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6474:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7835:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8577:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5674:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10588:339;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8058:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8746:266;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6577:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6287:23;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;7985:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10935:250;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9020:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6259:21;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;5724:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10368:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6345:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10500:80;;;;;;;;;;;;;:::i;:::-;;8143:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3368:148;;;;;;;;;;;;;:::i;:::-;;6616:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6411:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3154:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7908:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8251:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6149:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9247:140;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6541:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8426:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3524:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6474:60;;;;:::o;7835:67::-;7872:13;7895:5;;;;;;;;;;;;;;;;;7888:12;;7835:67;:::o;8577:161::-;8652:4;8669:39;8678:12;:10;:12::i;:::-;8692:7;8701:6;8669:8;:39::i;:::-;8726:4;8719:11;;8577:161;;;;:::o;5674:41::-;;;;;;;;;;;;;:::o;10588:339::-;3291:12;:10;:12::i;:::-;3281:22;;:6;;;;;;;;;;:22;;;3273:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10761:16:::1;10742:6;:16;;:35;;;;10807:16;10788:6;:16;;:35;;;;10854:17;10834:7;:17;;:37;;;;10902:17;10882:7;:17;;:37;;;;10588:339:::0;;;;:::o;8058:79::-;8111:7;8128;;8121:14;;8058:79;:::o;8746:266::-;8844:4;8861:36;8871:6;8879:9;8890:6;8861:9;:36::i;:::-;8908:74;8917:6;8925:12;:10;:12::i;:::-;8975:6;8939:11;:19;8951:6;8939:19;;;;;;;;;;;;;;;:33;8959:12;:10;:12::i;:::-;8939:33;;;;;;;;;;;;;;;;:42;;;;:::i;:::-;8908:8;:74::i;:::-;9000:4;8993:11;;8746:266;;;;;:::o;6577:32::-;;;;;;;;;;;;;:::o;6287:23::-;;;;;;;;;;;;;;:::o;7985:67::-;8026:5;6079:1;8034:16;;7985:67;:::o;10935:250::-;3291:12;:10;:12::i;:::-;3281:22;;:6;;;;;;;;;;:22;;;3273:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11070:4:::1;11060:7;;:14;;;;:::i;:::-;11047:10;11038:6;:19;;;;:::i;:::-;:36;11030:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;11131:6;11116:12;:21;;;;11167:10;11148:16;:29;;;;10935:250:::0;;:::o;9020:215::-;9108:4;9125:80;9134:12;:10;:12::i;:::-;9148:7;9194:10;9157:11;:25;9169:12;:10;:12::i;:::-;9157:25;;;;;;;;;;;;;;;:34;9183:7;9157:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;9125:8;:80::i;:::-;9223:4;9216:11;;9020:215;;;;:::o;6259:21::-;;;;;;;;;;;;;;:::o;5724:28::-;;;;;;;;;;;;;:::o;10368:124::-;10433:4;10457:18;:27;10476:7;10457:27;;;;;;;;;;;;;;;;;;;;;;;;;10450:34;;10368:124;;;:::o;6345:59::-;;;;:::o;10500:80::-;3291:12;:10;:12::i;:::-;3281:22;;:6;;;;;;;;;;:22;;;3273:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10568:4:::1;10552:13;;:20;;;;;;;;;;;;;;;;;;10500:80::o:0;8143:102::-;8209:7;8226:8;:17;8235:7;8226:17;;;;;;;;;;;;;;;;8219:24;;8143:102;;;:::o;3368:148::-;3291:12;:10;:12::i;:::-;3281:22;;:6;;;;;;;;;;:22;;;3273:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3475:1:::1;3438:40;;3459:6;::::0;::::1;;;;;;;;3438:40;;;;;;;;;;;;3506:1;3489:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;3368:148::o:0;6616:30::-;;;;;;;;;;;;;:::o;6411:56::-;;;;:::o;3154:79::-;3192:7;3219:6;;;;;;;;;;;3212:13;;3154:79;:::o;7908:71::-;7947:13;7970:7;;;;;;;;;;;;;;;;;7963:14;;7908:71;:::o;8251:167::-;8329:4;8346:42;8356:12;:10;:12::i;:::-;8370:9;8381:6;8346:9;:42::i;:::-;8406:4;8399:11;;8251:167;;;;:::o;6149:33::-;;;;;;;;;;;;;:::o;9247:140::-;3291:12;:10;:12::i;:::-;3281:22;;:6;;;;;;;;;;:22;;;3273:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9371:8:::1;9332:18;:36;9359:7;9332:36;;;;;;;;;;;;;;;;:47;;;;;;;;;;;;;;;;;;9247:140:::0;;:::o;6541:29::-;;;;:::o;8426:143::-;8507:7;8534:11;:18;8546:5;8534:18;;;;;;;;;;;;;;;:27;8553:7;8534:27;;;;;;;;;;;;;;;;8527:34;;8426:143;;;;:::o;3524:244::-;3291:12;:10;:12::i;:::-;3281:22;;:6;;;;;;;;;;:22;;;3273:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3633:1:::1;3613:22;;:8;:22;;::::0;3605:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3723:8;3694:38;;3715:6;::::0;::::1;;;;;;;;3694:38;;;;;;;;;;;;3752:8;3743:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;3524:244:::0;:::o;1038:115::-;1091:15;1134:10;1119:26;;1038:115;:::o;11193:337::-;11303:1;11286:19;;:5;:19;;;11278:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11384:1;11365:21;;:7;:21;;;11357:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11468:6;11438:11;:18;11450:5;11438:18;;;;;;;;;;;;;;;:27;11457:7;11438:27;;;;;;;;;;;;;;;:36;;;;11506:7;11490:32;;11499:5;11490:32;;;11515:6;11490:32;;;;;;:::i;:::-;;;;;;;;11193:337;;;:::o;11538:2327::-;11676:1;11660:18;;:4;:18;;;11652:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11753:1;11739:16;;:2;:16;;;11731:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11823:1;11814:6;:10;11806:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11909:6;11891:8;:14;11900:4;11891:14;;;;;;;;;;;;;;;;:24;;;;;;;:::i;:::-;;;;;;;;11926:22;11951:6;11926:31;;11978:12;12007:18;:24;12026:4;12007:24;;;;;;;;;;;;;;;;;;;;;;;;;12006:25;:52;;;;;12036:18;:22;12055:2;12036:22;;;;;;;;;;;;;;;;;;;;;;;;;12035:23;12006:52;12003:97;;;12084:4;12074:14;;12003:97;12117:13;;;;;;;;;;;12112:221;;12189:18;:24;12208:4;12189:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;12217:18;:22;12236:2;12217:22;;;;;;;;;;;;;;;;;;;;;;;;;12189:50;12155:158;;;;;;;;;;;;:::i;:::-;;;;;;;;;12112:221;12348:7;12345:1412;;;12380:13;;;;;;;;;;;12374:19;;:2;:19;;;12371:311;;12431:12;;12421:6;:22;;12413:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;12542:16;;12532:6;12516:13;12526:2;12516:9;:13::i;:::-;:22;;;;:::i;:::-;:42;;12508:99;;;;;;;;;;;;:::i;:::-;;;;;;;;;12643:23;12655:6;12663:2;12643:11;:23::i;:::-;12626:40;;12371:311;12709:13;;;;;;;;;;;12701:21;;:4;:21;;;12698:755;;12760:12;;12750:6;:22;;12742:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;12854:26;12867:6;12875:4;12854:12;:26::i;:::-;12837:43;;12917:1;12899:14;;:19;;;;;;;:::i;:::-;;;;;;;;12970:17;;12942:24;12960:4;12942:9;:24::i;:::-;:45;;:58;;;;;12992:8;;;;;;;;;;;12991:9;12942:58;12938:250;;;13036:4;13025:8;;:15;;;;;;;;;;;;;;;;;;13063:27;13072:17;;13063:8;:27::i;:::-;13124:5;13113:8;;:16;;;;;;;;;;;;;;;;;;13169:1;13152:14;:18;;;;12938:250;13229:1;13212:14;;:18;:31;;;;;13235:8;;;;;;;;;;;13234:9;13212:31;13208:230;;;13279:4;13268:8;;:15;;;;;;;;;;;;;;;;;;13306:34;13315:24;13333:4;13315:9;:24::i;:::-;13306:8;:34::i;:::-;13374:5;13363:8;;:16;;;;;;;;;;;;;;;;;;13419:1;13402:14;:18;;;;13208:230;12698:755;13478:13;;;;;;;;;;;13472:19;;:2;:19;;;;:44;;;;;13503:13;;;;;;;;;;;13495:21;;:4;:21;;;;13472:44;13469:277;;;13554:12;;13544:6;:22;;13536:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;13665:16;;13655:6;13639:13;13649:2;13639:9;:13::i;:::-;:22;;;;:::i;:::-;:42;;13631:99;;;;;;;;;;;;:::i;:::-;;;;;;;;;13469:277;12345:1412;13793:14;13777:8;:12;13786:2;13777:12;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;13838:2;13823:34;;13832:4;13823:34;;;13842:14;13823:34;;;;;;:::i;:::-;;;;;;;;11641:2224;;11538:2327;;;:::o;9436:456::-;9504:7;9524:25;9580:3;9561:6;:16;;;9552:6;:25;;;;:::i;:::-;:31;;;;:::i;:::-;9524:59;;9595:26;9652:3;9633:6;:16;;;9624:6;:25;;;;:::i;:::-;:31;;;;:::i;:::-;9595:60;;9715:18;9695:17;:38;;;;:::i;:::-;9668:8;:23;9685:4;9668:23;;;;;;;;;;;;;;;;:65;;;;;;;:::i;:::-;;;;;;;;9773:4;9749:70;;9759:4;9749:70;;;9801:17;9780:18;:38;;;;:::i;:::-;9749:70;;;;;;:::i;:::-;;;;;;;;9865:18;9846:17;9838:6;:25;;;;:::i;:::-;:45;;;;:::i;:::-;9830:54;;;;9436:456;;;;:::o;9900:460::-;9969:7;9989:25;10046:3;10026:7;:17;;;10017:6;:26;;;;:::i;:::-;:32;;;;:::i;:::-;9989:60;;10061:26;10119:3;10099:7;:17;;;10090:6;:26;;;;:::i;:::-;:32;;;;:::i;:::-;10061:61;;10182:18;10162:17;:38;;;;:::i;:::-;10135:8;:23;10152:4;10135:23;;;;;;;;;;;;;;;;:65;;;;;;;:::i;:::-;;;;;;;;10240:4;10216:71;;10226:4;10216:71;;;10268:17;10247:18;:38;;;;:::i;:::-;10216:71;;;;;;:::i;:::-;;;;;;;;10333:18;10314:17;10306:6;:25;;;;:::i;:::-;:45;;;;:::i;:::-;10298:54;;;;9900:460;;;;:::o;13876:1074::-;13929:23;13955:6;13929:32;;13972:23;14116:7;:17;;;14096:7;:17;;;14077:6;:16;;;14058:6;:16;;;:35;;;;:::i;:::-;:55;;;;:::i;:::-;:75;;;;:::i;:::-;14036:7;:17;;;14017:6;:16;;;:36;;;;:::i;:::-;13998:15;:56;;;;:::i;:::-;:136;;;;:::i;:::-;13972:162;;14145:23;14289:7;:17;;;14269:7;:17;;;14250:6;:16;;;14231:6;:16;;;:35;;;;:::i;:::-;:55;;;;:::i;:::-;:75;;;;:::i;:::-;14209:7;:17;;;14190:6;:16;;;:36;;;;:::i;:::-;14171:15;:56;;;;:::i;:::-;:136;;;;:::i;:::-;14145:162;;14318:25;14364:15;14346;:33;;;;:::i;:::-;14318:61;;14400:26;14429:22;14449:1;14429:15;:19;;:22;;;;:::i;:::-;14400:51;;14462:26;14491:39;14511:18;14491:15;:19;;:39;;;;:::i;:::-;14462:68;;14541:25;14569:21;14541:49;;14601:36;14618:18;14601:16;:36::i;:::-;14649:18;14670:44;14696:17;14670:21;:25;;:44;;;;:::i;:::-;14649:65;;14735:23;14761:54;14797:17;14761:31;14776:15;14761:10;:14;;:31;;;;:::i;:::-;:35;;:54;;;;:::i;:::-;14735:80;;14826:49;14839:18;14859:15;14826:12;:49::i;:::-;14894:15;;;;;;;;;;;14886:33;;:56;14920:21;14886:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13918:1032;;;;;;;;;13876:1074;:::o;2097:132::-;2155:7;2182:39;2186:1;2189;2182:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2175:46;;2097:132;;;;:::o;1495:136::-;1553:7;1580:43;1584:1;1587;1580:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1573:50;;1495:136;;;;:::o;14958:475::-;15024:21;15062:1;15048:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15024:40;;15093:4;15075;15080:1;15075:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;15119:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15109:4;15114:1;15109:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;15154:62;15171:4;15186:15;;;;;;;;;;;15204:11;15154:8;:62::i;:::-;15229:15;;;;;;;;;;;:66;;;15310:11;15336:1;15352:4;15379;15399:15;15229:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15013:420;14958:475;:::o;1839:250::-;1897:7;1926:1;1921;:6;1917:47;;1951:1;1944:8;;;;1917:47;1976:9;1992:1;1988;:5;;;;:::i;:::-;1976:17;;2021:1;2016;2012;:5;;;;:::i;:::-;:10;2004:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2080:1;2073:8;;;1839:250;;;;;:::o;15441:374::-;15522:62;15539:4;15554:15;;;;;;;;;;;15572:11;15522:8;:62::i;:::-;15597:15;;;;;;;;;;;:31;;;15637:9;15671:4;15691:11;15717:1;15733;15749:17;;;;;;;;;;;15781:15;15597:210;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;15441:374;;:::o;2237:278::-;2323:7;2355:1;2351;:5;2358:12;2343:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2382:9;2398:1;2394;:5;;;;:::i;:::-;2382:17;;2506:1;2499:8;;;2237:278;;;;;:::o;1639:192::-;1725:7;1758:1;1753;:6;;1761:12;1745:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1785:9;1801:1;1797;:5;;;;:::i;:::-;1785:17;;1822:1;1815:8;;;1639:192;;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1865:117::-;1974:1;1971;1964:12;2111:126;2148:7;2188:42;2181:5;2177:54;2166:65;;2111:126;;;:::o;2243:96::-;2280:7;2309:24;2327:5;2309:24;:::i;:::-;2298:35;;2243:96;;;:::o;2345:122::-;2418:24;2436:5;2418:24;:::i;:::-;2411:5;2408:35;2398:63;;2457:1;2454;2447:12;2398:63;2345:122;:::o;2473:139::-;2519:5;2557:6;2544:20;2535:29;;2573:33;2600:5;2573:33;:::i;:::-;2473:139;;;;:::o;2618:122::-;2691:24;2709:5;2691:24;:::i;:::-;2684:5;2681:35;2671:63;;2730:1;2727;2720:12;2671:63;2618:122;:::o;2746:139::-;2792:5;2830:6;2817:20;2808:29;;2846:33;2873:5;2846:33;:::i;:::-;2746:139;;;;:::o;2891:474::-;2959:6;2967;3016:2;3004:9;2995:7;2991:23;2987:32;2984:119;;;3022:79;;:::i;:::-;2984:119;3142:1;3167:53;3212:7;3203:6;3192:9;3188:22;3167:53;:::i;:::-;3157:63;;3113:117;3269:2;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3240:118;2891:474;;;;;:::o;3371:90::-;3405:7;3448:5;3441:13;3434:21;3423:32;;3371:90;;;:::o;3467:109::-;3548:21;3563:5;3548:21;:::i;:::-;3543:3;3536:34;3467:109;;:::o;3582:210::-;3669:4;3707:2;3696:9;3692:18;3684:26;;3720:65;3782:1;3771:9;3767:17;3758:6;3720:65;:::i;:::-;3582:210;;;;:::o;3798:60::-;3826:3;3847:5;3840:12;;3798:60;;;:::o;3864:142::-;3914:9;3947:53;3965:34;3974:24;3992:5;3974:24;:::i;:::-;3965:34;:::i;:::-;3947:53;:::i;:::-;3934:66;;3864:142;;;:::o;4012:126::-;4062:9;4095:37;4126:5;4095:37;:::i;:::-;4082:50;;4012:126;;;:::o;4144:152::-;4220:9;4253:37;4284:5;4253:37;:::i;:::-;4240:50;;4144:152;;;:::o;4302:183::-;4415:63;4472:5;4415:63;:::i;:::-;4410:3;4403:76;4302:183;;:::o;4491:274::-;4610:4;4648:2;4637:9;4633:18;4625:26;;4661:97;4755:1;4744:9;4740:17;4731:6;4661:97;:::i;:::-;4491:274;;;;:::o;4771:765::-;4857:6;4865;4873;4881;4930:3;4918:9;4909:7;4905:23;4901:33;4898:120;;;4937:79;;:::i;:::-;4898:120;5057:1;5082:53;5127:7;5118:6;5107:9;5103:22;5082:53;:::i;:::-;5072:63;;5028:117;5184:2;5210:53;5255:7;5246:6;5235:9;5231:22;5210:53;:::i;:::-;5200:63;;5155:118;5312:2;5338:53;5383:7;5374:6;5363:9;5359:22;5338:53;:::i;:::-;5328:63;;5283:118;5440:2;5466:53;5511:7;5502:6;5491:9;5487:22;5466:53;:::i;:::-;5456:63;;5411:118;4771:765;;;;;;;:::o;5542:619::-;5619:6;5627;5635;5684:2;5672:9;5663:7;5659:23;5655:32;5652:119;;;5690:79;;:::i;:::-;5652:119;5810:1;5835:53;5880:7;5871:6;5860:9;5856:22;5835:53;:::i;:::-;5825:63;;5781:117;5937:2;5963:53;6008:7;5999:6;5988:9;5984:22;5963:53;:::i;:::-;5953:63;;5908:118;6065:2;6091:53;6136:7;6127:6;6116:9;6112:22;6091:53;:::i;:::-;6081:63;;6036:118;5542:619;;;;;:::o;6167:118::-;6254:24;6272:5;6254:24;:::i;:::-;6249:3;6242:37;6167:118;;:::o;6291:222::-;6384:4;6422:2;6411:9;6407:18;6399:26;;6435:71;6503:1;6492:9;6488:17;6479:6;6435:71;:::i;:::-;6291:222;;;;:::o;6519:332::-;6640:4;6678:2;6667:9;6663:18;6655:26;;6691:71;6759:1;6748:9;6744:17;6735:6;6691:71;:::i;:::-;6772:72;6840:2;6829:9;6825:18;6816:6;6772:72;:::i;:::-;6519:332;;;;;:::o;6857:86::-;6892:7;6932:4;6925:5;6921:16;6910:27;;6857:86;;;:::o;6949:112::-;7032:22;7048:5;7032:22;:::i;:::-;7027:3;7020:35;6949:112;;:::o;7067:214::-;7156:4;7194:2;7183:9;7179:18;7171:26;;7207:67;7271:1;7260:9;7256:17;7247:6;7207:67;:::i;:::-;7067:214;;;;:::o;7287:474::-;7355:6;7363;7412:2;7400:9;7391:7;7387:23;7383:32;7380:119;;;7418:79;;:::i;:::-;7380:119;7538:1;7563:53;7608:7;7599:6;7588:9;7584:22;7563:53;:::i;:::-;7553:63;;7509:117;7665:2;7691:53;7736:7;7727:6;7716:9;7712:22;7691:53;:::i;:::-;7681:63;;7636:118;7287:474;;;;;:::o;7767:329::-;7826:6;7875:2;7863:9;7854:7;7850:23;7846:32;7843:119;;;7881:79;;:::i;:::-;7843:119;8001:1;8026:53;8071:7;8062:6;8051:9;8047:22;8026:53;:::i;:::-;8016:63;;7972:117;7767:329;;;;:::o;8102:116::-;8172:21;8187:5;8172:21;:::i;:::-;8165:5;8162:32;8152:60;;8208:1;8205;8198:12;8152:60;8102:116;:::o;8224:133::-;8267:5;8305:6;8292:20;8283:29;;8321:30;8345:5;8321:30;:::i;:::-;8224:133;;;;:::o;8363:468::-;8428:6;8436;8485:2;8473:9;8464:7;8460:23;8456:32;8453:119;;;8491:79;;:::i;:::-;8453:119;8611:1;8636:53;8681:7;8672:6;8661:9;8657:22;8636:53;:::i;:::-;8626:63;;8582:117;8738:2;8764:50;8806:7;8797:6;8786:9;8782:22;8764:50;:::i;:::-;8754:60;;8709:115;8363:468;;;;;:::o;8837:474::-;8905:6;8913;8962:2;8950:9;8941:7;8937:23;8933:32;8930:119;;;8968:79;;:::i;:::-;8930:119;9088:1;9113:53;9158:7;9149:6;9138:9;9134:22;9113:53;:::i;:::-;9103:63;;9059:117;9215:2;9241:53;9286:7;9277:6;9266:9;9262:22;9241:53;:::i;:::-;9231:63;;9186:118;8837:474;;;;;:::o;9317:182::-;9457:34;9453:1;9445:6;9441:14;9434:58;9317:182;:::o;9505:366::-;9647:3;9668:67;9732:2;9727:3;9668:67;:::i;:::-;9661:74;;9744:93;9833:3;9744:93;:::i;:::-;9862:2;9857:3;9853:12;9846:19;;9505:366;;;:::o;9877:419::-;10043:4;10081:2;10070:9;10066:18;10058:26;;10130:9;10124:4;10120:20;10116:1;10105:9;10101:17;10094:47;10158:131;10284:4;10158:131;:::i;:::-;10150:139;;9877:419;;;:::o;10302:180::-;10350:77;10347:1;10340:88;10447:4;10444:1;10437:15;10471:4;10468:1;10461:15;10488:194;10528:4;10548:20;10566:1;10548:20;:::i;:::-;10543:25;;10582:20;10600:1;10582:20;:::i;:::-;10577:25;;10626:1;10623;10619:9;10611:17;;10650:1;10644:4;10641:11;10638:37;;;10655:18;;:::i;:::-;10638:37;10488:194;;;;:::o;10688:180::-;10736:77;10733:1;10726:88;10833:4;10830:1;10823:15;10857:4;10854:1;10847:15;10874:185;10914:1;10931:20;10949:1;10931:20;:::i;:::-;10926:25;;10965:20;10983:1;10965:20;:::i;:::-;10960:25;;11004:1;10994:35;;11009:18;;:::i;:::-;10994:35;11051:1;11048;11044:9;11039:14;;10874:185;;;;:::o;11065:191::-;11105:3;11124:20;11142:1;11124:20;:::i;:::-;11119:25;;11158:20;11176:1;11158:20;:::i;:::-;11153:25;;11201:1;11198;11194:9;11187:16;;11222:3;11219:1;11216:10;11213:36;;;11229:18;;:::i;:::-;11213:36;11065:191;;;;:::o;11262:176::-;11402:28;11398:1;11390:6;11386:14;11379:52;11262:176;:::o;11444:366::-;11586:3;11607:67;11671:2;11666:3;11607:67;:::i;:::-;11600:74;;11683:93;11772:3;11683:93;:::i;:::-;11801:2;11796:3;11792:12;11785:19;;11444:366;;;:::o;11816:419::-;11982:4;12020:2;12009:9;12005:18;11997:26;;12069:9;12063:4;12059:20;12055:1;12044:9;12040:17;12033:47;12097:131;12223:4;12097:131;:::i;:::-;12089:139;;11816:419;;;:::o;12241:225::-;12381:34;12377:1;12369:6;12365:14;12358:58;12450:8;12445:2;12437:6;12433:15;12426:33;12241:225;:::o;12472:366::-;12614:3;12635:67;12699:2;12694:3;12635:67;:::i;:::-;12628:74;;12711:93;12800:3;12711:93;:::i;:::-;12829:2;12824:3;12820:12;12813:19;;12472:366;;;:::o;12844:419::-;13010:4;13048:2;13037:9;13033:18;13025:26;;13097:9;13091:4;13087:20;13083:1;13072:9;13068:17;13061:47;13125:131;13251:4;13125:131;:::i;:::-;13117:139;;12844:419;;;:::o;13269:223::-;13409:34;13405:1;13397:6;13393:14;13386:58;13478:6;13473:2;13465:6;13461:15;13454:31;13269:223;:::o;13498:366::-;13640:3;13661:67;13725:2;13720:3;13661:67;:::i;:::-;13654:74;;13737:93;13826:3;13737:93;:::i;:::-;13855:2;13850:3;13846:12;13839:19;;13498:366;;;:::o;13870:419::-;14036:4;14074:2;14063:9;14059:18;14051:26;;14123:9;14117:4;14113:20;14109:1;14098:9;14094:17;14087:47;14151:131;14277:4;14151:131;:::i;:::-;14143:139;;13870:419;;;:::o;14295:221::-;14435:34;14431:1;14423:6;14419:14;14412:58;14504:4;14499:2;14491:6;14487:15;14480:29;14295:221;:::o;14522:366::-;14664:3;14685:67;14749:2;14744:3;14685:67;:::i;:::-;14678:74;;14761:93;14850:3;14761:93;:::i;:::-;14879:2;14874:3;14870:12;14863:19;;14522:366;;;:::o;14894:419::-;15060:4;15098:2;15087:9;15083:18;15075:26;;15147:9;15141:4;15137:20;15133:1;15122:9;15118:17;15111:47;15175:131;15301:4;15175:131;:::i;:::-;15167:139;;14894:419;;;:::o;15319:224::-;15459:34;15455:1;15447:6;15443:14;15436:58;15528:7;15523:2;15515:6;15511:15;15504:32;15319:224;:::o;15549:366::-;15691:3;15712:67;15776:2;15771:3;15712:67;:::i;:::-;15705:74;;15788:93;15877:3;15788:93;:::i;:::-;15906:2;15901:3;15897:12;15890:19;;15549:366;;;:::o;15921:419::-;16087:4;16125:2;16114:9;16110:18;16102:26;;16174:9;16168:4;16164:20;16160:1;16149:9;16145:17;16138:47;16202:131;16328:4;16202:131;:::i;:::-;16194:139;;15921:419;;;:::o;16346:222::-;16486:34;16482:1;16474:6;16470:14;16463:58;16555:5;16550:2;16542:6;16538:15;16531:30;16346:222;:::o;16574:366::-;16716:3;16737:67;16801:2;16796:3;16737:67;:::i;:::-;16730:74;;16813:93;16902:3;16813:93;:::i;:::-;16931:2;16926:3;16922:12;16915:19;;16574:366;;;:::o;16946:419::-;17112:4;17150:2;17139:9;17135:18;17127:26;;17199:9;17193:4;17189:20;17185:1;17174:9;17170:17;17163:47;17227:131;17353:4;17227:131;:::i;:::-;17219:139;;16946:419;;;:::o;17371:228::-;17511:34;17507:1;17499:6;17495:14;17488:58;17580:11;17575:2;17567:6;17563:15;17556:36;17371:228;:::o;17605:366::-;17747:3;17768:67;17832:2;17827:3;17768:67;:::i;:::-;17761:74;;17844:93;17933:3;17844:93;:::i;:::-;17962:2;17957:3;17953:12;17946:19;;17605:366;;;:::o;17977:419::-;18143:4;18181:2;18170:9;18166:18;18158:26;;18230:9;18224:4;18220:20;18216:1;18205:9;18201:17;18194:47;18258:131;18384:4;18258:131;:::i;:::-;18250:139;;17977:419;;;:::o;18402:172::-;18542:24;18538:1;18530:6;18526:14;18519:48;18402:172;:::o;18580:366::-;18722:3;18743:67;18807:2;18802:3;18743:67;:::i;:::-;18736:74;;18819:93;18908:3;18819:93;:::i;:::-;18937:2;18932:3;18928:12;18921:19;;18580:366;;;:::o;18952:419::-;19118:4;19156:2;19145:9;19141:18;19133:26;;19205:9;19199:4;19195:20;19191:1;19180:9;19176:17;19169:47;19233:131;19359:4;19233:131;:::i;:::-;19225:139;;18952:419;;;:::o;19377:228::-;19517:34;19513:1;19505:6;19501:14;19494:58;19586:11;19581:2;19573:6;19569:15;19562:36;19377:228;:::o;19611:366::-;19753:3;19774:67;19838:2;19833:3;19774:67;:::i;:::-;19767:74;;19850:93;19939:3;19850:93;:::i;:::-;19968:2;19963:3;19959:12;19952:19;;19611:366;;;:::o;19983:419::-;20149:4;20187:2;20176:9;20172:18;20164:26;;20236:9;20230:4;20226:20;20222:1;20211:9;20207:17;20200:47;20264:131;20390:4;20264:131;:::i;:::-;20256:139;;19983:419;;;:::o;20408:231::-;20548:34;20544:1;20536:6;20532:14;20525:58;20617:14;20612:2;20604:6;20600:15;20593:39;20408:231;:::o;20645:366::-;20787:3;20808:67;20872:2;20867:3;20808:67;:::i;:::-;20801:74;;20884:93;20973:3;20884:93;:::i;:::-;21002:2;20997:3;20993:12;20986:19;;20645:366;;;:::o;21017:419::-;21183:4;21221:2;21210:9;21206:18;21198:26;;21270:9;21264:4;21260:20;21256:1;21245:9;21241:17;21234:47;21298:131;21424:4;21298:131;:::i;:::-;21290:139;;21017:419;;;:::o;21442:410::-;21482:7;21505:20;21523:1;21505:20;:::i;:::-;21500:25;;21539:20;21557:1;21539:20;:::i;:::-;21534:25;;21594:1;21591;21587:9;21616:30;21634:11;21616:30;:::i;:::-;21605:41;;21795:1;21786:7;21782:15;21779:1;21776:22;21756:1;21749:9;21729:83;21706:139;;21825:18;;:::i;:::-;21706:139;21490:362;21442:410;;;;:::o;21858:180::-;21906:77;21903:1;21896:88;22003:4;22000:1;21993:15;22027:4;22024:1;22017:15;22044:180;22092:77;22089:1;22082:88;22189:4;22186:1;22179:15;22213:4;22210:1;22203:15;22230:143;22287:5;22318:6;22312:13;22303:22;;22334:33;22361:5;22334:33;:::i;:::-;22230:143;;;;:::o;22379:351::-;22449:6;22498:2;22486:9;22477:7;22473:23;22469:32;22466:119;;;22504:79;;:::i;:::-;22466:119;22624:1;22649:64;22705:7;22696:6;22685:9;22681:22;22649:64;:::i;:::-;22639:74;;22595:128;22379:351;;;;:::o;22736:85::-;22781:7;22810:5;22799:16;;22736:85;;;:::o;22827:158::-;22885:9;22918:61;22936:42;22945:32;22971:5;22945:32;:::i;:::-;22936:42;:::i;:::-;22918:61;:::i;:::-;22905:74;;22827:158;;;:::o;22991:147::-;23086:45;23125:5;23086:45;:::i;:::-;23081:3;23074:58;22991:147;;:::o;23144:114::-;23211:6;23245:5;23239:12;23229:22;;23144:114;;;:::o;23264:184::-;23363:11;23397:6;23392:3;23385:19;23437:4;23432:3;23428:14;23413:29;;23264:184;;;;:::o;23454:132::-;23521:4;23544:3;23536:11;;23574:4;23569:3;23565:14;23557:22;;23454:132;;;:::o;23592:108::-;23669:24;23687:5;23669:24;:::i;:::-;23664:3;23657:37;23592:108;;:::o;23706:179::-;23775:10;23796:46;23838:3;23830:6;23796:46;:::i;:::-;23874:4;23869:3;23865:14;23851:28;;23706:179;;;;:::o;23891:113::-;23961:4;23993;23988:3;23984:14;23976:22;;23891:113;;;:::o;24040:732::-;24159:3;24188:54;24236:5;24188:54;:::i;:::-;24258:86;24337:6;24332:3;24258:86;:::i;:::-;24251:93;;24368:56;24418:5;24368:56;:::i;:::-;24447:7;24478:1;24463:284;24488:6;24485:1;24482:13;24463:284;;;24564:6;24558:13;24591:63;24650:3;24635:13;24591:63;:::i;:::-;24584:70;;24677:60;24730:6;24677:60;:::i;:::-;24667:70;;24523:224;24510:1;24507;24503:9;24498:14;;24463:284;;;24467:14;24763:3;24756:10;;24164:608;;;24040:732;;;;:::o;24778:831::-;25041:4;25079:3;25068:9;25064:19;25056:27;;25093:71;25161:1;25150:9;25146:17;25137:6;25093:71;:::i;:::-;25174:80;25250:2;25239:9;25235:18;25226:6;25174:80;:::i;:::-;25301:9;25295:4;25291:20;25286:2;25275:9;25271:18;25264:48;25329:108;25432:4;25423:6;25329:108;:::i;:::-;25321:116;;25447:72;25515:2;25504:9;25500:18;25491:6;25447:72;:::i;:::-;25529:73;25597:3;25586:9;25582:19;25573:6;25529:73;:::i;:::-;24778:831;;;;;;;;:::o;25615:220::-;25755:34;25751:1;25743:6;25739:14;25732:58;25824:3;25819:2;25811:6;25807:15;25800:28;25615:220;:::o;25841:366::-;25983:3;26004:67;26068:2;26063:3;26004:67;:::i;:::-;25997:74;;26080:93;26169:3;26080:93;:::i;:::-;26198:2;26193:3;26189:12;26182:19;;25841:366;;;:::o;26213:419::-;26379:4;26417:2;26406:9;26402:18;26394:26;;26466:9;26460:4;26456:20;26452:1;26441:9;26437:17;26430:47;26494:131;26620:4;26494:131;:::i;:::-;26486:139;;26213:419;;;:::o;26638:807::-;26887:4;26925:3;26914:9;26910:19;26902:27;;26939:71;27007:1;26996:9;26992:17;26983:6;26939:71;:::i;:::-;27020:72;27088:2;27077:9;27073:18;27064:6;27020:72;:::i;:::-;27102:80;27178:2;27167:9;27163:18;27154:6;27102:80;:::i;:::-;27192;27268:2;27257:9;27253:18;27244:6;27192:80;:::i;:::-;27282:73;27350:3;27339:9;27335:19;27326:6;27282:73;:::i;:::-;27365;27433:3;27422:9;27418:19;27409:6;27365:73;:::i;:::-;26638:807;;;;;;;;;:::o;27451:143::-;27508:5;27539:6;27533:13;27524:22;;27555:33;27582:5;27555:33;:::i;:::-;27451:143;;;;:::o;27600:663::-;27688:6;27696;27704;27753:2;27741:9;27732:7;27728:23;27724:32;27721:119;;;27759:79;;:::i;:::-;27721:119;27879:1;27904:64;27960:7;27951:6;27940:9;27936:22;27904:64;:::i;:::-;27894:74;;27850:128;28017:2;28043:64;28099:7;28090:6;28079:9;28075:22;28043:64;:::i;:::-;28033:74;;27988:129;28156:2;28182:64;28238:7;28229:6;28218:9;28214:22;28182:64;:::i;:::-;28172:74;;28127:129;27600:663;;;;;:::o

Swarm Source

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