ETH Price: $2,476.16 (+1.04%)
Gas: 9.55 Gwei

Token

SaudiDoge (SD)
 

Overview

Max Total Supply

100,000,000,000 SD

Holders

21

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
5,228,486,924.822558422274952219 SD

Value
$0.00
0xf207b0f7ee23fe790183b67c413e9c36df20f1cd
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:
SaudiDoge

Compiler Version
v0.8.5+commit.a4f2e591

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/**



MAX BIDDING MAX BIDDING MAX BIDDING MAX BIDDING MAX BIDDING MAX BIDDING MAX BIDDING MAX 6/6 tax Renounced & Locked ! BIDDING MAX BIDDING MAX BIDDING MAX BIDDING MAX BIDDING MAX BIDDING MAX BIDDING MAX BIDDING 

MAX BIDDING MAX BIDDING MAX BIDDING MAX BIDDING MAX BIDDING MAX BIDDING MAX BIDDING MAX https://t.me/saudidoge MAX BIDDING MAX BIDDING MAX BIDDING MAX BIDDING MAX BIDDING MAX BIDDING MAX BIDDING 

MAX BIDDING MAX BIDDING MAX BIDDING MAX BIDDING MAX BIDDING MAX BIDDING MAX BIDDING MAX BIDDING MAX BIDDING MAX BIDDING MAX BIDDING MAX BIDDING MAX BIDDING MAX BIDDING MAX BIDDING MAX BIDDING MAX BIDDING 

*/
//SPDX-License-Identifier: MIT
pragma solidity ^0.8.5;


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) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold


        return c;
    }
}


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


abstract contract Auth {
    address internal owner;
    mapping (address => bool) internal authorizations;


    constructor(address _owner) {
        owner = _owner;
        authorizations[_owner] = true;
    }


    /**
     */
    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }


    /**
     */
    modifier authorized() {
        require(isAuthorized(msg.sender), "!AUTHORIZED"); _;
    }


    /**
     */
    function authorize(address adr) public onlyOwner {
        authorizations[adr] = true;
    }


    /**
     * Remove address' authorization. Owner only
     */
    function unauthorize(address adr) public onlyOwner {
        authorizations[adr] = false;
    }


    /**
     * Check if address is owner
     */
    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }


    /**
     * Return address' authorization status
     */
    function isAuthorized(address adr) public view returns (bool) {
        return authorizations[adr];
    }


    /**
     * Transfer ownership to new address. Caller must be owner. Leaves old owner authorized
     */
    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        authorizations[adr] = true;
        emit OwnershipTransferred(adr);
    }


    event OwnershipTransferred(address owner);
}


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


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


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


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


