ETH Price: $1,546.17 (-12.14%)

Token

Virus (VIRUS)
 

Overview

Max Total Supply

100,000,000 VIRUS

Holders

35

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
23,317.637843461 VIRUS

Value
$0.00
0x86188b2604e3ed5a65ec71eee9024b6e09dc5595
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:
virus

Compiler Version
v0.8.5+commit.a4f2e591

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/*

    VirusERC

    You must be referred to buy!

    Refer other wallets and get rewards for their every buy



    Telegram: @VirusErc

*/


//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 IBEP20 {

    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;

    }



    function unauthorize(address adr) public onlyOwner {

        authorizations[adr] = false;

    }



    function isOwner(address account) public view returns (bool) {

        return account == owner;

    }



    function isAuthorized(address adr) public view returns (bool) {

        return authorizations[adr];

    }



    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 virus is IBEP20, Auth {

    using SafeMath for uint256;



    string constant _name = "Virus";

    string constant _symbol = "VIRUS";

    uint8 constant _decimals = 9;



    uint256 _totalSupply = 100000000 * (10 ** _decimals);

    uint256 public _maxWalletSize = (_totalSupply * 1) / 100; 

    uint256 public _minTransferForReferral = 1 * (10 ** _decimals); 



    mapping (address => uint256) _balances;

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

    

    mapping (address => bool) isFeeExempt;

    mapping (address => address) public referrer; 

    mapping(address => bool) public isReferred;



    uint256 liquidityFee = 2;

    uint256 devFee = 0;

    uint256 marketingFee = 6;



    uint256 totalFee = 8;

    uint256 feeDenominator = 100;



    uint256 referralFee = 3;



    uint256 public minSupplyForReferralReward = (_totalSupply * 1) / 1000;

    

    address private marketingFeeReceiver = 0xDcA1eEDd2166Bb128594aa8C64Dbe1Fa75Bd00E1;



    IDEXRouter public router;

    address public pair;



    bool public swapEnabled = true;

    uint256 public swapThreshold = _totalSupply / 1000 * 3; // 0.3%



    bool inSwap;

    modifier swapping() { inSwap = true; _; inSwap = false; }



    event ReferralBonus(address indexed feesTo , address indexed feesFrom , uint value);

    event Referred(address indexed referred,address indexed referrer);



    constructor () Auth(msg.sender) {

        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

        pair = IDEXFactory(router.factory()).createPair(router.WETH(), address(this));

        _allowances[address(this)][address(router)] = type(uint256).max;



        address _owner = owner;

        isFeeExempt[_owner] = true;

        isFeeExempt[pair] = true;

        isFeeExempt[address(router)] = true;



        isReferred[_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); }    



        if (recipient != pair) {

            require(isFeeExempt[recipient] || _balances[recipient] + amount <= _maxWalletSize, "Transfer amount exceeds the bag size.");

        }



        uint256 amountReceived = amount; 

        

        if(sender == pair) { //buy

            if(!isFeeExempt[recipient]) {

                require(isReferred[recipient],"Not referred");

                amountReceived = takeReferralFees(recipient,amount);

            }



        } else if(recipient == pair) { //sell

            if(shouldTakeFee(sender)) {

                amountReceived = takeFee(sender, amount);

            }  



        } else if(isReferred[recipient]==false) {

            if(amount >= _minTransferForReferral) {

                isReferred[recipient] = true;

                referrer[recipient] = sender;

                emit Referred(recipient,sender);

            }

        } 

        

        if(shouldSwapBack()){ swapBack(); }



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

        _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 takeReferralFees(address from,uint256 amount) internal returns(uint) {

        uint256 referralTokens = referralFee * amount / feeDenominator;

        if(_balances[referrer[from]] > minSupplyForReferralReward) {

            _balances[referrer[from]] = _balances[referrer[from]].add(referralTokens);

            emit ReferralBonus(referrer[from],from,referralTokens);

        } else {

             _balances[marketingFeeReceiver] = _balances[marketingFeeReceiver].add(referralTokens);

            emit ReferralBonus(marketingFeeReceiver,from,referralTokens);

        }



        return amount - referralTokens;

    }

    

    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] = router.WETH();



        uint256 balanceBefore = address(this).balance;



        router.swapExactTokensForETHSupportingFeeOnTransferTokens(

            amountToSwap,

            0,

            path,

            address(this),

            block.timestamp

        );

        uint256 amountBNB = address(this).balance.sub(balanceBefore);

        uint256 totalBNBFee = totalFee.sub(liquidityFee.div(2));

        uint256 amountBNBLiquidity = amountBNB.mul(liquidityFee).div(totalBNBFee).div(2);

        uint256 amountBNBMarketing = amountBNB - amountBNBLiquidity;



        (bool MarketingSuccess, /* bytes memory data */) = payable(marketingFeeReceiver).call{value: amountBNBMarketing, gas: 30000}("");

        require(MarketingSuccess, "receiver rejected ETH transfer");

        addLiquidity(amountToLiquify, amountBNBLiquidity);

    }



    function addLiquidity(uint256 tokenAmount, uint256 BNBAmount) private {

        if(tokenAmount > 0){

                router.addLiquidityETH{value: BNBAmount}(

                    address(this),

                    tokenAmount,

                    0,

                    0,

                    address(this),

                    block.timestamp

                );

                emit AutoLiquify(BNBAmount, tokenAmount);

            }

    }



    function setMaxWallet(uint256 amount) external onlyOwner() {

        require(amount >= _totalSupply / 1000 );

        _maxWalletSize = amount;

    }   



    function setMinTransferForReferral(uint256 amount) external onlyOwner() {

        require(amount <= 1*(10**_decimals) );

        _minTransferForReferral = amount; 

    }



    function setIsFeeExempt(address holder, bool exempt) external authorized {

        isFeeExempt[holder] = exempt;

    }



    function setFees(uint256 _liquidityFee, uint256 _devFee, uint256 _marketingFee, uint256 _feeDenominator) external authorized {

        liquidityFee = _liquidityFee;

        devFee = _devFee;

        marketingFee = _marketingFee;

        totalFee = _liquidityFee.add(_devFee).add(_marketingFee);

        feeDenominator = _feeDenominator;

    }



    function setSwapBackSettings(bool _enabled, uint256 _amount) external authorized {

        swapEnabled = _enabled;

        swapThreshold = _amount;

    }



    function manualSend() external authorized {

        uint256 contractETHBalance = address(this).balance;

        payable(marketingFeeReceiver).transfer(contractETHBalance);

    }



    function transferForeignToken(address _token) public authorized {

        require(_token != address(this), "Can't let you take all native token");

        uint256 _contractBalance = IBEP20(_token).balanceOf(address(this));

        payable(marketingFeeReceiver).transfer(_contractBalance);

    }

    

    event AutoLiquify(uint256 amountBNB, uint256 amountBOG);

}

Contract Security Audit

Contract ABI

API
[{"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":"amountBNB","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":"feesTo","type":"address"},{"indexed":true,"internalType":"address","name":"feesFrom","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"ReferralBonus","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"referred","type":"address"},{"indexed":true,"internalType":"address","name":"referrer","type":"address"}],"name":"Referred","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":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_minTransferForReferral","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":"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":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isReferred","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"minSupplyForReferralReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[{"internalType":"address","name":"","type":"address"}],"name":"referrer","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":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","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":"uint256","name":"amount","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMinTransferForReferral","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":[],"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"}]

