S Price: $0.719247 (-1.15%)

Token

Sonic Print (SPRINT)

Overview

Max Total Supply

1,420,069,000 SPRINT

Holders

36

Market

Price

$0.00 @ 0.000000 S

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0 SPRINT

Value
$0.00
0x8b6b7cd9cf40d1561532b7bc9643d12139a45f8d
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information

Contract Source Code Verified (Exact Match)

Contract Name:
SonicPrint

Compiler Version
v0.8.28+commit.7893614a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at SonicScan.org on 2025-02-26
*/

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

library SafeMath {

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

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

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

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

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

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

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

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

    function getPair(address token0, address token1, bool stable) external view returns (address);
}

interface IDEXRouter {
    function factory() external pure returns (address);
    function weth() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        bool stable,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);

    function addLiquidityETH(
        address token,
        bool stable,
        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,
        route[] calldata path,
        address to,
        uint deadline
    ) external;

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

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

interface IDividendDistributor {
    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external;
    function setShare(address shareholder, uint256 amount) external;
    function deposit() external payable;
    function process(uint256 gas) external;
    }

contract DividendDistributor is IDividendDistributor {

    using SafeMath for uint256;
    address _token;

    struct Share {
        uint256 amount;
        uint256 totalExcluded;
        uint256 totalRealised;
    }

    IDEXRouter router;
    address routerAddress = 0xcC6169aA1E879d3a4227536671F85afdb2d23fAD; //router
    IBEP20 RewardToken = IBEP20(0x039e2fB66102314Ce7b64Ce5Ce3E5183bc94aD38); //wS

    address[] shareholders;
    mapping (address => uint256) shareholderIndexes;
    mapping (address => uint256) shareholderClaims;
    mapping (address => Share) public shares;

    uint256 public totalShares;
    uint256 public totalDividends;
    uint256 public totalDistributed;
    uint256 public dividendsPerShare;
    uint256 public dividendsPerShareAccuracyFactor = 10 ** 36;

    uint256 public minPeriod = 60 minutes;
    uint256 public minDistribution = 1 * (10 ** 6);

    uint256 currentIndex;

    bool initialized;
    modifier initialization() {
        require(!initialized);
        _;
        initialized = true;
    }

    modifier onlyToken() {
        require(msg.sender == _token); _;
    }

    constructor (address _router) {
        router = _router != address(0) ? IDEXRouter(_router) : IDEXRouter(routerAddress);
        _token = msg.sender;
    }

    function setDistributionCriteria(uint256 newMinPeriod, uint256 newMinDistribution) external override onlyToken {
        minPeriod = newMinPeriod;
        minDistribution = newMinDistribution;
    }

    function setShare(address shareholder, uint256 amount) external override onlyToken {

        if(shares[shareholder].amount > 0){
            distributeDividend(shareholder);
        }

        if(amount > 0 && shares[shareholder].amount == 0){
            addShareholder(shareholder);
        }else if(amount == 0 && shares[shareholder].amount > 0){
            removeShareholder(shareholder);
        }

        totalShares = totalShares.sub(shares[shareholder].amount).add(amount);
        shares[shareholder].amount = amount;
        shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
    }

    function deposit() external payable override onlyToken {

        uint256 balanceBefore = RewardToken.balanceOf(address(this));

        route[] memory path = new route[](1);
        path[0].from = router.weth();
        path[0].to = address(this);
        path[0].stable = false;

        router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: msg.value}(
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amount = RewardToken.balanceOf(address(this)).sub(balanceBefore);
        totalDividends = totalDividends.add(amount);
        dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares));
    }

    function process(uint256 gas) external override onlyToken {
        uint256 shareholderCount = shareholders.length;

        if(shareholderCount == 0) { return; }

        uint256 iterations = 0;
        uint256 gasUsed = 0;
        uint256 gasLeft = gasleft();

        while(gasUsed < gas && iterations < shareholderCount) {

            if(currentIndex >= shareholderCount){ currentIndex = 0; }

            if(shouldDistribute(shareholders[currentIndex])){
                distributeDividend(shareholders[currentIndex]);
            }

            gasUsed = gasUsed.add(gasLeft.sub(gasleft()));
            gasLeft = gasleft();
            currentIndex++;
            iterations++;
        }
    }
    
    function shouldDistribute(address shareholder) internal view returns (bool) {
        return shareholderClaims[shareholder] + minPeriod < block.timestamp
                && getUnpaidEarnings(shareholder) > minDistribution;
    }

    function distributeDividend(address shareholder) internal {
        if(shares[shareholder].amount == 0){ return; }

        uint256 amount = getUnpaidEarnings(shareholder);
        if(amount > 0){
            totalDistributed = totalDistributed.add(amount);
            RewardToken.transfer(shareholder, amount);
            shareholderClaims[shareholder] = block.timestamp;
            shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount);
            shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
        }

    }
    
    function claimDividend(address shareholder) external onlyToken{
        distributeDividend(shareholder);
    }
    
    function rescueDividends(address to) external onlyToken {
        RewardToken.transfer(to, RewardToken.balanceOf(address(this)));
    }
    
    function setRewardToken(address _rewardToken) external onlyToken{
        RewardToken = IBEP20(_rewardToken);
    }

    function getUnpaidEarnings(address shareholder) public view returns (uint256) {
        if(shares[shareholder].amount == 0){ return 0; }

        uint256 shareholderTotalDividends = getCumulativeDividends(shares[shareholder].amount);
        uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded;

        if(shareholderTotalDividends <= shareholderTotalExcluded){ return 0; }

        return shareholderTotalDividends.sub(shareholderTotalExcluded);
    }

    function getCumulativeDividends(uint256 share) internal view returns (uint256) {
        return share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor);
    }

    function addShareholder(address shareholder) internal {
        shareholderIndexes[shareholder] = shareholders.length;
        shareholders.push(shareholder);
    }

    function removeShareholder(address shareholder) internal {
        shareholders[shareholderIndexes[shareholder]] = shareholders[shareholders.length-1];
        shareholderIndexes[shareholders[shareholders.length-1]] = shareholderIndexes[shareholder];
        shareholders.pop();
    }
    
   }

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

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

    /**
     * Function modifier to require caller to be contract owner
     */
    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }

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

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

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

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

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

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

    event OwnershipTransferred(address owner);
}
struct route {
    /// @dev token from
    address from;
    /// @dev token to
    address to;
    /// @dev is stable route
    bool stable;
}
contract SonicPrint is IBEP20, Auth {
    
    using SafeMath for uint256;

    string constant _name = "Sonic Print";
    string constant _symbol = "SPRINT";
    uint8 constant _decimals = 18;

    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;
    address routerAddress = 0xcC6169aA1E879d3a4227536671F85afdb2d23fAD;
    address RewardToken = 0x039e2fB66102314Ce7b64Ce5Ce3E5183bc94aD38;

    uint256 _totalSupply = 1420069000 * (10 ** _decimals);
    
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;

    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) public isDividendExempt;

    uint256 public liquidityFee = 1;
    uint256 public marketingFee = 4;
    uint256 public rewardsFee = 1;
    uint256 public lotteryFee = 3;
    uint256 public _gasPriceLimitB=8;
    uint256 public gasPriceLimitB = _gasPriceLimitB * 1 gwei; 
    uint256 public sellMultiplier = 15;

    uint256 public totalFee = 0;
    uint256 public totalFeeIfSelling = 0;

    address public autoLiquidityReceiver;
    address public marketingWallet;
    address public lotteryWallet;

    IDEXRouter public router;
    address public pair;

    DividendDistributor public dividendDistributor;
    uint256 public distributorGas = 750000;

    bool public inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public tradingOpen = false;

    uint256 public swapThreshold = _totalSupply / 250;
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    constructor () Auth(msg.sender) {
        
        router = IDEXRouter(routerAddress);

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

        dividendDistributor = new DividendDistributor(address(router));

        isFeeExempt[msg.sender] = true;
        isFeeExempt[address(this)] = true;
        
        //isDividendExempt[msg.sender] = true;
        isDividendExempt[address(this)] = true;
        isDividendExempt[DEAD] = true;
        isDividendExempt[ZERO] = true;

        // NICE!
        autoLiquidityReceiver = msg.sender;
        marketingWallet = 0x80699F28e8A8d4d37394453700649e46395d3BaC;  // marketingwallet
        isFeeExempt[marketingWallet] = true;
        lotteryWallet = 0x4E589EDf5a1B4ab9547B2280949be4a5e5A2917d;  // no tax for lotterywallet
        isFeeExempt[lotteryWallet] = true;
        
        totalFee = (liquidityFee.add(marketingFee).add(rewardsFee).add(lotteryFee));
        totalFeeIfSelling = totalFee.mul(sellMultiplier).div(10);

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable { }

    function setPair(address _pair) external authorized{
        pair = _pair;

        isDividendExempt[pair] = true;
    }

    function name() external pure override returns (string memory) { return _name; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function getOwner() external view override returns (address) { return owner; }

    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

    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 claimDividend() external {
        dividendDistributor.claimDividend(msg.sender);
    }

    function changeSellFeeX10(uint256 newMulti) external authorized{
        require(newMulti <= 30);
        sellMultiplier = newMulti;
        totalFeeIfSelling = totalFee.mul(sellMultiplier).div(10);
    }
            
    function changeIsFeeExempt(address holder, bool exempt) external authorized {
        isFeeExempt[holder] = exempt;
    }

    function changeIsDividendExempt(address holder, bool exempt) external authorized {
        require(holder != address(this) && holder != pair);
        isDividendExempt[holder] = exempt;
        
        if(exempt){
            dividendDistributor.setShare(holder, 0);
        }else{
            dividendDistributor.setShare(holder, _balances[holder]);
        }
    }

    function changeFees(uint256 newLiqFee, uint256 newRewardFee, uint256 newMarketingFee, uint256 newLotteryFee) external authorized {
        liquidityFee = newLiqFee;
        rewardsFee = newRewardFee;
        marketingFee = newMarketingFee;
        lotteryFee = newLotteryFee;
        
        totalFee = liquidityFee.add(marketingFee).add(rewardsFee).add(lotteryFee);
        totalFeeIfSelling = totalFee.mul(sellMultiplier).div(10);
    }

    function changeFeeReceivers(address newLiquidityReceiver, address newMarketingWallet, address newLotteryWallet) external authorized {
        autoLiquidityReceiver = newLiquidityReceiver;
        marketingWallet = newMarketingWallet;
        lotteryWallet = newLotteryWallet;
    }

    function changeSwapBackSettings(bool enableSwapBack, uint256 newSwapBackLimit) external authorized {
        swapAndLiquifyEnabled  = enableSwapBack;
        swapThreshold = newSwapBackLimit;
    }

    function changeDistributionCriteria(uint256 newinPeriod, uint256 newMinDistribution) external authorized {
        dividendDistributor.setDistributionCriteria(newinPeriod, newMinDistribution);
    }

    function changeDistributorSettings(uint256 gas) external authorized {
        require(gas < 750000);
        distributorGas = gas;
    }
    
    function setRewardToken(address _rewardToken) external authorized {
        dividendDistributor.setRewardToken(_rewardToken);
    }
    
    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 openTrading() external authorized {
        tradingOpen = true;
    }
    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(!authorizations[sender] && !authorizations[recipient]){
            require(tradingOpen, "Trading not open yet");
        }
        
        if(inSwapAndLiquify || !tradingOpen){ 
            return _basicTransfer(sender, recipient, amount); 
        }

        if(msg.sender != pair && !inSwapAndLiquify && swapAndLiquifyEnabled && _balances[address(this)] >= swapThreshold){
             swapBack(); 
        }
        
        //Exchange tokens
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        
        uint256 finalAmount = !isFeeExempt[sender] && !isFeeExempt[recipient] ? takeFee(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(finalAmount);

        // Dividend tracker
        if(!isDividendExempt[sender]) {
            try dividendDistributor.setShare(sender, _balances[sender]) {} catch {}
        }

        if(!isDividendExempt[recipient]) {
            try dividendDistributor.setShare(recipient, _balances[recipient]) {} catch {} 
        }

        try dividendDistributor.process(distributorGas) {} catch {}

        emit Transfer(sender, recipient, finalAmount);
        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 takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint256 feeApplicable = pair == recipient ? totalFeeIfSelling : totalFee;
        uint256 feeAmount = amount.mul(feeApplicable).div(100);

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

        return amount.sub(feeAmount);
    }

    function setGas(uint256 Gas) external onlyOwner() {
        require(Gas > 7, "Max gas must be higher than 7 gwei");
        _gasPriceLimitB=Gas;
        gasPriceLimitB = _gasPriceLimitB * 1 gwei; 
    }

    function swapBack() internal lockTheSwap {
        
        uint256 tokensToLiquify = _balances[address(this)];
        uint256 amountToLiquify = tokensToLiquify.mul(liquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = tokensToLiquify.sub(amountToLiquify);

        route[] memory path = new route[](1);
        path[0].from = address(this);
        path[0].to = router.weth();
        path[0].stable = false;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountBNB = address(this).balance;

        uint256 totalBNBFee = totalFee.sub(liquidityFee.div(2));
        
        uint256 amountBNBLiquidity = amountBNB.mul(liquidityFee).div(totalBNBFee).div(2);
        uint256 amountBNBReflection = amountBNB.mul(rewardsFee).div(totalBNBFee);
        uint256 amountBNBMarketing = amountBNB.mul(marketingFee).div(totalBNBFee);
        uint256 amountBNBLottery = amountBNB.mul(lotteryFee).div(totalBNBFee);

        try dividendDistributor.deposit{value: amountBNBReflection}() {} catch {}

        (bool tmpSuccess,) = payable(marketingWallet).call{value: amountBNBMarketing, gas: 30000}("");
        (bool tmpSuccess1,) = payable(lotteryWallet).call{value: amountBNBLottery, gas: 30000}("");
        
        // only to supress warning msg
        tmpSuccess = false;
        tmpSuccess1 = false;

        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountBNBLiquidity}(
                address(this),
                false,
                amountToLiquify,
                0,
                0,
                autoLiquidityReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountBNBLiquidity, amountToLiquify);
        }
    }

    event AutoLiquify(uint256 amountBNB, uint256 amountBOG);

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"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":"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":"_gasPriceLimitB","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":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newinPeriod","type":"uint256"},{"internalType":"uint256","name":"newMinDistribution","type":"uint256"}],"name":"changeDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"changeDistributorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newLiquidityReceiver","type":"address"},{"internalType":"address","name":"newMarketingWallet","type":"address"},{"internalType":"address","name":"newLotteryWallet","type":"address"}],"name":"changeFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiqFee","type":"uint256"},{"internalType":"uint256","name":"newRewardFee","type":"uint256"},{"internalType":"uint256","name":"newMarketingFee","type":"uint256"},{"internalType":"uint256","name":"newLotteryFee","type":"uint256"}],"name":"changeFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMulti","type":"uint256"}],"name":"changeSellFeeX10","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enableSwapBack","type":"bool"},{"internalType":"uint256","name":"newSwapBackLimit","type":"uint256"}],"name":"changeSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"distributorGas","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dividendDistributor","outputs":[{"internalType":"contract DividendDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"gasPriceLimitB","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"inSwapAndLiquify","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"","type":"address"}],"name":"isDividendExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lotteryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lotteryWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"Gas","type":"uint256"}],"name":"setGas","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"}],"name":"setPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_rewardToken","type":"address"}],"name":"setRewardToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","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":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFeeIfSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address 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"}]

