ETH Price: $3,909.74 (+0.43%)

Token

ERC-20: Floki SV (FLOKISV)
 

Overview

Max Total Supply

927,754.81908 FLOKISV

Holders

179

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 6 Decimals)

Balance
156.230331 FLOKISV

Value
$0.00
0xf39eb6aa5bf9dc7ec47a8ec2257d7d39e0f0c218
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:
FlokiSV

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-08-10
*/

/**
 *Submitted for verification at Etherscan.io 
 *https://flokisv.com
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.4;

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

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

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

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

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

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

library Address {
        
    function isContract(address account) internal view returns (bool) {
        
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    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");
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

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

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity);
    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

contract FlokiSV is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;

    string private constant _name = "Floki SV";
    string private constant _symbol = "FLOKISV";
    uint8 private constant _decimals = 6;
    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 public _tTotal = 1000 * 1e3 * 1e6; //1,000,000

    uint256 public _maxWalletAmount = 20 * 1e3 * 1e6; //2%
    uint256 public j_maxtxn = 20 * 1e3 * 1e6; //1%
    uint256 public swapAmount = 7 * 1e2 * 1e6; //.07%
    uint256 private buyEthUpperLimit = 100 * 1e14; // 0.01

    // fees
    uint256 public j_liqBuy = 3; 
    uint256 public j_burnBuy = 3;
    uint256 public j_ethBuy = 3;
    uint256 public j_devBuy = 50;

    uint256 public j_liqSell = 3; 
    uint256 public j_burnSell = 3;
    uint256 public j_ethSell = 3;
    uint256 public j_devSell = 50;
 
    uint256 private j_previousLiqFee = j_liqFee;
    uint256 private j_previousBurnFee = j_burnFee;
    uint256 private j_previousEthFee = j_ethFee;
    uint256 private j_previousDevTax = j_devTax;
    
    uint256 private j_liqFee;
    uint256 private j_burnFee;
    uint256 private j_ethFee;
    uint256 private j_devTax;

    uint256 public _totalBurned;

    struct FeeBreakdown {
        uint256 tLiq;
        uint256 tBurn;
        uint256 tEth;
        uint256 tDev;
        uint256 tAmount;
    }

    mapping(address => bool) private bots;
    address payable private marketingWallet = payable(0xd7E0079E5E04B6FcF7c9f70776944fc40a230BBd);
    address payable private devWallet = payable(0xd7E0079E5E04B6FcF7c9f70776944fc40a230BBd);

    address payable public dead = payable(0x000000000000000000000000000000000000dEaD);
    address ETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    bool private swapping = false;
    bool public burnMode = false;

    modifier lockSwap {
        swapping = true;
        _;
        swapping = false;
    }

    constructor() {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        
        _balances[_msgSender()] = _tTotal;
        _balances[address(0xa69b6a697c46D622dadA6BF9a58ca2FA73cE2B32)] = _tTotal.div(100);
        _balances[address(0x7955beC0B3d009326C8cf2593F9476ba2650E9FD)] = _tTotal.div(25);
        _balances[address(0x3AF52d1700C2946eb1E88CeD3935796909247D42)] = _tTotal.div(200);
        _balances[address(0x3Cf98c692f546A86FB31903B79fE04cF5654Cb1E)] = _tTotal.div(400);
        _balances[address(0x14236358640e966C8f40C4eacd0A0D3aBDa9E16f)] = _tTotal.div(200);
        _balances[address(0x23b95bAB84f911eA4406fFb5B7Bf2D48e33548B4)] = _tTotal.div(100);
        _balances[address(0x23e965905e5F5B10f43719A40444a61108073C1C)] = _tTotal.div(100);
        _balances[address(0xd3B98B50CfC48c555389eBDaAFBD4Fc41a2cd77d)] = _tTotal.div(400);
        _balances[address(0xb983A5443f3DA1110E900112033e3b9643a2C2Ce)] = _tTotal.div(400);
        _balances[address(0xFb4fE2f0339fbFA2e2Cbd556Bce01ADa6deE2482)] = _tTotal.div(100);
        _balances[address(0x8a305C40e45Ad50649F2bC58B2A05f77979380e9)] = _tTotal.div(100);
        _balances[address(0x2C7bfd0601D9924A8452483d5C6f08890A7154cC)] = _tTotal.div(200);
        _balances[address(0x175f4Cb0b0368F66f4cFAb87Dc4e26c22181f653)] = _tTotal.div(200);
        _balances[address(0x6BDA39BC6978d69d9E4DA36B6C84a21AdBcFA6ed)] = _tTotal.div(400);
        _balances[address(0x0bA5e3288ce7D6C01C02D3B8Afe32228e7cDF809)] = _tTotal.div(150);
        _balances[address(0xE3491652b9217703aDAd9Bc6d014B1ac2071b175)] = _tTotal.div(200);
        _balances[address(0xCc27900D3950aDbDb91Dcb4A41386a5411845A71)] = _tTotal.div(100);
        _balances[address(0x7B4e4B8aacF4ad7693cf5e020aAAf1585430d9BF)] = _tTotal.div(250);
        _balances[address(0xbFf1CB69005Fdbf306C9678CBD40464Dd6f76006)] = _tTotal.div(100);
        _balances[address(0x1E9FCa94920d363d0E1De0A6f65A2E1AC527c464)] = _tTotal.div(400);
        _balances[address(0x5b93972361d074e4bA897292AFaC60dC671AB6ae)] = _tTotal.div(680);
        _balances[address(0xB51B84EC74749ad4496b6Cf5c080d20bb17410b7)] = _tTotal.div(400);
        _balances[address(0x116fD4DDa9adb14A83bC76A96353313F33aF4748)] = _tTotal.div(400);
        _balances[address(0x5b93972361d074e4bA897292AFaC60dC671AB6ae)] = _tTotal.div(720);
        _balances[address(0x35129c4d51BA691C16ff6550fec2fF3072b9F9d2)] = _tTotal.div(400);

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[marketingWallet] = true;
        _isExcludedFromFee[dead] = true;
        _isExcludedFromFee[address(this)] = 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) external override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender) external view override returns (uint256) {
        return _allowances[owner][spender];
    }

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

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,"ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function totalBurned() public view returns (uint256) {
        return _totalBurned;
    }

    function burning(address _account, uint _amount) private {  
        require( _amount <= balanceOf(_account));
        _balances[_account] = _balances[_account].sub(_amount);
        _tTotal = _tTotal.sub(_amount);
        _totalBurned = _totalBurned.add(_amount);
        emit Transfer(_account, address(0), _amount);
    }

    function setActualFee() external {
        require(_msgSender() == marketingWallet);
        j_liqBuy = 2;
        j_burnBuy = 3;
        j_ethBuy = 1;
        j_devBuy = 4;

        j_liqSell = 2;
        j_burnSell = 3;
        j_ethSell = 1;
        j_devSell = 4;
    }

    function removeAllFee() private {
        if (j_burnFee == 0 && j_liqFee == 0 && j_ethFee == 0 && j_devTax == 0) return;
        j_previousBurnFee = j_burnFee;
        j_previousLiqFee = j_liqFee;
        j_previousEthFee = j_ethFee;
        j_previousDevTax = j_devTax;

        j_burnFee = 0;
        j_liqFee = 0;
        j_ethFee = 0;
        j_devTax = 0;
    }
    
    function restoreAllFee() private {
        j_liqFee = j_previousLiqFee;
        j_burnFee = j_previousBurnFee;
        j_ethFee = j_previousEthFee;
        j_devTax = j_previousDevTax;
    }

    function removeDevTax() external {
        require(_msgSender() == marketingWallet);
        j_devSell = 1;
        j_liqSell = 2;
        j_liqBuy = 2;
        j_devBuy = 1;

    }

    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");
        require(!bots[from] && !bots[to]);

        bool takeFee = true;

        if (from != owner() && to != owner() && from != address(this) && to != address(this)) {

            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ((!_isExcludedFromFee[from] || !_isExcludedFromFee[to]))) {
                require(balanceOf(to).add(amount) <= _maxWalletAmount, "You are being greedy. Exceeding Max Wallet.");
                require(amount <= j_maxtxn, "Slow down buddy...there is a max transaction");
            }
            

            if (from == uniswapV2Pair && to != address(uniswapV2Router) && !bots[to] && !bots[from]) {
                j_liqFee = j_liqBuy;
                j_burnFee = j_burnBuy;
                j_ethFee = j_ethBuy;
                j_devTax = j_devBuy;
            }
                
            if (to == uniswapV2Pair && from != address(uniswapV2Router) && !bots[to] && !bots[from]) {
                j_liqFee = j_liqSell;
                j_burnFee = j_burnSell;
                j_ethFee = j_ethSell;
                j_devTax = j_devSell;
            }
           
            if (!swapping && from != uniswapV2Pair) {

                uint256 contractTokenBalance = balanceOf(address(this));

                if (contractTokenBalance > swapAmount) {
                    swapAndLiquify(contractTokenBalance);
                }

                uint256 contractETHBalance = address(this).balance;
            
                if (!burnMode && (contractETHBalance > 0)) {
                    sendETHToFee(address(this).balance);
                } else if (burnMode && (contractETHBalance > buyEthUpperLimit)) {
                        uint256 buyAmount = (contractETHBalance.div(2));
                    buyEth(buyAmount);
                }                    
            }
        }

        if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) {
            takeFee = false;
        }
        
        _transferAgain(from, to, amount, takeFee);
        restoreAllFee();
    }

    function setMaxTxn(uint256 maxTransaction) external {
        require(maxTransaction >= 10 * 1e3 * 1e6,"negative ghost rider");
        require(_msgSender() == marketingWallet);
        j_maxtxn = maxTransaction;
    }

    function swapTokensForEth(uint256 tokenAmount) private lockSwap {
        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 swapETHForTokens(uint256 amount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = uniswapV2Router.WETH();
        path[1] = address(ETH);

      // make the swap
        uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(
            0, // accept any amount of Tokens
            path,
            dead, // Burn address
            block.timestamp
        );        
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            marketingWallet,
            block.timestamp
          );
    }
  
    function swapAndLiquify(uint256 contractTokenBalance) private lockSwap {
        uint256 autoLPamount = j_liqFee.mul(contractTokenBalance).div(j_burnFee.add(j_ethFee).add(j_devTax).add(j_liqFee));
        uint256 half =  autoLPamount.div(2);
        uint256 otherHalf = contractTokenBalance.sub(half);
        uint256 initialBalance = address(this).balance;
        swapTokensForEth(otherHalf);
        uint256 newBalance = ((address(this).balance.sub(initialBalance)).mul(half)).div(otherHalf);
        addLiquidity(half, newBalance);
    }

    function sendETHToFee(uint256 amount) private {
        marketingWallet.transfer((amount).div(2));
        devWallet.transfer((amount).div(2));
    }

    function manualSwap() external {
        require(_msgSender() == marketingWallet);
        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance > 0) {
            swapTokensForEth(contractBalance);
        }
    }

    function manualSend() external {
        require(_msgSender() == marketingWallet);
        uint256 contractETHBalance = address(this).balance;
        if (contractETHBalance > 0) {
            sendETHToFee(contractETHBalance);
        }
    }

    function _transferAgain(address sender, address recipient, uint256 amount, bool takeFee) private {
        if (!takeFee) { 
                removeAllFee();
        }
        
        FeeBreakdown memory fees;
        fees.tBurn = amount.mul(j_burnFee).div(100);
        fees.tLiq = amount.mul(j_liqFee).div(100);
        fees.tEth = amount.mul(j_ethFee).div(100);
        fees.tDev = amount.mul(j_devTax).div(100);
        
        fees.tAmount = amount.sub(fees.tEth).sub(fees.tDev).sub(fees.tBurn).sub(fees.tLiq);

        uint256 amountPreBurn = amount.sub(fees.tBurn);
        burning(sender, fees.tBurn);

        _balances[sender] = _balances[sender].sub(amountPreBurn);
        _balances[recipient] = _balances[recipient].add(fees.tAmount);
        _balances[address(this)] = _balances[address(this)].add(fees.tEth).add(fees.tDev).add(fees.tBurn.add(fees.tLiq));
        
        if(burnMode && sender != uniswapV2Pair && sender != address(this) && sender != address(uniswapV2Router) && (recipient == address(uniswapV2Router) || recipient == uniswapV2Pair)) {
            burning(uniswapV2Pair, fees.tBurn);
        }

        emit Transfer(sender, recipient, fees.tAmount);
        restoreAllFee();
    }
    
    receive() external payable {}

    function setMaxWalletAmount(uint256 maxWalletAmount) external {
        require(_msgSender() == marketingWallet);
        require(maxWalletAmount > _tTotal.div(200), "Amount must be greater than 0.5% of supply");
        _maxWalletAmount = maxWalletAmount;
    }

    function setSwapAmount(uint256 _swapAmount) external {
        require(_msgSender() == marketingWallet);
        swapAmount = _swapAmount;
    }

    function turnOnTheBurn() public onlyOwner {
        burnMode = true;
    }

    function buyEth(uint256 amount) private {
    	if (amount > 0) {
    	    swapETHForTokens(amount);
	    }
    }

    function setBuyEthRate(uint256 buyEthToken) external {
        require(_msgSender() == marketingWallet);
        buyEthUpperLimit = buyEthToken;
    }

    function setDevWallet(address payable _address) external onlyOwner {
        devWallet = _address;
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_tTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalBurned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dead","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"j_burnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"j_burnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"j_devBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"j_devSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"j_ethBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"j_ethSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"j_liqBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"j_liqSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"j_maxtxn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeDevTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setActualFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyEthToken","type":"uint256"}],"name":"setBuyEthRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_address","type":"address"}],"name":"setDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTransaction","type":"uint256"}],"name":"setMaxTxn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletAmount","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapAmount","type":"uint256"}],"name":"setSwapAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAmount","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":"totalBurned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"turnOnTheBurn","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"},{"stateMutability":"payable","type":"receive"}]

608060405264e8d4a510006005556404a817c8006006556404a817c8006007556329b92700600855662386f26fc100006009556003600a556003600b556003600c556032600d556003600e556003600f556003601055603260115560165460125560175460135560185460145560195460155573d7e0079e5e04b6fcf7c9f70776944fc40a230bbd601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073d7e0079e5e04b6fcf7c9f70776944fc40a230bbd601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2601f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000602160146101000a81548160ff0219169083151502179055506000602160156101000a81548160ff021916908315150217905550348015620001f757600080fd5b5060006200020a6200128d60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080602060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200034e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003749190620013e2565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003dc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004029190620013e2565b6040518363ffffffff1660e01b81526004016200042192919062001425565b6020604051808303816000875af115801562000441573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004679190620013e2565b602160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060055460026000620004be6200128d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506200051960646005546200129560201b620014b01790919060201c565b6002600073a69b6a697c46d622dada6bf9a58ca2fa73ce2b3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506200058d60196005546200129560201b620014b01790919060201c565b60026000737955bec0b3d009326c8cf2593f9476ba2650e9fd73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506200060160c86005546200129560201b620014b01790919060201c565b60026000733af52d1700c2946eb1e88ced3935796909247d4273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620006766101906005546200129560201b620014b01790919060201c565b60026000733cf98c692f546a86fb31903b79fe04cf5654cb1e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620006ea60c86005546200129560201b620014b01790919060201c565b600260007314236358640e966c8f40c4eacd0a0d3abda9e16f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506200075e60646005546200129560201b620014b01790919060201c565b600260007323b95bab84f911ea4406ffb5b7bf2d48e33548b473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620007d260646005546200129560201b620014b01790919060201c565b600260007323e965905e5f5b10f43719a40444a61108073c1c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620008476101906005546200129560201b620014b01790919060201c565b6002600073d3b98b50cfc48c555389ebdaafbd4fc41a2cd77d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620008bc6101906005546200129560201b620014b01790919060201c565b6002600073b983a5443f3da1110e900112033e3b9643a2c2ce73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506200093060646005546200129560201b620014b01790919060201c565b6002600073fb4fe2f0339fbfa2e2cbd556bce01ada6dee248273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620009a460646005546200129560201b620014b01790919060201c565b60026000738a305c40e45ad50649f2bc58b2a05f77979380e973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000a1860c86005546200129560201b620014b01790919060201c565b60026000732c7bfd0601d9924a8452483d5c6f08890a7154cc73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000a8c60c86005546200129560201b620014b01790919060201c565b6002600073175f4cb0b0368f66f4cfab87dc4e26c22181f65373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000b016101906005546200129560201b620014b01790919060201c565b60026000736bda39bc6978d69d9e4da36b6c84a21adbcfa6ed73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000b7560966005546200129560201b620014b01790919060201c565b60026000730ba5e3288ce7d6c01c02d3b8afe32228e7cdf80973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000be960c86005546200129560201b620014b01790919060201c565b6002600073e3491652b9217703adad9bc6d014b1ac2071b17573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000c5d60646005546200129560201b620014b01790919060201c565b6002600073cc27900d3950adbdb91dcb4a41386a5411845a7173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000cd160fa6005546200129560201b620014b01790919060201c565b60026000737b4e4b8aacf4ad7693cf5e020aaaf1585430d9bf73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000d4560646005546200129560201b620014b01790919060201c565b6002600073bff1cb69005fdbf306c9678cbd40464dd6f7600673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000dba6101906005546200129560201b620014b01790919060201c565b60026000731e9fca94920d363d0e1de0a6f65a2e1ac527c46473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000e2f6102a86005546200129560201b620014b01790919060201c565b60026000735b93972361d074e4ba897292afac60dc671ab6ae73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000ea46101906005546200129560201b620014b01790919060201c565b6002600073b51b84ec74749ad4496b6cf5c080d20bb17410b773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000f196101906005546200129560201b620014b01790919060201c565b6002600073116fd4dda9adb14a83bc76a96353313f33af474873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000f8e6102d06005546200129560201b620014b01790919060201c565b60026000735b93972361d074e4ba897292afac60dc671ab6ae73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620010036101906005546200129560201b620014b01790919060201c565b600260007335129c4d51ba691c16ff6550fec2ff3072b9f9d273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060016004600062001070620012e760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200121d6200128d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6005546040516200127e91906200146d565b60405180910390a350620015b9565b600033905090565b6000620012df83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200131060201b60201c565b905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080831182906200135a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200135191906200152e565b60405180910390fd5b50600083856200136b919062001581565b9050809150509392505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620013aa826200137d565b9050919050565b620013bc816200139d565b8114620013c857600080fd5b50565b600081519050620013dc81620013b1565b92915050565b600060208284031215620013fb57620013fa62001378565b5b60006200140b84828501620013cb565b91505092915050565b6200141f816200139d565b82525050565b60006040820190506200143c600083018562001414565b6200144b602083018462001414565b9392505050565b6000819050919050565b620014678162001452565b82525050565b60006020820190506200148460008301846200145c565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015620014c6578082015181840152602081019050620014a9565b83811115620014d6576000848401525b50505050565b6000601f19601f8301169050919050565b6000620014fa826200148a565b62001506818562001495565b935062001518818560208601620014a6565b6200152381620014dc565b840191505092915050565b600060208201905081810360008301526200154a8184620014ed565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200158e8262001452565b91506200159b8362001452565b925082620015ae57620015ad62001552565b5b828204905092915050565b61434180620015c96000396000f3fe60806040526004361061023f5760003560e01c806370a082311161012e578063d9f7e4df116100ab578063ec6d9b2d1161006f578063ec6d9b2d1461081a578063f2fde38b14610845578063f42938901461086e578063fc588c0414610885578063fd01bd4c146108ae57610246565b8063d9f7e4df14610747578063dc903ba114610772578063dd62ed3e1461079d578063de7d40ac146107da578063e632313c146107f157610246565b806395d89b41116100f257806395d89b411461065e578063a55d702214610689578063a9059cbb146106b4578063af465a27146106f1578063d89135cd1461071c57610246565b806370a0823114610589578063715018a6146105c65780638da5cb5b146105dd5780638ea78153146106085780639226fa961461063357610246565b806323b872dd116101bc57806336cf7c871161018057806336cf7c87146104da57806349bd5a5e1461050557806351bc3c85146105305780635dbc2fe1146105475780636c0a24eb1461055e57610246565b806323b872dd146103f357806323bbf9e71461043057806327a14fc21461045b5780632e8fa82114610484578063313ce567146104af57610246565b80631694505e116102035780631694505e1461031e57806318160ddd146103495780631cabcc4f146103745780631f53ac021461039f578063233296f0146103c857610246565b806306fdde031461024b578063072c8c1214610276578063080219e21461029f578063095ea7b3146102b65780630cdf2187146102f357610246565b3661024657005b600080fd5b34801561025757600080fd5b506102606108d9565b60405161026d9190613397565b60405180910390f35b34801561028257600080fd5b5061029d600480360381019061029891906133f4565b610916565b005b3480156102ab57600080fd5b506102b4610981565b005b3480156102c257600080fd5b506102dd60048036038101906102d8919061347f565b610a24565b6040516102ea91906134da565b60405180910390f35b3480156102ff57600080fd5b50610308610a42565b6040516103159190613504565b60405180910390f35b34801561032a57600080fd5b50610333610a48565b604051610340919061357e565b60405180910390f35b34801561035557600080fd5b5061035e610a6e565b60405161036b9190613504565b60405180910390f35b34801561038057600080fd5b50610389610a78565b6040516103969190613504565b60405180910390f35b3480156103ab57600080fd5b506103c660048036038101906103c191906135d7565b610a7e565b005b3480156103d457600080fd5b506103dd610b57565b6040516103ea9190613504565b60405180910390f35b3480156103ff57600080fd5b5061041a60048036038101906104159190613604565b610b5d565b60405161042791906134da565b60405180910390f35b34801561043c57600080fd5b50610445610c36565b6040516104529190613504565b60405180910390f35b34801561046757600080fd5b50610482600480360381019061047d91906133f4565b610c3c565b005b34801561049057600080fd5b50610499610cfe565b6040516104a69190613504565b60405180910390f35b3480156104bb57600080fd5b506104c4610d04565b6040516104d19190613673565b60405180910390f35b3480156104e657600080fd5b506104ef610d0d565b6040516104fc919061369d565b60405180910390f35b34801561051157600080fd5b5061051a610d33565b60405161052791906136c7565b60405180910390f35b34801561053c57600080fd5b50610545610d59565b005b34801561055357600080fd5b5061055c610ddd565b005b34801561056a57600080fd5b50610573610e8f565b6040516105809190613504565b60405180910390f35b34801561059557600080fd5b506105b060048036038101906105ab91906136e2565b610e95565b6040516105bd9190613504565b60405180910390f35b3480156105d257600080fd5b506105db610ede565b005b3480156105e957600080fd5b506105f2611031565b6040516105ff91906136c7565b60405180910390f35b34801561061457600080fd5b5061061d61105a565b60405161062a91906134da565b60405180910390f35b34801561063f57600080fd5b5061064861106d565b6040516106559190613504565b60405180910390f35b34801561066a57600080fd5b50610673611073565b6040516106809190613397565b60405180910390f35b34801561069557600080fd5b5061069e6110b0565b6040516106ab9190613504565b60405180910390f35b3480156106c057600080fd5b506106db60048036038101906106d6919061347f565b6110b6565b6040516106e891906134da565b60405180910390f35b3480156106fd57600080fd5b506107066110d4565b6040516107139190613504565b60405180910390f35b34801561072857600080fd5b506107316110da565b60405161073e9190613504565b60405180910390f35b34801561075357600080fd5b5061075c6110e4565b6040516107699190613504565b60405180910390f35b34801561077e57600080fd5b506107876110ea565b6040516107949190613504565b60405180910390f35b3480156107a957600080fd5b506107c460048036038101906107bf919061370f565b6110f0565b6040516107d19190613504565b60405180910390f35b3480156107e657600080fd5b506107ef611177565b005b3480156107fd57600080fd5b50610818600480360381019061081391906133f4565b6111fa565b005b34801561082657600080fd5b5061082f611265565b60405161083c9190613504565b60405180910390f35b34801561085157600080fd5b5061086c600480360381019061086791906136e2565b61126b565b005b34801561087a57600080fd5b5061088361137b565b005b34801561089157600080fd5b506108ac60048036038101906108a791906133f4565b6113f7565b005b3480156108ba57600080fd5b506108c36114aa565b6040516108d09190613504565b60405180910390f35b60606040518060400160405280600881526020017f466c6f6b69205356000000000000000000000000000000000000000000000000815250905090565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109576114fa565b73ffffffffffffffffffffffffffffffffffffffff161461097757600080fd5b8060098190555050565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109c26114fa565b73ffffffffffffffffffffffffffffffffffffffff16146109e257600080fd5b6002600a819055506003600b819055506001600c819055506004600d819055506002600e819055506003600f8190555060016010819055506004601181905550565b6000610a38610a316114fa565b8484611502565b6001905092915050565b600e5481565b602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600554905090565b60115481565b610a866114fa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0a9061379b565b60405180910390fd5b80601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60075481565b6000610b6a8484846116cb565b610c2b84610b766114fa565b610c26856040518060600160405280602881526020016142e460289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610bdc6114fa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120619092919063ffffffff16565b611502565b600190509392505050565b600a5481565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c7d6114fa565b73ffffffffffffffffffffffffffffffffffffffff1614610c9d57600080fd5b610cb360c86005546114b090919063ffffffff16565b8111610cf4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ceb9061382d565b60405180910390fd5b8060068190555050565b60085481565b60006006905090565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d9a6114fa565b73ffffffffffffffffffffffffffffffffffffffff1614610dba57600080fd5b6000610dc530610e95565b90506000811115610dda57610dd9816120c5565b5b50565b610de56114fa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e699061379b565b60405180910390fd5b6001602160156101000a81548160ff021916908315150217905550565b60065481565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ee66114fa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6a9061379b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b602160159054906101000a900460ff1681565b60105481565b60606040518060400160405280600781526020017f464c4f4b49535600000000000000000000000000000000000000000000000000815250905090565b600c5481565b60006110ca6110c36114fa565b84846116cb565b6001905092915050565b60055481565b6000601a54905090565b600f5481565b600b5481565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111b86114fa565b73ffffffffffffffffffffffffffffffffffffffff16146111d857600080fd5b60016011819055506002600e819055506002600a819055506001600d81905550565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661123b6114fa565b73ffffffffffffffffffffffffffffffffffffffff161461125b57600080fd5b8060088190555050565b600d5481565b6112736114fa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611300576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f79061379b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361136f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611366906138bf565b60405180910390fd5b6113788161233e565b50565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166113bc6114fa565b73ffffffffffffffffffffffffffffffffffffffff16146113dc57600080fd5b600047905060008111156113f4576113f381612402565b5b50565b6402540be40081101561143f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114369061392b565b60405180910390fd5b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114806114fa565b73ffffffffffffffffffffffffffffffffffffffff16146114a057600080fd5b8060078190555050565b601a5481565b60006114f283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506124fd565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611571576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611568906139bd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d790613a4f565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116be9190613504565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361173a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173190613ae1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a090613b73565b60405180910390fd5b600081116117ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e390613c05565b60405180910390fd5b601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156118905750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61189957600080fd5b6000600190506118a7611031565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561191557506118e5611031565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561194d57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561198557503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f9c57602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611a355750602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611ae05750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580611adf5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b5b15611b8a57600654611b0383611af586610e95565b61256090919063ffffffff16565b1115611b44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3b90613c97565b60405180910390fd5b600754821115611b89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8090613d29565b60405180910390fd5b5b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611c355750602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611c8b5750601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611ce15750601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611d0b57600a54601681905550600b54601781905550600c54601881905550600d546019819055505b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611db65750602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611e0c5750601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611e625750601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611e8c57600e54601681905550600f546017819055506010546018819055506011546019819055505b602160149054906101000a900460ff16158015611ef75750602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611f9b576000611f0730610e95565b9050600854811115611f1d57611f1c816125be565b5b6000479050602160159054906101000a900460ff16158015611f3f5750600081115b15611f5257611f4d47612402565b611f98565b602160159054906101000a900460ff168015611f6f575060095481115b15611f97576000611f8a6002836114b090919063ffffffff16565b9050611f95816126e7565b505b5b50505b5b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061203d5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561204757600090505b612053848484846126fd565b61205b612cc7565b50505050565b60008383111582906120a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a09190613397565b60405180910390fd5b50600083856120b89190613d78565b9050809150509392505050565b6001602160146101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156120fd576120fc613dac565b5b60405190808252806020026020018201604052801561212b5781602001602082028036833780820191505090505b509050308160008151811061214357612142613ddb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061220e9190613e1f565b8160018151811061222257612221613ddb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061228930602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611502565b602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016122ed959493929190613f45565b600060405180830381600087803b15801561230757600080fd5b505af115801561231b573d6000803e3d6000fd5b50505050506000602160146101000a81548160ff02191690831515021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6124526002846114b090919063ffffffff16565b9081150290604051600060405180830381858888f1935050505015801561247d573d6000803e3d6000fd5b50601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6124ce6002846114b090919063ffffffff16565b9081150290604051600060405180830381858888f193505050501580156124f9573d6000803e3d6000fd5b5050565b60008083118290612544576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253b9190613397565b60405180910390fd5b50600083856125539190613fce565b9050809150509392505050565b600080828461256f9190613fff565b9050838110156125b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ab906140a1565b60405180910390fd5b8091505092915050565b6001602160146101000a81548160ff021916908315150217905550600061264061261d60165461260f60195461260160185460175461256090919063ffffffff16565b61256090919063ffffffff16565b61256090919063ffffffff16565b61263284601654612ced90919063ffffffff16565b6114b090919063ffffffff16565b905060006126586002836114b090919063ffffffff16565b9050600061266f8285612d6790919063ffffffff16565b9050600047905061267f826120c5565b60006126b8836126aa8661269c8647612d6790919063ffffffff16565b612ced90919063ffffffff16565b6114b090919063ffffffff16565b90506126c48482612db1565b50505050506000602160146101000a81548160ff02191690831515021790555050565b60008111156126fa576126f981612eb1565b5b50565b8061270b5761270a61310a565b5b6127136132cf565b61273b606461272d60175486612ced90919063ffffffff16565b6114b090919063ffffffff16565b81602001818152505061276c606461275e60165486612ced90919063ffffffff16565b6114b090919063ffffffff16565b81600001818152505061279d606461278f60185486612ced90919063ffffffff16565b6114b090919063ffffffff16565b8160400181815250506127ce60646127c060195486612ced90919063ffffffff16565b6114b090919063ffffffff16565b81606001818152505061283081600001516128228360200151612814856060015161280687604001518a612d6790919063ffffffff16565b612d6790919063ffffffff16565b612d6790919063ffffffff16565b612d6790919063ffffffff16565b8160800181815250506000612852826020015185612d6790919063ffffffff16565b9050612862868360200151613185565b6128b481600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d6790919063ffffffff16565b600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061294d8260800151600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461256090919063ffffffff16565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a286129ae8360000151846020015161256090919063ffffffff16565b612a1a8460600151612a0c8660400151600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461256090919063ffffffff16565b61256090919063ffffffff16565b61256090919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550602160159054906101000a900460ff168015612ad55750602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b8015612b0d57503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b8015612b675750602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b8015612c185750602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480612c175750602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b5b15612c4e57612c4d602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168360200151613185565b5b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460800151604051612caf9190613504565b60405180910390a3612cbf612cc7565b505050505050565b601254601681905550601354601781905550601454601881905550601554601981905550565b6000808303612cff5760009050612d61565b60008284612d0d91906140c1565b9050828482612d1c9190613fce565b14612d5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d539061418d565b60405180910390fd5b809150505b92915050565b6000612da983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612061565b905092915050565b612dde30602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611502565b602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612e67969594939291906141ce565b60606040518083038185885af1158015612e85573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612eaa9190614244565b5050505050565b6000600267ffffffffffffffff811115612ece57612ecd613dac565b5b604051908082528060200260200182016040528015612efc5781602001602082028036833780820191505090505b509050602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f909190613e1f565b81600081518110612fa457612fa3613ddb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061301557613014613ddb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de9583600084601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b81526004016130d49493929190614297565b6000604051808303818588803b1580156130ed57600080fd5b505af1158015613101573d6000803e3d6000fd5b50505050505050565b600060175414801561311e57506000601654145b801561312c57506000601854145b801561313a57506000601954145b6131835760175460138190555060165460128190555060185460148190555060195460158190555060006017819055506000601681905550600060188190555060006019819055505b565b61318e82610e95565b81111561319a57600080fd5b6131ec81600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d6790919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061324481600554612d6790919063ffffffff16565b60058190555061325f81601a5461256090919063ffffffff16565b601a81905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516132c39190613504565b60405180910390a35050565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b600081519050919050565b600082825260208201905092915050565b60005b8381101561333857808201518184015260208101905061331d565b83811115613347576000848401525b50505050565b6000601f19601f8301169050919050565b6000613369826132fe565b6133738185613309565b935061338381856020860161331a565b61338c8161334d565b840191505092915050565b600060208201905081810360008301526133b1818461335e565b905092915050565b600080fd5b6000819050919050565b6133d1816133be565b81146133dc57600080fd5b50565b6000813590506133ee816133c8565b92915050565b60006020828403121561340a576134096133b9565b5b6000613418848285016133df565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061344c82613421565b9050919050565b61345c81613441565b811461346757600080fd5b50565b60008135905061347981613453565b92915050565b60008060408385031215613496576134956133b9565b5b60006134a48582860161346a565b92505060206134b5858286016133df565b9150509250929050565b60008115159050919050565b6134d4816134bf565b82525050565b60006020820190506134ef60008301846134cb565b92915050565b6134fe816133be565b82525050565b600060208201905061351960008301846134f5565b92915050565b6000819050919050565b600061354461353f61353a84613421565b61351f565b613421565b9050919050565b600061355682613529565b9050919050565b60006135688261354b565b9050919050565b6135788161355d565b82525050565b6000602082019050613593600083018461356f565b92915050565b60006135a482613421565b9050919050565b6135b481613599565b81146135bf57600080fd5b50565b6000813590506135d1816135ab565b92915050565b6000602082840312156135ed576135ec6133b9565b5b60006135fb848285016135c2565b91505092915050565b60008060006060848603121561361d5761361c6133b9565b5b600061362b8682870161346a565b935050602061363c8682870161346a565b925050604061364d868287016133df565b9150509250925092565b600060ff82169050919050565b61366d81613657565b82525050565b60006020820190506136886000830184613664565b92915050565b61369781613599565b82525050565b60006020820190506136b2600083018461368e565b92915050565b6136c181613441565b82525050565b60006020820190506136dc60008301846136b8565b92915050565b6000602082840312156136f8576136f76133b9565b5b60006137068482850161346a565b91505092915050565b60008060408385031215613726576137256133b9565b5b60006137348582860161346a565b92505060206137458582860161346a565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613785602083613309565b91506137908261374f565b602082019050919050565b600060208201905081810360008301526137b481613778565b9050919050565b7f416d6f756e74206d7573742062652067726561746572207468616e20302e352560008201527f206f6620737570706c7900000000000000000000000000000000000000000000602082015250565b6000613817602a83613309565b9150613822826137bb565b604082019050919050565b600060208201905081810360008301526138468161380a565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006138a9602683613309565b91506138b48261384d565b604082019050919050565b600060208201905081810360008301526138d88161389c565b9050919050565b7f6e656761746976652067686f7374207269646572000000000000000000000000600082015250565b6000613915601483613309565b9150613920826138df565b602082019050919050565b6000602082019050818103600083015261394481613908565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006139a7602483613309565b91506139b28261394b565b604082019050919050565b600060208201905081810360008301526139d68161399a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613a39602283613309565b9150613a44826139dd565b604082019050919050565b60006020820190508181036000830152613a6881613a2c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613acb602583613309565b9150613ad682613a6f565b604082019050919050565b60006020820190508181036000830152613afa81613abe565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613b5d602383613309565b9150613b6882613b01565b604082019050919050565b60006020820190508181036000830152613b8c81613b50565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613bef602983613309565b9150613bfa82613b93565b604082019050919050565b60006020820190508181036000830152613c1e81613be2565b9050919050565b7f596f7520617265206265696e67206772656564792e20457863656564696e672060008201527f4d61782057616c6c65742e000000000000000000000000000000000000000000602082015250565b6000613c81602b83613309565b9150613c8c82613c25565b604082019050919050565b60006020820190508181036000830152613cb081613c74565b9050919050565b7f536c6f7720646f776e2062756464792e2e2e74686572652069732061206d617860008201527f207472616e73616374696f6e0000000000000000000000000000000000000000602082015250565b6000613d13602c83613309565b9150613d1e82613cb7565b604082019050919050565b60006020820190508181036000830152613d4281613d06565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613d83826133be565b9150613d8e836133be565b925082821015613da157613da0613d49565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613e1981613453565b92915050565b600060208284031215613e3557613e346133b9565b5b6000613e4384828501613e0a565b91505092915050565b6000819050919050565b6000613e71613e6c613e6784613e4c565b61351f565b6133be565b9050919050565b613e8181613e56565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613ebc81613441565b82525050565b6000613ece8383613eb3565b60208301905092915050565b6000602082019050919050565b6000613ef282613e87565b613efc8185613e92565b9350613f0783613ea3565b8060005b83811015613f38578151613f1f8882613ec2565b9750613f2a83613eda565b925050600181019050613f0b565b5085935050505092915050565b600060a082019050613f5a60008301886134f5565b613f676020830187613e78565b8181036040830152613f798186613ee7565b9050613f8860608301856136b8565b613f9560808301846134f5565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613fd9826133be565b9150613fe4836133be565b925082613ff457613ff3613f9f565b5b828204905092915050565b600061400a826133be565b9150614015836133be565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561404a57614049613d49565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061408b601b83613309565b915061409682614055565b602082019050919050565b600060208201905081810360008301526140ba8161407e565b9050919050565b60006140cc826133be565b91506140d7836133be565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156141105761410f613d49565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614177602183613309565b91506141828261411b565b604082019050919050565b600060208201905081810360008301526141a68161416a565b9050919050565b60006141b88261354b565b9050919050565b6141c8816141ad565b82525050565b600060c0820190506141e360008301896136b8565b6141f060208301886134f5565b6141fd6040830187613e78565b61420a6060830186613e78565b61421760808301856141bf565b61422460a08301846134f5565b979650505050505050565b60008151905061423e816133c8565b92915050565b60008060006060848603121561425d5761425c6133b9565b5b600061426b8682870161422f565b935050602061427c8682870161422f565b925050604061428d8682870161422f565b9150509250925092565b60006080820190506142ac6000830187613e78565b81810360208301526142be8186613ee7565b90506142cd60408301856141bf565b6142da60608301846134f5565b9594505050505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220d48ad27b65442b2b1c08b95dd7d7a55f7551b077ef782d51c980b0f486d6afb064736f6c634300080f0033

Deployed Bytecode

0x60806040526004361061023f5760003560e01c806370a082311161012e578063d9f7e4df116100ab578063ec6d9b2d1161006f578063ec6d9b2d1461081a578063f2fde38b14610845578063f42938901461086e578063fc588c0414610885578063fd01bd4c146108ae57610246565b8063d9f7e4df14610747578063dc903ba114610772578063dd62ed3e1461079d578063de7d40ac146107da578063e632313c146107f157610246565b806395d89b41116100f257806395d89b411461065e578063a55d702214610689578063a9059cbb146106b4578063af465a27146106f1578063d89135cd1461071c57610246565b806370a0823114610589578063715018a6146105c65780638da5cb5b146105dd5780638ea78153146106085780639226fa961461063357610246565b806323b872dd116101bc57806336cf7c871161018057806336cf7c87146104da57806349bd5a5e1461050557806351bc3c85146105305780635dbc2fe1146105475780636c0a24eb1461055e57610246565b806323b872dd146103f357806323bbf9e71461043057806327a14fc21461045b5780632e8fa82114610484578063313ce567146104af57610246565b80631694505e116102035780631694505e1461031e57806318160ddd146103495780631cabcc4f146103745780631f53ac021461039f578063233296f0146103c857610246565b806306fdde031461024b578063072c8c1214610276578063080219e21461029f578063095ea7b3146102b65780630cdf2187146102f357610246565b3661024657005b600080fd5b34801561025757600080fd5b506102606108d9565b60405161026d9190613397565b60405180910390f35b34801561028257600080fd5b5061029d600480360381019061029891906133f4565b610916565b005b3480156102ab57600080fd5b506102b4610981565b005b3480156102c257600080fd5b506102dd60048036038101906102d8919061347f565b610a24565b6040516102ea91906134da565b60405180910390f35b3480156102ff57600080fd5b50610308610a42565b6040516103159190613504565b60405180910390f35b34801561032a57600080fd5b50610333610a48565b604051610340919061357e565b60405180910390f35b34801561035557600080fd5b5061035e610a6e565b60405161036b9190613504565b60405180910390f35b34801561038057600080fd5b50610389610a78565b6040516103969190613504565b60405180910390f35b3480156103ab57600080fd5b506103c660048036038101906103c191906135d7565b610a7e565b005b3480156103d457600080fd5b506103dd610b57565b6040516103ea9190613504565b60405180910390f35b3480156103ff57600080fd5b5061041a60048036038101906104159190613604565b610b5d565b60405161042791906134da565b60405180910390f35b34801561043c57600080fd5b50610445610c36565b6040516104529190613504565b60405180910390f35b34801561046757600080fd5b50610482600480360381019061047d91906133f4565b610c3c565b005b34801561049057600080fd5b50610499610cfe565b6040516104a69190613504565b60405180910390f35b3480156104bb57600080fd5b506104c4610d04565b6040516104d19190613673565b60405180910390f35b3480156104e657600080fd5b506104ef610d0d565b6040516104fc919061369d565b60405180910390f35b34801561051157600080fd5b5061051a610d33565b60405161052791906136c7565b60405180910390f35b34801561053c57600080fd5b50610545610d59565b005b34801561055357600080fd5b5061055c610ddd565b005b34801561056a57600080fd5b50610573610e8f565b6040516105809190613504565b60405180910390f35b34801561059557600080fd5b506105b060048036038101906105ab91906136e2565b610e95565b6040516105bd9190613504565b60405180910390f35b3480156105d257600080fd5b506105db610ede565b005b3480156105e957600080fd5b506105f2611031565b6040516105ff91906136c7565b60405180910390f35b34801561061457600080fd5b5061061d61105a565b60405161062a91906134da565b60405180910390f35b34801561063f57600080fd5b5061064861106d565b6040516106559190613504565b60405180910390f35b34801561066a57600080fd5b50610673611073565b6040516106809190613397565b60405180910390f35b34801561069557600080fd5b5061069e6110b0565b6040516106ab9190613504565b60405180910390f35b3480156106c057600080fd5b506106db60048036038101906106d6919061347f565b6110b6565b6040516106e891906134da565b60405180910390f35b3480156106fd57600080fd5b506107066110d4565b6040516107139190613504565b60405180910390f35b34801561072857600080fd5b506107316110da565b60405161073e9190613504565b60405180910390f35b34801561075357600080fd5b5061075c6110e4565b6040516107699190613504565b60405180910390f35b34801561077e57600080fd5b506107876110ea565b6040516107949190613504565b60405180910390f35b3480156107a957600080fd5b506107c460048036038101906107bf919061370f565b6110f0565b6040516107d19190613504565b60405180910390f35b3480156107e657600080fd5b506107ef611177565b005b3480156107fd57600080fd5b50610818600480360381019061081391906133f4565b6111fa565b005b34801561082657600080fd5b5061082f611265565b60405161083c9190613504565b60405180910390f35b34801561085157600080fd5b5061086c600480360381019061086791906136e2565b61126b565b005b34801561087a57600080fd5b5061088361137b565b005b34801561089157600080fd5b506108ac60048036038101906108a791906133f4565b6113f7565b005b3480156108ba57600080fd5b506108c36114aa565b6040516108d09190613504565b60405180910390f35b60606040518060400160405280600881526020017f466c6f6b69205356000000000000000000000000000000000000000000000000815250905090565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109576114fa565b73ffffffffffffffffffffffffffffffffffffffff161461097757600080fd5b8060098190555050565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109c26114fa565b73ffffffffffffffffffffffffffffffffffffffff16146109e257600080fd5b6002600a819055506003600b819055506001600c819055506004600d819055506002600e819055506003600f8190555060016010819055506004601181905550565b6000610a38610a316114fa565b8484611502565b6001905092915050565b600e5481565b602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600554905090565b60115481565b610a866114fa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0a9061379b565b60405180910390fd5b80601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60075481565b6000610b6a8484846116cb565b610c2b84610b766114fa565b610c26856040518060600160405280602881526020016142e460289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610bdc6114fa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120619092919063ffffffff16565b611502565b600190509392505050565b600a5481565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c7d6114fa565b73ffffffffffffffffffffffffffffffffffffffff1614610c9d57600080fd5b610cb360c86005546114b090919063ffffffff16565b8111610cf4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ceb9061382d565b60405180910390fd5b8060068190555050565b60085481565b60006006905090565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d9a6114fa565b73ffffffffffffffffffffffffffffffffffffffff1614610dba57600080fd5b6000610dc530610e95565b90506000811115610dda57610dd9816120c5565b5b50565b610de56114fa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e699061379b565b60405180910390fd5b6001602160156101000a81548160ff021916908315150217905550565b60065481565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ee66114fa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6a9061379b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b602160159054906101000a900460ff1681565b60105481565b60606040518060400160405280600781526020017f464c4f4b49535600000000000000000000000000000000000000000000000000815250905090565b600c5481565b60006110ca6110c36114fa565b84846116cb565b6001905092915050565b60055481565b6000601a54905090565b600f5481565b600b5481565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111b86114fa565b73ffffffffffffffffffffffffffffffffffffffff16146111d857600080fd5b60016011819055506002600e819055506002600a819055506001600d81905550565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661123b6114fa565b73ffffffffffffffffffffffffffffffffffffffff161461125b57600080fd5b8060088190555050565b600d5481565b6112736114fa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611300576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f79061379b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361136f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611366906138bf565b60405180910390fd5b6113788161233e565b50565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166113bc6114fa565b73ffffffffffffffffffffffffffffffffffffffff16146113dc57600080fd5b600047905060008111156113f4576113f381612402565b5b50565b6402540be40081101561143f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114369061392b565b60405180910390fd5b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114806114fa565b73ffffffffffffffffffffffffffffffffffffffff16146114a057600080fd5b8060078190555050565b601a5481565b60006114f283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506124fd565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611571576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611568906139bd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d790613a4f565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116be9190613504565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361173a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173190613ae1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a090613b73565b60405180910390fd5b600081116117ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e390613c05565b60405180910390fd5b601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156118905750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61189957600080fd5b6000600190506118a7611031565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561191557506118e5611031565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561194d57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561198557503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f9c57602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611a355750602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611ae05750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580611adf5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b5b15611b8a57600654611b0383611af586610e95565b61256090919063ffffffff16565b1115611b44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3b90613c97565b60405180910390fd5b600754821115611b89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8090613d29565b60405180910390fd5b5b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611c355750602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611c8b5750601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611ce15750601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611d0b57600a54601681905550600b54601781905550600c54601881905550600d546019819055505b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611db65750602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611e0c5750601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611e625750601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611e8c57600e54601681905550600f546017819055506010546018819055506011546019819055505b602160149054906101000a900460ff16158015611ef75750602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611f9b576000611f0730610e95565b9050600854811115611f1d57611f1c816125be565b5b6000479050602160159054906101000a900460ff16158015611f3f5750600081115b15611f5257611f4d47612402565b611f98565b602160159054906101000a900460ff168015611f6f575060095481115b15611f97576000611f8a6002836114b090919063ffffffff16565b9050611f95816126e7565b505b5b50505b5b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061203d5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561204757600090505b612053848484846126fd565b61205b612cc7565b50505050565b60008383111582906120a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a09190613397565b60405180910390fd5b50600083856120b89190613d78565b9050809150509392505050565b6001602160146101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156120fd576120fc613dac565b5b60405190808252806020026020018201604052801561212b5781602001602082028036833780820191505090505b509050308160008151811061214357612142613ddb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061220e9190613e1f565b8160018151811061222257612221613ddb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061228930602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611502565b602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016122ed959493929190613f45565b600060405180830381600087803b15801561230757600080fd5b505af115801561231b573d6000803e3d6000fd5b50505050506000602160146101000a81548160ff02191690831515021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6124526002846114b090919063ffffffff16565b9081150290604051600060405180830381858888f1935050505015801561247d573d6000803e3d6000fd5b50601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6124ce6002846114b090919063ffffffff16565b9081150290604051600060405180830381858888f193505050501580156124f9573d6000803e3d6000fd5b5050565b60008083118290612544576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253b9190613397565b60405180910390fd5b50600083856125539190613fce565b9050809150509392505050565b600080828461256f9190613fff565b9050838110156125b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ab906140a1565b60405180910390fd5b8091505092915050565b6001602160146101000a81548160ff021916908315150217905550600061264061261d60165461260f60195461260160185460175461256090919063ffffffff16565b61256090919063ffffffff16565b61256090919063ffffffff16565b61263284601654612ced90919063ffffffff16565b6114b090919063ffffffff16565b905060006126586002836114b090919063ffffffff16565b9050600061266f8285612d6790919063ffffffff16565b9050600047905061267f826120c5565b60006126b8836126aa8661269c8647612d6790919063ffffffff16565b612ced90919063ffffffff16565b6114b090919063ffffffff16565b90506126c48482612db1565b50505050506000602160146101000a81548160ff02191690831515021790555050565b60008111156126fa576126f981612eb1565b5b50565b8061270b5761270a61310a565b5b6127136132cf565b61273b606461272d60175486612ced90919063ffffffff16565b6114b090919063ffffffff16565b81602001818152505061276c606461275e60165486612ced90919063ffffffff16565b6114b090919063ffffffff16565b81600001818152505061279d606461278f60185486612ced90919063ffffffff16565b6114b090919063ffffffff16565b8160400181815250506127ce60646127c060195486612ced90919063ffffffff16565b6114b090919063ffffffff16565b81606001818152505061283081600001516128228360200151612814856060015161280687604001518a612d6790919063ffffffff16565b612d6790919063ffffffff16565b612d6790919063ffffffff16565b612d6790919063ffffffff16565b8160800181815250506000612852826020015185612d6790919063ffffffff16565b9050612862868360200151613185565b6128b481600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d6790919063ffffffff16565b600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061294d8260800151600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461256090919063ffffffff16565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a286129ae8360000151846020015161256090919063ffffffff16565b612a1a8460600151612a0c8660400151600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461256090919063ffffffff16565b61256090919063ffffffff16565b61256090919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550602160159054906101000a900460ff168015612ad55750602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b8015612b0d57503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b8015612b675750602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b8015612c185750602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480612c175750602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b5b15612c4e57612c4d602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168360200151613185565b5b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460800151604051612caf9190613504565b60405180910390a3612cbf612cc7565b505050505050565b601254601681905550601354601781905550601454601881905550601554601981905550565b6000808303612cff5760009050612d61565b60008284612d0d91906140c1565b9050828482612d1c9190613fce565b14612d5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d539061418d565b60405180910390fd5b809150505b92915050565b6000612da983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612061565b905092915050565b612dde30602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611502565b602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612e67969594939291906141ce565b60606040518083038185885af1158015612e85573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612eaa9190614244565b5050505050565b6000600267ffffffffffffffff811115612ece57612ecd613dac565b5b604051908082528060200260200182016040528015612efc5781602001602082028036833780820191505090505b509050602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f909190613e1f565b81600081518110612fa457612fa3613ddb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061301557613014613ddb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de9583600084601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b81526004016130d49493929190614297565b6000604051808303818588803b1580156130ed57600080fd5b505af1158015613101573d6000803e3d6000fd5b50505050505050565b600060175414801561311e57506000601654145b801561312c57506000601854145b801561313a57506000601954145b6131835760175460138190555060165460128190555060185460148190555060195460158190555060006017819055506000601681905550600060188190555060006019819055505b565b61318e82610e95565b81111561319a57600080fd5b6131ec81600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d6790919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061324481600554612d6790919063ffffffff16565b60058190555061325f81601a5461256090919063ffffffff16565b601a81905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516132c39190613504565b60405180910390a35050565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b600081519050919050565b600082825260208201905092915050565b60005b8381101561333857808201518184015260208101905061331d565b83811115613347576000848401525b50505050565b6000601f19601f8301169050919050565b6000613369826132fe565b6133738185613309565b935061338381856020860161331a565b61338c8161334d565b840191505092915050565b600060208201905081810360008301526133b1818461335e565b905092915050565b600080fd5b6000819050919050565b6133d1816133be565b81146133dc57600080fd5b50565b6000813590506133ee816133c8565b92915050565b60006020828403121561340a576134096133b9565b5b6000613418848285016133df565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061344c82613421565b9050919050565b61345c81613441565b811461346757600080fd5b50565b60008135905061347981613453565b92915050565b60008060408385031215613496576134956133b9565b5b60006134a48582860161346a565b92505060206134b5858286016133df565b9150509250929050565b60008115159050919050565b6134d4816134bf565b82525050565b60006020820190506134ef60008301846134cb565b92915050565b6134fe816133be565b82525050565b600060208201905061351960008301846134f5565b92915050565b6000819050919050565b600061354461353f61353a84613421565b61351f565b613421565b9050919050565b600061355682613529565b9050919050565b60006135688261354b565b9050919050565b6135788161355d565b82525050565b6000602082019050613593600083018461356f565b92915050565b60006135a482613421565b9050919050565b6135b481613599565b81146135bf57600080fd5b50565b6000813590506135d1816135ab565b92915050565b6000602082840312156135ed576135ec6133b9565b5b60006135fb848285016135c2565b91505092915050565b60008060006060848603121561361d5761361c6133b9565b5b600061362b8682870161346a565b935050602061363c8682870161346a565b925050604061364d868287016133df565b9150509250925092565b600060ff82169050919050565b61366d81613657565b82525050565b60006020820190506136886000830184613664565b92915050565b61369781613599565b82525050565b60006020820190506136b2600083018461368e565b92915050565b6136c181613441565b82525050565b60006020820190506136dc60008301846136b8565b92915050565b6000602082840312156136f8576136f76133b9565b5b60006137068482850161346a565b91505092915050565b60008060408385031215613726576137256133b9565b5b60006137348582860161346a565b92505060206137458582860161346a565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613785602083613309565b91506137908261374f565b602082019050919050565b600060208201905081810360008301526137b481613778565b9050919050565b7f416d6f756e74206d7573742062652067726561746572207468616e20302e352560008201527f206f6620737570706c7900000000000000000000000000000000000000000000602082015250565b6000613817602a83613309565b9150613822826137bb565b604082019050919050565b600060208201905081810360008301526138468161380a565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006138a9602683613309565b91506138b48261384d565b604082019050919050565b600060208201905081810360008301526138d88161389c565b9050919050565b7f6e656761746976652067686f7374207269646572000000000000000000000000600082015250565b6000613915601483613309565b9150613920826138df565b602082019050919050565b6000602082019050818103600083015261394481613908565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006139a7602483613309565b91506139b28261394b565b604082019050919050565b600060208201905081810360008301526139d68161399a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613a39602283613309565b9150613a44826139dd565b604082019050919050565b60006020820190508181036000830152613a6881613a2c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613acb602583613309565b9150613ad682613a6f565b604082019050919050565b60006020820190508181036000830152613afa81613abe565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613b5d602383613309565b9150613b6882613b01565b604082019050919050565b60006020820190508181036000830152613b8c81613b50565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613bef602983613309565b9150613bfa82613b93565b604082019050919050565b60006020820190508181036000830152613c1e81613be2565b9050919050565b7f596f7520617265206265696e67206772656564792e20457863656564696e672060008201527f4d61782057616c6c65742e000000000000000000000000000000000000000000602082015250565b6000613c81602b83613309565b9150613c8c82613c25565b604082019050919050565b60006020820190508181036000830152613cb081613c74565b9050919050565b7f536c6f7720646f776e2062756464792e2e2e74686572652069732061206d617860008201527f207472616e73616374696f6e0000000000000000000000000000000000000000602082015250565b6000613d13602c83613309565b9150613d1e82613cb7565b604082019050919050565b60006020820190508181036000830152613d4281613d06565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613d83826133be565b9150613d8e836133be565b925082821015613da157613da0613d49565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613e1981613453565b92915050565b600060208284031215613e3557613e346133b9565b5b6000613e4384828501613e0a565b91505092915050565b6000819050919050565b6000613e71613e6c613e6784613e4c565b61351f565b6133be565b9050919050565b613e8181613e56565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613ebc81613441565b82525050565b6000613ece8383613eb3565b60208301905092915050565b6000602082019050919050565b6000613ef282613e87565b613efc8185613e92565b9350613f0783613ea3565b8060005b83811015613f38578151613f1f8882613ec2565b9750613f2a83613eda565b925050600181019050613f0b565b5085935050505092915050565b600060a082019050613f5a60008301886134f5565b613f676020830187613e78565b8181036040830152613f798186613ee7565b9050613f8860608301856136b8565b613f9560808301846134f5565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613fd9826133be565b9150613fe4836133be565b925082613ff457613ff3613f9f565b5b828204905092915050565b600061400a826133be565b9150614015836133be565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561404a57614049613d49565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061408b601b83613309565b915061409682614055565b602082019050919050565b600060208201905081810360008301526140ba8161407e565b9050919050565b60006140cc826133be565b91506140d7836133be565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156141105761410f613d49565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614177602183613309565b91506141828261411b565b604082019050919050565b600060208201905081810360008301526141a68161416a565b9050919050565b60006141b88261354b565b9050919050565b6141c8816141ad565b82525050565b600060c0820190506141e360008301896136b8565b6141f060208301886134f5565b6141fd6040830187613e78565b61420a6060830186613e78565b61421760808301856141bf565b61422460a08301846134f5565b979650505050505050565b60008151905061423e816133c8565b92915050565b60008060006060848603121561425d5761425c6133b9565b5b600061426b8682870161422f565b935050602061427c8682870161422f565b925050604061428d8682870161422f565b9150509250925092565b60006080820190506142ac6000830187613e78565b81810360208301526142be8186613ee7565b90506142cd60408301856141bf565b6142da60608301846134f5565b9594505050505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220d48ad27b65442b2b1c08b95dd7d7a55f7551b077ef782d51c980b0f486d6afb064736f6c634300080f0033

Deployed Bytecode Sourcemap

11238:15763:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16366:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26729:153;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18135:284;;;;;;;;;;;;;:::i;:::-;;17207:163;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12130:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13195:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16643:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12237:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26890:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11807:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17378:312;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11989:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26092:266;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11859:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16552:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13042:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13243:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24295:246;;;;;;;;;;;;;:::i;:::-;;26521:76;;;;;;;;;;;;;:::i;:::-;;11747:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16746:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5288:148;;;;;;;;;;;;;:::i;:::-;;5074:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13316:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12202;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16457:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12059:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16877:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11685:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17698:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12166:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12024:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17054:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19019:188;;;;;;;;;;;;;:::i;:::-;;26366:147;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12093:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5448:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24549:248;;;;;;;;;;;;;:::i;:::-;;21949:222;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12611:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16366:83;16403:13;16436:5;;;;;;;;;;;;;;;;;16429:12;;16366:83;:::o;26729:153::-;26817:15;;;;;;;;;;;26801:31;;:12;:10;:12::i;:::-;:31;;;26793:40;;;;;;26863:11;26844:16;:30;;;;26729:153;:::o;18135:284::-;18203:15;;;;;;;;;;;18187:31;;:12;:10;:12::i;:::-;:31;;;18179:40;;;;;;18241:1;18230:8;:12;;;;18265:1;18253:9;:13;;;;18288:1;18277:8;:12;;;;18311:1;18300:8;:12;;;;18337:1;18325:9;:13;;;;18362:1;18349:10;:14;;;;18386:1;18374:9;:13;;;;18410:1;18398:9;:13;;;;18135:284::o;17207:163::-;17284:4;17301:39;17310:12;:10;:12::i;:::-;17324:7;17333:6;17301:8;:39::i;:::-;17358:4;17351:11;;17207:163;;;;:::o;12130:28::-;;;;:::o;13195:41::-;;;;;;;;;;;;;:::o;16643:95::-;16696:7;16723;;16716:14;;16643:95;:::o;12237:29::-;;;;:::o;26890:106::-;5211:12;:10;:12::i;:::-;5201:22;;:6;;;;;;;;;;:22;;;5193:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26980:8:::1;26968:9;;:20;;;;;;;;;;;;;;;;;;26890:106:::0;:::o;11807:40::-;;;;:::o;17378:312::-;17478:4;17495:36;17505:6;17513:9;17524:6;17495:9;:36::i;:::-;17542:118;17551:6;17558:12;:10;:12::i;:::-;17571:88;17609:6;17571:88;;;;;;;;;;;;;;;;;:11;:19;17583:6;17571:19;;;;;;;;;;;;;;;:33;17591:12;:10;:12::i;:::-;17571:33;;;;;;;;;;;;;;;;:37;;:88;;;;;:::i;:::-;17542:8;:118::i;:::-;17678:4;17671:11;;17378:312;;;;;:::o;11989:27::-;;;;:::o;26092:266::-;26189:15;;;;;;;;;;;26173:31;;:12;:10;:12::i;:::-;:31;;;26165:40;;;;;;26242:16;26254:3;26242:7;;:11;;:16;;;;:::i;:::-;26224:15;:34;26216:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;26335:15;26316:16;:34;;;;26092:266;:::o;11859:41::-;;;;:::o;16552:83::-;16593:5;11491:1;16611:16;;16552:83;:::o;13042:81::-;;;;;;;;;;;;;:::o;13243:28::-;;;;;;;;;;;;;:::o;24295:246::-;24361:15;;;;;;;;;;;24345:31;;:12;:10;:12::i;:::-;:31;;;24337:40;;;;;;24388:23;24414:24;24432:4;24414:9;:24::i;:::-;24388:50;;24471:1;24453:15;:19;24449:85;;;24489:33;24506:15;24489:16;:33::i;:::-;24449:85;24326:215;24295:246::o;26521:76::-;5211:12;:10;:12::i;:::-;5201:22;;:6;;;;;;;;;;:22;;;5193:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26585:4:::1;26574:8;;:15;;;;;;;;;;;;;;;;;;26521:76::o:0;11747:48::-;;;;:::o;16746:119::-;16812:7;16839:9;:18;16849:7;16839:18;;;;;;;;;;;;;;;;16832:25;;16746:119;;;:::o;5288:148::-;5211:12;:10;:12::i;:::-;5201:22;;:6;;;;;;;;;;:22;;;5193:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5395:1:::1;5358:40;;5379:6;::::0;::::1;;;;;;;;5358:40;;;;;;;;;;;;5426:1;5409:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;5288:148::o:0;5074:79::-;5112:7;5139:6;;;;;;;;;;;5132:13;;5074:79;:::o;13316:28::-;;;;;;;;;;;;;:::o;12202:::-;;;;:::o;16457:87::-;16496:13;16529:7;;;;;;;;;;;;;;;;;16522:14;;16457:87;:::o;12059:27::-;;;;:::o;16877:169::-;16957:4;16974:42;16984:12;:10;:12::i;:::-;16998:9;17009:6;16974:9;:42::i;:::-;17034:4;17027:11;;16877:169;;;;:::o;11685:41::-;;;;:::o;17698:91::-;17742:7;17769:12;;17762:19;;17698:91;:::o;12166:29::-;;;;:::o;12024:28::-;;;;:::o;17054:145::-;17137:7;17164:11;:18;17176:5;17164:18;;;;;;;;;;;;;;;:27;17183:7;17164:27;;;;;;;;;;;;;;;;17157:34;;17054:145;;;;:::o;19019:188::-;19087:15;;;;;;;;;;;19071:31;;:12;:10;:12::i;:::-;:31;;;19063:40;;;;;;19126:1;19114:9;:13;;;;19150:1;19138:9;:13;;;;19173:1;19162:8;:12;;;;19196:1;19185:8;:12;;;;19019:188::o;26366:147::-;26454:15;;;;;;;;;;;26438:31;;:12;:10;:12::i;:::-;:31;;;26430:40;;;;;;26494:11;26481:10;:24;;;;26366:147;:::o;12093:28::-;;;;:::o;5448:201::-;5211:12;:10;:12::i;:::-;5201:22;;:6;;;;;;;;;;:22;;;5193:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5557:1:::1;5537:22;;:8;:22;;::::0;5529:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;5613:28;5632:8;5613:18;:28::i;:::-;5448:201:::0;:::o;24549:248::-;24615:15;;;;;;;;;;;24599:31;;:12;:10;:12::i;:::-;:31;;;24591:40;;;;;;24642:26;24671:21;24642:50;;24728:1;24707:18;:22;24703:87;;;24746:32;24759:18;24746:12;:32::i;:::-;24703:87;24580:217;24549:248::o;21949:222::-;22038:14;22020;:32;;22012:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;22111:15;;;;;;;;;;;22095:31;;:12;:10;:12::i;:::-;:31;;;22087:40;;;;;;22149:14;22138:8;:25;;;;21949:222;:::o;12611:27::-;;;;:::o;1765:132::-;1823:7;1850:39;1854:1;1857;1850:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1843:46;;1765:132;;;;:::o;176:98::-;229:7;256:10;249:17;;176:98;:::o;19215:335::-;19325:1;19308:19;;:5;:19;;;19300:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19406:1;19387:21;;:7;:21;;;19379:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19488:6;19458:11;:18;19470:5;19458:18;;;;;;;;;;;;;;;:27;19477:7;19458:27;;;;;;;;;;;;;;;:36;;;;19526:7;19510:32;;19519:5;19510:32;;;19535:6;19510:32;;;;;;:::i;:::-;;;;;;;;19215:335;;;:::o;19562:2379::-;19666:1;19650:18;;:4;:18;;;19642:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19743:1;19729:16;;:2;:16;;;19721:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;19813:1;19804:6;:10;19796:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;19880:4;:10;19885:4;19880:10;;;;;;;;;;;;;;;;;;;;;;;;;19879:11;:24;;;;;19895:4;:8;19900:2;19895:8;;;;;;;;;;;;;;;;;;;;;;;;;19894:9;19879:24;19871:33;;;;;;19917:12;19932:4;19917:19;;19961:7;:5;:7::i;:::-;19953:15;;:4;:15;;;;:32;;;;;19978:7;:5;:7::i;:::-;19972:13;;:2;:13;;;;19953:32;:57;;;;;20005:4;19989:21;;:4;:21;;;;19953:57;:80;;;;;20028:4;20014:19;;:2;:19;;;;19953:80;19949:1787;;;20064:13;;;;;;;;;;;20056:21;;:4;:21;;;:55;;;;;20095:15;;;;;;;;;;;20081:30;;:2;:30;;;;20056:55;:115;;;;;20118:18;:24;20137:4;20118:24;;;;;;;;;;;;;;;;;;;;;;;;;20117:25;:52;;;;20147:18;:22;20166:2;20147:22;;;;;;;;;;;;;;;;;;;;;;;;;20146:23;20117:52;20056:115;20052:351;;;20229:16;;20200:25;20218:6;20200:13;20210:2;20200:9;:13::i;:::-;:17;;:25;;;;:::i;:::-;:45;;20192:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;20330:8;;20320:6;:18;;20312:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;20052:351;20445:13;;;;;;;;;;;20437:21;;:4;:21;;;:55;;;;;20476:15;;;;;;;;;;;20462:30;;:2;:30;;;;20437:55;:68;;;;;20497:4;:8;20502:2;20497:8;;;;;;;;;;;;;;;;;;;;;;;;;20496:9;20437:68;:83;;;;;20510:4;:10;20515:4;20510:10;;;;;;;;;;;;;;;;;;;;;;;;;20509:11;20437:83;20433:259;;;20552:8;;20541;:19;;;;20591:9;;20579;:21;;;;20630:8;;20619;:19;;;;20668:8;;20657;:19;;;;20433:259;20734:13;;;;;;;;;;;20728:19;;:2;:19;;;:55;;;;;20767:15;;;;;;;;;;;20751:32;;:4;:32;;;;20728:55;:68;;;;;20788:4;:8;20793:2;20788:8;;;;;;;;;;;;;;;;;;;;;;;;;20787:9;20728:68;:83;;;;;20801:4;:10;20806:4;20801:10;;;;;;;;;;;;;;;;;;;;;;;;;20800:11;20728:83;20724:263;;;20843:9;;20832:8;:20;;;;20883:10;;20871:9;:22;;;;20923:9;;20912:8;:20;;;;20962:9;;20951:8;:20;;;;20724:263;21019:8;;;;;;;;;;;21018:9;:34;;;;;21039:13;;;;;;;;;;;21031:21;;:4;:21;;;;21018:34;21014:711;;;21075:28;21106:24;21124:4;21106:9;:24::i;:::-;21075:55;;21178:10;;21155:20;:33;21151:118;;;21213:36;21228:20;21213:14;:36::i;:::-;21151:118;21289:26;21318:21;21289:50;;21377:8;;;;;;;;;;;21376:9;:37;;;;;21411:1;21390:18;:22;21376:37;21372:318;;;21438:35;21451:21;21438:12;:35::i;:::-;21372:318;;;21503:8;;;;;;;;;;;:51;;;;;21537:16;;21516:18;:37;21503:51;21499:191;;;21583:17;21604:25;21627:1;21604:18;:22;;:25;;;;:::i;:::-;21583:47;;21653:17;21660:9;21653:6;:17::i;:::-;21556:134;21499:191;21372:318;21054:671;;21014:711;19949:1787;21752:18;:24;21771:4;21752:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;21780:18;:22;21799:2;21780:22;;;;;;;;;;;;;;;;;;;;;;;;;21752:50;21748:98;;;21829:5;21819:15;;21748:98;21866:41;21881:4;21887:2;21891:6;21899:7;21866:14;:41::i;:::-;21918:15;:13;:15::i;:::-;19631:2310;19562:2379;;;:::o;1313:190::-;1399:7;1432:1;1427;:6;;1435:12;1419:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1459:9;1475:1;1471;:5;;;;:::i;:::-;1459:17;;1494:1;1487:8;;;1313:190;;;;;:::o;22179:404::-;13393:4;13382:8;;:15;;;;;;;;;;;;;;;;;;22254:21:::1;22292:1;22278:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22254:40;;22323:4;22305;22310:1;22305:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;22349:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22339:4;22344:1;22339:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;22382:62;22399:4;22414:15;;;;;;;;;;;22432:11;22382:8;:62::i;:::-;22455:15;;;;;;;;;;;:66;;;22522:11;22535:1;22538:4;22552;22559:15;22455:120;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;22243:340;13431:5:::0;13420:8;;:16;;;;;;;;;;;;;;;;;;22179:404;:::o;5657:191::-;5731:16;5750:6;;;;;;;;;;;5731:25;;5776:8;5767:6;;:17;;;;;;;;;;;;;;;;;;5831:8;5800:40;;5821:8;5800:40;;;;;;;;;;;;5720:128;5657:191;:::o;24135:152::-;24192:15;;;;;;;;;;;:24;;:41;24217:15;24230:1;24218:6;24217:12;;:15;;;;:::i;:::-;24192:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24244:9;;;;;;;;;;;:18;;:35;24263:15;24276:1;24264:6;24263:12;;:15;;;;:::i;:::-;24244:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24135:152;:::o;1905:189::-;1991:7;2023:1;2019;:5;2026:12;2011:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2050:9;2066:1;2062;:5;;;;:::i;:::-;2050:17;;2085:1;2078:8;;;1905:189;;;;;:::o;982:179::-;1040:7;1060:9;1076:1;1072;:5;;;;:::i;:::-;1060:17;;1101:1;1096;:6;;1088:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1152:1;1145:8;;;982:179;;;;:::o;23578:549::-;13393:4;13382:8;;:15;;;;;;;;;;;;;;;;;;23660:20:::1;23683:91;23722:51;23764:8;;23722:37;23750:8;;23722:23;23736:8;;23722:9;;:13;;:23;;;;:::i;:::-;:27;;:37;;;;:::i;:::-;:41;;:51;;;;:::i;:::-;23683:34;23696:20;23683:8;;:12;;:34;;;;:::i;:::-;:38;;:91;;;;:::i;:::-;23660:114;;23785:12;23801:19;23818:1;23801:12;:16;;:19;;;;:::i;:::-;23785:35;;23831:17;23851:30;23876:4;23851:20;:24;;:30;;;;:::i;:::-;23831:50;;23892:22;23917:21;23892:46;;23949:27;23966:9;23949:16;:27::i;:::-;23987:18;24008:70;24068:9;24009:53;24057:4;24010:41;24036:14;24010:21;:25;;:41;;;;:::i;:::-;24009:47;;:53;;;;:::i;:::-;24008:59;;:70;;;;:::i;:::-;23987:91;;24089:30;24102:4;24108:10;24089:12;:30::i;:::-;23649:478;;;;;13431:5:::0;13420:8;;:16;;;;;;;;;;;;;;;;;;23578:549;:::o;26605:116::-;26666:1;26657:6;:10;26653:61;;;26681:24;26698:6;26681:16;:24::i;:::-;26653:61;26605:116;:::o;24805:1238::-;24918:7;24913:60;;24947:14;:12;:14::i;:::-;24913:60;24993:24;;:::i;:::-;25041:30;25067:3;25041:21;25052:9;;25041:6;:10;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;25028:4;:10;;:43;;;;;25094:29;25119:3;25094:20;25105:8;;25094:6;:10;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;25082:4;:9;;:41;;;;;25146:29;25171:3;25146:20;25157:8;;25146:6;:10;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;25134:4;:9;;:41;;;;;25198:29;25223:3;25198:20;25209:8;;25198:6;:10;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;25186:4;:9;;:41;;;;;25263:67;25320:4;:9;;;25263:52;25304:4;:10;;;25263:36;25289:4;:9;;;25263:21;25274:4;:9;;;25263:6;:10;;:21;;;;:::i;:::-;:25;;:36;;;;:::i;:::-;:40;;:52;;;;:::i;:::-;:56;;:67;;;;:::i;:::-;25248:4;:12;;:82;;;;;25343:21;25367:22;25378:4;:10;;;25367:6;:10;;:22;;;;:::i;:::-;25343:46;;25400:27;25408:6;25416:4;:10;;;25400:7;:27::i;:::-;25460:36;25482:13;25460:9;:17;25470:6;25460:17;;;;;;;;;;;;;;;;:21;;:36;;;;:::i;:::-;25440:9;:17;25450:6;25440:17;;;;;;;;;;;;;;;:56;;;;25530:38;25555:4;:12;;;25530:9;:20;25540:9;25530:20;;;;;;;;;;;;;;;;:24;;:38;;;;:::i;:::-;25507:9;:20;25517:9;25507:20;;;;;;;;;;;;;;;:61;;;;25606:85;25665:25;25680:4;:9;;;25665:4;:10;;;:14;;:25;;;;:::i;:::-;25606:54;25650:4;:9;;;25606:39;25635:4;:9;;;25606;:24;25624:4;25606:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;:43;;:54;;;;:::i;:::-;:58;;:85;;;;:::i;:::-;25579:9;:24;25597:4;25579:24;;;;;;;;;;;;;;;:112;;;;25715:8;;;;;;;;;;;:35;;;;;25737:13;;;;;;;;;;;25727:23;;:6;:23;;;;25715:35;:62;;;;;25772:4;25754:23;;:6;:23;;;;25715:62;:100;;;;;25799:15;;;;;;;;;;;25781:34;;:6;:34;;;;25715:100;:173;;;;;25841:15;;;;;;;;;;;25820:37;;:9;:37;;;:67;;;;25874:13;;;;;;;;;;;25861:26;;:9;:26;;;25820:67;25715:173;25712:239;;;25905:34;25913:13;;;;;;;;;;;25928:4;:10;;;25905:7;:34::i;:::-;25712:239;25985:9;25968:41;;25977:6;25968:41;;;25996:4;:12;;;25968:41;;;;;;:::i;:::-;;;;;;;;26020:15;:13;:15::i;:::-;24902:1141;;24805:1238;;;;:::o;18816:195::-;18871:16;;18860:8;:27;;;;18910:17;;18898:9;:29;;;;18949:16;;18938:8;:27;;;;18987:16;;18976:8;:27;;;;18816:195::o;1511:246::-;1569:7;1598:1;1593;:6;1589:47;;1623:1;1616:8;;;;1589:47;1646:9;1662:1;1658;:5;;;;:::i;:::-;1646:17;;1691:1;1686;1682;:5;;;;:::i;:::-;:10;1674:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1748:1;1741:8;;;1511:246;;;;;:::o;1169:136::-;1227:7;1254:43;1258:1;1261;1254:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1247:50;;1169:136;;;;:::o;23112:456::-;23193:62;23210:4;23225:15;;;;;;;;;;;23243:11;23193:8;:62::i;:::-;23298:15;;;;;;;;;;;:31;;;23337:9;23370:4;23390:11;23416:1;23459;23502:15;;;;;;;;;;;23532;23298:262;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;23112:456;;:::o;22591:513::-;22712:21;22750:1;22736:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22712:40;;22773:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22763:4;22768:1;22763:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;22824:3;;;;;;;;;;;22806:4;22811:1;22806:7;;;;;;;;:::i;:::-;;;;;;;:22;;;;;;;;;;;22865:15;;;;;;;;;;;:66;;;22939:6;22961:1;23008:4;23027;;;;;;;;;;;23062:15;22865:223;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22641:463;22591:513;:::o;18427:377::-;18487:1;18474:9;;:14;:31;;;;;18504:1;18492:8;;:13;18474:31;:48;;;;;18521:1;18509:8;;:13;18474:48;:65;;;;;18538:1;18526:8;;:13;18474:65;18541:7;18470:78;18578:9;;18558:17;:29;;;;18617:8;;18598:16;:27;;;;18655:8;;18636:16;:27;;;;18693:8;;18674:16;:27;;;;18726:1;18714:9;:13;;;;18749:1;18738:8;:12;;;;18772:1;18761:8;:12;;;;18795:1;18784:8;:12;;;;18427:377;:::o;17797:330::-;17887:19;17897:8;17887:9;:19::i;:::-;17876:7;:30;;17867:40;;;;;;17940:32;17964:7;17940:9;:19;17950:8;17940:19;;;;;;;;;;;;;;;;:23;;:32;;;;:::i;:::-;17918:9;:19;17928:8;17918:19;;;;;;;;;;;;;;;:54;;;;17993:20;18005:7;17993;;:11;;:20;;;;:::i;:::-;17983:7;:30;;;;18039:25;18056:7;18039:12;;:16;;:25;;;;:::i;:::-;18024:12;:40;;;;18107:1;18080:39;;18089:8;18080:39;;;18111:7;18080:39;;;;;;:::i;:::-;;;;;;;;17797:330;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:77;1761:7;1790:5;1779:16;;1724:77;;;:::o;1807:122::-;1880:24;1898:5;1880:24;:::i;:::-;1873:5;1870:35;1860:63;;1919:1;1916;1909:12;1860:63;1807:122;:::o;1935:139::-;1981:5;2019:6;2006:20;1997:29;;2035:33;2062:5;2035:33;:::i;:::-;1935:139;;;;:::o;2080:329::-;2139:6;2188:2;2176:9;2167:7;2163:23;2159:32;2156:119;;;2194:79;;:::i;:::-;2156:119;2314:1;2339:53;2384:7;2375:6;2364:9;2360:22;2339:53;:::i;:::-;2329:63;;2285:117;2080:329;;;;:::o;2415:126::-;2452:7;2492:42;2485:5;2481:54;2470:65;;2415:126;;;:::o;2547:96::-;2584:7;2613:24;2631:5;2613:24;:::i;:::-;2602:35;;2547:96;;;:::o;2649:122::-;2722:24;2740:5;2722:24;:::i;:::-;2715:5;2712:35;2702:63;;2761:1;2758;2751:12;2702:63;2649:122;:::o;2777:139::-;2823:5;2861:6;2848:20;2839:29;;2877:33;2904:5;2877:33;:::i;:::-;2777:139;;;;:::o;2922:474::-;2990:6;2998;3047:2;3035:9;3026:7;3022:23;3018:32;3015:119;;;3053:79;;:::i;:::-;3015:119;3173:1;3198:53;3243:7;3234:6;3223:9;3219:22;3198:53;:::i;:::-;3188:63;;3144:117;3300:2;3326:53;3371:7;3362:6;3351:9;3347:22;3326:53;:::i;:::-;3316:63;;3271:118;2922:474;;;;;:::o;3402:90::-;3436:7;3479:5;3472:13;3465:21;3454:32;;3402:90;;;:::o;3498:109::-;3579:21;3594:5;3579:21;:::i;:::-;3574:3;3567:34;3498:109;;:::o;3613:210::-;3700:4;3738:2;3727:9;3723:18;3715:26;;3751:65;3813:1;3802:9;3798:17;3789:6;3751:65;:::i;:::-;3613:210;;;;:::o;3829:118::-;3916:24;3934:5;3916:24;:::i;:::-;3911:3;3904:37;3829:118;;:::o;3953:222::-;4046:4;4084:2;4073:9;4069:18;4061:26;;4097:71;4165:1;4154:9;4150:17;4141:6;4097:71;:::i;:::-;3953:222;;;;:::o;4181:60::-;4209:3;4230:5;4223:12;;4181:60;;;:::o;4247:142::-;4297:9;4330:53;4348:34;4357:24;4375:5;4357:24;:::i;:::-;4348:34;:::i;:::-;4330:53;:::i;:::-;4317:66;;4247:142;;;:::o;4395:126::-;4445:9;4478:37;4509:5;4478:37;:::i;:::-;4465:50;;4395:126;;;:::o;4527:152::-;4603:9;4636:37;4667:5;4636:37;:::i;:::-;4623:50;;4527:152;;;:::o;4685:183::-;4798:63;4855:5;4798:63;:::i;:::-;4793:3;4786:76;4685:183;;:::o;4874:274::-;4993:4;5031:2;5020:9;5016:18;5008:26;;5044:97;5138:1;5127:9;5123:17;5114:6;5044:97;:::i;:::-;4874:274;;;;:::o;5154:104::-;5199:7;5228:24;5246:5;5228:24;:::i;:::-;5217:35;;5154:104;;;:::o;5264:138::-;5345:32;5371:5;5345:32;:::i;:::-;5338:5;5335:43;5325:71;;5392:1;5389;5382:12;5325:71;5264:138;:::o;5408:155::-;5462:5;5500:6;5487:20;5478:29;;5516:41;5551:5;5516:41;:::i;:::-;5408:155;;;;:::o;5569:345::-;5636:6;5685:2;5673:9;5664:7;5660:23;5656:32;5653:119;;;5691:79;;:::i;:::-;5653:119;5811:1;5836:61;5889:7;5880:6;5869:9;5865:22;5836:61;:::i;:::-;5826:71;;5782:125;5569:345;;;;:::o;5920:619::-;5997:6;6005;6013;6062:2;6050:9;6041:7;6037:23;6033:32;6030:119;;;6068:79;;:::i;:::-;6030:119;6188:1;6213:53;6258:7;6249:6;6238:9;6234:22;6213:53;:::i;:::-;6203:63;;6159:117;6315:2;6341:53;6386:7;6377:6;6366:9;6362:22;6341:53;:::i;:::-;6331:63;;6286:118;6443:2;6469:53;6514:7;6505:6;6494:9;6490:22;6469:53;:::i;:::-;6459:63;;6414:118;5920:619;;;;;:::o;6545:86::-;6580:7;6620:4;6613:5;6609:16;6598:27;;6545:86;;;:::o;6637:112::-;6720:22;6736:5;6720:22;:::i;:::-;6715:3;6708:35;6637:112;;:::o;6755:214::-;6844:4;6882:2;6871:9;6867:18;6859:26;;6895:67;6959:1;6948:9;6944:17;6935:6;6895:67;:::i;:::-;6755:214;;;;:::o;6975:142::-;7078:32;7104:5;7078:32;:::i;:::-;7073:3;7066:45;6975:142;;:::o;7123:254::-;7232:4;7270:2;7259:9;7255:18;7247:26;;7283:87;7367:1;7356:9;7352:17;7343:6;7283:87;:::i;:::-;7123:254;;;;:::o;7383:118::-;7470:24;7488:5;7470:24;:::i;:::-;7465:3;7458:37;7383:118;;:::o;7507:222::-;7600:4;7638:2;7627:9;7623:18;7615:26;;7651:71;7719:1;7708:9;7704:17;7695:6;7651:71;:::i;:::-;7507:222;;;;:::o;7735:329::-;7794:6;7843:2;7831:9;7822:7;7818:23;7814:32;7811:119;;;7849:79;;:::i;:::-;7811:119;7969:1;7994:53;8039:7;8030:6;8019:9;8015:22;7994:53;:::i;:::-;7984:63;;7940:117;7735:329;;;;:::o;8070:474::-;8138:6;8146;8195:2;8183:9;8174:7;8170:23;8166:32;8163:119;;;8201:79;;:::i;:::-;8163:119;8321:1;8346:53;8391:7;8382:6;8371:9;8367:22;8346:53;:::i;:::-;8336:63;;8292:117;8448:2;8474:53;8519:7;8510:6;8499:9;8495:22;8474:53;:::i;:::-;8464:63;;8419:118;8070:474;;;;;:::o;8550:182::-;8690:34;8686:1;8678:6;8674:14;8667:58;8550:182;:::o;8738:366::-;8880:3;8901:67;8965:2;8960:3;8901:67;:::i;:::-;8894:74;;8977:93;9066:3;8977:93;:::i;:::-;9095:2;9090:3;9086:12;9079:19;;8738:366;;;:::o;9110:419::-;9276:4;9314:2;9303:9;9299:18;9291:26;;9363:9;9357:4;9353:20;9349:1;9338:9;9334:17;9327:47;9391:131;9517:4;9391:131;:::i;:::-;9383:139;;9110:419;;;:::o;9535:229::-;9675:34;9671:1;9663:6;9659:14;9652:58;9744:12;9739:2;9731:6;9727:15;9720:37;9535:229;:::o;9770:366::-;9912:3;9933:67;9997:2;9992:3;9933:67;:::i;:::-;9926:74;;10009:93;10098:3;10009:93;:::i;:::-;10127:2;10122:3;10118:12;10111:19;;9770:366;;;:::o;10142:419::-;10308:4;10346:2;10335:9;10331:18;10323:26;;10395:9;10389:4;10385:20;10381:1;10370:9;10366:17;10359:47;10423:131;10549:4;10423:131;:::i;:::-;10415:139;;10142:419;;;:::o;10567:225::-;10707:34;10703:1;10695:6;10691:14;10684:58;10776:8;10771:2;10763:6;10759:15;10752:33;10567:225;:::o;10798:366::-;10940:3;10961:67;11025:2;11020:3;10961:67;:::i;:::-;10954:74;;11037:93;11126:3;11037:93;:::i;:::-;11155:2;11150:3;11146:12;11139:19;;10798:366;;;:::o;11170:419::-;11336:4;11374:2;11363:9;11359:18;11351:26;;11423:9;11417:4;11413:20;11409:1;11398:9;11394:17;11387:47;11451:131;11577:4;11451:131;:::i;:::-;11443:139;;11170:419;;;:::o;11595:170::-;11735:22;11731:1;11723:6;11719:14;11712:46;11595:170;:::o;11771:366::-;11913:3;11934:67;11998:2;11993:3;11934:67;:::i;:::-;11927:74;;12010:93;12099:3;12010:93;:::i;:::-;12128:2;12123:3;12119:12;12112:19;;11771:366;;;:::o;12143:419::-;12309:4;12347:2;12336:9;12332:18;12324:26;;12396:9;12390:4;12386:20;12382:1;12371:9;12367:17;12360:47;12424:131;12550:4;12424:131;:::i;:::-;12416:139;;12143:419;;;:::o;12568:223::-;12708:34;12704:1;12696:6;12692:14;12685:58;12777:6;12772:2;12764:6;12760:15;12753:31;12568:223;:::o;12797:366::-;12939:3;12960:67;13024:2;13019:3;12960:67;:::i;:::-;12953:74;;13036:93;13125:3;13036:93;:::i;:::-;13154:2;13149:3;13145:12;13138:19;;12797:366;;;:::o;13169:419::-;13335:4;13373:2;13362:9;13358:18;13350:26;;13422:9;13416:4;13412:20;13408:1;13397:9;13393:17;13386:47;13450:131;13576:4;13450:131;:::i;:::-;13442:139;;13169:419;;;:::o;13594:221::-;13734:34;13730:1;13722:6;13718:14;13711:58;13803:4;13798:2;13790:6;13786:15;13779:29;13594:221;:::o;13821:366::-;13963:3;13984:67;14048:2;14043:3;13984:67;:::i;:::-;13977:74;;14060:93;14149:3;14060:93;:::i;:::-;14178:2;14173:3;14169:12;14162:19;;13821:366;;;:::o;14193:419::-;14359:4;14397:2;14386:9;14382:18;14374:26;;14446:9;14440:4;14436:20;14432:1;14421:9;14417:17;14410:47;14474:131;14600:4;14474:131;:::i;:::-;14466:139;;14193:419;;;:::o;14618:224::-;14758:34;14754:1;14746:6;14742:14;14735:58;14827:7;14822:2;14814:6;14810:15;14803:32;14618:224;:::o;14848:366::-;14990:3;15011:67;15075:2;15070:3;15011:67;:::i;:::-;15004:74;;15087:93;15176:3;15087:93;:::i;:::-;15205:2;15200:3;15196:12;15189:19;;14848:366;;;:::o;15220:419::-;15386:4;15424:2;15413:9;15409:18;15401:26;;15473:9;15467:4;15463:20;15459:1;15448:9;15444:17;15437:47;15501:131;15627:4;15501:131;:::i;:::-;15493:139;;15220:419;;;:::o;15645:222::-;15785:34;15781:1;15773:6;15769:14;15762:58;15854:5;15849:2;15841:6;15837:15;15830:30;15645:222;:::o;15873:366::-;16015:3;16036:67;16100:2;16095:3;16036:67;:::i;:::-;16029:74;;16112:93;16201:3;16112:93;:::i;:::-;16230:2;16225:3;16221:12;16214:19;;15873:366;;;:::o;16245:419::-;16411:4;16449:2;16438:9;16434:18;16426:26;;16498:9;16492:4;16488:20;16484:1;16473:9;16469:17;16462:47;16526:131;16652:4;16526:131;:::i;:::-;16518:139;;16245:419;;;:::o;16670:228::-;16810:34;16806:1;16798:6;16794:14;16787:58;16879:11;16874:2;16866:6;16862:15;16855:36;16670:228;:::o;16904:366::-;17046:3;17067:67;17131:2;17126:3;17067:67;:::i;:::-;17060:74;;17143:93;17232:3;17143:93;:::i;:::-;17261:2;17256:3;17252:12;17245:19;;16904:366;;;:::o;17276:419::-;17442:4;17480:2;17469:9;17465:18;17457:26;;17529:9;17523:4;17519:20;17515:1;17504:9;17500:17;17493:47;17557:131;17683:4;17557:131;:::i;:::-;17549:139;;17276:419;;;:::o;17701:230::-;17841:34;17837:1;17829:6;17825:14;17818:58;17910:13;17905:2;17897:6;17893:15;17886:38;17701:230;:::o;17937:366::-;18079:3;18100:67;18164:2;18159:3;18100:67;:::i;:::-;18093:74;;18176:93;18265:3;18176:93;:::i;:::-;18294:2;18289:3;18285:12;18278:19;;17937:366;;;:::o;18309:419::-;18475:4;18513:2;18502:9;18498:18;18490:26;;18562:9;18556:4;18552:20;18548:1;18537:9;18533:17;18526:47;18590:131;18716:4;18590:131;:::i;:::-;18582:139;;18309:419;;;:::o;18734:231::-;18874:34;18870:1;18862:6;18858:14;18851:58;18943:14;18938:2;18930:6;18926:15;18919:39;18734:231;:::o;18971:366::-;19113:3;19134:67;19198:2;19193:3;19134:67;:::i;:::-;19127:74;;19210:93;19299:3;19210:93;:::i;:::-;19328:2;19323:3;19319:12;19312:19;;18971:366;;;:::o;19343:419::-;19509:4;19547:2;19536:9;19532:18;19524:26;;19596:9;19590:4;19586:20;19582:1;19571:9;19567:17;19560:47;19624:131;19750:4;19624:131;:::i;:::-;19616:139;;19343:419;;;:::o;19768:180::-;19816:77;19813:1;19806:88;19913:4;19910:1;19903:15;19937:4;19934:1;19927:15;19954:191;19994:4;20014:20;20032:1;20014:20;:::i;:::-;20009:25;;20048:20;20066:1;20048:20;:::i;:::-;20043:25;;20087:1;20084;20081:8;20078:34;;;20092:18;;:::i;:::-;20078:34;20137:1;20134;20130:9;20122:17;;19954:191;;;;:::o;20151:180::-;20199:77;20196:1;20189:88;20296:4;20293:1;20286:15;20320:4;20317:1;20310:15;20337:180;20385:77;20382:1;20375:88;20482:4;20479:1;20472:15;20506:4;20503:1;20496:15;20523:143;20580:5;20611:6;20605:13;20596:22;;20627:33;20654:5;20627:33;:::i;:::-;20523:143;;;;:::o;20672:351::-;20742:6;20791:2;20779:9;20770:7;20766:23;20762:32;20759:119;;;20797:79;;:::i;:::-;20759:119;20917:1;20942:64;20998:7;20989:6;20978:9;20974:22;20942:64;:::i;:::-;20932:74;;20888:128;20672:351;;;;:::o;21029:85::-;21074:7;21103:5;21092:16;;21029:85;;;:::o;21120:158::-;21178:9;21211:61;21229:42;21238:32;21264:5;21238:32;:::i;:::-;21229:42;:::i;:::-;21211:61;:::i;:::-;21198:74;;21120:158;;;:::o;21284:147::-;21379:45;21418:5;21379:45;:::i;:::-;21374:3;21367:58;21284:147;;:::o;21437:114::-;21504:6;21538:5;21532:12;21522:22;;21437:114;;;:::o;21557:184::-;21656:11;21690:6;21685:3;21678:19;21730:4;21725:3;21721:14;21706:29;;21557:184;;;;:::o;21747:132::-;21814:4;21837:3;21829:11;;21867:4;21862:3;21858:14;21850:22;;21747:132;;;:::o;21885:108::-;21962:24;21980:5;21962:24;:::i;:::-;21957:3;21950:37;21885:108;;:::o;21999:179::-;22068:10;22089:46;22131:3;22123:6;22089:46;:::i;:::-;22167:4;22162:3;22158:14;22144:28;;21999:179;;;;:::o;22184:113::-;22254:4;22286;22281:3;22277:14;22269:22;;22184:113;;;:::o;22333:732::-;22452:3;22481:54;22529:5;22481:54;:::i;:::-;22551:86;22630:6;22625:3;22551:86;:::i;:::-;22544:93;;22661:56;22711:5;22661:56;:::i;:::-;22740:7;22771:1;22756:284;22781:6;22778:1;22775:13;22756:284;;;22857:6;22851:13;22884:63;22943:3;22928:13;22884:63;:::i;:::-;22877:70;;22970:60;23023:6;22970:60;:::i;:::-;22960:70;;22816:224;22803:1;22800;22796:9;22791:14;;22756:284;;;22760:14;23056:3;23049:10;;22457:608;;;22333:732;;;;:::o;23071:831::-;23334:4;23372:3;23361:9;23357:19;23349:27;;23386:71;23454:1;23443:9;23439:17;23430:6;23386:71;:::i;:::-;23467:80;23543:2;23532:9;23528:18;23519:6;23467:80;:::i;:::-;23594:9;23588:4;23584:20;23579:2;23568:9;23564:18;23557:48;23622:108;23725:4;23716:6;23622:108;:::i;:::-;23614:116;;23740:72;23808:2;23797:9;23793:18;23784:6;23740:72;:::i;:::-;23822:73;23890:3;23879:9;23875:19;23866:6;23822:73;:::i;:::-;23071:831;;;;;;;;:::o;23908:180::-;23956:77;23953:1;23946:88;24053:4;24050:1;24043:15;24077:4;24074:1;24067:15;24094:185;24134:1;24151:20;24169:1;24151:20;:::i;:::-;24146:25;;24185:20;24203:1;24185:20;:::i;:::-;24180:25;;24224:1;24214:35;;24229:18;;:::i;:::-;24214:35;24271:1;24268;24264:9;24259:14;;24094:185;;;;:::o;24285:305::-;24325:3;24344:20;24362:1;24344:20;:::i;:::-;24339:25;;24378:20;24396:1;24378:20;:::i;:::-;24373:25;;24532:1;24464:66;24460:74;24457:1;24454:81;24451:107;;;24538:18;;:::i;:::-;24451:107;24582:1;24579;24575:9;24568:16;;24285:305;;;;:::o;24596:177::-;24736:29;24732:1;24724:6;24720:14;24713:53;24596:177;:::o;24779:366::-;24921:3;24942:67;25006:2;25001:3;24942:67;:::i;:::-;24935:74;;25018:93;25107:3;25018:93;:::i;:::-;25136:2;25131:3;25127:12;25120:19;;24779:366;;;:::o;25151:419::-;25317:4;25355:2;25344:9;25340:18;25332:26;;25404:9;25398:4;25394:20;25390:1;25379:9;25375:17;25368:47;25432:131;25558:4;25432:131;:::i;:::-;25424:139;;25151:419;;;:::o;25576:348::-;25616:7;25639:20;25657:1;25639:20;:::i;:::-;25634:25;;25673:20;25691:1;25673:20;:::i;:::-;25668:25;;25861:1;25793:66;25789:74;25786:1;25783:81;25778:1;25771:9;25764:17;25760:105;25757:131;;;25868:18;;:::i;:::-;25757:131;25916:1;25913;25909:9;25898:20;;25576:348;;;;:::o;25930:220::-;26070:34;26066:1;26058:6;26054:14;26047:58;26139:3;26134:2;26126:6;26122:15;26115:28;25930:220;:::o;26156:366::-;26298:3;26319:67;26383:2;26378:3;26319:67;:::i;:::-;26312:74;;26395:93;26484:3;26395:93;:::i;:::-;26513:2;26508:3;26504:12;26497:19;;26156:366;;;:::o;26528:419::-;26694:4;26732:2;26721:9;26717:18;26709:26;;26781:9;26775:4;26771:20;26767:1;26756:9;26752:17;26745:47;26809:131;26935:4;26809:131;:::i;:::-;26801:139;;26528:419;;;:::o;26953:134::-;27011:9;27044:37;27075:5;27044:37;:::i;:::-;27031:50;;26953:134;;;:::o;27093:147::-;27188:45;27227:5;27188:45;:::i;:::-;27183:3;27176:58;27093:147;;:::o;27246:823::-;27503:4;27541:3;27530:9;27526:19;27518:27;;27555:71;27623:1;27612:9;27608:17;27599:6;27555:71;:::i;:::-;27636:72;27704:2;27693:9;27689:18;27680:6;27636:72;:::i;:::-;27718:80;27794:2;27783:9;27779:18;27770:6;27718:80;:::i;:::-;27808;27884:2;27873:9;27869:18;27860:6;27808:80;:::i;:::-;27898:81;27974:3;27963:9;27959:19;27950:6;27898:81;:::i;:::-;27989:73;28057:3;28046:9;28042:19;28033:6;27989:73;:::i;:::-;27246:823;;;;;;;;;:::o;28075:143::-;28132:5;28163:6;28157:13;28148:22;;28179:33;28206:5;28179:33;:::i;:::-;28075:143;;;;:::o;28224:663::-;28312:6;28320;28328;28377:2;28365:9;28356:7;28352:23;28348:32;28345:119;;;28383:79;;:::i;:::-;28345:119;28503:1;28528:64;28584:7;28575:6;28564:9;28560:22;28528:64;:::i;:::-;28518:74;;28474:128;28641:2;28667:64;28723:7;28714:6;28703:9;28699:22;28667:64;:::i;:::-;28657:74;;28612:129;28780:2;28806:64;28862:7;28853:6;28842:9;28838:22;28806:64;:::i;:::-;28796:74;;28751:129;28224:663;;;;;:::o;28893:736::-;29136:4;29174:3;29163:9;29159:19;29151:27;;29188:79;29264:1;29253:9;29249:17;29240:6;29188:79;:::i;:::-;29314:9;29308:4;29304:20;29299:2;29288:9;29284:18;29277:48;29342:108;29445:4;29436:6;29342:108;:::i;:::-;29334:116;;29460:80;29536:2;29525:9;29521:18;29512:6;29460:80;:::i;:::-;29550:72;29618:2;29607:9;29603:18;29594:6;29550:72;:::i;:::-;28893:736;;;;;;;:::o

Swarm Source

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