60806040526009600a620000149190620008e0565b6305f5e10062000025919062000a1d565b600255606460016002546200003b919062000a1d565b6200004791906200084d565b6003556009600a6200005a9190620008e0565b600162000068919062000a1d565b6004556002600a556000600b556006600c556008600d556064600e556003600f556103e860016002546200009d919062000a1d565b620000a991906200084d565b60105573dca1eedd2166bb128594aa8c64dbe1fa75bd00e1601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601360146101000a81548160ff02191690831515021790555060036103e86002546200013091906200084d565b6200013c919062000a1d565b6014553480156200014c57600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050737a250d5630b4cf539739df2c5dacb4c659f2488d601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620002a457600080fd5b505afa158015620002b9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002df9190620007af565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200036357600080fd5b505afa15801562000378573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200039e9190620007af565b306040518363ffffffff1660e01b8152600401620003be92919062000803565b602060405180830381600087803b158015620003d957600080fd5b505af1158015620003ee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004149190620007af565b601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600254600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60025460405162000789919062000830565b60405180910390a35062000b53565b600081519050620007a98162000b39565b92915050565b600060208284031215620007c857620007c762000b27565b5b6000620007d88482850162000798565b91505092915050565b620007ec8162000a7e565b82525050565b620007fd8162000ab2565b82525050565b60006040820190506200081a6000830185620007e1565b620008296020830184620007e1565b9392505050565b6000602082019050620008476000830184620007f2565b92915050565b60006200085a8262000ab2565b9150620008678362000ab2565b9250826200087a576200087962000af8565b5b828204905092915050565b6000808291508390505b6001851115620008d757808604811115620008af57620008ae62000ac9565b5b6001851615620008bf5780820291505b8081029050620008cf8562000b2c565b94506200088f565b94509492505050565b6000620008ed8262000ab2565b9150620008fa8362000abc565b9250620009297fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000931565b905092915050565b60008262000943576001905062000a16565b8162000953576000905062000a16565b81600181146200096c57600281146200097757620009ad565b600191505062000a16565b60ff8411156200098c576200098b62000ac9565b5b8360020a915084821115620009a657620009a562000ac9565b5b5062000a16565b5060208310610133831016604e8410600b8410161715620009e75782820a905083811115620009e157620009e062000ac9565b5b62000a16565b620009f6848484600162000885565b9250905081840481111562000a105762000a0f62000ac9565b5b81810290505b9392505050565b600062000a2a8262000ab2565b915062000a378362000ab2565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000a735762000a7262000ac9565b5b828202905092915050565b600062000a8b8262000a92565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600080fd5b60008160011c9050919050565b62000b448162000a7e565b811462000b5057600080fd5b50565b613bc58062000b636000396000f3fe6080604052600436106101e75760003560e01c8063893d20e811610102578063df20fd4911610095578063f2fde38b11610064578063f2fde38b14610739578063f429389014610762578063f887ea4014610779578063fe9fbb80146107a4576101ee565b8063df20fd4914610681578063ea23a2b8146106aa578063f0b37c04146106d3578063f0bc6cfb146106fc576101ee565b8063a9059cbb116100d1578063a9059cbb146105b5578063b6a5d7de146105f2578063dc93cf701461061b578063dd62ed3e14610644576101ee565b8063893d20e8146105095780638f9a55c01461053457806395d89b411461055f578063a8aa1b311461058a576101ee565b8063571ac8b01161017a5780636ddd1713116101495780636ddd17131461044d5780636fcba3771461047857806370a08231146104a157806371d0979b146104de576101ee565b8063571ac8b0146103935780635acbdedb146103d05780635d0044ca146103fb578063658d4b7f14610424576101ee565b806323b872dd116101b657806323b872dd146102b15780632cf003c2146102ee5780632f54bf6e1461032b578063313ce56714610368576101ee565b80630445b667146101f357806306fdde031461021e578063095ea7b31461024957806318160ddd14610286576101ee565b366101ee57005b600080fd5b3480156101ff57600080fd5b506102086107e1565b60405161021591906133f2565b60405180910390f35b34801561022a57600080fd5b506102336107e7565b60405161024091906132d0565b60405180910390f35b34801561025557600080fd5b50610270600480360381019061026b9190612df8565b610824565b60405161027d919061329a565b60405180910390f35b34801561029257600080fd5b5061029b610916565b6040516102a891906133f2565b60405180910390f35b3480156102bd57600080fd5b506102d860048036038101906102d39190612d65565b610920565b6040516102e5919061329a565b60405180910390f35b3480156102fa57600080fd5b5061031560048036038101906103109190612c9e565b610b20565b6040516103229190613203565b60405180910390f35b34801561033757600080fd5b50610352600480360381019061034d9190612c9e565b610b53565b60405161035f919061329a565b60405180910390f35b34801561037457600080fd5b5061037d610bac565b60405161038a9190613490565b60405180910390f35b34801561039f57600080fd5b506103ba60048036038101906103b59190612c9e565b610bb5565b6040516103c7919061329a565b60405180910390f35b3480156103dc57600080fd5b506103e5610be8565b6040516103f291906133f2565b60405180910390f35b34801561040757600080fd5b50610422600480360381019061041d9190612e78565b610bee565b005b34801561043057600080fd5b5061044b60048036038101906104469190612db8565b610c5c565b005b34801561045957600080fd5b50610462610cff565b60405161046f919061329a565b60405180910390f35b34801561048457600080fd5b5061049f600480360381019061049a9190612f25565b610d12565b005b3480156104ad57600080fd5b506104c860048036038101906104c39190612c9e565b610da7565b6040516104d591906133f2565b60405180910390f35b3480156104ea57600080fd5b506104f3610df0565b60405161050091906133f2565b60405180910390f35b34801561051557600080fd5b5061051e610df6565b60405161052b9190613203565b60405180910390f35b34801561054057600080fd5b50610549610e1f565b60405161055691906133f2565b60405180910390f35b34801561056b57600080fd5b50610574610e25565b60405161058191906132d0565b60405180910390f35b34801561059657600080fd5b5061059f610e62565b6040516105ac9190613203565b60405180910390f35b3480156105c157600080fd5b506105dc60048036038101906105d79190612df8565b610e88565b6040516105e9919061329a565b60405180910390f35b3480156105fe57600080fd5b5061061960048036038101906106149190612c9e565b610e9d565b005b34801561062757600080fd5b50610642600480360381019061063d9190612c9e565b610f3f565b005b34801561065057600080fd5b5061066b60048036038101906106669190612d25565b6110f0565b60405161067891906133f2565b60405180910390f35b34801561068d57600080fd5b506106a860048036038101906106a39190612e38565b611177565b005b3480156106b657600080fd5b506106d160048036038101906106cc9190612e78565b6111e4565b005b3480156106df57600080fd5b506106fa60048036038101906106f59190612c9e565b61125c565b005b34801561070857600080fd5b50610723600480360381019061071e9190612c9e565b6112ff565b604051610730919061329a565b60405180910390f35b34801561074557600080fd5b50610760600480360381019061075b9190612cf8565b61131f565b005b34801561076e57600080fd5b50610777611438565b005b34801561078557600080fd5b5061078e6114f1565b60405161079b91906132b5565b60405180910390f35b3480156107b057600080fd5b506107cb60048036038101906107c69190612c9e565b611517565b6040516107d8919061329a565b60405180910390f35b60145481565b60606040518060400160405280600581526020017f5669727573000000000000000000000000000000000000000000000000000000815250905090565b600081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161090491906133f2565b60405180910390a36001905092915050565b6000600254905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610b0c57610a8b826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461156d9092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610b178484846115d1565b90509392505050565b60086020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b6000610be1827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610824565b9050919050565b60105481565b610bf733610b53565b610c36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2d906133b2565b60405180910390fd5b6103e8600254610c469190613561565b811015610c5257600080fd5b8060038190555050565b610c6533611517565b610ca4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9b906133d2565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601360149054906101000a900460ff1681565b610d1b33611517565b610d5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d51906133d2565b60405180910390fd5b83600a8190555082600b8190555081600c81905550610d9482610d868587611c7290919063ffffffff16565b611c7290919063ffffffff16565b600d8190555080600e8190555050505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60045481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60035481565b60606040518060400160405280600581526020017f5649525553000000000000000000000000000000000000000000000000000000815250905090565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610e953384846115d1565b905092915050565b610ea633610b53565b610ee5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610edc906133b2565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610f4833611517565b610f87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7e906133d2565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610ff6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fed90613312565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016110319190613203565b60206040518083038186803b15801561104957600080fd5b505afa15801561105d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110819190612ea5565b9050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156110eb573d6000803e3d6000fd5b505050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61118033611517565b6111bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b6906133d2565b60405180910390fd5b81601360146101000a81548160ff021916908315150217905550806014819055505050565b6111ed33610b53565b61122c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611223906133b2565b60405180910390fd5b6009600a61123a91906135e5565b60016112469190613703565b81111561125257600080fd5b8060048190555050565b61126533610b53565b6112a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129b906133b2565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60096020528060005260406000206000915054906101000a900460ff1681565b61132833610b53565b611367576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135e906133b2565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861638160405161142d919061321e565b60405180910390a150565b61144133611517565b611480576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611477906133d2565b60405180910390fd5b6000479050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156114ed573d6000803e3d6000fd5b5050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008383111582906115b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ac91906132d0565b60405180910390fd5b50600083856115c4919061375d565b9050809150509392505050565b6000601560009054906101000a900460ff16156115fa576115f3848484611cd0565b9050611c6b565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461173357600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806116f3575060035482600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116f0919061350b565b11155b611732576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611729906132f2565b60405180910390fd5b5b6000829050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141561187d57600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661187857600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661186b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186290613372565b60405180910390fd5b6118758484611ea3565b90505b611a89565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156118f3576118dc856122fd565b156118ee576118eb8584612354565b90505b611a88565b60001515600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415611a87576004548310611a86576001600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555084600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508473ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f2c07cd45454a31c572d49686c5ec6fef884778b2cf441c7fd58f4bde0fa6400b60405160405180910390a35b5b5b5b611a91612498565b15611a9f57611a9e61256f565b5b611b28836040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461156d9092919063ffffffff16565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611bbd81600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c7290919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611c5d91906133f2565b60405180910390a360019150505b9392505050565b6000808284611c81919061350b565b905083811015611cc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cbd90613332565b60405180910390fd5b8091505092915050565b6000611d5b826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461156d9092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611df082600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c7290919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611e9091906133f2565b60405180910390a3600190509392505050565b600080600e5483600f54611eb79190613703565b611ec19190613561565b905060105460056000600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156121875761201c8160056000600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c7290919063ffffffff16565b60056000600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff16600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f9be71e54c914a5355f90883acdff2a1d75cebe9a1c6f15305d1fb0c28d7d76308360405161217a91906133f2565b60405180910390a36122e8565b6121fb8160056000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c7290919063ffffffff16565b60056000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff16601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f9be71e54c914a5355f90883acdff2a1d75cebe9a1c6f15305d1fb0c28d7d7630836040516122df91906133f2565b60405180910390a35b80836122f4919061375d565b91505092915050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b600080612380600e54612372600d54866129ab90919063ffffffff16565b612a2690919063ffffffff16565b90506123d481600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c7290919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161247491906133f2565b60405180910390a361248f8184612a7090919063ffffffff16565b91505092915050565b6000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156125055750601560009054906101000a900460ff16155b801561251d5750601360149054906101000a900460ff165b801561256a5750601454600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601560006101000a81548160ff021916908315150217905550600061259530610da7565b905060006125d560026125c7600d546125b9600a54876129ab90919063ffffffff16565b612a2690919063ffffffff16565b612a2690919063ffffffff16565b905060006125ec8284612a7090919063ffffffff16565b90506000600267ffffffffffffffff81111561260b5761260a613924565b5b6040519080825280602002602001820160405280156126395781602001602082028036833780820191505090505b5090503081600081518110612651576126506138f5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156126f357600080fd5b505afa158015612707573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061272b9190612ccb565b8160018151811061273f5761273e6138f5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b81526004016127e295949392919061340d565b600060405180830381600087803b1580156127fc57600080fd5b505af1158015612810573d6000803e3d6000fd5b5050505060006128298247612a7090919063ffffffff16565b905060006128576128466002600a54612a2690919063ffffffff16565b600d54612a7090919063ffffffff16565b90506000612895600261288784612879600a54886129ab90919063ffffffff16565b612a2690919063ffffffff16565b612a2690919063ffffffff16565b9050600081846128a5919061375d565b90506000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682617530906040516128f3906131ee565b600060405180830381858888f193505050503d8060008114612931576040519150601f19603f3d011682016040523d82523d6000602084013e612936565b606091505b505090508061297a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297190613352565b60405180910390fd5b6129848984612aba565b505050505050505050506000601560006101000a81548160ff021916908315150217905550565b6000808314156129be5760009050612a20565b600082846129cc9190613703565b90508284826129db9190613561565b14612a1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1290613392565b60405180910390fd5b809150505b92915050565b6000612a6883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612bbd565b905092915050565b6000612ab283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061156d565b905092915050565b6000821115612bb957601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008030426040518863ffffffff1660e01b8152600401612b2a96959493929190613239565b6060604051808303818588803b158015612b4357600080fd5b505af1158015612b57573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612b7c9190612ed2565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b45068183604051612bb0929190613467565b60405180910390a15b5050565b60008083118290612c04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bfb91906132d0565b60405180910390fd5b5060008385612c139190613561565b9050809150509392505050565b600081359050612c2f81613b33565b92915050565b600081519050612c4481613b33565b92915050565b600081359050612c5981613b4a565b92915050565b600081359050612c6e81613b61565b92915050565b600081359050612c8381613b78565b92915050565b600081519050612c9881613b78565b92915050565b600060208284031215612cb457612cb3613953565b5b6000612cc284828501612c20565b91505092915050565b600060208284031215612ce157612ce0613953565b5b6000612cef84828501612c35565b91505092915050565b600060208284031215612d0e57612d0d613953565b5b6000612d1c84828501612c4a565b91505092915050565b60008060408385031215612d3c57612d3b613953565b5b6000612d4a85828601612c20565b9250506020612d5b85828601612c20565b9150509250929050565b600080600060608486031215612d7e57612d7d613953565b5b6000612d8c86828701612c20565b9350506020612d9d86828701612c20565b9250506040612dae86828701612c74565b9150509250925092565b60008060408385031215612dcf57612dce613953565b5b6000612ddd85828601612c20565b9250506020612dee85828601612c5f565b9150509250929050565b60008060408385031215612e0f57612e0e613953565b5b6000612e1d85828601612c20565b9250506020612e2e85828601612c74565b9150509250929050565b60008060408385031215612e4f57612e4e613953565b5b6000612e5d85828601612c5f565b9250506020612e6e85828601612c74565b9150509250929050565b600060208284031215612e8e57612e8d613953565b5b6000612e9c84828501612c74565b91505092915050565b600060208284031215612ebb57612eba613953565b5b6000612ec984828501612c89565b91505092915050565b600080600060608486031215612eeb57612eea613953565b5b6000612ef986828701612c89565b9350506020612f0a86828701612c89565b9250506040612f1b86828701612c89565b9150509250925092565b60008060008060808587031215612f3f57612f3e613953565b5b6000612f4d87828801612c74565b9450506020612f5e87828801612c74565b9350506040612f6f87828801612c74565b9250506060612f8087828801612c74565b91505092959194509250565b6000612f988383612fb3565b60208301905092915050565b612fad816137f8565b82525050565b612fbc81613791565b82525050565b612fcb81613791565b82525050565b6000612fdc826134bb565b612fe681856134de565b9350612ff1836134ab565b8060005b838110156130225781516130098882612f8c565b9750613014836134d1565b925050600181019050612ff5565b5085935050505092915050565b613038816137b5565b82525050565b6130478161380a565b82525050565b6130568161382e565b82525050565b6000613067826134c6565b61307181856134fa565b9350613081818560208601613864565b61308a81613958565b840191505092915050565b60006130a26025836134fa565b91506130ad82613976565b604082019050919050565b60006130c56023836134fa565b91506130d0826139c5565b604082019050919050565b60006130e8601b836134fa565b91506130f382613a14565b602082019050919050565b600061310b601e836134fa565b915061311682613a3d565b602082019050919050565b600061312e600c836134fa565b915061313982613a66565b602082019050919050565b60006131516021836134fa565b915061315c82613a8f565b604082019050919050565b60006131746006836134fa565b915061317f82613ade565b602082019050919050565b60006131976000836134ef565b91506131a282613b07565b600082019050919050565b60006131ba600b836134fa565b91506131c582613b0a565b602082019050919050565b6131d9816137e1565b82525050565b6131e8816137eb565b82525050565b60006131f98261318a565b9150819050919050565b60006020820190506132186000830184612fc2565b92915050565b60006020820190506132336000830184612fa4565b92915050565b600060c08201905061324e6000830189612fc2565b61325b60208301886131d0565b613268604083018761304d565b613275606083018661304d565b6132826080830185612fc2565b61328f60a08301846131d0565b979650505050505050565b60006020820190506132af600083018461302f565b92915050565b60006020820190506132ca600083018461303e565b92915050565b600060208201905081810360008301526132ea818461305c565b905092915050565b6000602082019050818103600083015261330b81613095565b9050919050565b6000602082019050818103600083015261332b816130b8565b9050919050565b6000602082019050818103600083015261334b816130db565b9050919050565b6000602082019050818103600083015261336b816130fe565b9050919050565b6000602082019050818103600083015261338b81613121565b9050919050565b600060208201905081810360008301526133ab81613144565b9050919050565b600060208201905081810360008301526133cb81613167565b9050919050565b600060208201905081810360008301526133eb816131ad565b9050919050565b600060208201905061340760008301846131d0565b92915050565b600060a08201905061342260008301886131d0565b61342f602083018761304d565b81810360408301526134418186612fd1565b90506134506060830185612fc2565b61345d60808301846131d0565b9695505050505050565b600060408201905061347c60008301856131d0565b61348960208301846131d0565b9392505050565b60006020820190506134a560008301846131df565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000613516826137e1565b9150613521836137e1565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561355657613555613897565b5b828201905092915050565b600061356c826137e1565b9150613577836137e1565b925082613587576135866138c6565b5b828204905092915050565b6000808291508390505b60018511156135dc578086048111156135b8576135b7613897565b5b60018516156135c75780820291505b80810290506135d585613969565b945061359c565b94509492505050565b60006135f0826137e1565b91506135fb836137eb565b92506136287fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613630565b905092915050565b60008261364057600190506136fc565b8161364e57600090506136fc565b8160018114613664576002811461366e5761369d565b60019150506136fc565b60ff8411156136805761367f613897565b5b8360020a91508482111561369757613696613897565b5b506136fc565b5060208310610133831016604e8410600b84101617156136d25782820a9050838111156136cd576136cc613897565b5b6136fc565b6136df8484846001613592565b925090508184048111156136f6576136f5613897565b5b81810290505b9392505050565b600061370e826137e1565b9150613719836137e1565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561375257613751613897565b5b828202905092915050565b6000613768826137e1565b9150613773836137e1565b92508282101561378657613785613897565b5b828203905092915050565b600061379c826137c1565b9050919050565b60006137ae826137c1565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061380382613840565b9050919050565b60006138158261381c565b9050919050565b6000613827826137c1565b9050919050565b6000613839826137e1565b9050919050565b600061384b82613852565b9050919050565b600061385d826137c1565b9050919050565b60005b83811015613882578082015181840152602081019050613867565b83811115613891576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206261672060008201527f73697a652e000000000000000000000000000000000000000000000000000000602082015250565b7f43616e2774206c657420796f752074616b6520616c6c206e617469766520746f60008201527f6b656e0000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f72656365697665722072656a656374656420455448207472616e736665720000600082015250565b7f4e6f742072656665727265640000000000000000000000000000000000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b50565b7f21415554484f52495a4544000000000000000000000000000000000000000000600082015250565b613b3c81613791565b8114613b4757600080fd5b50565b613b53816137a3565b8114613b5e57600080fd5b50565b613b6a816137b5565b8114613b7557600080fd5b50565b613b81816137e1565b8114613b8c57600080fd5b5056fea2646970667358221220be30decf64bd3b535265101793908f2e5ce5f96eed2dc56c99416cf29b9d095e64736f6c63430008050033