608060405261dead60025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f60035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073cc6169aa1e879d3a4227536671f85afdb2d23fad60045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073039e2fb66102314ce7b64ce5ce3e5183bc94ad3860055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a61013c9190610c0e565b6354a4888861014b9190610c58565b6006556001600b556004600c556001600d556003600e556008600f55633b9aca00600f546101799190610c58565b601055600f6011555f6012555f601355620b71b0601a556001601b60016101000a81548160ff0219169083151502179055505f601b60026101000a81548160ff02191690831515021790555060fa6006546101d49190610cc6565b601c553480156101e2575f5ffd5b5033805f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60085f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516103c590610a90565b6103cf9190610d35565b604051809103905ff0801580156103e8573d5f5f3e3d5ffd5b5060195f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055503360145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507380699f28e8a8d4d37394453700649e46395d3bac60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160095f60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550734e589edf5a1b4ab9547b2280949be4a5e5a2917d60165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160095f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550610826600e54610818600d5461080a600c54600b5461090c60201b90919060201c565b61090c60201b90919060201c565b61090c60201b90919060201c565b601281905550610856600a61084860115460125461096960201b90919060201c565b6109e060201b90919060201c565b60138190555060065460075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6006546040516108ff9190610d5d565b60405180910390a3610f2f565b5f5f828461091a9190610d76565b90508381101561095f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095690610e03565b60405180910390fd5b8091505092915050565b5f5f8303610979575f90506109da565b5f82846109869190610c58565b90508284826109959190610cc6565b146109d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109cc90610e91565b60405180910390fd5b809150505b92915050565b5f610a2783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610a2f60201b60201c565b905092915050565b5f5f83118290610a75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6c9190610f0f565b60405180910390fd5b505f8385610a839190610cc6565b9050809150509392505050565b61232d8061512083390190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f5f8291508390505b6001851115610b1f57808604811115610afb57610afa610a9d565b5b6001851615610b0a5780820291505b8081029050610b1885610aca565b9450610adf565b94509492505050565b5f82610b375760019050610bf2565b81610b44575f9050610bf2565b8160018114610b5a5760028114610b6457610b93565b6001915050610bf2565b60ff841115610b7657610b75610a9d565b5b8360020a915084821115610b8d57610b8c610a9d565b5b50610bf2565b5060208310610133831016604e8410600b8410161715610bc85782820a905083811115610bc357610bc2610a9d565b5b610bf2565b610bd58484846001610ad6565b92509050818404811115610bec57610beb610a9d565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f610c1882610bf9565b9150610c2383610c02565b9250610c507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484610b28565b905092915050565b5f610c6282610bf9565b9150610c6d83610bf9565b9250828202610c7b81610bf9565b91508282048414831517610c9257610c91610a9d565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f610cd082610bf9565b9150610cdb83610bf9565b925082610ceb57610cea610c99565b5b828204905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610d1f82610cf6565b9050919050565b610d2f81610d15565b82525050565b5f602082019050610d485f830184610d26565b92915050565b610d5781610bf9565b82525050565b5f602082019050610d705f830184610d4e565b92915050565b5f610d8082610bf9565b9150610d8b83610bf9565b9250828201905080821115610da357610da2610a9d565b5b92915050565b5f82825260208201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f610ded601b83610da9565b9150610df882610db9565b602082019050919050565b5f6020820190508181035f830152610e1a81610de1565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f610e7b602183610da9565b9150610e8682610e21565b604082019050919050565b5f6020820190508181035f830152610ea881610e6f565b9050919050565b5f81519050919050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610ee182610eaf565b610eeb8185610da9565b9350610efb818560208601610eb9565b610f0481610ec7565b840191505092915050565b5f6020820190508181035f830152610f278184610ed7565b905092915050565b6141e480610f3c5f395ff3fe608060405260043610610302575f3560e01c806378aa08ed1161018f578063bbb19940116100db578063f0b37c0411610094578063f887ea401161006e578063f887ea4014610b4b578063fe9fbb8014610b75578063fed0d2a114610bb1578063ffb54a9914610bdb57610309565b8063f0b37c0414610ae5578063f0fc6bca14610b0d578063f2fde38b14610b2357610309565b8063bbb19940146109ef578063c9567bf914610a17578063ca33e64c14610a2d578063ca987b0e14610a57578063dd51faa214610a81578063dd62ed3e14610aa957610309565b8063a364b07711610148578063a9059cbb11610122578063a9059cbb14610939578063a9f7864b14610975578063b6a5d7de1461099d578063bad3ea6a146109c557610309565b8063a364b077146108bd578063a3a2e89e146108e7578063a8aa1b311461090f57610309565b806378aa08ed146107c55780638187f516146107ef578063893d20e8146108175780638aee81271461084157806395d89b411461086957806398118cb41461089357610309565b8063345a12351161024e578063571ac8b0116102075780636b67c4df116101e15780636b67c4df1461070d57806370a082311461073757806375f0a87414610773578063773fcb5c1461079d57610309565b8063571ac8b01461067f57806360e71962146106bb578063650c4226146106e557610309565b8063345a1235146105635780633dab52691461058d5780633f4218e0146105b55780634355855a146105f1578063479f66d81461062d5780634a74bb021461065557610309565b8063220f6696116102bb5780632bb14e1d116102955780632bb14e1d146104ab5780632f54bf6e146104d5578063313ce56714610511578063315dca291461053b57610309565b8063220f66961461041b57806323b872dd146104455780632b112e491461048157610309565b80630445b6671461030d57806306fdde0314610337578063095ea7b31461036157806318160ddd1461039d5780631df4ccfc146103c75780631e0995a9146103f157610309565b3661030957005b5f5ffd5b348015610318575f5ffd5b50610321610c05565b60405161032e9190613444565b60405180910390f35b348015610342575f5ffd5b5061034b610c0b565b60405161035891906134cd565b60405180910390f35b34801561036c575f5ffd5b5061038760048036038101906103829190613575565b610c48565b60405161039491906135cd565b60405180910390f35b3480156103a8575f5ffd5b506103b1610d35565b6040516103be9190613444565b60405180910390f35b3480156103d2575f5ffd5b506103db610d3e565b6040516103e89190613444565b60405180910390f35b3480156103fc575f5ffd5b50610405610d44565b6040516104129190613444565b60405180910390f35b348015610426575f5ffd5b5061042f610d4a565b60405161043c91906135cd565b60405180910390f35b348015610450575f5ffd5b5061046b600480360381019061046691906135e6565b610d5c565b60405161047891906135cd565b60405180910390f35b34801561048c575f5ffd5b50610495610f4f565b6040516104a29190613444565b60405180910390f35b3480156104b6575f5ffd5b506104bf610fce565b6040516104cc9190613444565b60405180910390f35b3480156104e0575f5ffd5b506104fb60048036038101906104f69190613636565b610fd4565b60405161050891906135cd565b60405180910390f35b34801561051c575f5ffd5b5061052561102b565b604051610532919061367c565b60405180910390f35b348015610546575f5ffd5b50610561600480360381019061055c9190613695565b611033565b005b34801561056e575f5ffd5b50610577611140565b6040516105849190613444565b60405180910390f35b348015610598575f5ffd5b506105b360048036038101906105ae919061370f565b611146565b005b3480156105c0575f5ffd5b506105db60048036038101906105d69190613636565b6111b3565b6040516105e891906135cd565b60405180910390f35b3480156105fc575f5ffd5b5061061760048036038101906106129190613636565b6111d0565b60405161062491906135cd565b60405180910390f35b348015610638575f5ffd5b50610653600480360381019061064e919061374d565b6111ed565b005b348015610660575f5ffd5b5061066961124d565b60405161067691906135cd565b60405180910390f35b34801561068a575f5ffd5b506106a560048036038101906106a09190613636565b611260565b6040516106b291906135cd565b60405180910390f35b3480156106c6575f5ffd5b506106cf611292565b6040516106dc9190613444565b60405180910390f35b3480156106f0575f5ffd5b5061070b60048036038101906107069190613778565b611298565b005b348015610718575f5ffd5b50610721611377565b60405161072e9190613444565b60405180910390f35b348015610742575f5ffd5b5061075d60048036038101906107589190613636565b61137d565b60405161076a9190613444565b60405180910390f35b34801561077e575f5ffd5b506107876113c3565b60405161079491906137eb565b60405180910390f35b3480156107a8575f5ffd5b506107c360048036038101906107be9190613804565b6113e8565b005b3480156107d0575f5ffd5b506107d9611674565b6040516107e69190613444565b60405180910390f35b3480156107fa575f5ffd5b5061081560048036038101906108109190613636565b61167a565b005b348015610822575f5ffd5b5061082b61177b565b60405161083891906137eb565b60405180910390f35b34801561084c575f5ffd5b5061086760048036038101906108629190613636565b6117a2565b005b348015610874575f5ffd5b5061087d611874565b60405161088a91906134cd565b60405180910390f35b34801561089e575f5ffd5b506108a76118b1565b6040516108b49190613444565b60405180910390f35b3480156108c8575f5ffd5b506108d16118b7565b6040516108de91906137eb565b60405180910390f35b3480156108f2575f5ffd5b5061090d60048036038101906109089190613804565b6118dc565b005b34801561091a575f5ffd5b5061092361197c565b60405161093091906137eb565b60405180910390f35b348015610944575f5ffd5b5061095f600480360381019061095a9190613575565b6119a1565b60405161096c91906135cd565b60405180910390f35b348015610980575f5ffd5b5061099b60048036038101906109969190613842565b6119b5565b005b3480156109a8575f5ffd5b506109c360048036038101906109be9190613636565b611a8a565b005b3480156109d0575f5ffd5b506109d9611b29565b6040516109e691906138db565b60405180910390f35b3480156109fa575f5ffd5b50610a156004803603810190610a10919061374d565b611b4e565b005b348015610a22575f5ffd5b50610a2b611bdd565b005b348015610a38575f5ffd5b50610a41611c42565b604051610a4e91906137eb565b60405180910390f35b348015610a62575f5ffd5b50610a6b611c67565b604051610a789190613444565b60405180910390f35b348015610a8c575f5ffd5b50610aa76004803603810190610aa2919061374d565b611c6d565b005b348015610ab4575f5ffd5b50610acf6004803603810190610aca91906138f4565b611d1a565b604051610adc9190613444565b60405180910390f35b348015610af0575f5ffd5b50610b0b6004803603810190610b069190613636565b611d9c565b005b348015610b18575f5ffd5b50610b21611e3b565b005b348015610b2e575f5ffd5b50610b496004803603810190610b44919061396d565b611ec4565b005b348015610b56575f5ffd5b50610b5f611fd9565b604051610b6c91906139b8565b60405180910390f35b348015610b80575f5ffd5b50610b9b6004803603810190610b969190613636565b611ffe565b604051610ba891906135cd565b60405180910390f35b348015610bbc575f5ffd5b50610bc5612050565b604051610bd29190613444565b60405180910390f35b348015610be6575f5ffd5b50610bef612056565b604051610bfc91906135cd565b60405180910390f35b601c5481565b60606040518060400160405280600b81526020017f536f6e6963205072696e74000000000000000000000000000000000000000000815250905090565b5f8160085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610d239190613444565b60405180910390a36001905092915050565b5f600654905090565b60125481565b60105481565b601b5f9054906101000a900460ff1681565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205414610f3b57610ebe826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e63650000000000000000000081525060085f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546120699092919063ffffffff16565b60085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b610f468484846120cb565b90509392505050565b5f610fc9610f7d60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661137d565b610fbb610faa60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661137d565b60065461280090919063ffffffff16565b61280090919063ffffffff16565b905090565b600d5481565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b5f6012905090565b61103c33611ffe565b61107b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107290613a1b565b60405180910390fd5b8260145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b600f5481565b61114f33611ffe565b61118e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118590613a1b565b60405180910390fd5b81601b60016101000a81548160ff02191690831515021790555080601c819055505050565b6009602052805f5260405f205f915054906101000a900460ff1681565b600a602052805f5260405f205f915054906101000a900460ff1681565b6111f633611ffe565b611235576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122c90613a1b565b60405180910390fd5b620b71b08110611243575f5ffd5b80601a8190555050565b601b60019054906101000a900460ff1681565b5f61128b827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610c48565b9050919050565b601a5481565b6112a133611ffe565b6112e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d790613a1b565b60405180910390fd5b83600b8190555082600d8190555081600c8190555080600e8190555061133b600e5461132d600d5461131f600c54600b5461284990919063ffffffff16565b61284990919063ffffffff16565b61284990919063ffffffff16565b60128190555061136b600a61135d6011546012546128a690919063ffffffff16565b61291d90919063ffffffff16565b60138190555050505050565b600c5481565b5f60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6113f133611ffe565b611430576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142790613a1b565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156114b9575060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b6114c1575f5ffd5b80600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080156115a95760195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca96835f6040518363ffffffff1660e01b8152600401611577929190613a72565b5f604051808303815f87803b15801561158e575f5ffd5b505af11580156115a0573d5f5f3e3d5ffd5b50505050611670565b60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546040518363ffffffff1660e01b8152600401611642929190613a99565b5f604051808303815f87803b158015611659575f5ffd5b505af115801561166b573d5f5f3e3d5ffd5b505050505b5050565b600e5481565b61168333611ffe565b6116c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b990613a1b565b60405180910390fd5b8060185f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a5f60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6117ab33611ffe565b6117ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e190613a1b565b60405180910390fd5b60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638aee8127826040518263ffffffff1660e01b815260040161184491906137eb565b5f604051808303815f87803b15801561185b575f5ffd5b505af115801561186d573d5f5f3e3d5ffd5b5050505050565b60606040518060400160405280600681526020017f535052494e540000000000000000000000000000000000000000000000000000815250905090565b600b5481565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6118e533611ffe565b611924576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191b90613a1b565b60405180910390fd5b8060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6119ad3384846120cb565b905092915050565b6119be33611ffe565b6119fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f490613a1b565b60405180910390fd5b60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b8152600401611a59929190613ac0565b5f604051808303815f87803b158015611a70575f5ffd5b505af1158015611a82573d5f5f3e3d5ffd5b505050505050565b611a9333610fd4565b611ad2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac990613b31565b60405180910390fd5b6001805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611b5733611ffe565b611b96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8d90613a1b565b60405180910390fd5b601e811115611ba3575f5ffd5b80601181905550611bd4600a611bc66011546012546128a690919063ffffffff16565b61291d90919063ffffffff16565b60138190555050565b611be633611ffe565b611c25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1c90613a1b565b60405180910390fd5b6001601b60026101000a81548160ff021916908315150217905550565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60135481565b611c7633610fd4565b611cb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cac90613b31565b60405180910390fd5b60078111611cf8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cef90613bbf565b60405180910390fd5b80600f81905550633b9aca00600f54611d119190613c0a565b60108190555050565b5f60085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611da533610fd4565b611de4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ddb90613b31565b60405180910390fd5b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166315f7e05e336040518263ffffffff1660e01b8152600401611e9591906137eb565b5f604051808303815f87803b158015611eac575f5ffd5b505af1158015611ebe573d5f5f3e3d5ffd5b50505050565b611ecd33610fd4565b611f0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0390613b31565b60405180910390fd5b805f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051611fce9190613c6b565b60405180910390a150565b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60115481565b601b60029054906101000a900460ff1681565b5f8383111582906120b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a791906134cd565b60405180910390fd5b505f83856120be9190613c84565b9050809150509392505050565b5f60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561216a575060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156121bf57601b60029054906101000a900460ff166121be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b590613d01565b60405180910390fd5b5b601b5f9054906101000a900460ff16806121e65750601b60029054906101000a900460ff16155b156121fd576121f6848484612966565b90506127f9565b60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156122665750601b5f9054906101000a900460ff16155b801561227e5750601b60019054906101000a900460ff165b80156122c95750601c5460075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410155b156122d7576122d6612b30565b5b61235e826040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060075f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546120699092919063ffffffff16565b60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f60095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561243e575060095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b6124485782612454565b6124538585856131de565b5b90506124a68160075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461284990919063ffffffff16565b60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166125f85760195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968660075f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546040518363ffffffff1660e01b81526004016125ce929190613a99565b5f604051808303815f87803b1580156125e5575f5ffd5b505af19250505080156125f6575060015b505b600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166127095760195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968560075f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546040518363ffffffff1660e01b81526004016126df929190613a99565b5f604051808303815f87803b1580156126f6575f5ffd5b505af1925050508015612707575060015b505b60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c479601a546040518263ffffffff1660e01b81526004016127659190613444565b5f604051808303815f87803b15801561277c575f5ffd5b505af192505050801561278d575060015b508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516127eb9190613444565b60405180910390a360019150505b9392505050565b5f61284183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612069565b905092915050565b5f5f82846128579190613d1f565b90508381101561289c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289390613d9c565b60405180910390fd5b8091505092915050565b5f5f83036128b6575f9050612917565b5f82846128c39190613c0a565b90508284826128d29190613de7565b14612912576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161290990613e87565b60405180910390fd5b809150505b92915050565b5f61295e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061337f565b905092915050565b5f6129ee826040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060075f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546120699092919063ffffffff16565b60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612a7f8260075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461284990919063ffffffff16565b60075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612b1d9190613444565b60405180910390a3600190509392505050565b6001601b5f6101000a81548160ff0219169083151502179055505f60075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f612bc86002612bba601254612bac600b54876128a690919063ffffffff16565b61291d90919063ffffffff16565b61291d90919063ffffffff16565b90505f612bde828461280090919063ffffffff16565b90505f600167ffffffffffffffff811115612bfc57612bfb613ea5565b5b604051908082528060200260200182016040528015612c3557816020015b612c226133e0565b815260200190600190039081612c1a5790505b50905030815f81518110612c4c57612c4b613ed2565b5b60200260200101515f019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633fc8cef36040518163ffffffff1660e01b8152600401602060405180830381865afa158015612cf3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d179190613f13565b815f81518110612d2a57612d29613ed2565b5b60200260200101516020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f815f81518110612d7c57612d7b613ed2565b5b6020026020010151604001901515908115158152505060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637af728c8835f8430426040518663ffffffff1660e01b8152600401612df4959493929190614044565b5f604051808303815f87803b158015612e0b575f5ffd5b505af1158015612e1d573d5f5f3e3d5ffd5b505050505f4790505f612e50612e3f6002600b5461291d90919063ffffffff16565b60125461280090919063ffffffff16565b90505f612e8d6002612e7f84612e71600b54886128a690919063ffffffff16565b61291d90919063ffffffff16565b61291d90919063ffffffff16565b90505f612eb783612ea9600d54876128a690919063ffffffff16565b61291d90919063ffffffff16565b90505f612ee184612ed3600c54886128a690919063ffffffff16565b61291d90919063ffffffff16565b90505f612f0b85612efd600e54896128a690919063ffffffff16565b61291d90919063ffffffff16565b905060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0846040518263ffffffff1660e01b81526004015f604051808303818588803b158015612f74575f5ffd5b505af193505050508015612f86575060015b505f60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168361753090604051612fd1906140c9565b5f60405180830381858888f193505050503d805f811461300c576040519150601f19603f3d011682016040523d82523d5f602084013e613011565b606091505b505090505f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836175309060405161305f906140c9565b5f60405180830381858888f193505050503d805f811461309a576040519150601f19603f3d011682016040523d82523d5f602084013e61309f565b606091505b505090505f91505f90505f8b11156131b75760175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b7e0d4c087305f8f5f5f60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518963ffffffff1660e01b815260040161313997969594939291906140dd565b60606040518083038185885af1158015613155573d5f5f3e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061317a919061415e565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506868c6040516131ae929190613ac0565b60405180910390a15b5050505050505050505050505f601b5f6101000a81548160ff021916908315150217905550565b5f5f8373ffffffffffffffffffffffffffffffffffffffff1660185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461323c57601254613240565b6013545b90505f613269606461325b84876128a690919063ffffffff16565b61291d90919063ffffffff16565b90506132bb8160075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461284990919063ffffffff16565b60075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516133599190613444565b60405180910390a3613374818561280090919063ffffffff16565b925050509392505050565b5f5f831182906133c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133bc91906134cd565b60405180910390fd5b505f83856133d39190613de7565b9050809150509392505050565b60405180606001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f151581525090565b5f819050919050565b61343e8161342c565b82525050565b5f6020820190506134575f830184613435565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61349f8261345d565b6134a98185613467565b93506134b9818560208601613477565b6134c281613485565b840191505092915050565b5f6020820190508181035f8301526134e58184613495565b905092915050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61351a826134f1565b9050919050565b61352a81613510565b8114613534575f5ffd5b50565b5f8135905061354581613521565b92915050565b6135548161342c565b811461355e575f5ffd5b50565b5f8135905061356f8161354b565b92915050565b5f5f6040838503121561358b5761358a6134ed565b5b5f61359885828601613537565b92505060206135a985828601613561565b9150509250929050565b5f8115159050919050565b6135c7816135b3565b82525050565b5f6020820190506135e05f8301846135be565b92915050565b5f5f5f606084860312156135fd576135fc6134ed565b5b5f61360a86828701613537565b935050602061361b86828701613537565b925050604061362c86828701613561565b9150509250925092565b5f6020828403121561364b5761364a6134ed565b5b5f61365884828501613537565b91505092915050565b5f60ff82169050919050565b61367681613661565b82525050565b5f60208201905061368f5f83018461366d565b92915050565b5f5f5f606084860312156136ac576136ab6134ed565b5b5f6136b986828701613537565b93505060206136ca86828701613537565b92505060406136db86828701613537565b9150509250925092565b6136ee816135b3565b81146136f8575f5ffd5b50565b5f81359050613709816136e5565b92915050565b5f5f60408385031215613725576137246134ed565b5b5f613732858286016136fb565b925050602061374385828601613561565b9150509250929050565b5f60208284031215613762576137616134ed565b5b5f61376f84828501613561565b91505092915050565b5f5f5f5f608085870312156137905761378f6134ed565b5b5f61379d87828801613561565b94505060206137ae87828801613561565b93505060406137bf87828801613561565b92505060606137d087828801613561565b91505092959194509250565b6137e581613510565b82525050565b5f6020820190506137fe5f8301846137dc565b92915050565b5f5f6040838503121561381a576138196134ed565b5b5f61382785828601613537565b9250506020613838858286016136fb565b9150509250929050565b5f5f60408385031215613858576138576134ed565b5b5f61386585828601613561565b925050602061387685828601613561565b9150509250929050565b5f819050919050565b5f6138a361389e613899846134f1565b613880565b6134f1565b9050919050565b5f6138b482613889565b9050919050565b5f6138c5826138aa565b9050919050565b6138d5816138bb565b82525050565b5f6020820190506138ee5f8301846138cc565b92915050565b5f5f6040838503121561390a576139096134ed565b5b5f61391785828601613537565b925050602061392885828601613537565b9150509250929050565b5f61393c826134f1565b9050919050565b61394c81613932565b8114613956575f5ffd5b50565b5f8135905061396781613943565b92915050565b5f60208284031215613982576139816134ed565b5b5f61398f84828501613959565b91505092915050565b5f6139a2826138aa565b9050919050565b6139b281613998565b82525050565b5f6020820190506139cb5f8301846139a9565b92915050565b7f21415554484f52495a45440000000000000000000000000000000000000000005f82015250565b5f613a05600b83613467565b9150613a10826139d1565b602082019050919050565b5f6020820190508181035f830152613a32816139f9565b9050919050565b5f819050919050565b5f613a5c613a57613a5284613a39565b613880565b61342c565b9050919050565b613a6c81613a42565b82525050565b5f604082019050613a855f8301856137dc565b613a926020830184613a63565b9392505050565b5f604082019050613aac5f8301856137dc565b613ab96020830184613435565b9392505050565b5f604082019050613ad35f830185613435565b613ae06020830184613435565b9392505050565b7f214f574e455200000000000000000000000000000000000000000000000000005f82015250565b5f613b1b600683613467565b9150613b2682613ae7565b602082019050919050565b5f6020820190508181035f830152613b4881613b0f565b9050919050565b7f4d617820676173206d75737420626520686967686572207468616e20372067775f8201527f6569000000000000000000000000000000000000000000000000000000000000602082015250565b5f613ba9602283613467565b9150613bb482613b4f565b604082019050919050565b5f6020820190508181035f830152613bd681613b9d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613c148261342c565b9150613c1f8361342c565b9250828202613c2d8161342c565b91508282048414831517613c4457613c43613bdd565b5b5092915050565b5f613c55826138aa565b9050919050565b613c6581613c4b565b82525050565b5f602082019050613c7e5f830184613c5c565b92915050565b5f613c8e8261342c565b9150613c998361342c565b9250828203905081811115613cb157613cb0613bdd565b5b92915050565b7f54726164696e67206e6f74206f70656e207965740000000000000000000000005f82015250565b5f613ceb601483613467565b9150613cf682613cb7565b602082019050919050565b5f6020820190508181035f830152613d1881613cdf565b9050919050565b5f613d298261342c565b9150613d348361342c565b9250828201905080821115613d4c57613d4b613bdd565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613d86601b83613467565b9150613d9182613d52565b602082019050919050565b5f6020820190508181035f830152613db381613d7a565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613df18261342c565b9150613dfc8361342c565b925082613e0c57613e0b613dba565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613e71602183613467565b9150613e7c82613e17565b604082019050919050565b5f6020820190508181035f830152613e9e81613e65565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050613f0d81613521565b92915050565b5f60208284031215613f2857613f276134ed565b5b5f613f3584828501613eff565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613f7081613510565b82525050565b613f7f816135b3565b82525050565b606082015f820151613f995f850182613f67565b506020820151613fac6020850182613f67565b506040820151613fbf6040850182613f76565b50505050565b5f613fd08383613f85565b60608301905092915050565b5f602082019050919050565b5f613ff282613f3e565b613ffc8185613f48565b935061400783613f58565b805f5b8381101561403757815161401e8882613fc5565b975061402983613fdc565b92505060018101905061400a565b5085935050505092915050565b5f60a0820190506140575f830188613435565b6140646020830187613a63565b81810360408301526140768186613fe8565b905061408560608301856137dc565b6140926080830184613435565b9695505050505050565b5f81905092915050565b50565b5f6140b45f8361409c565b91506140bf826140a6565b5f82019050919050565b5f6140d3826140a9565b9150819050919050565b5f60e0820190506140f05f83018a6137dc565b6140fd60208301896135be565b61410a6040830188613435565b6141176060830187613a63565b6141246080830186613a63565b61413160a08301856137dc565b61413e60c0830184613435565b98975050505050505050565b5f815190506141588161354b565b92915050565b5f5f5f60608486031215614175576141746134ed565b5b5f6141828682870161414a565b93505060206141938682870161414a565b92505060406141a48682870161414a565b915050925092509256fea26469706673582212207ebf8b5cc532890aa1a228e58112a7f9a5160edde7845f1126c70b1f482bd4ee64736f6c634300081c0033608060405273cc6169aa1e879d3a4227536671f85afdb2d23fad60025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073039e2fb66102314ce7b64ce5ce3e5183bc94ad3860035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506ec097ce7bc90715b34b9f1000000000600c55610e10600d55620f4240600e553480156100d7575f5ffd5b5060405161232d38038061232d83398181016040528101906100f99190610237565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036101535760025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610155565b805b60015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550335f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050610262565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610206826101dd565b9050919050565b610216816101fc565b8114610220575f5ffd5b50565b5f815190506102318161020d565b92915050565b5f6020828403121561024c5761024b6101d9565b5b5f61025984828501610223565b91505092915050565b6120be8061026f5f395ff3fe6080604052600436106100f2575f3560e01c80638aee812711610089578063e2d2e21911610058578063e2d2e219146102ea578063efca2eed14610314578063ffb2c4791461033e578063ffd49c8414610366576100f2565b80638aee812714610250578063997664d714610278578063ce7c2ac2146102a2578063d0e30db0146102e0576100f2565b80632d48e896116100c55780632d48e896146101ac5780633a98ef39146101d45780634339a815146101fe5780634fab0ae814610226576100f2565b806311ce023d146100f657806314b6ca961461012057806315f7e05e1461014857806328fd319814610170575b5f5ffd5b348015610101575f5ffd5b5061010a610390565b604051610117919061189c565b60405180910390f35b34801561012b575f5ffd5b506101466004803603810190610141919061193d565b610396565b005b348015610153575f5ffd5b5061016e6004803603810190610169919061197b565b61063b565b005b34801561017b575f5ffd5b506101966004803603810190610191919061197b565b61069e565b6040516101a3919061189c565b60405180910390f35b3480156101b7575f5ffd5b506101d260048036038101906101cd91906119a6565b6107aa565b005b3480156101df575f5ffd5b506101e8610813565b6040516101f5919061189c565b60405180910390f35b348015610209575f5ffd5b50610224600480360381019061021f919061197b565b610819565b005b348015610231575f5ffd5b5061023a6109a8565b604051610247919061189c565b60405180910390f35b34801561025b575f5ffd5b506102766004803603810190610271919061197b565b6109ae565b005b348015610283575f5ffd5b5061028c610a48565b604051610299919061189c565b60405180910390f35b3480156102ad575f5ffd5b506102c860048036038101906102c3919061197b565b610a4e565b6040516102d7939291906119e4565b60405180910390f35b6102e8610a74565b005b3480156102f5575f5ffd5b506102fe610eb9565b60405161030b919061189c565b60405180910390f35b34801561031f575f5ffd5b50610328610ebf565b604051610335919061189c565b60405180910390f35b348015610349575f5ffd5b50610364600480360381019061035f9190611a19565b610ec5565b005b348015610371575f5ffd5b5061037a611051565b604051610387919061189c565b60405180910390f35b600c5481565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103ed575f5ffd5b5f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f0154111561043e5761043d82611057565b5b5f8111801561048b57505f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f0154145b1561049e57610499826112d5565b6104fb565b5f811480156104eb57505f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f0154115b156104fa576104f98261137f565b5b5b6105618161055360075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015460085461157490919063ffffffff16565b6115bd90919063ffffffff16565b6008819055508060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f01819055506105f360075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015461161a565b60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600101819055505050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610692575f5ffd5b61069b81611057565b50565b5f5f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f0154036106ed575f90506107a5565b5f61073660075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015461161a565b90505f60075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2060010154905080821161078d575f925050506107a5565b6107a0818361157490919063ffffffff16565b925050505b919050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610801575f5ffd5b81600d8190555080600e819055505050565b60085481565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610870575f5ffd5b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8260035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016109089190611a53565b602060405180830381865afa158015610923573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109479190611a80565b6040518363ffffffff1660e01b8152600401610964929190611aab565b6020604051808303815f875af1158015610980573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109a49190611b07565b5050565b600e5481565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a05575f5ffd5b8060035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60095481565b6007602052805f5260405f205f91509050805f0154908060010154908060020154905083565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610acb575f5ffd5b5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610b269190611a53565b602060405180830381865afa158015610b41573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b659190611a80565b90505f600167ffffffffffffffff811115610b8357610b82611b32565b5b604051908082528060200260200182016040528015610bbc57816020015b610ba9611838565b815260200190600190039081610ba15790505b50905060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633fc8cef36040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c29573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c4d9190611b73565b815f81518110610c6057610c5f611b9e565b5b60200260200101515f019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505030815f81518110610cb157610cb0611b9e565b5b60200260200101516020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f815f81518110610d0357610d02611b9e565b5b6020026020010151604001901515908115158152505060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166376c72751345f8430426040518663ffffffff1660e01b8152600401610d7a9493929190611d13565b5f604051808303818588803b158015610d91575f5ffd5b505af1158015610da3573d5f5f3e3d5ffd5b50505050505f610e548360035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610e079190611a53565b602060405180830381865afa158015610e22573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e469190611a80565b61157490919063ffffffff16565b9050610e6b816009546115bd90919063ffffffff16565b600981905550610eae610e9d600854610e8f84600c5461164b90919063ffffffff16565b6116c290919063ffffffff16565b600b546115bd90919063ffffffff16565b600b81905550505050565b600b5481565b600a5481565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f1c575f5ffd5b5f60048054905090505f8103610f32575061104e565b5f5f90505f5f90505f5a90505b8482108015610f4d57508383105b156110495783600f5410610f63575f600f819055505b610fa96004600f5481548110610f7c57610f7b611b9e565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661170b565b15610ff557610ff46004600f5481548110610fc757610fc6611b9e565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611057565b5b61101a61100b5a8361157490919063ffffffff16565b836115bd90919063ffffffff16565b91505a9050600f5f81548092919061103190611d8a565b9190505550828061104190611d8a565b935050610f3f565b505050505b50565b600d5481565b5f60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015403156112d2575f6110a88261069e565b90505f8111156112d0576110c781600a546115bd90919063ffffffff16565b600a8190555060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401611129929190611aab565b6020604051808303815f875af1158015611145573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111699190611b07565b504260065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506111ff8160075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600201546115bd90919063ffffffff16565b60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206002018190555061128b60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015461161a565b60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600101819055505b505b50565b60048054905060055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600481908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600460016004805490506113939190611dd1565b815481106113a4576113a3611b9e565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20548154811061141d5761141c611b9e565b5b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060055f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460055f600460016004805490506114b79190611dd1565b815481106114c8576114c7611b9e565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600480548061153f5761153e611e04565b5b600190038181905f5260205f20015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905550565b5f6115b583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611775565b905092915050565b5f5f82846115cb9190611e31565b905083811015611610576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160790611ebe565b60405180910390fd5b8091505092915050565b5f611644600c54611636600b548561164b90919063ffffffff16565b6116c290919063ffffffff16565b9050919050565b5f5f830361165b575f90506116bc565b5f82846116689190611edc565b90508284826116779190611f4a565b146116b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ae90611fea565b60405180910390fd5b809150505b92915050565b5f61170383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506117d7565b905092915050565b5f42600d5460065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546117589190611e31565b10801561176e5750600e5461176c8361069e565b115b9050919050565b5f8383111582906117bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b39190612068565b60405180910390fd5b505f83856117ca9190611dd1565b9050809150509392505050565b5f5f8311829061181d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118149190612068565b60405180910390fd5b505f838561182b9190611f4a565b9050809150509392505050565b60405180606001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f151581525090565b5f819050919050565b61189681611884565b82525050565b5f6020820190506118af5f83018461188d565b92915050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6118e2826118b9565b9050919050565b6118f2816118d8565b81146118fc575f5ffd5b50565b5f8135905061190d816118e9565b92915050565b61191c81611884565b8114611926575f5ffd5b50565b5f8135905061193781611913565b92915050565b5f5f60408385031215611953576119526118b5565b5b5f611960858286016118ff565b925050602061197185828601611929565b9150509250929050565b5f602082840312156119905761198f6118b5565b5b5f61199d848285016118ff565b91505092915050565b5f5f604083850312156119bc576119bb6118b5565b5b5f6119c985828601611929565b92505060206119da85828601611929565b9150509250929050565b5f6060820190506119f75f83018661188d565b611a04602083018561188d565b611a11604083018461188d565b949350505050565b5f60208284031215611a2e57611a2d6118b5565b5b5f611a3b84828501611929565b91505092915050565b611a4d816118d8565b82525050565b5f602082019050611a665f830184611a44565b92915050565b5f81519050611a7a81611913565b92915050565b5f60208284031215611a9557611a946118b5565b5b5f611aa284828501611a6c565b91505092915050565b5f604082019050611abe5f830185611a44565b611acb602083018461188d565b9392505050565b5f8115159050919050565b611ae681611ad2565b8114611af0575f5ffd5b50565b5f81519050611b0181611add565b92915050565b5f60208284031215611b1c57611b1b6118b5565b5b5f611b2984828501611af3565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f81519050611b6d816118e9565b92915050565b5f60208284031215611b8857611b876118b5565b5b5f611b9584828501611b5f565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f819050919050565b5f611bf7611bf2611bed84611bcb565b611bd4565b611884565b9050919050565b611c0781611bdd565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b611c3f816118d8565b82525050565b611c4e81611ad2565b82525050565b606082015f820151611c685f850182611c36565b506020820151611c7b6020850182611c36565b506040820151611c8e6040850182611c45565b50505050565b5f611c9f8383611c54565b60608301905092915050565b5f602082019050919050565b5f611cc182611c0d565b611ccb8185611c17565b9350611cd683611c27565b805f5b83811015611d06578151611ced8882611c94565b9750611cf883611cab565b925050600181019050611cd9565b5085935050505092915050565b5f608082019050611d265f830187611bfe565b8181036020830152611d388186611cb7565b9050611d476040830185611a44565b611d54606083018461188d565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611d9482611884565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611dc657611dc5611d5d565b5b600182019050919050565b5f611ddb82611884565b9150611de683611884565b9250828203905081811115611dfe57611dfd611d5d565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b5f611e3b82611884565b9150611e4683611884565b9250828201905080821115611e5e57611e5d611d5d565b5b92915050565b5f82825260208201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f611ea8601b83611e64565b9150611eb382611e74565b602082019050919050565b5f6020820190508181035f830152611ed581611e9c565b9050919050565b5f611ee682611884565b9150611ef183611884565b9250828202611eff81611884565b91508282048414831517611f1657611f15611d5d565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f611f5482611884565b9150611f5f83611884565b925082611f6f57611f6e611f1d565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f611fd4602183611e64565b9150611fdf82611f7a565b604082019050919050565b5f6020820190508181035f83015261200181611fc8565b9050919050565b5f81519050919050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61203a82612008565b6120448185611e64565b9350612054818560208601612012565b61205d81612020565b840191505092915050565b5f6020820190508181035f8301526120808184612030565b90509291505056fea26469706673582212207d7baae506d0eaf17435ef797a047172aa8d479f7e093a18858b16e1af9c95bf64736f6c634300081c0033