contract SaudiDoge is IERC20, Auth {
    using SafeMath for uint256;


    address WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;


    string constant _name = "SaudiDoge";
    string constant _symbol = "SD";
    uint8 constant _decimals = 18;


    uint256 _totalSupply = 100000000000 * (10 ** _decimals);
    uint256 public _maxTxAmount = (_totalSupply * 2) / 100; 
    uint256 public _maxWalletSize = (_totalSupply * 2) / 100; 


    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;


    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;


    uint256 liquidityFee = 0;
    uint256 MarketingFee = 4;
    uint256 DevFee = 2;
    uint256 totalFee = 6;
    uint256 feeDenominator = 100;
    
    address private DevFeeReceiver = 0x068e599Df0B1B6eD8A3e55655E3D3237B30c797e;
    address private MarketingFeeReceiver = 0xb90fAb0e2d5048FB7D3E6c0778aEFfa9A37a8365;


    IDEXRouter public router;
    address public pair;


    uint256 public launchedAt;


    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply / 1000000 * 1; // 0.3%
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }


    constructor () Auth(msg.sender) {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;


        address _owner = owner;
        isFeeExempt[_owner] = true;
        isTxLimitExempt[_owner] = true;


        _balances[_owner] = _totalSupply;
        emit Transfer(address(0), _owner, _totalSupply);
    }


    receive() external payable { }


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


    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }


    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }


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


    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }


        return _transferFrom(sender, recipient, amount);
    }


    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }
        
        checkTxLimit(sender, amount);
        
        if (recipient != pair && recipient != DEAD) {
            require(isTxLimitExempt[recipient] || _balances[recipient] + amount <= _maxWalletSize, "Transfer amount exceeds the bag size.");
        }
        
        if(shouldSwapBack()){ swapBack(); }


        if(!launched() && recipient == pair){ require(_balances[sender] > 0); launch(); }


        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");


        uint256 amountReceived = shouldTakeFee(sender) ? takeFee(sender, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);


        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
    
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }


    function checkTxLimit(address sender, uint256 amount) internal view {
        require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");
    }
    
    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeExempt[sender];
    }




    function takeFee(address sender, uint256 amount) internal returns (uint256) {
        uint256 feeAmount = amount.mul(totalFee).div(feeDenominator);


        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);


        return amount.sub(feeAmount);
    }


    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && swapEnabled
        && _balances[address(this)] >= swapThreshold;
    }


    function swapBack() internal swapping {
        uint256 contractTokenBalance = balanceOf(address(this));
        uint256 amountToLiquify = contractTokenBalance.mul(liquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = contractTokenBalance.sub(amountToLiquify);


        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;


        uint256 balanceBefore = address(this).balance;


        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );
        uint256 amountETH = address(this).balance.sub(balanceBefore);
        uint256 totalETHFee = totalFee.sub(liquidityFee.div(2));
        uint256 amountETHLiquidity = amountETH.mul(liquidityFee).div(totalETHFee).div(2);
        uint256 amountETHMarketing = amountETH.mul(MarketingFee).div(totalETHFee);
        uint256 amountETHDev = amountETH - amountETHLiquidity - amountETHMarketing;


        (bool DevSuccess, /* bytes memory data */) = payable(DevFeeReceiver).call{value: amountETHDev, gas: 30000}("");
        require(DevSuccess, "receiver rejected ETH transfer");
        (bool MarketingSuccess, /* bytes memory data */) = payable(MarketingFeeReceiver).call{value: amountETHMarketing, gas: 30000}("");
        require(MarketingSuccess, "receiver rejected ETH transfer");
        addLiquidity(amountToLiquify, amountETHLiquidity);
    }


    function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private {
    if(tokenAmount > 0){
            router.addLiquidityETH{value: ETHAmount}(
                address(this),
                tokenAmount,
                0,
                0,
                address(this),
                block.timestamp
            );
            emit AutoLiquify(ETHAmount, tokenAmount);
        }
    }


    function buyTokens(uint256 amount, address to) internal swapping {
        address[] memory path = new address[](2);
        path[0] = WETH;
        path[1] = address(this);


        router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(
            0,
            path,
            to,
            block.timestamp
        );
    }


    function launched() internal view returns (bool) {
        return launchedAt != 0;
    }


    function launch() internal {
        launchedAt = block.number;
    }


    function setTxLimit(uint256 amount) external authorized {
        require(amount >= _totalSupply / 1000);
        _maxTxAmount = amount;
    }


   function setMaxWallet(uint256 amount) external onlyOwner() {
        require(amount >= _totalSupply / 1000 );
        _maxWalletSize = amount;
    }    


    function setIsFeeExempt(address holder, bool exempt) external authorized {
        isFeeExempt[holder] = exempt;
    }


    function setIsTxLimitExempt(address holder, bool exempt) external authorized {
        isTxLimitExempt[holder] = exempt;
    }


    function setFees(uint256 _liquidityFee, uint256 _MarketingFee, uint256 _DevFee, uint256 _feeDenominator) external authorized {
        liquidityFee = _liquidityFee;
        MarketingFee = _MarketingFee;
        DevFee = _DevFee;
        totalFee = _liquidityFee.add(_MarketingFee).add(_DevFee);
        feeDenominator = _feeDenominator;
    }


    function setFeeReceiver(address _DevFeeReceiver, address _MarketingFeeReceiver) external authorized {
        DevFeeReceiver = _DevFeeReceiver;
        MarketingFeeReceiver = _MarketingFeeReceiver;
    }


    function setSwapBackSettings(bool _enabled, uint256 _amount) external authorized {
        swapEnabled = _enabled;
        swapThreshold = _amount;
    }


    function manualSend() external authorized {
        uint256 contractETHBalance = address(this).balance;
        payable(DevFeeReceiver).transfer(contractETHBalance);
    }


    function transferForeignToken(address _token) public authorized {
        require(_token != address(this), "Can't let you take all native token");
        uint256 _contractBalance = IERC20(_token).balanceOf(address(this));
        payable(DevFeeReceiver).transfer(_contractBalance);
    }
        
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }


    function getLiquidityBacking(uint256 accuracy) public view returns (uint256) {
        return accuracy.mul(balanceOf(pair).mul(2)).div(getCirculatingSupply());
    }


    function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) {
        return getLiquidityBacking(accuracy) > target;
    }
    
    event AutoLiquify(uint256 amountETH, uint256 amountBOG);
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBOG","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_DevFeeReceiver","type":"address"},{"internalType":"address","name":"_MarketingFeeReceiver","type":"address"}],"name":"setFeeReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_MarketingFee","type":"uint256"},{"internalType":"uint256","name":"_DevFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"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":"_token","type":"address"}],"name":"transferForeignToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a620000ee919062000875565b64174876e800620001009190620009b2565b60055560646002600554620001169190620009b2565b620001229190620007e2565b60065560646002600554620001389190620009b2565b620001449190620007e2565b6007556000600c556004600d556002600e556006600f55606460105573068e599df0b1b6ed8a3e55655e3d3237b30c797e601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073b90fab0e2d5048fb7d3e6c0778aeffa9a37a8365601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601660006101000a81548160ff0219169083151502179055506001620f42406005546200023a9190620007e2565b620002469190620009b2565b6017553480156200025657600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050737a250d5630b4cf539739df2c5dacb4c659f2488d601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620003ae57600080fd5b505afa158015620003c3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e9919062000744565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b81526004016200044792919062000798565b602060405180830381600087803b1580156200046257600080fd5b505af115801562000477573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200049d919062000744565b601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506001600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600554600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6005546040516200071e9190620007c5565b60405180910390a35062000ae8565b6000815190506200073e8162000ace565b92915050565b6000602082840312156200075d576200075c62000abc565b5b60006200076d848285016200072d565b91505092915050565b620007818162000a13565b82525050565b620007928162000a47565b82525050565b6000604082019050620007af600083018562000776565b620007be602083018462000776565b9392505050565b6000602082019050620007dc600083018462000787565b92915050565b6000620007ef8262000a47565b9150620007fc8362000a47565b9250826200080f576200080e62000a8d565b5b828204905092915050565b6000808291508390505b60018511156200086c5780860481111562000844576200084362000a5e565b5b6001851615620008545780820291505b8081029050620008648562000ac1565b945062000824565b94509492505050565b6000620008828262000a47565b91506200088f8362000a51565b9250620008be7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620008c6565b905092915050565b600082620008d85760019050620009ab565b81620008e85760009050620009ab565b81600181146200090157600281146200090c5762000942565b6001915050620009ab565b60ff84111562000921576200092062000a5e565b5b8360020a9150848211156200093b576200093a62000a5e565b5b50620009ab565b5060208310610133831016604e8410600b84101617156200097c5782820a90508381111562000976576200097562000a5e565b5b620009ab565b6200098b84848460016200081a565b92509050818404811115620009a557620009a462000a5e565b5b81810290505b9392505050565b6000620009bf8262000a47565b9150620009cc8362000a47565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000a085762000a0762000a5e565b5b828202905092915050565b600062000a208262000a27565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600080fd5b60008160011c9050919050565b62000ad98162000a13565b811462000ae557600080fd5b50565b6137d58062000af86000396000f3fe6080604052600436106102085760003560e01c8063893d20e811610118578063dd62ed3e116100a0578063f2fde38b1161006f578063f2fde38b146107ae578063f4293890146107d7578063f84ba65d146107ee578063f887ea4014610817578063fe9fbb80146108425761020f565b8063dd62ed3e146106f6578063df20fd4914610733578063e66db25e1461075c578063f0b37c04146107855761020f565b8063a9059cbb116100e7578063a9059cbb146105ff578063b6a5d7de1461063c578063bf56b37114610665578063d51ed1c814610690578063dc93cf70146106cd5761020f565b8063893d20e8146105535780638f9a55c01461057e57806395d89b41146105a9578063a8aa1b31146105d45761020f565b8063313ce5671161019b578063658d4b7f1161016a578063658d4b7f1461046e5780636ddd1713146104975780636fcba377146104c257806370a08231146104eb5780637d1db4a5146105285761020f565b8063313ce567146103b4578063571ac8b0146103df5780635c85974f1461041c5780635d0044ca146104455761020f565b806318160ddd116101d757806318160ddd146102e457806323b872dd1461030f5780632b112e491461034c5780632f54bf6e146103775761020f565b80630445b6671461021457806306fdde031461023f578063095ea7b31461026a5780631161ae39146102a75761020f565b3661020f57005b600080fd5b34801561022057600080fd5b5061022961087f565b6040516102369190613180565b60405180910390f35b34801561024b57600080fd5b50610254610885565b604051610261919061305e565b60405180910390f35b34801561027657600080fd5b50610291600480360381019061028c9190612b46565b6108c2565b60405161029e9190613028565b60405180910390f35b3480156102b357600080fd5b506102ce60048036038101906102c99190612c20565b6109b4565b6040516102db9190613028565b60405180910390f35b3480156102f057600080fd5b506102f96109c9565b6040516103069190613180565b60405180910390f35b34801561031b57600080fd5b5061033660048036038101906103319190612ab3565b6109d3565b6040516103439190613028565b60405180910390f35b34801561035857600080fd5b50610361610bd3565b60405161036e9190613180565b60405180910390f35b34801561038357600080fd5b5061039e60048036038101906103999190612a19565b610c55565b6040516103ab9190613028565b60405180910390f35b3480156103c057600080fd5b506103c9610cae565b6040516103d6919061321e565b60405180910390f35b3480156103eb57600080fd5b5061040660048036038101906104019190612a19565b610cb7565b6040516104139190613028565b60405180910390f35b34801561042857600080fd5b50610443600480360381019061043e9190612bc6565b610cea565b005b34801561045157600080fd5b5061046c60048036038101906104679190612bc6565b610d58565b005b34801561047a57600080fd5b5061049560048036038101906104909190612b06565b610dc6565b005b3480156104a357600080fd5b506104ac610e69565b6040516104b99190613028565b60405180910390f35b3480156104ce57600080fd5b506104e960048036038101906104e49190612cb3565b610e7c565b005b3480156104f757600080fd5b50610512600480360381019061050d9190612a19565b610f11565b60405161051f9190613180565b60405180910390f35b34801561053457600080fd5b5061053d610f5a565b60405161054a9190613180565b60405180910390f35b34801561055f57600080fd5b50610568610f60565b6040516105759190612f91565b60405180910390f35b34801561058a57600080fd5b50610593610f89565b6040516105a09190613180565b60405180910390f35b3480156105b557600080fd5b506105be610f8f565b6040516105cb919061305e565b60405180910390f35b3480156105e057600080fd5b506105e9610fcc565b6040516105f69190612f91565b60405180910390f35b34801561060b57600080fd5b5061062660048036038101906106219190612b46565b610ff2565b6040516106339190613028565b60405180910390f35b34801561064857600080fd5b50610663600480360381019061065e9190612a19565b611007565b005b34801561067157600080fd5b5061067a6110a9565b6040516106879190613180565b60405180910390f35b34801561069c57600080fd5b506106b760048036038101906106b29190612bc6565b6110af565b6040516106c49190613180565b60405180910390f35b3480156106d957600080fd5b506106f460048036038101906106ef9190612a19565b611121565b005b34801561070257600080fd5b5061071d60048036038101906107189190612a73565b6112d2565b60405161072a9190613180565b60405180910390f35b34801561073f57600080fd5b5061075a60048036038101906107559190612b86565b611359565b005b34801561076857600080fd5b50610783600480360381019061077e9190612a73565b6113c6565b005b34801561079157600080fd5b506107ac60048036038101906107a79190612a19565b611494565b005b3480156107ba57600080fd5b506107d560048036038101906107d09190612a46565b611537565b005b3480156107e357600080fd5b506107ec611650565b005b3480156107fa57600080fd5b5061081560048036038101906108109190612b06565b611709565b005b34801561082357600080fd5b5061082c6117ac565b6040516108399190613043565b60405180910390f35b34801561084e57600080fd5b5061086960048036038101906108649190612a19565b6117d2565b6040516108769190613028565b60405180910390f35b60175481565b60606040518060400160405280600981526020017f5361756469446f67650000000000000000000000000000000000000000000000815250905090565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109a29190613180565b60405180910390a36001905092915050565b6000826109c0836110af565b11905092915050565b6000600554905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610bbf57610b3e826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118289092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610bca84848461188c565b90509392505050565b6000610c50610c03600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f11565b610c42610c31600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f11565b600554611d1b90919063ffffffff16565b611d1b90919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006012905090565b6000610ce3827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6108c2565b9050919050565b610cf3336117d2565b610d32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2990613160565b60405180910390fd5b6103e8600554610d4291906132ef565b811015610d4e57600080fd5b8060068190555050565b610d6133610c55565b610da0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9790613140565b60405180910390fd5b6103e8600554610db091906132ef565b811015610dbc57600080fd5b8060078190555050565b610dcf336117d2565b610e0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0590613160565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601660009054906101000a900460ff1681565b610e85336117d2565b610ec4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebb90613160565b60405180910390fd5b83600c8190555082600d8190555081600e81905550610efe82610ef08587611d6590919063ffffffff16565b611d6590919063ffffffff16565b600f819055508060108190555050505050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60065481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60075481565b60606040518060400160405280600281526020017f5344000000000000000000000000000000000000000000000000000000000000815250905090565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610fff33848461188c565b905092915050565b61101033610c55565b61104f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104690613140565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60155481565b600061111a6110bc610bd3565b61110c6110fd60026110ef601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f11565b611dc390919063ffffffff16565b85611dc390919063ffffffff16565b611e3e90919063ffffffff16565b9050919050565b61112a336117d2565b611169576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116090613160565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156111d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111cf906130c0565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016112139190612f91565b60206040518083038186803b15801561122b57600080fd5b505afa15801561123f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112639190612bf3565b9050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156112cd573d6000803e3d6000fd5b505050565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611362336117d2565b6113a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139890613160565b60405180910390fd5b81601660006101000a81548160ff021916908315150217905550806017819055505050565b6113cf336117d2565b61140e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140590613160565b60405180910390fd5b81601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b61149d33610c55565b6114dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d390613140565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61154033610c55565b61157f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157690613140565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516116459190612fac565b60405180910390a150565b611659336117d2565b611698576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168f90613160565b60405180910390fd5b6000479050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611705573d6000803e3d6000fd5b5050565b611712336117d2565b611751576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174890613160565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000838311158290611870576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611867919061305e565b60405180910390fd5b506000838561187f919061337a565b9050809150509392505050565b6000601860009054906101000a900460ff16156118b5576118ae848484611e88565b9050611d14565b6118bf848361205b565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561196b5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611a5457600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611a14575060075482600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a119190613299565b11155b611a53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4a90613080565b60405180910390fd5b5b611a5c6120f8565b15611a6a57611a696121cf565b5b611a72612699565b158015611acc5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15611b26576000600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411611b1d57600080fd5b611b256126a6565b5b611baf826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118289092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611bfd856126af565b611c075782611c12565b611c118584612706565b5b9050611c6681600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d6590919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611d069190613180565b60405180910390a360019150505b9392505050565b6000611d5d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611828565b905092915050565b6000808284611d749190613299565b905083811015611db9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db0906130e0565b60405180910390fd5b8091505092915050565b600080831415611dd65760009050611e38565b60008284611de49190613320565b9050828482611df391906132ef565b14611e33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2a90613120565b60405180910390fd5b809150505b92915050565b6000611e8083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061284a565b905092915050565b6000611f13826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118289092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611fa882600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d6590919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516120489190613180565b60405180910390a3600190509392505050565b600654811115806120b55750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6120f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120eb906130a0565b60405180910390fd5b5050565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156121655750601860009054906101000a900460ff16155b801561217d5750601660009054906101000a900460ff165b80156121ca5750601754600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601860006101000a81548160ff02191690831515021790555060006121f530610f11565b905060006122356002612227600f54612219600c5487611dc390919063ffffffff16565b611e3e90919063ffffffff16565b611e3e90919063ffffffff16565b9050600061224c8284611d1b90919063ffffffff16565b90506000600267ffffffffffffffff81111561226b5761226a613541565b5b6040519080825280602002602001820160405280156122995781602001602082028036833780820191505090505b50905030816000815181106122b1576122b0613512565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061232257612321613512565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b81526004016123c595949392919061319b565b600060405180830381600087803b1580156123df57600080fd5b505af11580156123f3573d6000803e3d6000fd5b50505050600061240c8247611d1b90919063ffffffff16565b9050600061243a6124296002600c54611e3e90919063ffffffff16565b600f54611d1b90919063ffffffff16565b90506000612478600261246a8461245c600c5488611dc390919063ffffffff16565b611e3e90919063ffffffff16565b611e3e90919063ffffffff16565b905060006124a383612495600d5487611dc390919063ffffffff16565b611e3e90919063ffffffff16565b905060008183866124b4919061337a565b6124be919061337a565b90506000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826175309060405161250c90612f7c565b600060405180830381858888f193505050503d806000811461254a576040519150601f19603f3d011682016040523d82523d6000602084013e61254f565b606091505b5050905080612593576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258a90613100565b60405180910390fd5b6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684617530906040516125df90612f7c565b600060405180830381858888f193505050503d806000811461261d576040519150601f19603f3d011682016040523d82523d6000602084013e612622565b606091505b5050905080612666576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265d90613100565b60405180910390fd5b6126708b866128ad565b5050505050505050505050506000601860006101000a81548160ff021916908315150217905550565b6000806015541415905090565b43601581905550565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b600080612732601054612724600f5486611dc390919063ffffffff16565b611e3e90919063ffffffff16565b905061278681600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d6590919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516128269190613180565b60405180910390a36128418184611d1b90919063ffffffff16565b91505092915050565b60008083118290612891576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612888919061305e565b60405180910390fd5b50600083856128a091906132ef565b9050809150509392505050565b60008211156129ac57601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008030426040518863ffffffff1660e01b815260040161291d96959493929190612fc7565b6060604051808303818588803b15801561293657600080fd5b505af115801561294a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061296f9190612c60565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450681836040516129a39291906131f5565b60405180910390a15b5050565b6000813590506129bf81613743565b92915050565b6000813590506129d48161375a565b92915050565b6000813590506129e981613771565b92915050565b6000813590506129fe81613788565b92915050565b600081519050612a1381613788565b92915050565b600060208284031215612a2f57612a2e613570565b5b6000612a3d848285016129b0565b91505092915050565b600060208284031215612a5c57612a5b613570565b5b6000612a6a848285016129c5565b91505092915050565b60008060408385031215612a8a57612a89613570565b5b6000612a98858286016129b0565b9250506020612aa9858286016129b0565b9150509250929050565b600080600060608486031215612acc57612acb613570565b5b6000612ada868287016129b0565b9350506020612aeb868287016129b0565b9250506040612afc868287016129ef565b9150509250925092565b60008060408385031215612b1d57612b1c613570565b5b6000612b2b858286016129b0565b9250506020612b3c858286016129da565b9150509250929050565b60008060408385031215612b5d57612b5c613570565b5b6000612b6b858286016129b0565b9250506020612b7c858286016129ef565b9150509250929050565b60008060408385031215612b9d57612b9c613570565b5b6000612bab858286016129da565b9250506020612bbc858286016129ef565b9150509250929050565b600060208284031215612bdc57612bdb613570565b5b6000612bea848285016129ef565b91505092915050565b600060208284031215612c0957612c08613570565b5b6000612c1784828501612a04565b91505092915050565b60008060408385031215612c3757612c36613570565b5b6000612c45858286016129ef565b9250506020612c56858286016129ef565b9150509250929050565b600080600060608486031215612c7957612c78613570565b5b6000612c8786828701612a04565b9350506020612c9886828701612a04565b9250506040612ca986828701612a04565b9150509250925092565b60008060008060808587031215612ccd57612ccc613570565b5b6000612cdb878288016129ef565b9450506020612cec878288016129ef565b9350506040612cfd878288016129ef565b9250506060612d0e878288016129ef565b91505092959194509250565b6000612d268383612d41565b60208301905092915050565b612d3b81613415565b82525050565b612d4a816133ae565b82525050565b612d59816133ae565b82525050565b6000612d6a82613249565b612d74818561326c565b9350612d7f83613239565b8060005b83811015612db0578151612d978882612d1a565b9750612da28361325f565b925050600181019050612d83565b5085935050505092915050565b612dc6816133d2565b82525050565b612dd581613427565b82525050565b612de48161344b565b82525050565b6000612df582613254565b612dff8185613288565b9350612e0f818560208601613481565b612e1881613575565b840191505092915050565b6000612e30602583613288565b9150612e3b82613586565b604082019050919050565b6000612e53601183613288565b9150612e5e826135d5565b602082019050919050565b6000612e76602383613288565b9150612e81826135fe565b604082019050919050565b6000612e99601b83613288565b9150612ea48261364d565b602082019050919050565b6000612ebc601e83613288565b9150612ec782613676565b602082019050919050565b6000612edf602183613288565b9150612eea8261369f565b604082019050919050565b6000612f02600683613288565b9150612f0d826136ee565b602082019050919050565b6000612f2560008361327d565b9150612f3082613717565b600082019050919050565b6000612f48600b83613288565b9150612f538261371a565b602082019050919050565b612f67816133fe565b82525050565b612f7681613408565b82525050565b6000612f8782612f18565b9150819050919050565b6000602082019050612fa66000830184612d50565b92915050565b6000602082019050612fc16000830184612d32565b92915050565b600060c082019050612fdc6000830189612d50565b612fe96020830188612f5e565b612ff66040830187612ddb565b6130036060830186612ddb565b6130106080830185612d50565b61301d60a0830184612f5e565b979650505050505050565b600060208201905061303d6000830184612dbd565b92915050565b60006020820190506130586000830184612dcc565b92915050565b600060208201905081810360008301526130788184612dea565b905092915050565b6000602082019050818103600083015261309981612e23565b9050919050565b600060208201905081810360008301526130b981612e46565b9050919050565b600060208201905081810360008301526130d981612e69565b9050919050565b600060208201905081810360008301526130f981612e8c565b9050919050565b6000602082019050818103600083015261311981612eaf565b9050919050565b6000602082019050818103600083015261313981612ed2565b9050919050565b6000602082019050818103600083015261315981612ef5565b9050919050565b6000602082019050818103600083015261317981612f3b565b9050919050565b60006020820190506131956000830184612f5e565b92915050565b600060a0820190506131b06000830188612f5e565b6131bd6020830187612ddb565b81810360408301526131cf8186612d5f565b90506131de6060830185612d50565b6131eb6080830184612f5e565b9695505050505050565b600060408201905061320a6000830185612f5e565b6132176020830184612f5e565b9392505050565b60006020820190506132336000830184612f6d565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006132a4826133fe565b91506132af836133fe565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156132e4576132e36134b4565b5b828201905092915050565b60006132fa826133fe565b9150613305836133fe565b925082613315576133146134e3565b5b828204905092915050565b600061332b826133fe565b9150613336836133fe565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561336f5761336e6134b4565b5b828202905092915050565b6000613385826133fe565b9150613390836133fe565b9250828210156133a3576133a26134b4565b5b828203905092915050565b60006133b9826133de565b9050919050565b60006133cb826133de565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006134208261345d565b9050919050565b600061343282613439565b9050919050565b6000613444826133de565b9050919050565b6000613456826133fe565b9050919050565b60006134688261346f565b9050919050565b600061347a826133de565b9050919050565b60005b8381101561349f578082015181840152602081019050613484565b838111156134ae576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206261672060008201527f73697a652e000000000000000000000000000000000000000000000000000000602082015250565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b7f43616e2774206c657420796f752074616b6520616c6c206e617469766520746f60008201527f6b656e0000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f72656365697665722072656a656374656420455448207472616e736665720000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b50565b7f21415554484f52495a4544000000000000000000000000000000000000000000600082015250565b61374c816133ae565b811461375757600080fd5b50565b613763816133c0565b811461376e57600080fd5b50565b61377a816133d2565b811461378557600080fd5b50565b613791816133fe565b811461379c57600080fd5b5056fea264697066735822122052e0687c21a75e9d15d072975a55d8c5b53b14d7ee718e6bb64d7fe6aad3818964736f6c63430008050033