Deployed Bytecode

0x6080604052600436106101e75760003560e01c8063893d20e811610102578063df20fd4911610095578063f2fde38b11610064578063f2fde38b14610739578063f429389014610762578063f887ea4014610779578063fe9fbb80146107a4576101ee565b8063df20fd4914610681578063ea23a2b8146106aa578063f0b37c04146106d3578063f0bc6cfb146106fc576101ee565b8063a9059cbb116100d1578063a9059cbb146105b5578063b6a5d7de146105f2578063dc93cf701461061b578063dd62ed3e14610644576101ee565b8063893d20e8146105095780638f9a55c01461053457806395d89b411461055f578063a8aa1b311461058a576101ee565b8063571ac8b01161017a5780636ddd1713116101495780636ddd17131461044d5780636fcba3771461047857806370a08231146104a157806371d0979b146104de576101ee565b8063571ac8b0146103935780635acbdedb146103d05780635d0044ca146103fb578063658d4b7f14610424576101ee565b806323b872dd116101b657806323b872dd146102b15780632cf003c2146102ee5780632f54bf6e1461032b578063313ce56714610368576101ee565b80630445b667146101f357806306fdde031461021e578063095ea7b31461024957806318160ddd14610286576101ee565b366101ee57005b600080fd5b3480156101ff57600080fd5b506102086107e1565b60405161021591906133f2565b60405180910390f35b34801561022a57600080fd5b506102336107e7565b60405161024091906132d0565b60405180910390f35b34801561025557600080fd5b50610270600480360381019061026b9190612df8565b610824565b60405161027d919061329a565b60405180910390f35b34801561029257600080fd5b5061029b610916565b6040516102a891906133f2565b60405180910390f35b3480156102bd57600080fd5b506102d860048036038101906102d39190612d65565b610920565b6040516102e5919061329a565b60405180910390f35b3480156102fa57600080fd5b5061031560048036038101906103109190612c9e565b610b20565b6040516103229190613203565b60405180910390f35b34801561033757600080fd5b50610352600480360381019061034d9190612c9e565b610b53565b60405161035f919061329a565b60405180910390f35b34801561037457600080fd5b5061037d610bac565b60405161038a9190613490565b60405180910390f35b34801561039f57600080fd5b506103ba60048036038101906103b59190612c9e565b610bb5565b6040516103c7919061329a565b60405180910390f35b3480156103dc57600080fd5b506103e5610be8565b6040516103f291906133f2565b60405180910390f35b34801561040757600080fd5b50610422600480360381019061041d9190612e78565b610bee565b005b34801561043057600080fd5b5061044b60048036038101906104469190612db8565b610c5c565b005b34801561045957600080fd5b50610462610cff565b60405161046f919061329a565b60405180910390f35b34801561048457600080fd5b5061049f600480360381019061049a9190612f25565b610d12565b005b3480156104ad57600080fd5b506104c860048036038101906104c39190612c9e565b610da7565b6040516104d591906133f2565b60405180910390f35b3480156104ea57600080fd5b506104f3610df0565b60405161050091906133f2565b60405180910390f35b34801561051557600080fd5b5061051e610df6565b60405161052b9190613203565b60405180910390f35b34801561054057600080fd5b50610549610e1f565b60405161055691906133f2565b60405180910390f35b34801561056b57600080fd5b50610574610e25565b60405161058191906132d0565b60405180910390f35b34801561059657600080fd5b5061059f610e62565b6040516105ac9190613203565b60405180910390f35b3480156105c157600080fd5b506105dc60048036038101906105d79190612df8565b610e88565b6040516105e9919061329a565b60405180910390f35b3480156105fe57600080fd5b5061061960048036038101906106149190612c9e565b610e9d565b005b34801561062757600080fd5b50610642600480360381019061063d9190612c9e565b610f3f565b005b34801561065057600080fd5b5061066b60048036038101906106669190612d25565b6110f0565b60405161067891906133f2565b60405180910390f35b34801561068d57600080fd5b506106a860048036038101906106a39190612e38565b611177565b005b3480156106b657600080fd5b506106d160048036038101906106cc9190612e78565b6111e4565b005b3480156106df57600080fd5b506106fa60048036038101906106f59190612c9e565b61125c565b005b34801561070857600080fd5b50610723600480360381019061071e9190612c9e565b6112ff565b604051610730919061329a565b60405180910390f35b34801561074557600080fd5b50610760600480360381019061075b9190612cf8565b61131f565b005b34801561076e57600080fd5b50610777611438565b005b34801561078557600080fd5b5061078e6114f1565b60405161079b91906132b5565b60405180910390f35b3480156107b057600080fd5b506107cb60048036038101906107c69190612c9e565b611517565b6040516107d8919061329a565b60405180910390f35b60145481565b60606040518060400160405280600581526020017f5669727573000000000000000000000000000000000000000000000000000000815250905090565b600081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161090491906133f2565b60405180910390a36001905092915050565b6000600254905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610b0c57610a8b826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461156d9092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610b178484846115d1565b90509392505050565b60086020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b6000610be1827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610824565b9050919050565b60105481565b610bf733610b53565b610c36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2d906133b2565b60405180910390fd5b6103e8600254610c469190613561565b811015610c5257600080fd5b8060038190555050565b610c6533611517565b610ca4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9b906133d2565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601360149054906101000a900460ff1681565b610d1b33611517565b610d5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d51906133d2565b60405180910390fd5b83600a8190555082600b8190555081600c81905550610d9482610d868587611c7290919063ffffffff16565b611c7290919063ffffffff16565b600d8190555080600e8190555050505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60045481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60035481565b60606040518060400160405280600581526020017f5649525553000000000000000000000000000000000000000000000000000000815250905090565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610e953384846115d1565b905092915050565b610ea633610b53565b610ee5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610edc906133b2565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610f4833611517565b610f87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7e906133d2565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610ff6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fed90613312565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016110319190613203565b60206040518083038186803b15801561104957600080fd5b505afa15801561105d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110819190612ea5565b9050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156110eb573d6000803e3d6000fd5b505050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61118033611517565b6111bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b6906133d2565b60405180910390fd5b81601360146101000a81548160ff021916908315150217905550806014819055505050565b6111ed33610b53565b61122c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611223906133b2565b60405180910390fd5b6009600a61123a91906135e5565b60016112469190613703565b81111561125257600080fd5b8060048190555050565b61126533610b53565b6112a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129b906133b2565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60096020528060005260406000206000915054906101000a900460ff1681565b61132833610b53565b611367576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135e906133b2565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861638160405161142d919061321e565b60405180910390a150565b61144133611517565b611480576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611477906133d2565b60405180910390fd5b6000479050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156114ed573d6000803e3d6000fd5b5050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008383111582906115b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ac91906132d0565b60405180910390fd5b50600083856115c4919061375d565b9050809150509392505050565b6000601560009054906101000a900460ff16156115fa576115f3848484611cd0565b9050611c6b565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461173357600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806116f3575060035482600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116f0919061350b565b11155b611732576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611729906132f2565b60405180910390fd5b5b6000829050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141561187d57600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661187857600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661186b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186290613372565b60405180910390fd5b6118758484611ea3565b90505b611a89565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156118f3576118dc856122fd565b156118ee576118eb8584612354565b90505b611a88565b60001515600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415611a87576004548310611a86576001600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555084600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508473ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f2c07cd45454a31c572d49686c5ec6fef884778b2cf441c7fd58f4bde0fa6400b60405160405180910390a35b5b5b5b611a91612498565b15611a9f57611a9e61256f565b5b611b28836040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461156d9092919063ffffffff16565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611bbd81600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c7290919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611c5d91906133f2565b60405180910390a360019150505b9392505050565b6000808284611c81919061350b565b905083811015611cc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cbd90613332565b60405180910390fd5b8091505092915050565b6000611d5b826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461156d9092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611df082600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c7290919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611e9091906133f2565b60405180910390a3600190509392505050565b600080600e5483600f54611eb79190613703565b611ec19190613561565b905060105460056000600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156121875761201c8160056000600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c7290919063ffffffff16565b60056000600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff16600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f9be71e54c914a5355f90883acdff2a1d75cebe9a1c6f15305d1fb0c28d7d76308360405161217a91906133f2565b60405180910390a36122e8565b6121fb8160056000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c7290919063ffffffff16565b60056000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff16601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f9be71e54c914a5355f90883acdff2a1d75cebe9a1c6f15305d1fb0c28d7d7630836040516122df91906133f2565b60405180910390a35b80836122f4919061375d565b91505092915050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b600080612380600e54612372600d54866129ab90919063ffffffff16565b612a2690919063ffffffff16565b90506123d481600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c7290919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161247491906133f2565b60405180910390a361248f8184612a7090919063ffffffff16565b91505092915050565b6000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156125055750601560009054906101000a900460ff16155b801561251d5750601360149054906101000a900460ff165b801561256a5750601454600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601560006101000a81548160ff021916908315150217905550600061259530610da7565b905060006125d560026125c7600d546125b9600a54876129ab90919063ffffffff16565b612a2690919063ffffffff16565b612a2690919063ffffffff16565b905060006125ec8284612a7090919063ffffffff16565b90506000600267ffffffffffffffff81111561260b5761260a613924565b5b6040519080825280602002602001820160405280156126395781602001602082028036833780820191505090505b5090503081600081518110612651576126506138f5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156126f357600080fd5b505afa158015612707573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061272b9190612ccb565b8160018151811061273f5761273e6138f5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b81526004016127e295949392919061340d565b600060405180830381600087803b1580156127fc57600080fd5b505af1158015612810573d6000803e3d6000fd5b5050505060006128298247612a7090919063ffffffff16565b905060006128576128466002600a54612a2690919063ffffffff16565b600d54612a7090919063ffffffff16565b90506000612895600261288784612879600a54886129ab90919063ffffffff16565b612a2690919063ffffffff16565b612a2690919063ffffffff16565b9050600081846128a5919061375d565b90506000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682617530906040516128f3906131ee565b600060405180830381858888f193505050503d8060008114612931576040519150601f19603f3d011682016040523d82523d6000602084013e612936565b606091505b505090508061297a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297190613352565b60405180910390fd5b6129848984612aba565b505050505050505050506000601560006101000a81548160ff021916908315150217905550565b6000808314156129be5760009050612a20565b600082846129cc9190613703565b90508284826129db9190613561565b14612a1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1290613392565b60405180910390fd5b809150505b92915050565b6000612a6883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612bbd565b905092915050565b6000612ab283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061156d565b905092915050565b6000821115612bb957601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008030426040518863ffffffff1660e01b8152600401612b2a96959493929190613239565b6060604051808303818588803b158015612b4357600080fd5b505af1158015612b57573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612b7c9190612ed2565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b45068183604051612bb0929190613467565b60405180910390a15b5050565b60008083118290612c04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bfb91906132d0565b60405180910390fd5b5060008385612c139190613561565b9050809150509392505050565b600081359050612c2f81613b33565b92915050565b600081519050612c4481613b33565b92915050565b600081359050612c5981613b4a565b92915050565b600081359050612c6e81613b61565b92915050565b600081359050612c8381613b78565b92915050565b600081519050612c9881613b78565b92915050565b600060208284031215612cb457612cb3613953565b5b6000612cc284828501612c20565b91505092915050565b600060208284031215612ce157612ce0613953565b5b6000612cef84828501612c35565b91505092915050565b600060208284031215612d0e57612d0d613953565b5b6000612d1c84828501612c4a565b91505092915050565b60008060408385031215612d3c57612d3b613953565b5b6000612d4a85828601612c20565b9250506020612d5b85828601612c20565b9150509250929050565b600080600060608486031215612d7e57612d7d613953565b5b6000612d8c86828701612c20565b9350506020612d9d86828701612c20565b9250506040612dae86828701612c74565b9150509250925092565b60008060408385031215612dcf57612dce613953565b5b6000612ddd85828601612c20565b9250506020612dee85828601612c5f565b9150509250929050565b60008060408385031215612e0f57612e0e613953565b5b6000612e1d85828601612c20565b9250506020612e2e85828601612c74565b9150509250929050565b60008060408385031215612e4f57612e4e613953565b5b6000612e5d85828601612c5f565b9250506020612e6e85828601612c74565b9150509250929050565b600060208284031215612e8e57612e8d613953565b5b6000612e9c84828501612c74565b91505092915050565b600060208284031215612ebb57612eba613953565b5b6000612ec984828501612c89565b91505092915050565b600080600060608486031215612eeb57612eea613953565b5b6000612ef986828701612c89565b9350506020612f0a86828701612c89565b9250506040612f1b86828701612c89565b9150509250925092565b60008060008060808587031215612f3f57612f3e613953565b5b6000612f4d87828801612c74565b9450506020612f5e87828801612c74565b9350506040612f6f87828801612c74565b9250506060612f8087828801612c74565b91505092959194509250565b6000612f988383612fb3565b60208301905092915050565b612fad816137f8565b82525050565b612fbc81613791565b82525050565b612fcb81613791565b82525050565b6000612fdc826134bb565b612fe681856134de565b9350612ff1836134ab565b8060005b838110156130225781516130098882612f8c565b9750613014836134d1565b925050600181019050612ff5565b5085935050505092915050565b613038816137b5565b82525050565b6130478161380a565b82525050565b6130568161382e565b82525050565b6000613067826134c6565b61307181856134fa565b9350613081818560208601613864565b61308a81613958565b840191505092915050565b60006130a26025836134fa565b91506130ad82613976565b604082019050919050565b60006130c56023836134fa565b91506130d0826139c5565b604082019050919050565b60006130e8601b836134fa565b91506130f382613a14565b602082019050919050565b600061310b601e836134fa565b915061311682613a3d565b602082019050919050565b600061312e600c836134fa565b915061313982613a66565b602082019050919050565b60006131516021836134fa565b915061315c82613a8f565b604082019050919050565b60006131746006836134fa565b915061317f82613ade565b602082019050919050565b60006131976000836134ef565b91506131a282613b07565b600082019050919050565b60006131ba600b836134fa565b91506131c582613b0a565b602082019050919050565b6131d9816137e1565b82525050565b6131e8816137eb565b82525050565b60006131f98261318a565b9150819050919050565b60006020820190506132186000830184612fc2565b92915050565b60006020820190506132336000830184612fa4565b92915050565b600060c08201905061324e6000830189612fc2565b61325b60208301886131d0565b613268604083018761304d565b613275606083018661304d565b6132826080830185612fc2565b61328f60a08301846131d0565b979650505050505050565b60006020820190506132af600083018461302f565b92915050565b60006020820190506132ca600083018461303e565b92915050565b600060208201905081810360008301526132ea818461305c565b905092915050565b6000602082019050818103600083015261330b81613095565b9050919050565b6000602082019050818103600083015261332b816130b8565b9050919050565b6000602082019050818103600083015261334b816130db565b9050919050565b6000602082019050818103600083015261336b816130fe565b9050919050565b6000602082019050818103600083015261338b81613121565b9050919050565b600060208201905081810360008301526133ab81613144565b9050919050565b600060208201905081810360008301526133cb81613167565b9050919050565b600060208201905081810360008301526133eb816131ad565b9050919050565b600060208201905061340760008301846131d0565b92915050565b600060a08201905061342260008301886131d0565b61342f602083018761304d565b81810360408301526134418186612fd1565b90506134506060830185612fc2565b61345d60808301846131d0565b9695505050505050565b600060408201905061347c60008301856131d0565b61348960208301846131d0565b9392505050565b60006020820190506134a560008301846131df565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000613516826137e1565b9150613521836137e1565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561355657613555613897565b5b828201905092915050565b600061356c826137e1565b9150613577836137e1565b925082613587576135866138c6565b5b828204905092915050565b6000808291508390505b60018511156135dc578086048111156135b8576135b7613897565b5b60018516156135c75780820291505b80810290506135d585613969565b945061359c565b94509492505050565b60006135f0826137e1565b91506135fb836137eb565b92506136287fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613630565b905092915050565b60008261364057600190506136fc565b8161364e57600090506136fc565b8160018114613664576002811461366e5761369d565b60019150506136fc565b60ff8411156136805761367f613897565b5b8360020a91508482111561369757613696613897565b5b506136fc565b5060208310610133831016604e8410600b84101617156136d25782820a9050838111156136cd576136cc613897565b5b6136fc565b6136df8484846001613592565b925090508184048111156136f6576136f5613897565b5b81810290505b9392505050565b600061370e826137e1565b9150613719836137e1565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561375257613751613897565b5b828202905092915050565b6000613768826137e1565b9150613773836137e1565b92508282101561378657613785613897565b5b828203905092915050565b600061379c826137c1565b9050919050565b60006137ae826137c1565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061380382613840565b9050919050565b60006138158261381c565b9050919050565b6000613827826137c1565b9050919050565b6000613839826137e1565b9050919050565b600061384b82613852565b9050919050565b600061385d826137c1565b9050919050565b60005b83811015613882578082015181840152602081019050613867565b83811115613891576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206261672060008201527f73697a652e000000000000000000000000000000000000000000000000000000602082015250565b7f43616e2774206c657420796f752074616b6520616c6c206e617469766520746f60008201527f6b656e0000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f72656365697665722072656a656374656420455448207472616e736665720000600082015250565b7f4e6f742072656665727265640000000000000000000000000000000000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b50565b7f21415554484f52495a4544000000000000000000000000000000000000000000600082015250565b613b3c81613791565b8114613b4757600080fd5b50565b613b53816137a3565b8114613b5e57600080fd5b50565b613b6a816137b5565b8114613b7557600080fd5b50565b613b81816137e1565b8114613b8c57600080fd5b5056fea2646970667358221220be30decf64bd3b535265101793908f2e5ce5f96eed2dc56c99416cf29b9d095e64736f6c63430008050033