Deployed Bytecode

0x608060405260043610610302575f3560e01c806378aa08ed1161018f578063bbb19940116100db578063f0b37c0411610094578063f887ea401161006e578063f887ea4014610b4b578063fe9fbb8014610b75578063fed0d2a114610bb1578063ffb54a9914610bdb57610309565b8063f0b37c0414610ae5578063f0fc6bca14610b0d578063f2fde38b14610b2357610309565b8063bbb19940146109ef578063c9567bf914610a17578063ca33e64c14610a2d578063ca987b0e14610a57578063dd51faa214610a81578063dd62ed3e14610aa957610309565b8063a364b07711610148578063a9059cbb11610122578063a9059cbb14610939578063a9f7864b14610975578063b6a5d7de1461099d578063bad3ea6a146109c557610309565b8063a364b077146108bd578063a3a2e89e146108e7578063a8aa1b311461090f57610309565b806378aa08ed146107c55780638187f516146107ef578063893d20e8146108175780638aee81271461084157806395d89b411461086957806398118cb41461089357610309565b8063345a12351161024e578063571ac8b0116102075780636b67c4df116101e15780636b67c4df1461070d57806370a082311461073757806375f0a87414610773578063773fcb5c1461079d57610309565b8063571ac8b01461067f57806360e71962146106bb578063650c4226146106e557610309565b8063345a1235146105635780633dab52691461058d5780633f4218e0146105b55780634355855a146105f1578063479f66d81461062d5780634a74bb021461065557610309565b8063220f6696116102bb5780632bb14e1d116102955780632bb14e1d146104ab5780632f54bf6e146104d5578063313ce56714610511578063315dca291461053b57610309565b8063220f66961461041b57806323b872dd146104455780632b112e491461048157610309565b80630445b6671461030d57806306fdde0314610337578063095ea7b31461036157806318160ddd1461039d5780631df4ccfc146103c75780631e0995a9146103f157610309565b3661030957005b5f5ffd5b348015610318575f5ffd5b50610321610c05565b60405161032e9190613444565b60405180910390f35b348015610342575f5ffd5b5061034b610c0b565b60405161035891906134cd565b60405180910390f35b34801561036c575f5ffd5b5061038760048036038101906103829190613575565b610c48565b60405161039491906135cd565b60405180910390f35b3480156103a8575f5ffd5b506103b1610d35565b6040516103be9190613444565b60405180910390f35b3480156103d2575f5ffd5b506103db610d3e565b6040516103e89190613444565b60405180910390f35b3480156103fc575f5ffd5b50610405610d44565b6040516104129190613444565b60405180910390f35b348015610426575f5ffd5b5061042f610d4a565b60405161043c91906135cd565b60405180910390f35b348015610450575f5ffd5b5061046b600480360381019061046691906135e6565b610d5c565b60405161047891906135cd565b60405180910390f35b34801561048c575f5ffd5b50610495610f4f565b6040516104a29190613444565b60405180910390f35b3480156104b6575f5ffd5b506104bf610fce565b6040516104cc9190613444565b60405180910390f35b3480156104e0575f5ffd5b506104fb60048036038101906104f69190613636565b610fd4565b60405161050891906135cd565b60405180910390f35b34801561051c575f5ffd5b5061052561102b565b604051610532919061367c565b60405180910390f35b348015610546575f5ffd5b50610561600480360381019061055c9190613695565b611033565b005b34801561056e575f5ffd5b50610577611140565b6040516105849190613444565b60405180910390f35b348015610598575f5ffd5b506105b360048036038101906105ae919061370f565b611146565b005b3480156105c0575f5ffd5b506105db60048036038101906105d69190613636565b6111b3565b6040516105e891906135cd565b60405180910390f35b3480156105fc575f5ffd5b5061061760048036038101906106129190613636565b6111d0565b60405161062491906135cd565b60405180910390f35b348015610638575f5ffd5b50610653600480360381019061064e919061374d565b6111ed565b005b348015610660575f5ffd5b5061066961124d565b60405161067691906135cd565b60405180910390f35b34801561068a575f5ffd5b506106a560048036038101906106a09190613636565b611260565b6040516106b291906135cd565b60405180910390f35b3480156106c6575f5ffd5b506106cf611292565b6040516106dc9190613444565b60405180910390f35b3480156106f0575f5ffd5b5061070b60048036038101906107069190613778565b611298565b005b348015610718575f5ffd5b50610721611377565b60405161072e9190613444565b60405180910390f35b348015610742575f5ffd5b5061075d60048036038101906107589190613636565b61137d565b60405161076a9190613444565b60405180910390f35b34801561077e575f5ffd5b506107876113c3565b60405161079491906137eb565b60405180910390f35b3480156107a8575f5ffd5b506107c360048036038101906107be9190613804565b6113e8565b005b3480156107d0575f5ffd5b506107d9611674565b6040516107e69190613444565b60405180910390f35b3480156107fa575f5ffd5b5061081560048036038101906108109190613636565b61167a565b005b348015610822575f5ffd5b5061082b61177b565b60405161083891906137eb565b60405180910390f35b34801561084c575f5ffd5b5061086760048036038101906108629190613636565b6117a2565b005b348015610874575f5ffd5b5061087d611874565b60405161088a91906134cd565b60405180910390f35b34801561089e575f5ffd5b506108a76118b1565b6040516108b49190613444565b60405180910390f35b3480156108c8575f5ffd5b506108d16118b7565b6040516108de91906137eb565b60405180910390f35b3480156108f2575f5ffd5b5061090d60048036038101906109089190613804565b6118dc565b005b34801561091a575f5ffd5b5061092361197c565b60405161093091906137eb565b60405180910390f35b348015610944575f5ffd5b5061095f600480360381019061095a9190613575565b6119a1565b60405161096c91906135cd565b60405180910390f35b348015610980575f5ffd5b5061099b60048036038101906109969190613842565b6119b5565b005b3480156109a8575f5ffd5b506109c360048036038101906109be9190613636565b611a8a565b005b3480156109d0575f5ffd5b506109d9611b29565b6040516109e691906138db565b60405180910390f35b3480156109fa575f5ffd5b50610a156004803603810190610a10919061374d565b611b4e565b005b348015610a22575f5ffd5b50610a2b611bdd565b005b348015610a38575f5ffd5b50610a41611c42565b604051610a4e91906137eb565b60405180910390f35b348015610a62575f5ffd5b50610a6b611c67565b604051610a789190613444565b60405180910390f35b348015610a8c575f5ffd5b50610aa76004803603810190610aa2919061374d565b611c6d565b005b348015610ab4575f5ffd5b50610acf6004803603810190610aca91906138f4565b611d1a565b604051610adc9190613444565b60405180910390f35b348015610af0575f5ffd5b50610b0b6004803603810190610b069190613636565b611d9c565b005b348015610b18575f5ffd5b50610b21611e3b565b005b348015610b2e575f5ffd5b50610b496004803603810190610b44919061396d565b611ec4565b005b348015610b56575f5ffd5b50610b5f611fd9565b604051610b6c91906139b8565b60405180910390f35b348015610b80575f5ffd5b50610b9b6004803603810190610b969190613636565b611ffe565b604051610ba891906135cd565b60405180910390f35b348015610bbc575f5ffd5b50610bc5612050565b604051610bd29190613444565b60405180910390f35b348015610be6575f5ffd5b50610bef612056565b604051610bfc91906135cd565b60405180910390f35b601c5481565b60606040518060400160405280600b81526020017f536f6e6963205072696e74000000000000000000000000000000000000000000815250905090565b5f8160085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610d239190613444565b60405180910390a36001905092915050565b5f600654905090565b60125481565b60105481565b601b5f9054906101000a900460ff1681565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205414610f3b57610ebe826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e63650000000000000000000081525060085f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546120699092919063ffffffff16565b60085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b610f468484846120cb565b90509392505050565b5f610fc9610f7d60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661137d565b610fbb610faa60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661137d565b60065461280090919063ffffffff16565b61280090919063ffffffff16565b905090565b600d5481565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b5f6012905090565b61103c33611ffe565b61107b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107290613a1b565b60405180910390fd5b8260145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b600f5481565b61114f33611ffe565b61118e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118590613a1b565b60405180910390fd5b81601b60016101000a81548160ff02191690831515021790555080601c819055505050565b6009602052805f5260405f205f915054906101000a900460ff1681565b600a602052805f5260405f205f915054906101000a900460ff1681565b6111f633611ffe565b611235576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122c90613a1b565b60405180910390fd5b620b71b08110611243575f5ffd5b80601a8190555050565b601b60019054906101000a900460ff1681565b5f61128b827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610c48565b9050919050565b601a5481565b6112a133611ffe565b6112e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d790613a1b565b60405180910390fd5b83600b8190555082600d8190555081600c8190555080600e8190555061133b600e5461132d600d5461131f600c54600b5461284990919063ffffffff16565b61284990919063ffffffff16565b61284990919063ffffffff16565b60128190555061136b600a61135d6011546012546128a690919063ffffffff16565b61291d90919063ffffffff16565b60138190555050505050565b600c5481565b5f60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6113f133611ffe565b611430576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142790613a1b565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156114b9575060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b6114c1575f5ffd5b80600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080156115a95760195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca96835f6040518363ffffffff1660e01b8152600401611577929190613a72565b5f604051808303815f87803b15801561158e575f5ffd5b505af11580156115a0573d5f5f3e3d5ffd5b50505050611670565b60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546040518363ffffffff1660e01b8152600401611642929190613a99565b5f604051808303815f87803b158015611659575f5ffd5b505af115801561166b573d5f5f3e3d5ffd5b505050505b5050565b600e5481565b61168333611ffe565b6116c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b990613a1b565b60405180910390fd5b8060185f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a5f60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6117ab33611ffe565b6117ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e190613a1b565b60405180910390fd5b60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638aee8127826040518263ffffffff1660e01b815260040161184491906137eb565b5f604051808303815f87803b15801561185b575f5ffd5b505af115801561186d573d5f5f3e3d5ffd5b5050505050565b60606040518060400160405280600681526020017f535052494e540000000000000000000000000000000000000000000000000000815250905090565b600b5481565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6118e533611ffe565b611924576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191b90613a1b565b60405180910390fd5b8060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6119ad3384846120cb565b905092915050565b6119be33611ffe565b6119fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f490613a1b565b60405180910390fd5b60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b8152600401611a59929190613ac0565b5f604051808303815f87803b158015611a70575f5ffd5b505af1158015611a82573d5f5f3e3d5ffd5b505050505050565b611a9333610fd4565b611ad2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac990613b31565b60405180910390fd5b6001805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611b5733611ffe565b611b96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8d90613a1b565b60405180910390fd5b601e811115611ba3575f5ffd5b80601181905550611bd4600a611bc66011546012546128a690919063ffffffff16565b61291d90919063ffffffff16565b60138190555050565b611be633611ffe565b611c25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1c90613a1b565b60405180910390fd5b6001601b60026101000a81548160ff021916908315150217905550565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60135481565b611c7633610fd4565b611cb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cac90613b31565b60405180910390fd5b60078111611cf8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cef90613bbf565b60405180910390fd5b80600f81905550633b9aca00600f54611d119190613c0a565b60108190555050565b5f60085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611da533610fd4565b611de4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ddb90613b31565b60405180910390fd5b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166315f7e05e336040518263ffffffff1660e01b8152600401611e9591906137eb565b5f604051808303815f87803b158015611eac575f5ffd5b505af1158015611ebe573d5f5f3e3d5ffd5b50505050565b611ecd33610fd4565b611f0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0390613b31565b60405180910390fd5b805f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051611fce9190613c6b565b60405180910390a150565b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60115481565b601b60029054906101000a900460ff1681565b5f8383111582906120b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a791906134cd565b60405180910390fd5b505f83856120be9190613c84565b9050809150509392505050565b5f60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561216a575060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156121bf57601b60029054906101000a900460ff166121be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b590613d01565b60405180910390fd5b5b601b5f9054906101000a900460ff16806121e65750601b60029054906101000a900460ff16155b156121fd576121f6848484612966565b90506127f9565b60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156122665750601b5f9054906101000a900460ff16155b801561227e5750601b60019054906101000a900460ff165b80156122c95750601c5460075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410155b156122d7576122d6612b30565b5b61235e826040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060075f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546120699092919063ffffffff16565b60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f60095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561243e575060095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b6124485782612454565b6124538585856131de565b5b90506124a68160075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461284990919063ffffffff16565b60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166125f85760195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968660075f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546040518363ffffffff1660e01b81526004016125ce929190613a99565b5f604051808303815f87803b1580156125e5575f5ffd5b505af19250505080156125f6575060015b505b600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166127095760195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968560075f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546040518363ffffffff1660e01b81526004016126df929190613a99565b5f604051808303815f87803b1580156126f6575f5ffd5b505af1925050508015612707575060015b505b60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c479601a546040518263ffffffff1660e01b81526004016127659190613444565b5f604051808303815f87803b15801561277c575f5ffd5b505af192505050801561278d575060015b508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516127eb9190613444565b60405180910390a360019150505b9392505050565b5f61284183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612069565b905092915050565b5f5f82846128579190613d1f565b90508381101561289c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289390613d9c565b60405180910390fd5b8091505092915050565b5f5f83036128b6575f9050612917565b5f82846128c39190613c0a565b90508284826128d29190613de7565b14612912576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161290990613e87565b60405180910390fd5b809150505b92915050565b5f61295e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061337f565b905092915050565b5f6129ee826040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060075f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546120699092919063ffffffff16565b60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612a7f8260075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461284990919063ffffffff16565b60075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612b1d9190613444565b60405180910390a3600190509392505050565b6001601b5f6101000a81548160ff0219169083151502179055505f60075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f612bc86002612bba601254612bac600b54876128a690919063ffffffff16565b61291d90919063ffffffff16565b61291d90919063ffffffff16565b90505f612bde828461280090919063ffffffff16565b90505f600167ffffffffffffffff811115612bfc57612bfb613ea5565b5b604051908082528060200260200182016040528015612c3557816020015b612c226133e0565b815260200190600190039081612c1a5790505b50905030815f81518110612c4c57612c4b613ed2565b5b60200260200101515f019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633fc8cef36040518163ffffffff1660e01b8152600401602060405180830381865afa158015612cf3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d179190613f13565b815f81518110612d2a57612d29613ed2565b5b60200260200101516020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f815f81518110612d7c57612d7b613ed2565b5b6020026020010151604001901515908115158152505060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637af728c8835f8430426040518663ffffffff1660e01b8152600401612df4959493929190614044565b5f604051808303815f87803b158015612e0b575f5ffd5b505af1158015612e1d573d5f5f3e3d5ffd5b505050505f4790505f612e50612e3f6002600b5461291d90919063ffffffff16565b60125461280090919063ffffffff16565b90505f612e8d6002612e7f84612e71600b54886128a690919063ffffffff16565b61291d90919063ffffffff16565b61291d90919063ffffffff16565b90505f612eb783612ea9600d54876128a690919063ffffffff16565b61291d90919063ffffffff16565b90505f612ee184612ed3600c54886128a690919063ffffffff16565b61291d90919063ffffffff16565b90505f612f0b85612efd600e54896128a690919063ffffffff16565b61291d90919063ffffffff16565b905060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0846040518263ffffffff1660e01b81526004015f604051808303818588803b158015612f74575f5ffd5b505af193505050508015612f86575060015b505f60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168361753090604051612fd1906140c9565b5f60405180830381858888f193505050503d805f811461300c576040519150601f19603f3d011682016040523d82523d5f602084013e613011565b606091505b505090505f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836175309060405161305f906140c9565b5f60405180830381858888f193505050503d805f811461309a576040519150601f19603f3d011682016040523d82523d5f602084013e61309f565b606091505b505090505f91505f90505f8b11156131b75760175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b7e0d4c087305f8f5f5f60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518963ffffffff1660e01b815260040161313997969594939291906140dd565b60606040518083038185885af1158015613155573d5f5f3e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061317a919061415e565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506868c6040516131ae929190613ac0565b60405180910390a15b5050505050505050505050505f601b5f6101000a81548160ff021916908315150217905550565b5f5f8373ffffffffffffffffffffffffffffffffffffffff1660185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461323c57601254613240565b6013545b90505f613269606461325b84876128a690919063ffffffff16565b61291d90919063ffffffff16565b90506132bb8160075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461284990919063ffffffff16565b60075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516133599190613444565b60405180910390a3613374818561280090919063ffffffff16565b925050509392505050565b5f5f831182906133c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133bc91906134cd565b60405180910390fd5b505f83856133d39190613de7565b9050809150509392505050565b60405180606001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f151581525090565b5f819050919050565b61343e8161342c565b82525050565b5f6020820190506134575f830184613435565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61349f8261345d565b6134a98185613467565b93506134b9818560208601613477565b6134c281613485565b840191505092915050565b5f6020820190508181035f8301526134e58184613495565b905092915050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61351a826134f1565b9050919050565b61352a81613510565b8114613534575f5ffd5b50565b5f8135905061354581613521565b92915050565b6135548161342c565b811461355e575f5ffd5b50565b5f8135905061356f8161354b565b92915050565b5f5f6040838503121561358b5761358a6134ed565b5b5f61359885828601613537565b92505060206135a985828601613561565b9150509250929050565b5f8115159050919050565b6135c7816135b3565b82525050565b5f6020820190506135e05f8301846135be565b92915050565b5f5f5f606084860312156135fd576135fc6134ed565b5b5f61360a86828701613537565b935050602061361b86828701613537565b925050604061362c86828701613561565b9150509250925092565b5f6020828403121561364b5761364a6134ed565b5b5f61365884828501613537565b91505092915050565b5f60ff82169050919050565b61367681613661565b82525050565b5f60208201905061368f5f83018461366d565b92915050565b5f5f5f606084860312156136ac576136ab6134ed565b5b5f6136b986828701613537565b93505060206136ca86828701613537565b92505060406136db86828701613537565b9150509250925092565b6136ee816135b3565b81146136f8575f5ffd5b50565b5f81359050613709816136e5565b92915050565b5f5f60408385031215613725576137246134ed565b5b5f613732858286016136fb565b925050602061374385828601613561565b9150509250929050565b5f60208284031215613762576137616134ed565b5b5f61376f84828501613561565b91505092915050565b5f5f5f5f608085870312156137905761378f6134ed565b5b5f61379d87828801613561565b94505060206137ae87828801613561565b93505060406137bf87828801613561565b92505060606137d087828801613561565b91505092959194509250565b6137e581613510565b82525050565b5f6020820190506137fe5f8301846137dc565b92915050565b5f5f6040838503121561381a576138196134ed565b5b5f61382785828601613537565b9250506020613838858286016136fb565b9150509250929050565b5f5f60408385031215613858576138576134ed565b5b5f61386585828601613561565b925050602061387685828601613561565b9150509250929050565b5f819050919050565b5f6138a361389e613899846134f1565b613880565b6134f1565b9050919050565b5f6138b482613889565b9050919050565b5f6138c5826138aa565b9050919050565b6138d5816138bb565b82525050565b5f6020820190506138ee5f8301846138cc565b92915050565b5f5f6040838503121561390a576139096134ed565b5b5f61391785828601613537565b925050602061392885828601613537565b9150509250929050565b5f61393c826134f1565b9050919050565b61394c81613932565b8114613956575f5ffd5b50565b5f8135905061396781613943565b92915050565b5f60208284031215613982576139816134ed565b5b5f61398f84828501613959565b91505092915050565b5f6139a2826138aa565b9050919050565b6139b281613998565b82525050565b5f6020820190506139cb5f8301846139a9565b92915050565b7f21415554484f52495a45440000000000000000000000000000000000000000005f82015250565b5f613a05600b83613467565b9150613a10826139d1565b602082019050919050565b5f6020820190508181035f830152613a32816139f9565b9050919050565b5f819050919050565b5f613a5c613a57613a5284613a39565b613880565b61342c565b9050919050565b613a6c81613a42565b82525050565b5f604082019050613a855f8301856137dc565b613a926020830184613a63565b9392505050565b5f604082019050613aac5f8301856137dc565b613ab96020830184613435565b9392505050565b5f604082019050613ad35f830185613435565b613ae06020830184613435565b9392505050565b7f214f574e455200000000000000000000000000000000000000000000000000005f82015250565b5f613b1b600683613467565b9150613b2682613ae7565b602082019050919050565b5f6020820190508181035f830152613b4881613b0f565b9050919050565b7f4d617820676173206d75737420626520686967686572207468616e20372067775f8201527f6569000000000000000000000000000000000000000000000000000000000000602082015250565b5f613ba9602283613467565b9150613bb482613b4f565b604082019050919050565b5f6020820190508181035f830152613bd681613b9d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613c148261342c565b9150613c1f8361342c565b9250828202613c2d8161342c565b91508282048414831517613c4457613c43613bdd565b5b5092915050565b5f613c55826138aa565b9050919050565b613c6581613c4b565b82525050565b5f602082019050613c7e5f830184613c5c565b92915050565b5f613c8e8261342c565b9150613c998361342c565b9250828203905081811115613cb157613cb0613bdd565b5b92915050565b7f54726164696e67206e6f74206f70656e207965740000000000000000000000005f82015250565b5f613ceb601483613467565b9150613cf682613cb7565b602082019050919050565b5f6020820190508181035f830152613d1881613cdf565b9050919050565b5f613d298261342c565b9150613d348361342c565b9250828201905080821115613d4c57613d4b613bdd565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613d86601b83613467565b9150613d9182613d52565b602082019050919050565b5f6020820190508181035f830152613db381613d7a565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613df18261342c565b9150613dfc8361342c565b925082613e0c57613e0b613dba565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613e71602183613467565b9150613e7c82613e17565b604082019050919050565b5f6020820190508181035f830152613e9e81613e65565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050613f0d81613521565b92915050565b5f60208284031215613f2857613f276134ed565b5b5f613f3584828501613eff565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613f7081613510565b82525050565b613f7f816135b3565b82525050565b606082015f820151613f995f850182613f67565b506020820151613fac6020850182613f67565b506040820151613fbf6040850182613f76565b50505050565b5f613fd08383613f85565b60608301905092915050565b5f602082019050919050565b5f613ff282613f3e565b613ffc8185613f48565b935061400783613f58565b805f5b8381101561403757815161401e8882613fc5565b975061402983613fdc565b92505060018101905061400a565b5085935050505092915050565b5f60a0820190506140575f830188613435565b6140646020830187613a63565b81810360408301526140768186613fe8565b905061408560608301856137dc565b6140926080830184613435565b9695505050505050565b5f81905092915050565b50565b5f6140b45f8361409c565b91506140bf826140a6565b5f82019050919050565b5f6140d3826140a9565b9150819050919050565b5f60e0820190506140f05f83018a6137dc565b6140fd60208301896135be565b61410a6040830188613435565b6141176060830187613a63565b6141246080830186613a63565b61413160a08301856137dc565b61413e60c0830184613435565b98975050505050505050565b5f815190506141588161354b565b92915050565b5f5f5f60608486031215614175576141746134ed565b5b5f6141828682870161414a565b93505060206141938682870161414a565b92505060406141a48682870161414a565b915050925092509256fea26469706673582212207ebf8b5cc532890aa1a228e58112a7f9a5160edde7845f1126c70b1f482bd4ee64736f6c634300081c0033