Deployed Bytecode

0x6080604052600436106102085760003560e01c8063893d20e811610118578063dd62ed3e116100a0578063f2fde38b1161006f578063f2fde38b146107ae578063f4293890146107d7578063f84ba65d146107ee578063f887ea4014610817578063fe9fbb80146108425761020f565b8063dd62ed3e146106f6578063df20fd4914610733578063e66db25e1461075c578063f0b37c04146107855761020f565b8063a9059cbb116100e7578063a9059cbb146105ff578063b6a5d7de1461063c578063bf56b37114610665578063d51ed1c814610690578063dc93cf70146106cd5761020f565b8063893d20e8146105535780638f9a55c01461057e57806395d89b41146105a9578063a8aa1b31146105d45761020f565b8063313ce5671161019b578063658d4b7f1161016a578063658d4b7f1461046e5780636ddd1713146104975780636fcba377146104c257806370a08231146104eb5780637d1db4a5146105285761020f565b8063313ce567146103b4578063571ac8b0146103df5780635c85974f1461041c5780635d0044ca146104455761020f565b806318160ddd116101d757806318160ddd146102e457806323b872dd1461030f5780632b112e491461034c5780632f54bf6e146103775761020f565b80630445b6671461021457806306fdde031461023f578063095ea7b31461026a5780631161ae39146102a75761020f565b3661020f57005b600080fd5b34801561022057600080fd5b5061022961087f565b6040516102369190613180565b60405180910390f35b34801561024b57600080fd5b50610254610885565b604051610261919061305e565b60405180910390f35b34801561027657600080fd5b50610291600480360381019061028c9190612b46565b6108c2565b60405161029e9190613028565b60405180910390f35b3480156102b357600080fd5b506102ce60048036038101906102c99190612c20565b6109b4565b6040516102db9190613028565b60405180910390f35b3480156102f057600080fd5b506102f96109c9565b6040516103069190613180565b60405180910390f35b34801561031b57600080fd5b5061033660048036038101906103319190612ab3565b6109d3565b6040516103439190613028565b60405180910390f35b34801561035857600080fd5b50610361610bd3565b60405161036e9190613180565b60405180910390f35b34801561038357600080fd5b5061039e60048036038101906103999190612a19565b610c55565b6040516103ab9190613028565b60405180910390f35b3480156103c057600080fd5b506103c9610cae565b6040516103d6919061321e565b60405180910390f35b3480156103eb57600080fd5b5061040660048036038101906104019190612a19565b610cb7565b6040516104139190613028565b60405180910390f35b34801561042857600080fd5b50610443600480360381019061043e9190612bc6565b610cea565b005b34801561045157600080fd5b5061046c60048036038101906104679190612bc6565b610d58565b005b34801561047a57600080fd5b5061049560048036038101906104909190612b06565b610dc6565b005b3480156104a357600080fd5b506104ac610e69565b6040516104b99190613028565b60405180910390f35b3480156104ce57600080fd5b506104e960048036038101906104e49190612cb3565b610e7c565b005b3480156104f757600080fd5b50610512600480360381019061050d9190612a19565b610f11565b60405161051f9190613180565b60405180910390f35b34801561053457600080fd5b5061053d610f5a565b60405161054a9190613180565b60405180910390f35b34801561055f57600080fd5b50610568610f60565b6040516105759190612f91565b60405180910390f35b34801561058a57600080fd5b50610593610f89565b6040516105a09190613180565b60405180910390f35b3480156105b557600080fd5b506105be610f8f565b6040516105cb919061305e565b60405180910390f35b3480156105e057600080fd5b506105e9610fcc565b6040516105f69190612f91565b60405180910390f35b34801561060b57600080fd5b5061062660048036038101906106219190612b46565b610ff2565b6040516106339190613028565b60405180910390f35b34801561064857600080fd5b50610663600480360381019061065e9190612a19565b611007565b005b34801561067157600080fd5b5061067a6110a9565b6040516106879190613180565b60405180910390f35b34801561069c57600080fd5b506106b760048036038101906106b29190612bc6565b6110af565b6040516106c49190613180565b60405180910390f35b3480156106d957600080fd5b506106f460048036038101906106ef9190612a19565b611121565b005b34801561070257600080fd5b5061071d60048036038101906107189190612a73565b6112d2565b60405161072a9190613180565b60405180910390f35b34801561073f57600080fd5b5061075a60048036038101906107559190612b86565b611359565b005b34801561076857600080fd5b50610783600480360381019061077e9190612a73565b6113c6565b005b34801561079157600080fd5b506107ac60048036038101906107a79190612a19565b611494565b005b3480156107ba57600080fd5b506107d560048036038101906107d09190612a46565b611537565b005b3480156107e357600080fd5b506107ec611650565b005b3480156107fa57600080fd5b5061081560048036038101906108109190612b06565b611709565b005b34801561082357600080fd5b5061082c6117ac565b6040516108399190613043565b60405180910390f35b34801561084e57600080fd5b5061086960048036038101906108649190612a19565b6117d2565b6040516108769190613028565b60405180910390f35b60175481565b60606040518060400160405280600981526020017f5361756469446f67650000000000000000000000000000000000000000000000815250905090565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109a29190613180565b60405180910390a36001905092915050565b6000826109c0836110af565b11905092915050565b6000600554905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610bbf57610b3e826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118289092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610bca84848461188c565b90509392505050565b6000610c50610c03600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f11565b610c42610c31600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f11565b600554611d1b90919063ffffffff16565b611d1b90919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006012905090565b6000610ce3827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6108c2565b9050919050565b610cf3336117d2565b610d32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2990613160565b60405180910390fd5b6103e8600554610d4291906132ef565b811015610d4e57600080fd5b8060068190555050565b610d6133610c55565b610da0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9790613140565b60405180910390fd5b6103e8600554610db091906132ef565b811015610dbc57600080fd5b8060078190555050565b610dcf336117d2565b610e0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0590613160565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601660009054906101000a900460ff1681565b610e85336117d2565b610ec4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebb90613160565b60405180910390fd5b83600c8190555082600d8190555081600e81905550610efe82610ef08587611d6590919063ffffffff16565b611d6590919063ffffffff16565b600f819055508060108190555050505050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60065481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60075481565b60606040518060400160405280600281526020017f5344000000000000000000000000000000000000000000000000000000000000815250905090565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610fff33848461188c565b905092915050565b61101033610c55565b61104f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104690613140565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60155481565b600061111a6110bc610bd3565b61110c6110fd60026110ef601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f11565b611dc390919063ffffffff16565b85611dc390919063ffffffff16565b611e3e90919063ffffffff16565b9050919050565b61112a336117d2565b611169576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116090613160565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156111d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111cf906130c0565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016112139190612f91565b60206040518083038186803b15801561122b57600080fd5b505afa15801561123f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112639190612bf3565b9050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156112cd573d6000803e3d6000fd5b505050565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611362336117d2565b6113a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139890613160565b60405180910390fd5b81601660006101000a81548160ff021916908315150217905550806017819055505050565b6113cf336117d2565b61140e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140590613160565b60405180910390fd5b81601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b61149d33610c55565b6114dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d390613140565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61154033610c55565b61157f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157690613140565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516116459190612fac565b60405180910390a150565b611659336117d2565b611698576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168f90613160565b60405180910390fd5b6000479050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611705573d6000803e3d6000fd5b5050565b611712336117d2565b611751576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174890613160565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000838311158290611870576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611867919061305e565b60405180910390fd5b506000838561187f919061337a565b9050809150509392505050565b6000601860009054906101000a900460ff16156118b5576118ae848484611e88565b9050611d14565b6118bf848361205b565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561196b5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611a5457600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611a14575060075482600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a119190613299565b11155b611a53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4a90613080565b60405180910390fd5b5b611a5c6120f8565b15611a6a57611a696121cf565b5b611a72612699565b158015611acc5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15611b26576000600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411611b1d57600080fd5b611b256126a6565b5b611baf826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118289092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611bfd856126af565b611c075782611c12565b611c118584612706565b5b9050611c6681600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d6590919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611d069190613180565b60405180910390a360019150505b9392505050565b6000611d5d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611828565b905092915050565b6000808284611d749190613299565b905083811015611db9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db0906130e0565b60405180910390fd5b8091505092915050565b600080831415611dd65760009050611e38565b60008284611de49190613320565b9050828482611df391906132ef565b14611e33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2a90613120565b60405180910390fd5b809150505b92915050565b6000611e8083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061284a565b905092915050565b6000611f13826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118289092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611fa882600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d6590919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516120489190613180565b60405180910390a3600190509392505050565b600654811115806120b55750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6120f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120eb906130a0565b60405180910390fd5b5050565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156121655750601860009054906101000a900460ff16155b801561217d5750601660009054906101000a900460ff165b80156121ca5750601754600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601860006101000a81548160ff02191690831515021790555060006121f530610f11565b905060006122356002612227600f54612219600c5487611dc390919063ffffffff16565b611e3e90919063ffffffff16565b611e3e90919063ffffffff16565b9050600061224c8284611d1b90919063ffffffff16565b90506000600267ffffffffffffffff81111561226b5761226a613541565b5b6040519080825280602002602001820160405280156122995781602001602082028036833780820191505090505b50905030816000815181106122b1576122b0613512565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061232257612321613512565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b81526004016123c595949392919061319b565b600060405180830381600087803b1580156123df57600080fd5b505af11580156123f3573d6000803e3d6000fd5b50505050600061240c8247611d1b90919063ffffffff16565b9050600061243a6124296002600c54611e3e90919063ffffffff16565b600f54611d1b90919063ffffffff16565b90506000612478600261246a8461245c600c5488611dc390919063ffffffff16565b611e3e90919063ffffffff16565b611e3e90919063ffffffff16565b905060006124a383612495600d5487611dc390919063ffffffff16565b611e3e90919063ffffffff16565b905060008183866124b4919061337a565b6124be919061337a565b90506000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826175309060405161250c90612f7c565b600060405180830381858888f193505050503d806000811461254a576040519150601f19603f3d011682016040523d82523d6000602084013e61254f565b606091505b5050905080612593576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258a90613100565b60405180910390fd5b6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684617530906040516125df90612f7c565b600060405180830381858888f193505050503d806000811461261d576040519150601f19603f3d011682016040523d82523d6000602084013e612622565b606091505b5050905080612666576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265d90613100565b60405180910390fd5b6126708b866128ad565b5050505050505050505050506000601860006101000a81548160ff021916908315150217905550565b6000806015541415905090565b43601581905550565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b600080612732601054612724600f5486611dc390919063ffffffff16565b611e3e90919063ffffffff16565b905061278681600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d6590919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516128269190613180565b60405180910390a36128418184611d1b90919063ffffffff16565b91505092915050565b60008083118290612891576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612888919061305e565b60405180910390fd5b50600083856128a091906132ef565b9050809150509392505050565b60008211156129ac57601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008030426040518863ffffffff1660e01b815260040161291d96959493929190612fc7565b6060604051808303818588803b15801561293657600080fd5b505af115801561294a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061296f9190612c60565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450681836040516129a39291906131f5565b60405180910390a15b5050565b6000813590506129bf81613743565b92915050565b6000813590506129d48161375a565b92915050565b6000813590506129e981613771565b92915050565b6000813590506129fe81613788565b92915050565b600081519050612a1381613788565b92915050565b600060208284031215612a2f57612a2e613570565b5b6000612a3d848285016129b0565b91505092915050565b600060208284031215612a5c57612a5b613570565b5b6000612a6a848285016129c5565b91505092915050565b60008060408385031215612a8a57612a89613570565b5b6000612a98858286016129b0565b9250506020612aa9858286016129b0565b9150509250929050565b600080600060608486031215612acc57612acb613570565b5b6000612ada868287016129b0565b9350506020612aeb868287016129b0565b9250506040612afc868287016129ef565b9150509250925092565b60008060408385031215612b1d57612b1c613570565b5b6000612b2b858286016129b0565b9250506020612b3c858286016129da565b9150509250929050565b60008060408385031215612b5d57612b5c613570565b5b6000612b6b858286016129b0565b9250506020612b7c858286016129ef565b9150509250929050565b60008060408385031215612b9d57612b9c613570565b5b6000612bab858286016129da565b9250506020612bbc858286016129ef565b9150509250929050565b600060208284031215612bdc57612bdb613570565b5b6000612bea848285016129ef565b91505092915050565b600060208284031215612c0957612c08613570565b5b6000612c1784828501612a04565b91505092915050565b60008060408385031215612c3757612c36613570565b5b6000612c45858286016129ef565b9250506020612c56858286016129ef565b9150509250929050565b600080600060608486031215612c7957612c78613570565b5b6000612c8786828701612a04565b9350506020612c9886828701612a04565b9250506040612ca986828701612a04565b9150509250925092565b60008060008060808587031215612ccd57612ccc613570565b5b6000612cdb878288016129ef565b9450506020612cec878288016129ef565b9350506040612cfd878288016129ef565b9250506060612d0e878288016129ef565b91505092959194509250565b6000612d268383612d41565b60208301905092915050565b612d3b81613415565b82525050565b612d4a816133ae565b82525050565b612d59816133ae565b82525050565b6000612d6a82613249565b612d74818561326c565b9350612d7f83613239565b8060005b83811015612db0578151612d978882612d1a565b9750612da28361325f565b925050600181019050612d83565b5085935050505092915050565b612dc6816133d2565b82525050565b612dd581613427565b82525050565b612de48161344b565b82525050565b6000612df582613254565b612dff8185613288565b9350612e0f818560208601613481565b612e1881613575565b840191505092915050565b6000612e30602583613288565b9150612e3b82613586565b604082019050919050565b6000612e53601183613288565b9150612e5e826135d5565b602082019050919050565b6000612e76602383613288565b9150612e81826135fe565b604082019050919050565b6000612e99601b83613288565b9150612ea48261364d565b602082019050919050565b6000612ebc601e83613288565b9150612ec782613676565b602082019050919050565b6000612edf602183613288565b9150612eea8261369f565b604082019050919050565b6000612f02600683613288565b9150612f0d826136ee565b602082019050919050565b6000612f2560008361327d565b9150612f3082613717565b600082019050919050565b6000612f48600b83613288565b9150612f538261371a565b602082019050919050565b612f67816133fe565b82525050565b612f7681613408565b82525050565b6000612f8782612f18565b9150819050919050565b6000602082019050612fa66000830184612d50565b92915050565b6000602082019050612fc16000830184612d32565b92915050565b600060c082019050612fdc6000830189612d50565b612fe96020830188612f5e565b612ff66040830187612ddb565b6130036060830186612ddb565b6130106080830185612d50565b61301d60a0830184612f5e565b979650505050505050565b600060208201905061303d6000830184612dbd565b92915050565b60006020820190506130586000830184612dcc565b92915050565b600060208201905081810360008301526130788184612dea565b905092915050565b6000602082019050818103600083015261309981612e23565b9050919050565b600060208201905081810360008301526130b981612e46565b9050919050565b600060208201905081810360008301526130d981612e69565b9050919050565b600060208201905081810360008301526130f981612e8c565b9050919050565b6000602082019050818103600083015261311981612eaf565b9050919050565b6000602082019050818103600083015261313981612ed2565b9050919050565b6000602082019050818103600083015261315981612ef5565b9050919050565b6000602082019050818103600083015261317981612f3b565b9050919050565b60006020820190506131956000830184612f5e565b92915050565b600060a0820190506131b06000830188612f5e565b6131bd6020830187612ddb565b81810360408301526131cf8186612d5f565b90506131de6060830185612d50565b6131eb6080830184612f5e565b9695505050505050565b600060408201905061320a6000830185612f5e565b6132176020830184612f5e565b9392505050565b60006020820190506132336000830184612f6d565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006132a4826133fe565b91506132af836133fe565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156132e4576132e36134b4565b5b828201905092915050565b60006132fa826133fe565b9150613305836133fe565b925082613315576133146134e3565b5b828204905092915050565b600061332b826133fe565b9150613336836133fe565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561336f5761336e6134b4565b5b828202905092915050565b6000613385826133fe565b9150613390836133fe565b9250828210156133a3576133a26134b4565b5b828203905092915050565b60006133b9826133de565b9050919050565b60006133cb826133de565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006134208261345d565b9050919050565b600061343282613439565b9050919050565b6000613444826133de565b9050919050565b6000613456826133fe565b9050919050565b60006134688261346f565b9050919050565b600061347a826133de565b9050919050565b60005b8381101561349f578082015181840152602081019050613484565b838111156134ae576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206261672060008201527f73697a652e000000000000000000000000000000000000000000000000000000602082015250565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b7f43616e2774206c657420796f752074616b6520616c6c206e617469766520746f60008201527f6b656e0000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f72656365697665722072656a656374656420455448207472616e736665720000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b50565b7f21415554484f52495a4544000000000000000000000000000000000000000000600082015250565b61374c816133ae565b811461375757600080fd5b50565b613763816133c0565b811461376e57600080fd5b50565b61377a816133d2565b811461378557600080fd5b50565b613791816133fe565b811461379c57600080fd5b5056fea264697066735822122052e0687c21a75e9d15d072975a55d8c5b53b14d7ee718e6bb64d7fe6aad3818964736f6c63430008050033