Deployed Bytecode Sourcemap

5285:10433:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6457:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7727:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8159:224;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7451:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8705:382;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5861:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3216:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7547:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8395:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6173:69;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14093:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14455:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6418:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14591:360;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7901:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5614:62;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7815:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5548:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7635:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6386:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8533:160;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2993:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15335:306;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8014:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14963:162;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14265:178;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3103:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5915:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3458:181;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15137:186;;;;;;;;;;;;;:::i;:::-;;6353:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3335:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6457:54;;;;:::o;7727:80::-;7775:13;7799:5;;;;;;;;;;;;;;;;;7792:12;;7727:80;:::o;8159:224::-;8234:4;8288:6;8253:11;:23;8265:10;8253:23;;;;;;;;;;;;;;;:32;8277:7;8253:32;;;;;;;;;;;;;;;:41;;;;8333:7;8312:37;;8321:10;8312:37;;;8342:6;8312:37;;;;;;:::i;:::-;;;;;;;;8369:4;8362:11;;8159:224;;;;:::o;7451:88::-;7506:7;7524:12;;7517:19;;7451:88;:::o;8705:382::-;8805:4;8862:17;8827:11;:19;8839:6;8827:19;;;;;;;;;;;;;;;:31;8847:10;8827:31;;;;;;;;;;;;;;;;:52;8824:190;;8931:69;8967:6;8931:69;;;;;;;;;;;;;;;;;:11;:19;8943:6;8931:19;;;;;;;;;;;;;;;:31;8951:10;8931:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;8897:11;:19;8909:6;8897:19;;;;;;;;;;;;;;;:31;8917:10;8897:31;;;;;;;;;;;;;;;:103;;;;8824:190;9037:40;9051:6;9059:9;9070:6;9037:13;:40::i;:::-;9030:47;;8705:382;;;;;:::o;5861:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;3216:107::-;3271:4;3308:5;;;;;;;;;;;3297:16;;:7;:16;;;3290:23;;3216:107;;;:::o;7547:80::-;7599:5;5473:1;7608:16;;7547:80;:::o;8395:126::-;8450:4;8476:35;8484:7;8493:17;8476:7;:35::i;:::-;8469:42;;8395:126;;;:::o;6173:69::-;;;;:::o;14093:157::-;2830:19;2838:10;2830:7;:19::i;:::-;2822:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14198:4:::1;14183:12;;:19;;;;:::i;:::-;14173:6;:29;;14165:39;;;::::0;::::1;;14234:6;14217:14;:23;;;;14093:157:::0;:::o;14455:124::-;2928:24;2941:10;2928:12;:24::i;:::-;2920:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;14563:6:::1;14541:11;:19;14553:6;14541:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;14455:124:::0;;:::o;6418:30::-;;;;;;;;;;;;;:::o;14591:360::-;2928:24;2941:10;2928:12;:24::i;:::-;2920:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;14744:13:::1;14729:12;:28;;;;14779:7;14770:6;:16;;;;14814:13;14799:12;:28;;;;14851:45;14882:13;14851:26;14869:7;14851:13;:17;;:26;;;;:::i;:::-;:30;;:45;;;;:::i;:::-;14840:8;:56;;;;14926:15;14909:14;:32;;;;14591:360:::0;;;;:::o;7901:105::-;7967:7;7985:9;:18;7995:7;7985:18;;;;;;;;;;;;;;;;7978:25;;7901:105;;;:::o;5614:62::-;;;;:::o;7815:78::-;7867:7;7885:5;;;;;;;;;;;7878:12;;7815:78;:::o;5548:56::-;;;;:::o;7635:84::-;7685:13;7709:7;;;;;;;;;;;;;;;;;7702:14;;7635:84;:::o;6386:19::-;;;;;;;;;;;;;:::o;8533:160::-;8613:4;8639:44;8653:10;8665:9;8676:6;8639:13;:44::i;:::-;8632:51;;8533:160;;;;:::o;2993:98::-;2830:19;2838:10;2830:7;:19::i;:::-;2822:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3077:4:::1;3055:14:::0;:19:::1;3070:3;3055:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;2993:98:::0;:::o;15335:306::-;2928:24;2941:10;2928:12;:24::i;:::-;2920:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;15438:4:::1;15420:23;;:6;:23;;;;15412:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;15496:24;15530:6;15523:24;;;15556:4;15523:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15496:66;;15583:20;;;;;;;;;;;15575:38;;:56;15614:16;15575:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;15399:242;15335:306:::0;:::o;8014:133::-;8098:7;8116:11;:19;8128:6;8116:19;;;;;;;;;;;;;;;:28;8136:7;8116:28;;;;;;;;;;;;;;;;8109:35;;8014:133;;;;:::o;14963:162::-;2928:24;2941:10;2928:12;:24::i;:::-;2920:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;15071:8:::1;15057:11;;:22;;;;;;;;;;;;;;;;;;15108:7;15092:13;:23;;;;14963:162:::0;;:::o;14265:178::-;2830:19;2838:10;2830:7;:19::i;:::-;2822:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;5473:1:::1;14371:2;:13;;;;:::i;:::-;14368:1;:17;;;;:::i;:::-;14358:6;:27;;14350:37;;;::::0;::::1;;14426:6;14400:23;:32;;;;14265:178:::0;:::o;3103:101::-;2830:19;2838:10;2830:7;:19::i;:::-;2822:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3189:5:::1;3167:14;:19;3182:3;3167:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;3103:101:::0;:::o;5915:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;3458:181::-;2830:19;2838:10;2830:7;:19::i;:::-;2822:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3544:3:::1;3536:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;3582:4;3560:14:::0;:19:::1;3575:3;3560:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;3604:25;3625:3;3604:25;;;;;;:::i;:::-;;;;;;;;3458:181:::0;:::o;15137:186::-;2928:24;2941:10;2928:12;:24::i;:::-;2920:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;15192:26:::1;15221:21;15192:50;;15263:20;;;;;;;;;;;15255:38;;:58;15294:18;15255:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;15179:144;15137:186::o:0;6353:24::-;;;;;;;;;;;;;:::o;3335:111::-;3391:4;3417:14;:19;3432:3;3417:19;;;;;;;;;;;;;;;;;;;;;;;;;3410:26;;3335:111;;;:::o;598:202::-;684:7;719:1;714;:6;;722:12;706:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;748:9;764:1;760;:5;;;;:::i;:::-;748:17;;789:1;782:8;;;598:202;;;;;:::o;9099:1462::-;9191:4;9213:6;;;;;;;;;;;9210:63;;;9229:41;9244:6;9252:9;9263:6;9229:14;:41::i;:::-;9222:48;;;;9210:63;9310:4;;;;;;;;;;;9297:17;;:9;:17;;;9293:177;;9341:11;:22;9353:9;9341:22;;;;;;;;;;;;;;;;;;;;;;;;;:73;;;;9400:14;;9390:6;9367:9;:20;9377:9;9367:20;;;;;;;;;;;;;;;;:29;;;;:::i;:::-;:47;;9341:73;9333:123;;;;;;;;;;;;:::i;:::-;;;;;;;;;9293:177;9486:22;9511:6;9486:31;;9556:4;;;;;;;;;;;9546:14;;:6;:14;;;9543:694;;;9589:11;:22;9601:9;9589:22;;;;;;;;;;;;;;;;;;;;;;;;;9585:184;;9642:10;:21;9653:9;9642:21;;;;;;;;;;;;;;;;;;;;;;;;;9634:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;9717:34;9734:9;9744:6;9717:16;:34::i;:::-;9700:51;;9585:184;9543:694;;;9808:4;;;;;;;;;;;9795:17;;:9;:17;;;9792:445;;;9841:21;9855:6;9841:13;:21::i;:::-;9838:105;;;9902:23;9910:6;9918;9902:7;:23::i;:::-;9885:40;;9838:105;9792:445;;;9994:5;9971:28;;:10;:21;9982:9;9971:21;;;;;;;;;;;;;;;;;;;;;;;;;:28;;;9968:269;;;10031:23;;10021:6;:33;10018:206;;10101:4;10077:10;:21;10088:9;10077:21;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;10148:6;10126:8;:19;10135:9;10126:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;10199:6;10180:26;;10189:9;10180:26;;;;;;;;;;;;10018:206;9968:269;9792:445;9543:694;10265:16;:14;:16::i;:::-;10262:35;;;10284:10;:8;:10::i;:::-;10262:35;10333:53;10355:6;10333:53;;;;;;;;;;;;;;;;;:9;:17;10343:6;10333:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;10313:9;:17;10323:6;10313:17;;;;;;;;;;;;;;;:73;;;;10422:40;10447:14;10422:9;:20;10432:9;10422:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;10399:9;:20;10409:9;10399:20;;;;;;;;;;;;;;;:63;;;;10501:9;10484:43;;10493:6;10484:43;;;10512:14;10484:43;;;;;;:::i;:::-;;;;;;;;10547:4;10540:11;;;9099:1462;;;;;;:::o;251:191::-;309:7;331:9;347:1;343;:5;;;;:::i;:::-;331:17;;374:1;369;:6;;361:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;431:1;424:8;;;251:191;;;;:::o;10577:340::-;10670:4;10709:53;10731:6;10709:53;;;;;;;;;;;;;;;;;:9;:17;10719:6;10709:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;10689:9;:17;10699:6;10689:17;;;;;;;;;;;;;;;:73;;;;10798:32;10823:6;10798:9;:20;10808:9;10798:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;10775:9;:20;10785:9;10775:20;;;;;;;;;;;;;;;:55;;;;10865:9;10848:35;;10857:6;10848:35;;;10876:6;10848:35;;;;;;:::i;:::-;;;;;;;;10903:4;10896:11;;10577:340;;;;;:::o;10929:656::-;11001:4;11020:22;11068:14;;11059:6;11045:11;;:20;;;;:::i;:::-;:37;;;;:::i;:::-;11020:62;;11126:26;;11098:9;:25;11108:8;:14;11117:4;11108:14;;;;;;;;;;;;;;;;;;;;;;;;;11098:25;;;;;;;;;;;;;;;;:54;11095:434;;;11199:45;11229:14;11199:9;:25;11209:8;:14;11218:4;11209:14;;;;;;;;;;;;;;;;;;;;;;;;;11199:25;;;;;;;;;;;;;;;;:29;;:45;;;;:::i;:::-;11171:9;:25;11181:8;:14;11190:4;11181:14;;;;;;;;;;;;;;;;;;;;;;;;;11171:25;;;;;;;;;;;;;;;:73;;;;11295:4;11266:49;;11280:8;:14;11289:4;11280:14;;;;;;;;;;;;;;;;;;;;;;;;;11266:49;;;11300:14;11266:49;;;;;;:::i;:::-;;;;;;;;11095:434;;;11387:51;11423:14;11387:9;:31;11397:20;;;;;;;;;;;11387:31;;;;;;;;;;;;;;;;:35;;:51;;;;:::i;:::-;11353:9;:31;11363:20;;;;;;;;;;;11353:31;;;;;;;;;;;;;;;:85;;;;11495:4;11460:55;;11474:20;;;;;;;;;;;11460:55;;;11500:14;11460:55;;;;;;:::i;:::-;;;;;;;;11095:434;11561:14;11552:6;:23;;;;:::i;:::-;11545:30;;;10929:656;;;;:::o;11601:118::-;11663:4;11690:11;:19;11702:6;11690:19;;;;;;;;;;;;;;;;;;;;;;;;;11689:20;11682:27;;11601:118;;;:::o;11731:347::-;11798:7;11820:17;11840:40;11865:14;;11840:20;11851:8;;11840:6;:10;;:20;;;;:::i;:::-;:24;;:40;;;;:::i;:::-;11820:60;;11924:39;11953:9;11924;:24;11942:4;11924:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;11897:9;:24;11915:4;11897:24;;;;;;;;;;;;;;;:66;;;;12006:4;11981:42;;11990:6;11981:42;;;12013:9;11981:42;;;;;;:::i;:::-;;;;;;;;12047:21;12058:9;12047:6;:10;;:21;;;;:::i;:::-;12040:28;;;11731:347;;;;:::o;12090:207::-;12139:4;12179;;;;;;;;;;;12165:18;;:10;:18;;;;:40;;;;;12199:6;;;;;;;;;;;12198:7;12165:40;:66;;;;;12220:11;;;;;;;;;;;12165:66;:122;;;;;12274:13;;12246:9;:24;12264:4;12246:24;;;;;;;;;;;;;;;;:41;;12165:122;12158:129;;12090:207;:::o;12309:1284::-;6583:4;6574:6;;:13;;;;;;;;;;;;;;;;;;12360:28:::1;12391:24;12409:4;12391:9;:24::i;:::-;12360:55;;12428:23;12454:59;12511:1;12454:52;12497:8;;12454:38;12479:12;;12454:20;:24;;:38;;;;:::i;:::-;:42;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;12428:85;;12526:20;12549:41;12574:15;12549:20;:24;;:41;;;;:::i;:::-;12526:64;;12607:21;12645:1;12631:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12607:40;;12678:4;12660;12665:1;12660:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12706:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12696:4;12701:1;12696:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12736:21;12760;12736:45;;12798:6;;;;;;;;;;;:57;;;12872:12;12901:1;12919:4;12948;12970:15;12798:200;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13011:17;13031:40;13057:13;13031:21;:25;;:40;;;;:::i;:::-;13011:60;;13084:19;13106:33;13119:19;13136:1;13119:12;;:16;;:19;;;;:::i;:::-;13106:8;;:12;;:33;;;;:::i;:::-;13084:55;;13152:26;13181:51;13230:1;13181:44;13213:11;13181:27;13195:12;;13181:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;:48;;:51;;;;:::i;:::-;13152:80;;13245:26;13286:18;13274:9;:30;;;;:::i;:::-;13245:59;;13322:21;13380:20;;;;;;;;;;;13372:34;;13414:18;13439:5;13372:77;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13321:128;;;13470:16;13462:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;13534:49;13547:15;13564:18;13534:12;:49::i;:::-;12347:1246;;;;;;;;;;6601:5:::0;6592:6;;:14;;;;;;;;;;;;;;;;;;12309:1284::o;808:268::-;866:7;897:1;892;:6;888:51;;;924:1;917:8;;;;888:51;955:9;971:1;967;:5;;;;:::i;:::-;955:17;;1002:1;997;993;:5;;;;:::i;:::-;:10;985:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1065:1;1058:8;;;808:268;;;;;:::o;1084:136::-;1142:7;1171:39;1175:1;1178;1171:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1164:46;;1084:136;;;;:::o;450:140::-;508:7;537:43;541:1;544;537:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;530:50;;450:140;;;;:::o;13605:476::-;13705:1;13691:11;:15;13688:384;;;13728:6;;;;;;;;;;;:22;;;13758:9;13801:4;13831:11;13867:1;13893;13927:4;13957:15;13728:265;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;14019:35;14031:9;14042:11;14019:35;;;;;;;:::i;:::-;;;;;;;;13688:384;13605:476;;:::o;1228:359::-;1314:7;1417:1;1413;:5;1420:12;1405:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1446:9;1462:1;1458;:5;;;;:::i;:::-;1446:17;;1576:1;1569:8;;;1228:359;;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;301:155::-;355:5;393:6;380:20;371:29;;409:41;444:5;409:41;:::i;:::-;361:95;;;;:::o;462:133::-;505:5;543:6;530:20;521:29;;559:30;583:5;559:30;:::i;:::-;511:84;;;;:::o;601:139::-;647:5;685:6;672:20;663:29;;701:33;728:5;701:33;:::i;:::-;653:87;;;;:::o;746:143::-;803:5;834:6;828:13;819:22;;850:33;877:5;850:33;:::i;:::-;809:80;;;;:::o;895:329::-;954:6;1003:2;991:9;982:7;978:23;974:32;971:2;;;1009:79;;:::i;:::-;971:2;1129:1;1154:53;1199:7;1190:6;1179:9;1175:22;1154:53;:::i;:::-;1144:63;;1100:117;961:263;;;;:::o;1230:351::-;1300:6;1349:2;1337:9;1328:7;1324:23;1320:32;1317:2;;;1355:79;;:::i;:::-;1317:2;1475:1;1500:64;1556:7;1547:6;1536:9;1532:22;1500:64;:::i;:::-;1490:74;;1446:128;1307:274;;;;:::o;1587:345::-;1654:6;1703:2;1691:9;1682:7;1678:23;1674:32;1671:2;;;1709:79;;:::i;:::-;1671:2;1829:1;1854:61;1907:7;1898:6;1887:9;1883:22;1854:61;:::i;:::-;1844:71;;1800:125;1661:271;;;;:::o;1938:474::-;2006:6;2014;2063:2;2051:9;2042:7;2038:23;2034:32;2031:2;;;2069:79;;:::i;:::-;2031:2;2189:1;2214:53;2259:7;2250:6;2239:9;2235:22;2214:53;:::i;:::-;2204:63;;2160:117;2316:2;2342:53;2387:7;2378:6;2367:9;2363:22;2342:53;:::i;:::-;2332:63;;2287:118;2021:391;;;;;:::o;2418:619::-;2495:6;2503;2511;2560:2;2548:9;2539:7;2535:23;2531:32;2528:2;;;2566:79;;:::i;:::-;2528:2;2686:1;2711:53;2756:7;2747:6;2736:9;2732:22;2711:53;:::i;:::-;2701:63;;2657:117;2813:2;2839:53;2884:7;2875:6;2864:9;2860:22;2839:53;:::i;:::-;2829:63;;2784:118;2941:2;2967:53;3012:7;3003:6;2992:9;2988:22;2967:53;:::i;:::-;2957:63;;2912:118;2518:519;;;;;:::o;3043:468::-;3108:6;3116;3165:2;3153:9;3144:7;3140:23;3136:32;3133:2;;;3171:79;;:::i;:::-;3133:2;3291:1;3316:53;3361:7;3352:6;3341:9;3337:22;3316:53;:::i;:::-;3306:63;;3262:117;3418:2;3444:50;3486:7;3477:6;3466:9;3462:22;3444:50;:::i;:::-;3434:60;;3389:115;3123:388;;;;;:::o;3517:474::-;3585:6;3593;3642:2;3630:9;3621:7;3617:23;3613:32;3610:2;;;3648:79;;:::i;:::-;3610:2;3768:1;3793:53;3838:7;3829:6;3818:9;3814:22;3793:53;:::i;:::-;3783:63;;3739:117;3895:2;3921:53;3966:7;3957:6;3946:9;3942:22;3921:53;:::i;:::-;3911:63;;3866:118;3600:391;;;;;:::o;3997:468::-;4062:6;4070;4119:2;4107:9;4098:7;4094:23;4090:32;4087:2;;;4125:79;;:::i;:::-;4087:2;4245:1;4270:50;4312:7;4303:6;4292:9;4288:22;4270:50;:::i;:::-;4260:60;;4216:114;4369:2;4395:53;4440:7;4431:6;4420:9;4416:22;4395:53;:::i;:::-;4385:63;;4340:118;4077:388;;;;;:::o;4471:329::-;4530:6;4579:2;4567:9;4558:7;4554:23;4550:32;4547:2;;;4585:79;;:::i;:::-;4547:2;4705:1;4730:53;4775:7;4766:6;4755:9;4751:22;4730:53;:::i;:::-;4720:63;;4676:117;4537:263;;;;:::o;4806:351::-;4876:6;4925:2;4913:9;4904:7;4900:23;4896:32;4893:2;;;4931:79;;:::i;:::-;4893:2;5051:1;5076:64;5132:7;5123:6;5112:9;5108:22;5076:64;:::i;:::-;5066:74;;5022:128;4883:274;;;;:::o;5163:663::-;5251:6;5259;5267;5316:2;5304:9;5295:7;5291:23;5287:32;5284:2;;;5322:79;;:::i;:::-;5284:2;5442:1;5467:64;5523:7;5514:6;5503:9;5499:22;5467:64;:::i;:::-;5457:74;;5413:128;5580:2;5606:64;5662:7;5653:6;5642:9;5638:22;5606:64;:::i;:::-;5596:74;;5551:129;5719:2;5745:64;5801:7;5792:6;5781:9;5777:22;5745:64;:::i;:::-;5735:74;;5690:129;5274:552;;;;;:::o;5832:765::-;5918:6;5926;5934;5942;5991:3;5979:9;5970:7;5966:23;5962:33;5959:2;;;5998:79;;:::i;:::-;5959:2;6118:1;6143:53;6188:7;6179:6;6168:9;6164:22;6143:53;:::i;:::-;6133:63;;6089:117;6245:2;6271:53;6316:7;6307:6;6296:9;6292:22;6271:53;:::i;:::-;6261:63;;6216:118;6373:2;6399:53;6444:7;6435:6;6424:9;6420:22;6399:53;:::i;:::-;6389:63;;6344:118;6501:2;6527:53;6572:7;6563:6;6552:9;6548:22;6527:53;:::i;:::-;6517:63;;6472:118;5949:648;;;;;;;:::o;6603:179::-;6672:10;6693:46;6735:3;6727:6;6693:46;:::i;:::-;6771:4;6766:3;6762:14;6748:28;;6683:99;;;;:::o;6788:147::-;6883:45;6922:5;6883:45;:::i;:::-;6878:3;6871:58;6861:74;;:::o;6941:108::-;7018:24;7036:5;7018:24;:::i;:::-;7013:3;7006:37;6996:53;;:::o;7055:118::-;7142:24;7160:5;7142:24;:::i;:::-;7137:3;7130:37;7120:53;;:::o;7209:732::-;7328:3;7357:54;7405:5;7357:54;:::i;:::-;7427:86;7506:6;7501:3;7427:86;:::i;:::-;7420:93;;7537:56;7587:5;7537:56;:::i;:::-;7616:7;7647:1;7632:284;7657:6;7654:1;7651:13;7632:284;;;7733:6;7727:13;7760:63;7819:3;7804:13;7760:63;:::i;:::-;7753:70;;7846:60;7899:6;7846:60;:::i;:::-;7836:70;;7692:224;7679:1;7676;7672:9;7667:14;;7632:284;;;7636:14;7932:3;7925:10;;7333:608;;;;;;;:::o;7947:109::-;8028:21;8043:5;8028:21;:::i;:::-;8023:3;8016:34;8006:50;;:::o;8062:167::-;8167:55;8216:5;8167:55;:::i;:::-;8162:3;8155:68;8145:84;;:::o;8235:147::-;8330:45;8369:5;8330:45;:::i;:::-;8325:3;8318:58;8308:74;;:::o;8388:364::-;8476:3;8504:39;8537:5;8504:39;:::i;:::-;8559:71;8623:6;8618:3;8559:71;:::i;:::-;8552:78;;8639:52;8684:6;8679:3;8672:4;8665:5;8661:16;8639:52;:::i;:::-;8716:29;8738:6;8716:29;:::i;:::-;8711:3;8707:39;8700:46;;8480:272;;;;;:::o;8758:366::-;8900:3;8921:67;8985:2;8980:3;8921:67;:::i;:::-;8914:74;;8997:93;9086:3;8997:93;:::i;:::-;9115:2;9110:3;9106:12;9099:19;;8904:220;;;:::o;9130:366::-;9272:3;9293:67;9357:2;9352:3;9293:67;:::i;:::-;9286:74;;9369:93;9458:3;9369:93;:::i;:::-;9487:2;9482:3;9478:12;9471:19;;9276:220;;;:::o;9502:366::-;9644:3;9665:67;9729:2;9724:3;9665:67;:::i;:::-;9658:74;;9741:93;9830:3;9741:93;:::i;:::-;9859:2;9854:3;9850:12;9843:19;;9648:220;;;:::o;9874:366::-;10016:3;10037:67;10101:2;10096:3;10037:67;:::i;:::-;10030:74;;10113:93;10202:3;10113:93;:::i;:::-;10231:2;10226:3;10222:12;10215:19;;10020:220;;;:::o;10246:366::-;10388:3;10409:67;10473:2;10468:3;10409:67;:::i;:::-;10402:74;;10485:93;10574:3;10485:93;:::i;:::-;10603:2;10598:3;10594:12;10587:19;;10392:220;;;:::o;10618:366::-;10760:3;10781:67;10845:2;10840:3;10781:67;:::i;:::-;10774:74;;10857:93;10946:3;10857:93;:::i;:::-;10975:2;10970:3;10966:12;10959:19;;10764:220;;;:::o;10990:365::-;11132:3;11153:66;11217:1;11212:3;11153:66;:::i;:::-;11146:73;;11228:93;11317:3;11228:93;:::i;:::-;11346:2;11341:3;11337:12;11330:19;;11136:219;;;:::o;11361:398::-;11520:3;11541:83;11622:1;11617:3;11541:83;:::i;:::-;11534:90;;11633:93;11722:3;11633:93;:::i;:::-;11751:1;11746:3;11742:11;11735:18;;11524:235;;;:::o;11765:366::-;11907:3;11928:67;11992:2;11987:3;11928:67;:::i;:::-;11921:74;;12004:93;12093:3;12004:93;:::i;:::-;12122:2;12117:3;12113:12;12106:19;;11911:220;;;:::o;12137:118::-;12224:24;12242:5;12224:24;:::i;:::-;12219:3;12212:37;12202:53;;:::o;12261:112::-;12344:22;12360:5;12344:22;:::i;:::-;12339:3;12332:35;12322:51;;:::o;12379:379::-;12563:3;12585:147;12728:3;12585:147;:::i;:::-;12578:154;;12749:3;12742:10;;12567:191;;;:::o;12764:222::-;12857:4;12895:2;12884:9;12880:18;12872:26;;12908:71;12976:1;12965:9;12961:17;12952:6;12908:71;:::i;:::-;12862:124;;;;:::o;12992:238::-;13093:4;13131:2;13120:9;13116:18;13108:26;;13144:79;13220:1;13209:9;13205:17;13196:6;13144:79;:::i;:::-;13098:132;;;;:::o;13236:807::-;13485:4;13523:3;13512:9;13508:19;13500:27;;13537:71;13605:1;13594:9;13590:17;13581:6;13537:71;:::i;:::-;13618:72;13686:2;13675:9;13671:18;13662:6;13618:72;:::i;:::-;13700:80;13776:2;13765:9;13761:18;13752:6;13700:80;:::i;:::-;13790;13866:2;13855:9;13851:18;13842:6;13790:80;:::i;:::-;13880:73;13948:3;13937:9;13933:19;13924:6;13880:73;:::i;:::-;13963;14031:3;14020:9;14016:19;14007:6;13963:73;:::i;:::-;13490:553;;;;;;;;;:::o;14049:210::-;14136:4;14174:2;14163:9;14159:18;14151:26;;14187:65;14249:1;14238:9;14234:17;14225:6;14187:65;:::i;:::-;14141:118;;;;:::o;14265:258::-;14376:4;14414:2;14403:9;14399:18;14391:26;;14427:89;14513:1;14502:9;14498:17;14489:6;14427:89;:::i;:::-;14381:142;;;;:::o;14529:313::-;14642:4;14680:2;14669:9;14665:18;14657:26;;14729:9;14723:4;14719:20;14715:1;14704:9;14700:17;14693:47;14757:78;14830:4;14821:6;14757:78;:::i;:::-;14749:86;;14647:195;;;;:::o;14848:419::-;15014:4;15052:2;15041:9;15037:18;15029:26;;15101:9;15095:4;15091:20;15087:1;15076:9;15072:17;15065:47;15129:131;15255:4;15129:131;:::i;:::-;15121:139;;15019:248;;;:::o;15273:419::-;15439:4;15477:2;15466:9;15462:18;15454:26;;15526:9;15520:4;15516:20;15512:1;15501:9;15497:17;15490:47;15554:131;15680:4;15554:131;:::i;:::-;15546:139;;15444:248;;;:::o;15698:419::-;15864:4;15902:2;15891:9;15887:18;15879:26;;15951:9;15945:4;15941:20;15937:1;15926:9;15922:17;15915:47;15979:131;16105:4;15979:131;:::i;:::-;15971:139;;15869:248;;;:::o;16123:419::-;16289:4;16327:2;16316:9;16312:18;16304:26;;16376:9;16370:4;16366:20;16362:1;16351:9;16347:17;16340:47;16404:131;16530:4;16404:131;:::i;:::-;16396:139;;16294:248;;;:::o;16548:419::-;16714:4;16752:2;16741:9;16737:18;16729:26;;16801:9;16795:4;16791:20;16787:1;16776:9;16772:17;16765:47;16829:131;16955:4;16829:131;:::i;:::-;16821:139;;16719:248;;;:::o;16973:419::-;17139:4;17177:2;17166:9;17162:18;17154:26;;17226:9;17220:4;17216:20;17212:1;17201:9;17197:17;17190:47;17254:131;17380:4;17254:131;:::i;:::-;17246:139;;17144:248;;;:::o;17398:419::-;17564:4;17602:2;17591:9;17587:18;17579:26;;17651:9;17645:4;17641:20;17637:1;17626:9;17622:17;17615:47;17679:131;17805:4;17679:131;:::i;:::-;17671:139;;17569:248;;;:::o;17823:419::-;17989:4;18027:2;18016:9;18012:18;18004:26;;18076:9;18070:4;18066:20;18062:1;18051:9;18047:17;18040:47;18104:131;18230:4;18104:131;:::i;:::-;18096:139;;17994:248;;;:::o;18248:222::-;18341:4;18379:2;18368:9;18364:18;18356:26;;18392:71;18460:1;18449:9;18445:17;18436:6;18392:71;:::i;:::-;18346:124;;;;:::o;18476:831::-;18739:4;18777:3;18766:9;18762:19;18754:27;;18791:71;18859:1;18848:9;18844:17;18835:6;18791:71;:::i;:::-;18872:80;18948:2;18937:9;18933:18;18924:6;18872:80;:::i;:::-;18999:9;18993:4;18989:20;18984:2;18973:9;18969:18;18962:48;19027:108;19130:4;19121:6;19027:108;:::i;:::-;19019:116;;19145:72;19213:2;19202:9;19198:18;19189:6;19145:72;:::i;:::-;19227:73;19295:3;19284:9;19280:19;19271:6;19227:73;:::i;:::-;18744:563;;;;;;;;:::o;19313:332::-;19434:4;19472:2;19461:9;19457:18;19449:26;;19485:71;19553:1;19542:9;19538:17;19529:6;19485:71;:::i;:::-;19566:72;19634:2;19623:9;19619:18;19610:6;19566:72;:::i;:::-;19439:206;;;;;:::o;19651:214::-;19740:4;19778:2;19767:9;19763:18;19755:26;;19791:67;19855:1;19844:9;19840:17;19831:6;19791:67;:::i;:::-;19745:120;;;;:::o;19952:132::-;20019:4;20042:3;20034:11;;20072:4;20067:3;20063:14;20055:22;;20024:60;;;:::o;20090:114::-;20157:6;20191:5;20185:12;20175:22;;20164:40;;;:::o;20210:99::-;20262:6;20296:5;20290:12;20280:22;;20269:40;;;:::o;20315:113::-;20385:4;20417;20412:3;20408:14;20400:22;;20390:38;;;:::o;20434:184::-;20533:11;20567:6;20562:3;20555:19;20607:4;20602:3;20598:14;20583:29;;20545:73;;;;:::o;20624:147::-;20725:11;20762:3;20747:18;;20737:34;;;;:::o;20777:169::-;20861:11;20895:6;20890:3;20883:19;20935:4;20930:3;20926:14;20911:29;;20873:73;;;;:::o;20952:305::-;20992:3;21011:20;21029:1;21011:20;:::i;:::-;21006:25;;21045:20;21063:1;21045:20;:::i;:::-;21040:25;;21199:1;21131:66;21127:74;21124:1;21121:81;21118:2;;;21205:18;;:::i;:::-;21118:2;21249:1;21246;21242:9;21235:16;;20996:261;;;;:::o;21263:185::-;21303:1;21320:20;21338:1;21320:20;:::i;:::-;21315:25;;21354:20;21372:1;21354:20;:::i;:::-;21349:25;;21393:1;21383:2;;21398:18;;:::i;:::-;21383:2;21440:1;21437;21433:9;21428:14;;21305:143;;;;:::o;21454:848::-;21515:5;21522:4;21546:6;21537:15;;21570:5;21561:14;;21584:712;21605:1;21595:8;21592:15;21584:712;;;21700:4;21695:3;21691:14;21685:4;21682:24;21679:2;;;21709:18;;:::i;:::-;21679:2;21759:1;21749:8;21745:16;21742:2;;;22174:4;22167:5;22163:16;22154:25;;21742:2;22224:4;22218;22214:15;22206:23;;22254:32;22277:8;22254:32;:::i;:::-;22242:44;;21584:712;;;21527:775;;;;;;;:::o;22308:281::-;22366:5;22390:23;22408:4;22390:23;:::i;:::-;22382:31;;22434:25;22450:8;22434:25;:::i;:::-;22422:37;;22478:104;22515:66;22505:8;22499:4;22478:104;:::i;:::-;22469:113;;22372:217;;;;:::o;22595:1073::-;22649:5;22840:8;22830:2;;22861:1;22852:10;;22863:5;;22830:2;22889:4;22879:2;;22906:1;22897:10;;22908:5;;22879:2;22975:4;23023:1;23018:27;;;;23059:1;23054:191;;;;22968:277;;23018:27;23036:1;23027:10;;23038:5;;;23054:191;23099:3;23089:8;23086:17;23083:2;;;23106:18;;:::i;:::-;23083:2;23155:8;23152:1;23148:16;23139:25;;23190:3;23183:5;23180:14;23177:2;;;23197:18;;:::i;:::-;23177:2;23230:5;;;22968:277;;23354:2;23344:8;23341:16;23335:3;23329:4;23326:13;23322:36;23304:2;23294:8;23291:16;23286:2;23280:4;23277:12;23273:35;23257:111;23254:2;;;23410:8;23404:4;23400:19;23391:28;;23445:3;23438:5;23435:14;23432:2;;;23452:18;;:::i;:::-;23432:2;23485:5;;23254:2;23525:42;23563:3;23553:8;23547:4;23544:1;23525:42;:::i;:::-;23510:57;;;;23599:4;23594:3;23590:14;23583:5;23580:25;23577:2;;;23608:18;;:::i;:::-;23577:2;23657:4;23650:5;23646:16;23637:25;;22655:1013;;;;;;:::o;23674:348::-;23714:7;23737:20;23755:1;23737:20;:::i;:::-;23732:25;;23771:20;23789:1;23771:20;:::i;:::-;23766:25;;23959:1;23891:66;23887:74;23884:1;23881:81;23876:1;23869:9;23862:17;23858:105;23855:2;;;23966:18;;:::i;:::-;23855:2;24014:1;24011;24007:9;23996:20;;23722:300;;;;:::o;24028:191::-;24068:4;24088:20;24106:1;24088:20;:::i;:::-;24083:25;;24122:20;24140:1;24122:20;:::i;:::-;24117:25;;24161:1;24158;24155:8;24152:2;;;24166:18;;:::i;:::-;24152:2;24211:1;24208;24204:9;24196:17;;24073:146;;;;:::o;24225:96::-;24262:7;24291:24;24309:5;24291:24;:::i;:::-;24280:35;;24270:51;;;:::o;24327:104::-;24372:7;24401:24;24419:5;24401:24;:::i;:::-;24390:35;;24380:51;;;:::o;24437:90::-;24471:7;24514:5;24507:13;24500:21;24489:32;;24479:48;;;:::o;24533:126::-;24570:7;24610:42;24603:5;24599:54;24588:65;;24578:81;;;:::o;24665:77::-;24702:7;24731:5;24720:16;;24710:32;;;:::o;24748:86::-;24783:7;24823:4;24816:5;24812:16;24801:27;;24791:43;;;:::o;24840:134::-;24898:9;24931:37;24962:5;24931:37;:::i;:::-;24918:50;;24908:66;;;:::o;24980:162::-;25048:9;25081:55;25130:5;25081:55;:::i;:::-;25068:68;;25058:84;;;:::o;25148:131::-;25216:9;25249:24;25267:5;25249:24;:::i;:::-;25236:37;;25226:53;;;:::o;25285:121::-;25343:9;25376:24;25394:5;25376:24;:::i;:::-;25363:37;;25353:53;;;:::o;25412:126::-;25462:9;25495:37;25526:5;25495:37;:::i;:::-;25482:50;;25472:66;;;:::o;25544:113::-;25594:9;25627:24;25645:5;25627:24;:::i;:::-;25614:37;;25604:53;;;:::o;25663:307::-;25731:1;25741:113;25755:6;25752:1;25749:13;25741:113;;;25840:1;25835:3;25831:11;25825:18;25821:1;25816:3;25812:11;25805:39;25777:2;25774:1;25770:10;25765:15;;25741:113;;;25872:6;25869:1;25866:13;25863:2;;;25952:1;25943:6;25938:3;25934:16;25927:27;25863:2;25712:258;;;;:::o;25976:180::-;26024:77;26021:1;26014:88;26121:4;26118:1;26111:15;26145:4;26142:1;26135:15;26162:180;26210:77;26207:1;26200:88;26307:4;26304:1;26297:15;26331:4;26328:1;26321:15;26348:180;26396:77;26393:1;26386:88;26493:4;26490:1;26483:15;26517:4;26514:1;26507:15;26534:180;26582:77;26579:1;26572:88;26679:4;26676:1;26669:15;26703:4;26700:1;26693:15;26843:117;26952:1;26949;26942:12;26966:102;27007:6;27058:2;27054:7;27049:2;27042:5;27038:14;27034:28;27024:38;;27014:54;;;:::o;27074:102::-;27116:8;27163:5;27160:1;27156:13;27135:34;;27125:51;;;:::o;27182:224::-;27322:34;27318:1;27310:6;27306:14;27299:58;27391:7;27386:2;27378:6;27374:15;27367:32;27288:118;:::o;27412:222::-;27552:34;27548:1;27540:6;27536:14;27529:58;27621:5;27616:2;27608:6;27604:15;27597:30;27518:116;:::o;27640:177::-;27780:29;27776:1;27768:6;27764:14;27757:53;27746:71;:::o;27823:180::-;27963:32;27959:1;27951:6;27947:14;27940:56;27929:74;:::o;28009:162::-;28149:14;28145:1;28137:6;28133:14;28126:38;28115:56;:::o;28177:220::-;28317:34;28313:1;28305:6;28301:14;28294:58;28386:3;28381:2;28373:6;28369:15;28362:28;28283:114;:::o;28403:156::-;28543:8;28539:1;28531:6;28527:14;28520:32;28509:50;:::o;28565:114::-;28671:8;:::o;28685:161::-;28825:13;28821:1;28813:6;28809:14;28802:37;28791:55;:::o;28852:122::-;28925:24;28943:5;28925:24;:::i;:::-;28918:5;28915:35;28905:2;;28964:1;28961;28954:12;28905:2;28895:79;:::o;28980:138::-;29061:32;29087:5;29061:32;:::i;:::-;29054:5;29051:43;29041:2;;29108:1;29105;29098:12;29041:2;29031:87;:::o;29124:116::-;29194:21;29209:5;29194:21;:::i;:::-;29187:5;29184:32;29174:2;;29230:1;29227;29220:12;29174:2;29164:76;:::o;29246:122::-;29319:24;29337:5;29319:24;:::i;:::-;29312:5;29309:35;29299:2;;29358:1;29355;29348:12;29299:2;29289:79;:::o

Swarm Source

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