Deployed Bytecode Sourcemap

11803:11511:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13345:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14841:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15685:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15103:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12868:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12761:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13223:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18516:378;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15283:142;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12650:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11052:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15017:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17347:285;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12722:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17640:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12465:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12516:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18056:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13258:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15909:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13176:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16892:447;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12612:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15433:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12990:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16508:376;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12686:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14709:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15197:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18207:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14927:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12574:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13027:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16377:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13095:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18352:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17848:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10725:94;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13123:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16149:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18902:80;;;;;;;;;;;;;:::i;:::-;;12947:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12902;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21122:206;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15544:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10895:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16043:98;;;;;;;;;;;;;:::i;:::-;;11424:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13064:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11226:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12825:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13305:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13345:49;;;;:::o;14841:80::-;14889:13;14913:5;;;;;;;;;;;;;;;;;14906:12;;14841:80;:::o;15685:216::-;15760:4;15812:6;15777:11;:23;15789:10;15777:23;;;;;;;;;;;;;;;:32;15801:7;15777:32;;;;;;;;;;;;;;;:41;;;;15855:7;15834:37;;15843:10;15834:37;;;15864:6;15834:37;;;;;;:::i;:::-;;;;;;;;15889:4;15882:11;;15685:216;;;;:::o;15103:88::-;15158:7;15176:12;;15169:19;;15103:88;:::o;12868:27::-;;;;:::o;12761:56::-;;;;:::o;13223:28::-;;;;;;;;;;;;;:::o;18516:378::-;18616:4;18681:17;18646:11;:19;18658:6;18646:19;;;;;;;;;;;;;;;:31;18666:10;18646:31;;;;;;;;;;;;;;;;:52;18643:186;;18748:69;18784:6;18748:69;;;;;;;;;;;;;;;;;:11;:19;18760:6;18748:19;;;;;;;;;;;;;;;:31;18768:10;18748:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;18714:11;:19;18726:6;18714:19;;;;;;;;;;;;;;;:31;18734:10;18714:31;;;;;;;;;;;;;;;:103;;;;18643:186;18846:40;18860:6;18868:9;18879:6;18846:13;:40::i;:::-;18839:47;;18516:378;;;;;:::o;15283:142::-;15336:7;15363:54;15401:15;15411:4;;;;;;;;;;;15401:9;:15::i;:::-;15363:33;15380:15;15390:4;;;;;;;;;;;15380:9;:15::i;:::-;15363:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;15356:61;;15283:142;:::o;12650:29::-;;;;:::o;11052:103::-;11107:4;11142:5;;;;;;;;;;;11131:16;;:7;:16;;;11124:23;;11052:103;;;:::o;15017:80::-;15069:5;11999:2;15078:16;;15017:80;:::o;17347:285::-;10610:24;10623:10;10610:12;:24::i;:::-;10602:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;17514:20:::1;17490:21;;:44;;;;;;;;;;;;;;;;;;17563:18;17545:15;;:36;;;;;;;;;;;;;;;;;;17608:16;17592:13;;:32;;;;;;;;;;;;;;;;;;17347:285:::0;;;:::o;12722:32::-;;;;:::o;17640:200::-;10610:24;10623:10;10610:12;:24::i;:::-;10602:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;17775:14:::1;17750:21;;:39;;;;;;;;;;;;;;;;;;17816:16;17800:13;:32;;;;17640:200:::0;;:::o;12465:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;12516:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;18056:139::-;10610:24;10623:10;10610:12;:24::i;:::-;10602:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;18149:6:::1;18143:3;:12;18135:21;;;;;;18184:3;18167:14;:20;;;;18056:139:::0;:::o;13258:40::-;;;;;;;;;;;;;:::o;15909:122::-;15964:4;15988:35;15996:7;16005:17;15988:7;:35::i;:::-;15981:42;;15909:122;;;:::o;13176:38::-;;;;:::o;16892:447::-;10610:24;10623:10;10610:12;:24::i;:::-;10602:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;17047:9:::1;17032:12;:24;;;;17080:12;17067:10;:25;;;;17118:15;17103:12;:30;;;;17157:13;17144:10;:26;;;;17202:62;17253:10;;17202:46;17237:10;;17202:30;17219:12;;17202;;:16;;:30;;;;:::i;:::-;:34;;:46;;;;:::i;:::-;:50;;:62;;;;:::i;:::-;17191:8;:73;;;;17295:36;17328:2;17295:28;17308:14;;17295:8;;:12;;:28;;;;:::i;:::-;:32;;:36;;;;:::i;:::-;17275:17;:56;;;;16892:447:::0;;;;:::o;12612:31::-;;;;:::o;15433:105::-;15499:7;15517:9;:18;15527:7;15517:18;;;;;;;;;;;;;;;;15510:25;;15433:105;;;:::o;12990:30::-;;;;;;;;;;;;;:::o;16508:376::-;10610:24;10623:10;10610:12;:24::i;:::-;10602:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;16626:4:::1;16608:23;;:6;:23;;;;:41;;;;;16645:4;;;;;;;;;;;16635:14;;:6;:14;;;;16608:41;16600:50;;;;;;16688:6;16661:16;:24;16678:6;16661:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;16718:6;16715:162;;;16740:19;;;;;;;;;;;:28;;;16769:6;16777:1;16740:39;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16715:162;;;16810:19;;;;;;;;;;;:28;;;16839:6;16847:9;:17;16857:6;16847:17;;;;;;;;;;;;;;;;16810:55;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16715:162;16508:376:::0;;:::o;12686:29::-;;;;:::o;14709:124::-;10610:24;10623:10;10610:12;:24::i;:::-;10602:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;14778:5:::1;14771:4;;:12;;;;;;;;;;;;;;;;;;14821:4;14796:16;:22;14813:4;;;;;;;;;;;14796:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;14709:124:::0;:::o;15197:78::-;15249:7;15267:5;;;;;;;;;;;15260:12;;15197:78;:::o;18207:133::-;10610:24;10623:10;10610:12;:24::i;:::-;10602:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;18284:19:::1;;;;;;;;;;;:34;;;18319:12;18284:48;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18207:133:::0;:::o;14927:84::-;14977:13;15001:7;;;;;;;;;;;;;;;;;14994:14;;14927:84;:::o;12574:31::-;;;;:::o;13027:28::-;;;;;;;;;;;;;:::o;16377:123::-;10610:24;10623:10;10610:12;:24::i;:::-;10602:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;16486:6:::1;16464:11;:19;16476:6;16464:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;16377:123:::0;;:::o;13095:19::-;;;;;;;;;;;;;:::o;18352:156::-;18432:4;18456:44;18470:10;18482:9;18493:6;18456:13;:44::i;:::-;18449:51;;18352:156;;;;:::o;17848:200::-;10610:24;10623:10;10610:12;:24::i;:::-;10602:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;17964:19:::1;;;;;;;;;;;:43;;;18008:11;18021:18;17964:76;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17848:200:::0;;:::o;10725:94::-;10441:19;10449:10;10441:7;:19::i;:::-;10433:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10807:4:::1;10785:14:::0;:19:::1;10800:3;10785:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;10725:94:::0;:::o;13123:46::-;;;;;;;;;;;;;:::o;16149:208::-;10610:24;10623:10;10610:12;:24::i;:::-;10602:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;16243:2:::1;16231:8;:14;;16223:23;;;;;;16274:8;16257:14;:25;;;;16313:36;16346:2;16313:28;16326:14;;16313:8;;:12;;:28;;;;:::i;:::-;:32;;:36;;;;:::i;:::-;16293:17;:56;;;;16149:208:::0;:::o;18902:80::-;10610:24;10623:10;10610:12;:24::i;:::-;10602:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;18970:4:::1;18956:11;;:18;;;;;;;;;;;;;;;;;;18902:80::o:0;12947:36::-;;;;;;;;;;;;;:::o;12902:::-;;;;:::o;21122:206::-;10441:19;10449:10;10441:7;:19::i;:::-;10433:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;21197:1:::1;21191:3;:7;21183:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;21264:3;21248:15;:19;;;;21313:6;21295:15;;:24;;;;:::i;:::-;21278:14;:41;;;;21122:206:::0;:::o;15544:133::-;15628:7;15646:11;:19;15658:6;15646:19;;;;;;;;;;;;;;;:28;15666:7;15646:28;;;;;;;;;;;;;;;;15639:35;;15544:133;;;;:::o;10895:97::-;10441:19;10449:10;10441:7;:19::i;:::-;10433:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10979:5:::1;10957:14;:19;10972:3;10957:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;10895:97:::0;:::o;16043:98::-;16088:19;;;;;;;;;;;:33;;;16122:10;16088:45;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16043:98::o;11424:173::-;10441:19;10449:10;10441:7;:19::i;:::-;10433:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;11508:3:::1;11500:5;;:11;;;;;;;;;;;;;;;;;;11544:4;11522:14:::0;:19:::1;11537:3;11522:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;11564:25;11585:3;11564:25;;;;;;:::i;:::-;;;;;;;;11424:173:::0;:::o;13064:24::-;;;;;;;;;;;;;:::o;11226:107::-;11282:4;11306:14;:19;11321:3;11306:19;;;;;;;;;;;;;;;;;;;;;;;;;11299:26;;11226:107;;;:::o;12825:34::-;;;;:::o;13305:31::-;;;;;;;;;;;;;:::o;417:190::-;503:7;536:1;531;:6;;539:12;523:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;563:9;579:1;575;:5;;;;:::i;:::-;563:17;;598:1;591:8;;;417:190;;;;;:::o;18988:1337::-;19080:4;19101:14;:22;19116:6;19101:22;;;;;;;;;;;;;;;;;;;;;;;;;19100:23;:53;;;;;19128:14;:25;19143:9;19128:25;;;;;;;;;;;;;;;;;;;;;;;;;19127:26;19100:53;19097:128;;;19177:11;;;;;;;;;;;19169:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;19097:128;19248:16;;;;;;;;;;;:32;;;;19269:11;;;;;;;;;;;19268:12;19248:32;19245:113;;;19304:41;19319:6;19327:9;19338:6;19304:14;:41::i;:::-;19297:48;;;;19245:113;19387:4;;;;;;;;;;;19373:18;;:10;:18;;;;:39;;;;;19396:16;;;;;;;;;;;19395:17;19373:39;:64;;;;;19416:21;;;;;;;;;;;19373:64;:109;;;;;19469:13;;19441:9;:24;19459:4;19441:24;;;;;;;;;;;;;;;;:41;;19373:109;19370:152;;;19499:10;:8;:10::i;:::-;19370:152;19589:53;19611:6;19589:53;;;;;;;;;;;;;;;;;:9;:17;19599:6;19589:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;19569:9;:17;19579:6;19569:17;;;;;;;;;;;;;;;:73;;;;19663:19;19686:11;:19;19698:6;19686:19;;;;;;;;;;;;;;;;;;;;;;;;;19685:20;:47;;;;;19710:11;:22;19722:9;19710:22;;;;;;;;;;;;;;;;;;;;;;;;;19709:23;19685:47;:93;;19772:6;19685:93;;;19735:34;19743:6;19751:9;19762:6;19735:7;:34::i;:::-;19685:93;19663:115;;19812:37;19837:11;19812:9;:20;19822:9;19812:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;19789:9;:20;19799:9;19789:20;;;;;;;;;;;;;;;:60;;;;19895:16;:24;19912:6;19895:24;;;;;;;;;;;;;;;;;;;;;;;;;19891:127;;19940:19;;;;;;;;;;;:28;;;19969:6;19977:9;:17;19987:6;19977:17;;;;;;;;;;;;;;;;19940:55;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19936:71;19891:127;20034:16;:27;20051:9;20034:27;;;;;;;;;;;;;;;;;;;;;;;;;20030:137;;20082:19;;;;;;;;;;;:28;;;20111:9;20122;:20;20132:9;20122:20;;;;;;;;;;;;;;;;20082:61;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20078:77;20030:137;20183:19;;;;;;;;;;;:27;;;20211:14;;20183:43;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20179:59;20272:9;20255:40;;20264:6;20255:40;;;20283:11;20255:40;;;;;;:::i;:::-;;;;;;;;20313:4;20306:11;;;18988:1337;;;;;;:::o;273:136::-;331:7;358:43;362:1;365;358:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;351:50;;273:136;;;;:::o;86:179::-;144:7;164:9;180:1;176;:5;;;;:::i;:::-;164:17;;205:1;200;:6;;192:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;256:1;249:8;;;86:179;;;;:::o;615:224::-;673:7;702:1;697;:6;693:25;;714:1;707:8;;;;693:25;728:9;744:1;740;:5;;;;:::i;:::-;728:17;;773:1;768;764;:5;;;;:::i;:::-;:10;756:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;830:1;823:8;;;615:224;;;;;:::o;847:132::-;905:7;932:39;936:1;939;932:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;925:46;;847:132;;;;:::o;20337:330::-;20430:4;20467:53;20489:6;20467:53;;;;;;;;;;;;;;;;;:9;:17;20477:6;20467:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;20447:9;:17;20457:6;20447:17;;;;;;;;;;;;;;;:73;;;;20554:32;20579:6;20554:9;:20;20564:9;20554:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;20531:9;:20;20541:9;20531:20;;;;;;;;;;;;;;;:55;;;;20619:9;20602:35;;20611:6;20602:35;;;20630:6;20602:35;;;;;;:::i;:::-;;;;;;;;20655:4;20648:11;;20337:330;;;;;:::o;21336:1909::-;13458:4;13439:16;;:23;;;;;;;;;;;;;;;;;;21398::::1;21424:9;:24;21442:4;21424:24;;;;;;;;;;;;;;;;21398:50;;21459:23;21485:54;21537:1;21485:47;21523:8;;21485:33;21505:12;;21485:15;:19;;:33;;;;:::i;:::-;:37;;:47;;;;:::i;:::-;:51;;:54;;;;:::i;:::-;21459:80;;21550:20;21573:36;21593:15;21573;:19;;:36;;;;:::i;:::-;21550:59;;21622:19;21656:1;21644:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;21622:36;;21692:4;21669;21674:1;21669:7;;;;;;;;:::i;:::-;;;;;;;;:12;;:28;;;;;;;;;::::0;::::1;21721:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21708:4;21713:1;21708:7;;;;;;;;:::i;:::-;;;;;;;;:10;;:26;;;;;;;;;::::0;::::1;21762:5;21745:4;21750:1;21745:7;;;;;;;;:::i;:::-;;;;;;;;:14;;:22;;;;;;;;;::::0;::::1;21780:6;;;;;;;;;;;:57;;;21852:12;21879:1;21895:4;21922;21942:15;21780:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21981:17;22001:21;21981:41;;22035:19;22057:33;22070:19;22087:1;22070:12;;:16;;:19;;;;:::i;:::-;22057:8;;:12;;:33;;;;:::i;:::-;22035:55;;22111:26;22140:51;22189:1;22140:44;22172:11;22140:27;22154:12;;22140:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;:48;;:51;;;;:::i;:::-;22111:80;;22202:27;22232:42;22262:11;22232:25;22246:10;;22232:9;:13;;:25;;;;:::i;:::-;:29;;:42;;;;:::i;:::-;22202:72;;22285:26;22314:44;22346:11;22314:27;22328:12;;22314:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;22285:73;;22369:24;22396:42;22426:11;22396:25;22410:10;;22396:9;:13;;:25;;;;:::i;:::-;:29;;:42;;;;:::i;:::-;22369:69;;22455:19;;;;;;;;;;;:27;;;22490:19;22455:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22451:73:::0;22537:15:::1;22565;;;;;;;;;;;22557:29;;22594:18;22619:5;22557:72;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22536:93;;;22641:16;22670:13;;;;;;;;;;;22662:27;;22697:16;22720:5;22662:68;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22640:90;;;22804:5;22791:18;;22834:5;22820:19;;22873:1;22855:15;:19;22852:386;;;22890:6;;;;;;;;;;;:22;;;22920:18;22966:4;22990:5;23014:15;23048:1;23068;23088:21;;;;;;;;;;;23128:15;22890:268;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;23178:48;23190:18;23210:15;23178:48;;;;;;;:::i;:::-;;;;;;;;22852:386;21377:1868;;;;;;;;;;;;13504:5:::0;13485:16;;:24;;;;;;;;;;;;;;;;;;21336:1909::o;20675:439::-;20761:7;20791:21;20823:9;20815:17;;:4;;;;;;;;;;;:17;;;:48;;20855:8;;20815:48;;;20835:17;;20815:48;20791:72;;20874:17;20894:34;20924:3;20894:25;20905:13;20894:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;20874:54;;20968:39;20997:9;20968;:24;20986:4;20968:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;20941:9;:24;20959:4;20941:24;;;;;;;;;;;;;;;:66;;;;21048:4;21023:42;;21032:6;21023:42;;;21055:9;21023:42;;;;;;:::i;:::-;;;;;;;;21085:21;21096:9;21085:6;:10;;:21;;;;:::i;:::-;21078:28;;;;20675:439;;;;;:::o;987:189::-;1073:7;1105:1;1101;:5;1108:12;1093:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1132:9;1148:1;1144;:5;;;;:::i;:::-;1132:17;;1167:1;1160:8;;;987:189;;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:139::-;811:6;806:3;801;795:23;852:1;843:6;838:3;834:16;827:27;722:139;;;:::o;867:102::-;908:6;959:2;955:7;950:2;943:5;939:14;935:28;925:38;;867:102;;;:::o;975:377::-;1063:3;1091:39;1124:5;1091:39;:::i;:::-;1146:71;1210:6;1205:3;1146:71;:::i;:::-;1139:78;;1226:65;1284:6;1279:3;1272:4;1265:5;1261:16;1226:65;:::i;:::-;1316:29;1338:6;1316:29;:::i;:::-;1311:3;1307:39;1300:46;;1067:285;975:377;;;;:::o;1358:313::-;1471:4;1509:2;1498:9;1494:18;1486:26;;1558:9;1552:4;1548:20;1544:1;1533:9;1529:17;1522:47;1586:78;1659:4;1650:6;1586:78;:::i;:::-;1578:86;;1358:313;;;;:::o;1758:117::-;1867:1;1864;1857:12;2004:126;2041:7;2081:42;2074:5;2070:54;2059:65;;2004:126;;;:::o;2136:96::-;2173:7;2202:24;2220:5;2202:24;:::i;:::-;2191:35;;2136:96;;;:::o;2238:122::-;2311:24;2329:5;2311:24;:::i;:::-;2304:5;2301:35;2291:63;;2350:1;2347;2340:12;2291:63;2238:122;:::o;2366:139::-;2412:5;2450:6;2437:20;2428:29;;2466:33;2493:5;2466:33;:::i;:::-;2366:139;;;;:::o;2511:122::-;2584:24;2602:5;2584:24;:::i;:::-;2577:5;2574:35;2564:63;;2623:1;2620;2613:12;2564:63;2511:122;:::o;2639:139::-;2685:5;2723:6;2710:20;2701:29;;2739:33;2766:5;2739:33;:::i;:::-;2639:139;;;;:::o;2784:474::-;2852:6;2860;2909:2;2897:9;2888:7;2884:23;2880:32;2877:119;;;2915:79;;:::i;:::-;2877:119;3035:1;3060:53;3105:7;3096:6;3085:9;3081:22;3060:53;:::i;:::-;3050:63;;3006:117;3162:2;3188:53;3233:7;3224:6;3213:9;3209:22;3188:53;:::i;:::-;3178:63;;3133:118;2784:474;;;;;:::o;3264:90::-;3298:7;3341:5;3334:13;3327:21;3316:32;;3264:90;;;:::o;3360:109::-;3441:21;3456:5;3441:21;:::i;:::-;3436:3;3429:34;3360:109;;:::o;3475:210::-;3562:4;3600:2;3589:9;3585:18;3577:26;;3613:65;3675:1;3664:9;3660:17;3651:6;3613:65;:::i;:::-;3475:210;;;;:::o;3691:619::-;3768:6;3776;3784;3833:2;3821:9;3812:7;3808:23;3804:32;3801:119;;;3839:79;;:::i;:::-;3801:119;3959:1;3984:53;4029:7;4020:6;4009:9;4005:22;3984:53;:::i;:::-;3974:63;;3930:117;4086:2;4112:53;4157:7;4148:6;4137:9;4133:22;4112:53;:::i;:::-;4102:63;;4057:118;4214:2;4240:53;4285:7;4276:6;4265:9;4261:22;4240:53;:::i;:::-;4230:63;;4185:118;3691:619;;;;;:::o;4316:329::-;4375:6;4424:2;4412:9;4403:7;4399:23;4395:32;4392:119;;;4430:79;;:::i;:::-;4392:119;4550:1;4575:53;4620:7;4611:6;4600:9;4596:22;4575:53;:::i;:::-;4565:63;;4521:117;4316:329;;;;:::o;4651:86::-;4686:7;4726:4;4719:5;4715:16;4704:27;;4651:86;;;:::o;4743:112::-;4826:22;4842:5;4826:22;:::i;:::-;4821:3;4814:35;4743:112;;:::o;4861:214::-;4950:4;4988:2;4977:9;4973:18;4965:26;;5001:67;5065:1;5054:9;5050:17;5041:6;5001:67;:::i;:::-;4861:214;;;;:::o;5081:619::-;5158:6;5166;5174;5223:2;5211:9;5202:7;5198:23;5194:32;5191:119;;;5229:79;;:::i;:::-;5191:119;5349:1;5374:53;5419:7;5410:6;5399:9;5395:22;5374:53;:::i;:::-;5364:63;;5320:117;5476:2;5502:53;5547:7;5538:6;5527:9;5523:22;5502:53;:::i;:::-;5492:63;;5447:118;5604:2;5630:53;5675:7;5666:6;5655:9;5651:22;5630:53;:::i;:::-;5620:63;;5575:118;5081:619;;;;;:::o;5706:116::-;5776:21;5791:5;5776:21;:::i;:::-;5769:5;5766:32;5756:60;;5812:1;5809;5802:12;5756:60;5706:116;:::o;5828:133::-;5871:5;5909:6;5896:20;5887:29;;5925:30;5949:5;5925:30;:::i;:::-;5828:133;;;;:::o;5967:468::-;6032:6;6040;6089:2;6077:9;6068:7;6064:23;6060:32;6057:119;;;6095:79;;:::i;:::-;6057:119;6215:1;6240:50;6282:7;6273:6;6262:9;6258:22;6240:50;:::i;:::-;6230:60;;6186:114;6339:2;6365:53;6410:7;6401:6;6390:9;6386:22;6365:53;:::i;:::-;6355:63;;6310:118;5967:468;;;;;:::o;6441:329::-;6500:6;6549:2;6537:9;6528:7;6524:23;6520:32;6517:119;;;6555:79;;:::i;:::-;6517:119;6675:1;6700:53;6745:7;6736:6;6725:9;6721:22;6700:53;:::i;:::-;6690:63;;6646:117;6441:329;;;;:::o;6776:765::-;6862:6;6870;6878;6886;6935:3;6923:9;6914:7;6910:23;6906:33;6903:120;;;6942:79;;:::i;:::-;6903:120;7062:1;7087:53;7132:7;7123:6;7112:9;7108:22;7087:53;:::i;:::-;7077:63;;7033:117;7189:2;7215:53;7260:7;7251:6;7240:9;7236:22;7215:53;:::i;:::-;7205:63;;7160:118;7317:2;7343:53;7388:7;7379:6;7368:9;7364:22;7343:53;:::i;:::-;7333:63;;7288:118;7445:2;7471:53;7516:7;7507:6;7496:9;7492:22;7471:53;:::i;:::-;7461:63;;7416:118;6776:765;;;;;;;:::o;7547:118::-;7634:24;7652:5;7634:24;:::i;:::-;7629:3;7622:37;7547:118;;:::o;7671:222::-;7764:4;7802:2;7791:9;7787:18;7779:26;;7815:71;7883:1;7872:9;7868:17;7859:6;7815:71;:::i;:::-;7671:222;;;;:::o;7899:468::-;7964:6;7972;8021:2;8009:9;8000:7;7996:23;7992:32;7989:119;;;8027:79;;:::i;:::-;7989:119;8147:1;8172:53;8217:7;8208:6;8197:9;8193:22;8172:53;:::i;:::-;8162:63;;8118:117;8274:2;8300:50;8342:7;8333:6;8322:9;8318:22;8300:50;:::i;:::-;8290:60;;8245:115;7899:468;;;;;:::o;8373:474::-;8441:6;8449;8498:2;8486:9;8477:7;8473:23;8469:32;8466:119;;;8504:79;;:::i;:::-;8466:119;8624:1;8649:53;8694:7;8685:6;8674:9;8670:22;8649:53;:::i;:::-;8639:63;;8595:117;8751:2;8777:53;8822:7;8813:6;8802:9;8798:22;8777:53;:::i;:::-;8767:63;;8722:118;8373:474;;;;;:::o;8853:60::-;8881:3;8902:5;8895:12;;8853:60;;;:::o;8919:142::-;8969:9;9002:53;9020:34;9029:24;9047:5;9029:24;:::i;:::-;9020:34;:::i;:::-;9002:53;:::i;:::-;8989:66;;8919:142;;;:::o;9067:126::-;9117:9;9150:37;9181:5;9150:37;:::i;:::-;9137:50;;9067:126;;;:::o;9199:154::-;9277:9;9310:37;9341:5;9310:37;:::i;:::-;9297:50;;9199:154;;;:::o;9359:187::-;9474:65;9533:5;9474:65;:::i;:::-;9469:3;9462:78;9359:187;;:::o;9552:278::-;9673:4;9711:2;9700:9;9696:18;9688:26;;9724:99;9820:1;9809:9;9805:17;9796:6;9724:99;:::i;:::-;9552:278;;;;:::o;9836:474::-;9904:6;9912;9961:2;9949:9;9940:7;9936:23;9932:32;9929:119;;;9967:79;;:::i;:::-;9929:119;10087:1;10112:53;10157:7;10148:6;10137:9;10133:22;10112:53;:::i;:::-;10102:63;;10058:117;10214:2;10240:53;10285:7;10276:6;10265:9;10261:22;10240:53;:::i;:::-;10230:63;;10185:118;9836:474;;;;;:::o;10316:104::-;10361:7;10390:24;10408:5;10390:24;:::i;:::-;10379:35;;10316:104;;;:::o;10426:138::-;10507:32;10533:5;10507:32;:::i;:::-;10500:5;10497:43;10487:71;;10554:1;10551;10544:12;10487:71;10426:138;:::o;10570:155::-;10624:5;10662:6;10649:20;10640:29;;10678:41;10713:5;10678:41;:::i;:::-;10570:155;;;;:::o;10731:345::-;10798:6;10847:2;10835:9;10826:7;10822:23;10818:32;10815:119;;;10853:79;;:::i;:::-;10815:119;10973:1;10998:61;11051:7;11042:6;11031:9;11027:22;10998:61;:::i;:::-;10988:71;;10944:125;10731:345;;;;:::o;11082:144::-;11150:9;11183:37;11214:5;11183:37;:::i;:::-;11170:50;;11082:144;;;:::o;11232:167::-;11337:55;11386:5;11337:55;:::i;:::-;11332:3;11325:68;11232:167;;:::o;11405:258::-;11516:4;11554:2;11543:9;11539:18;11531:26;;11567:89;11653:1;11642:9;11638:17;11629:6;11567:89;:::i;:::-;11405:258;;;;:::o;11669:161::-;11809:13;11805:1;11797:6;11793:14;11786:37;11669:161;:::o;11836:366::-;11978:3;11999:67;12063:2;12058:3;11999:67;:::i;:::-;11992:74;;12075:93;12164:3;12075:93;:::i;:::-;12193:2;12188:3;12184:12;12177:19;;11836:366;;;:::o;12208:419::-;12374:4;12412:2;12401:9;12397:18;12389:26;;12461:9;12455:4;12451:20;12447:1;12436:9;12432:17;12425:47;12489:131;12615:4;12489:131;:::i;:::-;12481:139;;12208:419;;;:::o;12633:85::-;12678:7;12707:5;12696:16;;12633:85;;;:::o;12724:158::-;12782:9;12815:61;12833:42;12842:32;12868:5;12842:32;:::i;:::-;12833:42;:::i;:::-;12815:61;:::i;:::-;12802:74;;12724:158;;;:::o;12888:147::-;12983:45;13022:5;12983:45;:::i;:::-;12978:3;12971:58;12888:147;;:::o;13041:348::-;13170:4;13208:2;13197:9;13193:18;13185:26;;13221:71;13289:1;13278:9;13274:17;13265:6;13221:71;:::i;:::-;13302:80;13378:2;13367:9;13363:18;13354:6;13302:80;:::i;:::-;13041:348;;;;;:::o;13395:332::-;13516:4;13554:2;13543:9;13539:18;13531:26;;13567:71;13635:1;13624:9;13620:17;13611:6;13567:71;:::i;:::-;13648:72;13716:2;13705:9;13701:18;13692:6;13648:72;:::i;:::-;13395:332;;;;;:::o;13733:::-;13854:4;13892:2;13881:9;13877:18;13869:26;;13905:71;13973:1;13962:9;13958:17;13949:6;13905:71;:::i;:::-;13986:72;14054:2;14043:9;14039:18;14030:6;13986:72;:::i;:::-;13733:332;;;;;:::o;14071:156::-;14211:8;14207:1;14199:6;14195:14;14188:32;14071:156;:::o;14233:365::-;14375:3;14396:66;14460:1;14455:3;14396:66;:::i;:::-;14389:73;;14471:93;14560:3;14471:93;:::i;:::-;14589:2;14584:3;14580:12;14573:19;;14233:365;;;:::o;14604:419::-;14770:4;14808:2;14797:9;14793:18;14785:26;;14857:9;14851:4;14847:20;14843:1;14832:9;14828:17;14821:47;14885:131;15011:4;14885:131;:::i;:::-;14877:139;;14604:419;;;:::o;15029:221::-;15169:34;15165:1;15157:6;15153:14;15146:58;15238:4;15233:2;15225:6;15221:15;15214:29;15029:221;:::o;15256:366::-;15398:3;15419:67;15483:2;15478:3;15419:67;:::i;:::-;15412:74;;15495:93;15584:3;15495:93;:::i;:::-;15613:2;15608:3;15604:12;15597:19;;15256:366;;;:::o;15628:419::-;15794:4;15832:2;15821:9;15817:18;15809:26;;15881:9;15875:4;15871:20;15867:1;15856:9;15852:17;15845:47;15909:131;16035:4;15909:131;:::i;:::-;15901:139;;15628:419;;;:::o;16053:180::-;16101:77;16098:1;16091:88;16198:4;16195:1;16188:15;16222:4;16219:1;16212:15;16239:410;16279:7;16302:20;16320:1;16302:20;:::i;:::-;16297:25;;16336:20;16354:1;16336:20;:::i;:::-;16331:25;;16391:1;16388;16384:9;16413:30;16431:11;16413:30;:::i;:::-;16402:41;;16592:1;16583:7;16579:15;16576:1;16573:22;16553:1;16546:9;16526:83;16503:139;;16622:18;;:::i;:::-;16503:139;16287:362;16239:410;;;;:::o;16655:134::-;16713:9;16746:37;16777:5;16746:37;:::i;:::-;16733:50;;16655:134;;;:::o;16795:147::-;16890:45;16929:5;16890:45;:::i;:::-;16885:3;16878:58;16795:147;;:::o;16948:238::-;17049:4;17087:2;17076:9;17072:18;17064:26;;17100:79;17176:1;17165:9;17161:17;17152:6;17100:79;:::i;:::-;16948:238;;;;:::o;17192:194::-;17232:4;17252:20;17270:1;17252:20;:::i;:::-;17247:25;;17286:20;17304:1;17286:20;:::i;:::-;17281:25;;17330:1;17327;17323:9;17315:17;;17354:1;17348:4;17345:11;17342:37;;;17359:18;;:::i;:::-;17342:37;17192:194;;;;:::o;17392:170::-;17532:22;17528:1;17520:6;17516:14;17509:46;17392:170;:::o;17568:366::-;17710:3;17731:67;17795:2;17790:3;17731:67;:::i;:::-;17724:74;;17807:93;17896:3;17807:93;:::i;:::-;17925:2;17920:3;17916:12;17909:19;;17568:366;;;:::o;17940:419::-;18106:4;18144:2;18133:9;18129:18;18121:26;;18193:9;18187:4;18183:20;18179:1;18168:9;18164:17;18157:47;18221:131;18347:4;18221:131;:::i;:::-;18213:139;;17940:419;;;:::o;18365:191::-;18405:3;18424:20;18442:1;18424:20;:::i;:::-;18419:25;;18458:20;18476:1;18458:20;:::i;:::-;18453:25;;18501:1;18498;18494:9;18487:16;;18522:3;18519:1;18516:10;18513:36;;;18529:18;;:::i;:::-;18513:36;18365:191;;;;:::o;18562:177::-;18702:29;18698:1;18690:6;18686:14;18679:53;18562:177;:::o;18745:366::-;18887:3;18908:67;18972:2;18967:3;18908:67;:::i;:::-;18901:74;;18984:93;19073:3;18984:93;:::i;:::-;19102:2;19097:3;19093:12;19086:19;;18745:366;;;:::o;19117:419::-;19283:4;19321:2;19310:9;19306:18;19298:26;;19370:9;19364:4;19360:20;19356:1;19345:9;19341:17;19334:47;19398:131;19524:4;19398:131;:::i;:::-;19390:139;;19117:419;;;:::o;19542:180::-;19590:77;19587:1;19580:88;19687:4;19684:1;19677:15;19711:4;19708:1;19701:15;19728:185;19768:1;19785:20;19803:1;19785:20;:::i;:::-;19780:25;;19819:20;19837:1;19819:20;:::i;:::-;19814:25;;19858:1;19848:35;;19863:18;;:::i;:::-;19848:35;19905:1;19902;19898:9;19893:14;;19728:185;;;;:::o;19919:220::-;20059:34;20055:1;20047:6;20043:14;20036:58;20128:3;20123:2;20115:6;20111:15;20104:28;19919:220;:::o;20145:366::-;20287:3;20308:67;20372:2;20367:3;20308:67;:::i;:::-;20301:74;;20384:93;20473:3;20384:93;:::i;:::-;20502:2;20497:3;20493:12;20486:19;;20145:366;;;:::o;20517:419::-;20683:4;20721:2;20710:9;20706:18;20698:26;;20770:9;20764:4;20760:20;20756:1;20745:9;20741:17;20734:47;20798:131;20924:4;20798:131;:::i;:::-;20790:139;;20517:419;;;:::o;20942:180::-;20990:77;20987:1;20980:88;21087:4;21084:1;21077:15;21111:4;21108:1;21101:15;21128:180;21176:77;21173:1;21166:88;21273:4;21270:1;21263:15;21297:4;21294:1;21287:15;21314:143;21371:5;21402:6;21396:13;21387:22;;21418:33;21445:5;21418:33;:::i;:::-;21314:143;;;;:::o;21463:351::-;21533:6;21582:2;21570:9;21561:7;21557:23;21553:32;21550:119;;;21588:79;;:::i;:::-;21550:119;21708:1;21733:64;21789:7;21780:6;21769:9;21765:22;21733:64;:::i;:::-;21723:74;;21679:128;21463:351;;;;:::o;21820:137::-;21910:6;21944:5;21938:12;21928:22;;21820:137;;;:::o;21963:207::-;22085:11;22119:6;22114:3;22107:19;22159:4;22154:3;22150:14;22135:29;;21963:207;;;;:::o;22176:155::-;22266:4;22289:3;22281:11;;22319:4;22314:3;22310:14;22302:22;;22176:155;;;:::o;22337:108::-;22414:24;22432:5;22414:24;:::i;:::-;22409:3;22402:37;22337:108;;:::o;22451:99::-;22522:21;22537:5;22522:21;:::i;:::-;22517:3;22510:34;22451:99;;:::o;22592:661::-;22725:4;22720:3;22716:14;22812:4;22805:5;22801:16;22795:23;22831:63;22888:4;22883:3;22879:14;22865:12;22831:63;:::i;:::-;22740:164;22984:4;22977:5;22973:16;22967:23;23003:63;23060:4;23055:3;23051:14;23037:12;23003:63;:::i;:::-;22914:162;23160:4;23153:5;23149:16;23143:23;23179:57;23230:4;23225:3;23221:14;23207:12;23179:57;:::i;:::-;23086:160;22694:559;22592:661;;:::o;23259:271::-;23374:10;23395:92;23483:3;23475:6;23395:92;:::i;:::-;23519:4;23514:3;23510:14;23496:28;;23259:271;;;;:::o;23536:136::-;23629:4;23661;23656:3;23652:14;23644:22;;23536:136;;;:::o;23718:916::-;23883:3;23912:77;23983:5;23912:77;:::i;:::-;24005:109;24107:6;24102:3;24005:109;:::i;:::-;23998:116;;24138:79;24211:5;24138:79;:::i;:::-;24240:7;24271:1;24256:353;24281:6;24278:1;24275:13;24256:353;;;24357:6;24351:13;24384:109;24489:3;24474:13;24384:109;:::i;:::-;24377:116;;24516:83;24592:6;24516:83;:::i;:::-;24506:93;;24316:293;24303:1;24300;24296:9;24291:14;;24256:353;;;24260:14;24625:3;24618:10;;23888:746;;;23718:916;;;;:::o;24640:923::-;24949:4;24987:3;24976:9;24972:19;24964:27;;25001:71;25069:1;25058:9;25054:17;25045:6;25001:71;:::i;:::-;25082:80;25158:2;25147:9;25143:18;25134:6;25082:80;:::i;:::-;25209:9;25203:4;25199:20;25194:2;25183:9;25179:18;25172:48;25237:154;25386:4;25377:6;25237:154;:::i;:::-;25229:162;;25401:72;25469:2;25458:9;25454:18;25445:6;25401:72;:::i;:::-;25483:73;25551:3;25540:9;25536:19;25527:6;25483:73;:::i;:::-;24640:923;;;;;;;;:::o;25569:147::-;25670:11;25707:3;25692:18;;25569:147;;;;:::o;25722:114::-;;:::o;25842:398::-;26001:3;26022:83;26103:1;26098:3;26022:83;:::i;:::-;26015:90;;26114:93;26203:3;26114:93;:::i;:::-;26232:1;26227:3;26223:11;26216:18;;25842:398;;;:::o;26246:379::-;26430:3;26452:147;26595:3;26452:147;:::i;:::-;26445:154;;26616:3;26609:10;;26246:379;;;:::o;26631:906::-;26902:4;26940:3;26929:9;26925:19;26917:27;;26954:71;27022:1;27011:9;27007:17;26998:6;26954:71;:::i;:::-;27035:66;27097:2;27086:9;27082:18;27073:6;27035:66;:::i;:::-;27111:72;27179:2;27168:9;27164:18;27155:6;27111:72;:::i;:::-;27193:80;27269:2;27258:9;27254:18;27245:6;27193:80;:::i;:::-;27283:81;27359:3;27348:9;27344:19;27335:6;27283:81;:::i;:::-;27374:73;27442:3;27431:9;27427:19;27418:6;27374:73;:::i;:::-;27457;27525:3;27514:9;27510:19;27501:6;27457:73;:::i;:::-;26631:906;;;;;;;;;;:::o;27543:143::-;27600:5;27631:6;27625:13;27616:22;;27647:33;27674:5;27647:33;:::i;:::-;27543:143;;;;:::o;27692:663::-;27780:6;27788;27796;27845:2;27833:9;27824:7;27820:23;27816:32;27813:119;;;27851:79;;:::i;:::-;27813:119;27971:1;27996:64;28052:7;28043:6;28032:9;28028:22;27996:64;:::i;:::-;27986:74;;27942:128;28109:2;28135:64;28191:7;28182:6;28171:9;28167:22;28135:64;:::i;:::-;28125:74;;28080:129;28248:2;28274:64;28330:7;28321:6;28310:9;28306:22;28274:64;:::i;:::-;28264:74;;28219:129;27692:663;;;;;:::o

Swarm Source

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