Deployed Bytecode Sourcemap

5856:10573:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7118:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8082:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8506:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16208:150;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7812:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9030:372;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15879:142;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3729:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7906:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8732:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14060:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14214:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14379:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7081:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14647:348;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8252:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6312:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8168:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6374:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7992:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7015:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8864:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3398:94;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7045:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16031:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15571:292;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8363:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15221:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15005:206;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3570:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4133:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15387:174;;;;;;;;;;;;;:::i;:::-;;14509:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6984:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3905:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7118:57;;;;:::o;8082:80::-;8130:13;8154:5;;;;;;;;;;;;;;;;;8147:12;;8082:80;:::o;8506:216::-;8581:4;8633:6;8598:11;:23;8610:10;8598:23;;;;;;;;;;;;;;;:32;8622:7;8598:32;;;;;;;;;;;;;;;:41;;;;8676:7;8655:37;;8664:10;8655:37;;;8685:6;8655:37;;;;;;:::i;:::-;;;;;;;;8710:4;8703:11;;8506:216;;;;:::o;16208:150::-;16288:4;16344:6;16312:29;16332:8;16312:19;:29::i;:::-;:38;16305:45;;16208:150;;;;:::o;7812:88::-;7867:7;7885:12;;7878:19;;7812:88;:::o;9030:372::-;9130:4;9185:17;9150:11;:19;9162:6;9150:19;;;;;;;;;;;;;;;:31;9170:10;9150:31;;;;;;;;;;;;;;;;:52;9147:186;;9252:69;9288:6;9252:69;;;;;;;;;;;;;;;;;:11;:19;9264:6;9252:19;;;;;;;;;;;;;;;:31;9272:10;9252:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;9218:11;:19;9230:6;9218:19;;;;;;;;;;;;;;;:31;9238:10;9218:31;;;;;;;;;;;;;;;:103;;;;9147:186;9354:40;9368:6;9376:9;9387:6;9354:13;:40::i;:::-;9347:47;;9030:372;;;;;:::o;15879:142::-;15932:7;15959:54;15997:15;16007:4;;;;;;;;;;;15997:9;:15::i;:::-;15959:33;15976:15;15986:4;;;;;;;;;;;15976:9;:15::i;:::-;15959:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;15952:61;;15879:142;:::o;3729:103::-;3784:4;3819:5;;;;;;;;;;;3808:16;;:7;:16;;;3801:23;;3729:103;;;:::o;7906:80::-;7958:5;6237:2;7967:16;;7906:80;:::o;8732:122::-;8787:4;8811:35;8819:7;8828:17;8811:7;:35::i;:::-;8804:42;;8732:122;;;:::o;14060:145::-;3319:24;3332:10;3319:12;:24::i;:::-;3311:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;14160:4:::1;14145:12;;:19;;;;:::i;:::-;14135:6;:29;;14127:38;;;::::0;::::1;;14191:6;14176:12;:21;;;;14060:145:::0;:::o;14214:151::-;3209:19;3217:10;3209:7;:19::i;:::-;3201:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14317:4:::1;14302:12;;:19;;;;:::i;:::-;14292:6;:29;;14284:39;;;::::0;::::1;;14351:6;14334:14;:23;;;;14214:151:::0;:::o;14379:120::-;3319:24;3332:10;3319:12;:24::i;:::-;3311:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;14485:6:::1;14463:11;:19;14475:6;14463:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;14379:120:::0;;:::o;7081:30::-;;;;;;;;;;;;;:::o;14647:348::-;3319:24;3332:10;3319:12;:24::i;:::-;3311:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;14798:13:::1;14783:12;:28;;;;14837:13;14822:12;:28;;;;14870:7;14861:6;:16;;;;14899:45;14936:7;14899:32;14917:13;14899;:17;;:32;;;;:::i;:::-;:36;;:45;;;;:::i;:::-;14888:8;:56;;;;14972:15;14955:14;:32;;;;14647:348:::0;;;;:::o;8252:105::-;8318:7;8336:9;:18;8346:7;8336:18;;;;;;;;;;;;;;;;8329:25;;8252:105;;;:::o;6312:54::-;;;;:::o;8168:78::-;8220:7;8238:5;;;;;;;;;;;8231:12;;8168:78;:::o;6374:56::-;;;;:::o;7992:84::-;8042:13;8066:7;;;;;;;;;;;;;;;;;8059:14;;7992:84;:::o;7015:19::-;;;;;;;;;;;;;:::o;8864:156::-;8944:4;8968:44;8982:10;8994:9;9005:6;8968:13;:44::i;:::-;8961:51;;8864:156;;;;:::o;3398:94::-;3209:19;3217:10;3209:7;:19::i;:::-;3201:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3480:4:::1;3458:14:::0;:19:::1;3473:3;3458:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;3398:94:::0;:::o;7045:25::-;;;;:::o;16031:167::-;16099:7;16126:64;16167:22;:20;:22::i;:::-;16126:36;16139:22;16159:1;16139:15;16149:4;;;;;;;;;;;16139:9;:15::i;:::-;:19;;:22;;;;:::i;:::-;16126:8;:12;;:36;;;;:::i;:::-;:40;;:64;;;;:::i;:::-;16119:71;;16031:167;;;:::o;15571:292::-;3319:24;3332:10;3319:12;:24::i;:::-;3311:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;15672:4:::1;15654:23;;:6;:23;;;;15646:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;15728:24;15762:6;15755:24;;;15788:4;15755:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15728:66;;15813:14;;;;;;;;;;;15805:32;;:50;15838:16;15805:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;15635:228;15571:292:::0;:::o;8363:133::-;8447:7;8465:11;:19;8477:6;8465:19;;;;;;;;;;;;;;;:28;8485:7;8465:28;;;;;;;;;;;;;;;;8458:35;;8363:133;;;;:::o;15221:156::-;3319:24;3332:10;3319:12;:24::i;:::-;3311:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;15327:8:::1;15313:11;;:22;;;;;;;;;;;;;;;;;;15362:7;15346:13;:23;;;;15221:156:::0;;:::o;15005:206::-;3319:24;3332:10;3319:12;:24::i;:::-;3311:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;15133:15:::1;15116:14;;:32;;;;;;;;;;;;;;;;;;15182:21;15159:20;;:44;;;;;;;;;;;;;;;;;;15005:206:::0;;:::o;3570:97::-;3209:19;3217:10;3209:7;:19::i;:::-;3201:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3654:5:::1;3632:14;:19;3647:3;3632:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;3570:97:::0;:::o;4133:173::-;3209:19;3217:10;3209:7;:19::i;:::-;3201:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;4217:3:::1;4209:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;4253:4;4231:14:::0;:19:::1;4246:3;4231:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;4273:25;4294:3;4273:25;;;;;;:::i;:::-;;;;;;;;4133:173:::0;:::o;15387:174::-;3319:24;3332:10;3319:12;:24::i;:::-;3311:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;15440:26:::1;15469:21;15440:50;;15509:14;;;;;;;;;;;15501:32;;:52;15534:18;15501:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;15429:132;15387:174::o:0;14509:128::-;3319:24;3332:10;3319:12;:24::i;:::-;3311:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;14623:6:::1;14597:15;:23;14613:6;14597:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;14509:128:::0;;:::o;6984:24::-;;;;;;;;;;;;;:::o;3905:107::-;3961:4;3985:14;:19;4000:3;3985:19;;;;;;;;;;;;;;;;;;;;;;;;;3978:26;;3905:107;;;:::o;1051:194::-;1137:7;1170:1;1165;:6;;1173:12;1157:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1197:9;1213:1;1209;:5;;;;:::i;:::-;1197:17;;1236:1;1229:8;;;1051:194;;;;;:::o;9412:939::-;9504:4;9524:6;;;;;;;;;;;9521:63;;;9540:41;9555:6;9563:9;9574:6;9540:14;:41::i;:::-;9533:48;;;;9521:63;9604:28;9617:6;9625;9604:12;:28::i;:::-;9670:4;;;;;;;;;;;9657:17;;:9;:17;;;;:38;;;;;9691:4;;;;;;;;;;;9678:17;;:9;:17;;;;9657:38;9653:198;;;9720:15;:26;9736:9;9720:26;;;;;;;;;;;;;;;;;;;;;;;;;:77;;;;9783:14;;9773:6;9750:9;:20;9760:9;9750:20;;;;;;;;;;;;;;;;:29;;;;:::i;:::-;:47;;9720:77;9712:127;;;;;;;;;;;;:::i;:::-;;;;;;;;;9653:198;9874:16;:14;:16::i;:::-;9871:35;;;9893:10;:8;:10::i;:::-;9871:35;9924:10;:8;:10::i;:::-;9923:11;:32;;;;;9951:4;;;;;;;;;;;9938:17;;:9;:17;;;9923:32;9920:81;;;9986:1;9966:9;:17;9976:6;9966:17;;;;;;;;;;;;;;;;:21;9958:30;;;;;;9990:8;:6;:8::i;:::-;9920:81;10035:53;10057:6;10035:53;;;;;;;;;;;;;;;;;:9;:17;10045:6;10035:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;10015:9;:17;10025:6;10015:17;;;;;;;;;;;;;;;:73;;;;10103:22;10128:21;10142:6;10128:13;:21::i;:::-;:56;;10178:6;10128:56;;;10152:23;10160:6;10168;10152:7;:23::i;:::-;10128:56;10103:81;;10218:40;10243:14;10218:9;:20;10228:9;10218:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;10195:9;:20;10205:9;10195:20;;;;;;;;;;;;;;;:63;;;;10295:9;10278:43;;10287:6;10278:43;;;10306:14;10278:43;;;;;;:::i;:::-;;;;;;;;10339:4;10332:11;;;9412:939;;;;;;:::o;909:136::-;967:7;994:43;998:1;1001;994:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;987:50;;909:136;;;;:::o;720:183::-;778:7;798:9;814:1;810;:5;;;;:::i;:::-;798:17;;839:1;834;:6;;826:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;894:1;887:8;;;720:183;;;;:::o;1251:254::-;1309:7;1338:1;1333;:6;1329:47;;;1363:1;1356:8;;;;1329:47;1390:9;1406:1;1402;:5;;;;:::i;:::-;1390:17;;1435:1;1430;1426;:5;;;;:::i;:::-;:10;1418:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1496:1;1489:8;;;1251:254;;;;;:::o;1511:132::-;1569:7;1596:39;1600:1;1603;1596:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1589:46;;1511:132;;;;:::o;10363:330::-;10456:4;10493:53;10515:6;10493:53;;;;;;;;;;;;;;;;;:9;:17;10503:6;10493:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;10473:9;:17;10483:6;10473:17;;;;;;;;;;;;;;;:73;;;;10580:32;10605:6;10580:9;:20;10590:9;10580:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;10557:9;:20;10567:9;10557:20;;;;;;;;;;;;;;;:55;;;;10645:9;10628:35;;10637:6;10628:35;;;10656:6;10628:35;;;;;;:::i;:::-;;;;;;;;10681:4;10674:11;;10363:330;;;;;:::o;10703:166::-;10800:12;;10790:6;:22;;:49;;;;10816:15;:23;10832:6;10816:23;;;;;;;;;;;;;;;;;;;;;;;;;10790:49;10782:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;10703:166;;:::o;11356:197::-;11405:4;11443;;;;;;;;;;;11429:18;;:10;:18;;;;:38;;;;;11461:6;;;;;;;;;;;11460:7;11429:38;:62;;;;;11480:11;;;;;;;;;;;11429:62;:116;;;;;11532:13;;11504:9;:24;11522:4;11504:24;;;;;;;;;;;;;;;;:41;;11429:116;11422:123;;11356:197;:::o;11563:1515::-;7239:4;7230:6;;:13;;;;;;;;;;;;;;;;;;11612:28:::1;11643:24;11661:4;11643:9;:24::i;:::-;11612:55;;11678:23;11704:59;11761:1;11704:52;11747:8;;11704:38;11729:12;;11704:20;:24;;:38;;;;:::i;:::-;:42;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;11678:85;;11774:20;11797:41;11822:15;11797:20;:24;;:41;;;;:::i;:::-;11774:64;;11853:21;11891:1;11877:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11853:40;;11922:4;11904;11909:1;11904:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11948:4;;;;;;;;;;;11938;11943:1;11938:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;::::0;::::1;11967:21;11991;11967:45;;12027:6;;;;;;;;;;;:57;;;12099:12;12126:1;12142:4;12169;12189:15;12027:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12226:17;12246:40;12272:13;12246:21;:25;;:40;;;;:::i;:::-;12226:60;;12297:19;12319:33;12332:19;12349:1;12332:12;;:16;;:19;;;;:::i;:::-;12319:8;;:12;;:33;;;;:::i;:::-;12297:55;;12363:26;12392:51;12441:1;12392:44;12424:11;12392:27;12406:12;;12392:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;:48;;:51;;;;:::i;:::-;12363:80;;12454:26;12483:44;12515:11;12483:27;12497:12;;12483:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;12454:73;;12538:20;12594:18;12573;12561:9;:30;;;;:::i;:::-;:51;;;;:::i;:::-;12538:74;;12628:15;12680:14;;;;;;;;;;;12672:28;;12708:12;12727:5;12672:65;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12627:110;;;12756:10;12748:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;12813:21;12871:20;;;;;;;;;;;12863:34;;12905:18;12930:5;12863:77;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12812:128;;;12959:16;12951:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;13021:49;13034:15;13051:18;13021:12;:49::i;:::-;11601:1477;;;;;;;;;;;;7257:5:::0;7248:6;;:14;;;;;;;;;;;;;;;;;;11563:1515::o;13879:90::-;13922:4;13960:1;13946:10;;:15;;13939:22;;13879:90;:::o;13979:71::-;14030:12;14017:10;:25;;;;13979:71::o;10881:114::-;10943:4;10968:11;:19;10980:6;10968:19;;;;;;;;;;;;;;;;;;;;;;;;;10967:20;10960:27;;10881:114;;;:::o;11009:337::-;11076:7;11096:17;11116:40;11141:14;;11116:20;11127:8;;11116:6;:10;;:20;;;;:::i;:::-;:24;;:40;;;;:::i;:::-;11096:60;;11198:39;11227:9;11198;:24;11216:4;11198:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;11171:9;:24;11189:4;11171:24;;;;;;;;;;;;;;;:66;;;;11278:4;11253:42;;11262:6;11253:42;;;11285:9;11253:42;;;;;;:::i;:::-;;;;;;;;11317:21;11328:9;11317:6;:10;;:21;;;;:::i;:::-;11310:28;;;11009:337;;;;:::o;1649:347::-;1735:7;1834:1;1830;:5;1837:12;1822:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1861:9;1877:1;1873;:5;;;;:::i;:::-;1861:17;;1987:1;1980:8;;;1649:347;;;;;:::o;13088:408::-;13182:1;13168:11;:15;13165:324;;;13199:6;;;;;;;;;;;:22;;;13229:9;13266:4;13290:11;13320:1;13340;13368:4;13392:15;13199:223;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13442:35;13454:9;13465:11;13442:35;;;;;;;:::i;:::-;;;;;;;;13165:324;13088:408;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:155::-;206:5;244:6;231:20;222:29;;260:41;295:5;260:41;:::i;:::-;212:95;;;;:::o;313:133::-;356:5;394:6;381:20;372:29;;410:30;434:5;410:30;:::i;:::-;362:84;;;;:::o;452:139::-;498:5;536:6;523:20;514:29;;552:33;579:5;552:33;:::i;:::-;504:87;;;;:::o;597:143::-;654:5;685:6;679:13;670:22;;701:33;728:5;701:33;:::i;:::-;660:80;;;;:::o;746:329::-;805:6;854:2;842:9;833:7;829:23;825:32;822:2;;;860:79;;:::i;:::-;822:2;980:1;1005:53;1050:7;1041:6;1030:9;1026:22;1005:53;:::i;:::-;995:63;;951:117;812:263;;;;:::o;1081:345::-;1148:6;1197:2;1185:9;1176:7;1172:23;1168:32;1165:2;;;1203:79;;:::i;:::-;1165:2;1323:1;1348:61;1401:7;1392:6;1381:9;1377:22;1348:61;:::i;:::-;1338:71;;1294:125;1155:271;;;;:::o;1432:474::-;1500:6;1508;1557:2;1545:9;1536:7;1532:23;1528:32;1525:2;;;1563:79;;:::i;:::-;1525:2;1683:1;1708:53;1753:7;1744:6;1733:9;1729:22;1708:53;:::i;:::-;1698:63;;1654:117;1810:2;1836:53;1881:7;1872:6;1861:9;1857:22;1836:53;:::i;:::-;1826:63;;1781:118;1515:391;;;;;:::o;1912:619::-;1989:6;1997;2005;2054:2;2042:9;2033:7;2029:23;2025:32;2022:2;;;2060:79;;:::i;:::-;2022:2;2180:1;2205:53;2250:7;2241:6;2230:9;2226:22;2205:53;:::i;:::-;2195:63;;2151:117;2307:2;2333:53;2378:7;2369:6;2358:9;2354:22;2333:53;:::i;:::-;2323:63;;2278:118;2435:2;2461:53;2506:7;2497:6;2486:9;2482:22;2461:53;:::i;:::-;2451:63;;2406:118;2012:519;;;;;:::o;2537:468::-;2602:6;2610;2659:2;2647:9;2638:7;2634:23;2630:32;2627:2;;;2665:79;;:::i;:::-;2627:2;2785:1;2810:53;2855:7;2846:6;2835:9;2831:22;2810:53;:::i;:::-;2800:63;;2756:117;2912:2;2938:50;2980:7;2971:6;2960:9;2956:22;2938:50;:::i;:::-;2928:60;;2883:115;2617:388;;;;;:::o;3011:474::-;3079:6;3087;3136:2;3124:9;3115:7;3111:23;3107:32;3104:2;;;3142:79;;:::i;:::-;3104:2;3262:1;3287:53;3332:7;3323:6;3312:9;3308:22;3287:53;:::i;:::-;3277:63;;3233:117;3389:2;3415:53;3460:7;3451:6;3440:9;3436:22;3415:53;:::i;:::-;3405:63;;3360:118;3094:391;;;;;:::o;3491:468::-;3556:6;3564;3613:2;3601:9;3592:7;3588:23;3584:32;3581:2;;;3619:79;;:::i;:::-;3581:2;3739:1;3764:50;3806:7;3797:6;3786:9;3782:22;3764:50;:::i;:::-;3754:60;;3710:114;3863:2;3889:53;3934:7;3925:6;3914:9;3910:22;3889:53;:::i;:::-;3879:63;;3834:118;3571:388;;;;;:::o;3965:329::-;4024:6;4073:2;4061:9;4052:7;4048:23;4044:32;4041:2;;;4079:79;;:::i;:::-;4041:2;4199:1;4224:53;4269:7;4260:6;4249:9;4245:22;4224:53;:::i;:::-;4214:63;;4170:117;4031:263;;;;:::o;4300:351::-;4370:6;4419:2;4407:9;4398:7;4394:23;4390:32;4387:2;;;4425:79;;:::i;:::-;4387:2;4545:1;4570:64;4626:7;4617:6;4606:9;4602:22;4570:64;:::i;:::-;4560:74;;4516:128;4377:274;;;;:::o;4657:474::-;4725:6;4733;4782:2;4770:9;4761:7;4757:23;4753:32;4750:2;;;4788:79;;:::i;:::-;4750:2;4908:1;4933:53;4978:7;4969:6;4958:9;4954:22;4933:53;:::i;:::-;4923:63;;4879:117;5035:2;5061:53;5106:7;5097:6;5086:9;5082:22;5061:53;:::i;:::-;5051:63;;5006:118;4740:391;;;;;:::o;5137:663::-;5225:6;5233;5241;5290:2;5278:9;5269:7;5265:23;5261:32;5258:2;;;5296:79;;:::i;:::-;5258:2;5416:1;5441:64;5497:7;5488:6;5477:9;5473:22;5441:64;:::i;:::-;5431:74;;5387:128;5554:2;5580:64;5636:7;5627:6;5616:9;5612:22;5580:64;:::i;:::-;5570:74;;5525:129;5693:2;5719:64;5775:7;5766:6;5755:9;5751:22;5719:64;:::i;:::-;5709:74;;5664:129;5248:552;;;;;:::o;5806:765::-;5892:6;5900;5908;5916;5965:3;5953:9;5944:7;5940:23;5936:33;5933:2;;;5972:79;;:::i;:::-;5933:2;6092:1;6117:53;6162:7;6153:6;6142:9;6138:22;6117:53;:::i;:::-;6107:63;;6063:117;6219:2;6245:53;6290:7;6281:6;6270:9;6266:22;6245:53;:::i;:::-;6235:63;;6190:118;6347:2;6373:53;6418:7;6409:6;6398:9;6394:22;6373:53;:::i;:::-;6363:63;;6318:118;6475:2;6501:53;6546:7;6537:6;6526:9;6522:22;6501:53;:::i;:::-;6491:63;;6446:118;5923:648;;;;;;;:::o;6577:179::-;6646:10;6667:46;6709:3;6701:6;6667:46;:::i;:::-;6745:4;6740:3;6736:14;6722:28;;6657:99;;;;:::o;6762:147::-;6857:45;6896:5;6857:45;:::i;:::-;6852:3;6845:58;6835:74;;:::o;6915:108::-;6992:24;7010:5;6992:24;:::i;:::-;6987:3;6980:37;6970:53;;:::o;7029:118::-;7116:24;7134:5;7116:24;:::i;:::-;7111:3;7104:37;7094:53;;:::o;7183:732::-;7302:3;7331:54;7379:5;7331:54;:::i;:::-;7401:86;7480:6;7475:3;7401:86;:::i;:::-;7394:93;;7511:56;7561:5;7511:56;:::i;:::-;7590:7;7621:1;7606:284;7631:6;7628:1;7625:13;7606:284;;;7707:6;7701:13;7734:63;7793:3;7778:13;7734:63;:::i;:::-;7727:70;;7820:60;7873:6;7820:60;:::i;:::-;7810:70;;7666:224;7653:1;7650;7646:9;7641:14;;7606:284;;;7610:14;7906:3;7899:10;;7307:608;;;;;;;:::o;7921:109::-;8002:21;8017:5;8002:21;:::i;:::-;7997:3;7990:34;7980:50;;:::o;8036:167::-;8141:55;8190:5;8141:55;:::i;:::-;8136:3;8129:68;8119:84;;:::o;8209:147::-;8304:45;8343:5;8304:45;:::i;:::-;8299:3;8292:58;8282:74;;:::o;8362:364::-;8450:3;8478:39;8511:5;8478:39;:::i;:::-;8533:71;8597:6;8592:3;8533:71;:::i;:::-;8526:78;;8613:52;8658:6;8653:3;8646:4;8639:5;8635:16;8613:52;:::i;:::-;8690:29;8712:6;8690:29;:::i;:::-;8685:3;8681:39;8674:46;;8454:272;;;;;:::o;8732:366::-;8874:3;8895:67;8959:2;8954:3;8895:67;:::i;:::-;8888:74;;8971:93;9060:3;8971:93;:::i;:::-;9089:2;9084:3;9080:12;9073:19;;8878:220;;;:::o;9104:366::-;9246:3;9267:67;9331:2;9326:3;9267:67;:::i;:::-;9260:74;;9343:93;9432:3;9343:93;:::i;:::-;9461:2;9456:3;9452:12;9445:19;;9250:220;;;:::o;9476:366::-;9618:3;9639:67;9703:2;9698:3;9639:67;:::i;:::-;9632:74;;9715:93;9804:3;9715:93;:::i;:::-;9833:2;9828:3;9824:12;9817:19;;9622:220;;;:::o;9848:366::-;9990:3;10011:67;10075:2;10070:3;10011:67;:::i;:::-;10004:74;;10087:93;10176:3;10087:93;:::i;:::-;10205:2;10200:3;10196:12;10189:19;;9994:220;;;:::o;10220:366::-;10362:3;10383:67;10447:2;10442:3;10383:67;:::i;:::-;10376:74;;10459:93;10548:3;10459:93;:::i;:::-;10577:2;10572:3;10568:12;10561:19;;10366:220;;;:::o;10592:366::-;10734:3;10755:67;10819:2;10814:3;10755:67;:::i;:::-;10748:74;;10831:93;10920:3;10831:93;:::i;:::-;10949:2;10944:3;10940:12;10933:19;;10738:220;;;:::o;10964:365::-;11106:3;11127:66;11191:1;11186:3;11127:66;:::i;:::-;11120:73;;11202:93;11291:3;11202:93;:::i;:::-;11320:2;11315:3;11311:12;11304:19;;11110:219;;;:::o;11335:398::-;11494:3;11515:83;11596:1;11591:3;11515:83;:::i;:::-;11508:90;;11607:93;11696:3;11607:93;:::i;:::-;11725:1;11720:3;11716:11;11709:18;;11498:235;;;:::o;11739:366::-;11881:3;11902:67;11966:2;11961:3;11902:67;:::i;:::-;11895:74;;11978:93;12067:3;11978:93;:::i;:::-;12096:2;12091:3;12087:12;12080:19;;11885:220;;;:::o;12111:118::-;12198:24;12216:5;12198:24;:::i;:::-;12193:3;12186:37;12176:53;;:::o;12235:112::-;12318:22;12334:5;12318:22;:::i;:::-;12313:3;12306:35;12296:51;;:::o;12353:379::-;12537:3;12559:147;12702:3;12559:147;:::i;:::-;12552:154;;12723:3;12716:10;;12541:191;;;:::o;12738:222::-;12831:4;12869:2;12858:9;12854:18;12846:26;;12882:71;12950:1;12939:9;12935:17;12926:6;12882:71;:::i;:::-;12836:124;;;;:::o;12966:238::-;13067:4;13105:2;13094:9;13090:18;13082:26;;13118:79;13194:1;13183:9;13179:17;13170:6;13118:79;:::i;:::-;13072:132;;;;:::o;13210:807::-;13459:4;13497:3;13486:9;13482:19;13474:27;;13511:71;13579:1;13568:9;13564:17;13555:6;13511:71;:::i;:::-;13592:72;13660:2;13649:9;13645:18;13636:6;13592:72;:::i;:::-;13674:80;13750:2;13739:9;13735:18;13726:6;13674:80;:::i;:::-;13764;13840:2;13829:9;13825:18;13816:6;13764:80;:::i;:::-;13854:73;13922:3;13911:9;13907:19;13898:6;13854:73;:::i;:::-;13937;14005:3;13994:9;13990:19;13981:6;13937:73;:::i;:::-;13464:553;;;;;;;;;:::o;14023:210::-;14110:4;14148:2;14137:9;14133:18;14125:26;;14161:65;14223:1;14212:9;14208:17;14199:6;14161:65;:::i;:::-;14115:118;;;;:::o;14239:258::-;14350:4;14388:2;14377:9;14373:18;14365:26;;14401:89;14487:1;14476:9;14472:17;14463:6;14401:89;:::i;:::-;14355:142;;;;:::o;14503:313::-;14616:4;14654:2;14643:9;14639:18;14631:26;;14703:9;14697:4;14693:20;14689:1;14678:9;14674:17;14667:47;14731:78;14804:4;14795:6;14731:78;:::i;:::-;14723:86;;14621:195;;;;:::o;14822:419::-;14988:4;15026:2;15015:9;15011:18;15003:26;;15075:9;15069:4;15065:20;15061:1;15050:9;15046:17;15039:47;15103:131;15229:4;15103:131;:::i;:::-;15095:139;;14993:248;;;:::o;15247:419::-;15413:4;15451:2;15440:9;15436:18;15428:26;;15500:9;15494:4;15490:20;15486:1;15475:9;15471:17;15464:47;15528:131;15654:4;15528:131;:::i;:::-;15520:139;;15418:248;;;:::o;15672:419::-;15838:4;15876:2;15865:9;15861:18;15853:26;;15925:9;15919:4;15915:20;15911:1;15900:9;15896:17;15889:47;15953:131;16079:4;15953:131;:::i;:::-;15945:139;;15843:248;;;:::o;16097:419::-;16263:4;16301:2;16290:9;16286:18;16278:26;;16350:9;16344:4;16340:20;16336:1;16325:9;16321:17;16314:47;16378:131;16504:4;16378:131;:::i;:::-;16370:139;;16268:248;;;:::o;16522:419::-;16688:4;16726:2;16715:9;16711:18;16703:26;;16775:9;16769:4;16765:20;16761:1;16750:9;16746:17;16739:47;16803:131;16929:4;16803:131;:::i;:::-;16795:139;;16693:248;;;:::o;16947:419::-;17113:4;17151:2;17140:9;17136:18;17128:26;;17200:9;17194:4;17190:20;17186:1;17175:9;17171:17;17164:47;17228:131;17354:4;17228:131;:::i;:::-;17220:139;;17118:248;;;:::o;17372:419::-;17538:4;17576:2;17565:9;17561:18;17553:26;;17625:9;17619:4;17615:20;17611:1;17600:9;17596:17;17589:47;17653:131;17779:4;17653:131;:::i;:::-;17645:139;;17543:248;;;:::o;17797:419::-;17963:4;18001:2;17990:9;17986:18;17978:26;;18050:9;18044:4;18040:20;18036:1;18025:9;18021:17;18014:47;18078:131;18204:4;18078:131;:::i;:::-;18070:139;;17968:248;;;:::o;18222:222::-;18315:4;18353:2;18342:9;18338:18;18330:26;;18366:71;18434:1;18423:9;18419:17;18410:6;18366:71;:::i;:::-;18320:124;;;;:::o;18450:831::-;18713:4;18751:3;18740:9;18736:19;18728:27;;18765:71;18833:1;18822:9;18818:17;18809:6;18765:71;:::i;:::-;18846:80;18922:2;18911:9;18907:18;18898:6;18846:80;:::i;:::-;18973:9;18967:4;18963:20;18958:2;18947:9;18943:18;18936:48;19001:108;19104:4;19095:6;19001:108;:::i;:::-;18993:116;;19119:72;19187:2;19176:9;19172:18;19163:6;19119:72;:::i;:::-;19201:73;19269:3;19258:9;19254:19;19245:6;19201:73;:::i;:::-;18718:563;;;;;;;;:::o;19287:332::-;19408:4;19446:2;19435:9;19431:18;19423:26;;19459:71;19527:1;19516:9;19512:17;19503:6;19459:71;:::i;:::-;19540:72;19608:2;19597:9;19593:18;19584:6;19540:72;:::i;:::-;19413:206;;;;;:::o;19625:214::-;19714:4;19752:2;19741:9;19737:18;19729:26;;19765:67;19829:1;19818:9;19814:17;19805:6;19765:67;:::i;:::-;19719:120;;;;:::o;19926:132::-;19993:4;20016:3;20008:11;;20046:4;20041:3;20037:14;20029:22;;19998:60;;;:::o;20064:114::-;20131:6;20165:5;20159:12;20149:22;;20138:40;;;:::o;20184:99::-;20236:6;20270:5;20264:12;20254:22;;20243:40;;;:::o;20289:113::-;20359:4;20391;20386:3;20382:14;20374:22;;20364:38;;;:::o;20408:184::-;20507:11;20541:6;20536:3;20529:19;20581:4;20576:3;20572:14;20557:29;;20519:73;;;;:::o;20598:147::-;20699:11;20736:3;20721:18;;20711:34;;;;:::o;20751:169::-;20835:11;20869:6;20864:3;20857:19;20909:4;20904:3;20900:14;20885:29;;20847:73;;;;:::o;20926:305::-;20966:3;20985:20;21003:1;20985:20;:::i;:::-;20980:25;;21019:20;21037:1;21019:20;:::i;:::-;21014:25;;21173:1;21105:66;21101:74;21098:1;21095:81;21092:2;;;21179:18;;:::i;:::-;21092:2;21223:1;21220;21216:9;21209:16;;20970:261;;;;:::o;21237:185::-;21277:1;21294:20;21312:1;21294:20;:::i;:::-;21289:25;;21328:20;21346:1;21328:20;:::i;:::-;21323:25;;21367:1;21357:2;;21372:18;;:::i;:::-;21357:2;21414:1;21411;21407:9;21402:14;;21279:143;;;;:::o;21428:348::-;21468:7;21491:20;21509:1;21491:20;:::i;:::-;21486:25;;21525:20;21543:1;21525:20;:::i;:::-;21520:25;;21713:1;21645:66;21641:74;21638:1;21635:81;21630:1;21623:9;21616:17;21612:105;21609:2;;;21720:18;;:::i;:::-;21609:2;21768:1;21765;21761:9;21750:20;;21476:300;;;;:::o;21782:191::-;21822:4;21842:20;21860:1;21842:20;:::i;:::-;21837:25;;21876:20;21894:1;21876:20;:::i;:::-;21871:25;;21915:1;21912;21909:8;21906:2;;;21920:18;;:::i;:::-;21906:2;21965:1;21962;21958:9;21950:17;;21827:146;;;;:::o;21979:96::-;22016:7;22045:24;22063:5;22045:24;:::i;:::-;22034:35;;22024:51;;;:::o;22081:104::-;22126:7;22155:24;22173:5;22155:24;:::i;:::-;22144:35;;22134:51;;;:::o;22191:90::-;22225:7;22268:5;22261:13;22254:21;22243:32;;22233:48;;;:::o;22287:126::-;22324:7;22364:42;22357:5;22353:54;22342:65;;22332:81;;;:::o;22419:77::-;22456:7;22485:5;22474:16;;22464:32;;;:::o;22502:86::-;22537:7;22577:4;22570:5;22566:16;22555:27;;22545:43;;;:::o;22594:134::-;22652:9;22685:37;22716:5;22685:37;:::i;:::-;22672:50;;22662:66;;;:::o;22734:162::-;22802:9;22835:55;22884:5;22835:55;:::i;:::-;22822:68;;22812:84;;;:::o;22902:131::-;22970:9;23003:24;23021:5;23003:24;:::i;:::-;22990:37;;22980:53;;;:::o;23039:121::-;23097:9;23130:24;23148:5;23130:24;:::i;:::-;23117:37;;23107:53;;;:::o;23166:126::-;23216:9;23249:37;23280:5;23249:37;:::i;:::-;23236:50;;23226:66;;;:::o;23298:113::-;23348:9;23381:24;23399:5;23381:24;:::i;:::-;23368:37;;23358:53;;;:::o;23417:307::-;23485:1;23495:113;23509:6;23506:1;23503:13;23495:113;;;23594:1;23589:3;23585:11;23579:18;23575:1;23570:3;23566:11;23559:39;23531:2;23528:1;23524:10;23519:15;;23495:113;;;23626:6;23623:1;23620:13;23617:2;;;23706:1;23697:6;23692:3;23688:16;23681:27;23617:2;23466:258;;;;:::o;23730:180::-;23778:77;23775:1;23768:88;23875:4;23872:1;23865:15;23899:4;23896:1;23889:15;23916:180;23964:77;23961:1;23954:88;24061:4;24058:1;24051:15;24085:4;24082:1;24075:15;24102:180;24150:77;24147:1;24140:88;24247:4;24244:1;24237:15;24271:4;24268:1;24261:15;24288:180;24336:77;24333:1;24326:88;24433:4;24430:1;24423:15;24457:4;24454:1;24447:15;24597:117;24706:1;24703;24696:12;24720:102;24761:6;24812:2;24808:7;24803:2;24796:5;24792:14;24788:28;24778:38;;24768:54;;;:::o;24828:224::-;24968:34;24964:1;24956:6;24952:14;24945:58;25037:7;25032:2;25024:6;25020:15;25013:32;24934:118;:::o;25058:167::-;25198:19;25194:1;25186:6;25182:14;25175:43;25164:61;:::o;25231:222::-;25371:34;25367:1;25359:6;25355:14;25348:58;25440:5;25435:2;25427:6;25423:15;25416:30;25337:116;:::o;25459:177::-;25599:29;25595:1;25587:6;25583:14;25576:53;25565:71;:::o;25642:180::-;25782:32;25778:1;25770:6;25766:14;25759:56;25748:74;:::o;25828:220::-;25968:34;25964:1;25956:6;25952:14;25945:58;26037:3;26032:2;26024:6;26020:15;26013:28;25934:114;:::o;26054:156::-;26194:8;26190:1;26182:6;26178:14;26171:32;26160:50;:::o;26216:114::-;26322:8;:::o;26336:161::-;26476:13;26472:1;26464:6;26460:14;26453:37;26442:55;:::o;26503:122::-;26576:24;26594:5;26576:24;:::i;:::-;26569:5;26566:35;26556:2;;26615:1;26612;26605:12;26556:2;26546:79;:::o;26631:138::-;26712:32;26738:5;26712:32;:::i;:::-;26705:5;26702:43;26692:2;;26759:1;26756;26749:12;26692:2;26682:87;:::o;26775:116::-;26845:21;26860:5;26845:21;:::i;:::-;26838:5;26835:32;26825:2;;26881:1;26878;26871:12;26825:2;26815:76;:::o;26897:122::-;26970:24;26988:5;26970:24;:::i;:::-;26963:5;26960:35;26950:2;;27009:1;27006;26999:12;26950:2;26940:79;:::o

Swarm Source

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