ETH Price: $3,312.40 (+1.24%)
Gas: 5 Gwei

Token

DankMEME (DANK)
 

Overview

Max Total Supply

79,999,999,999,999.099177043411125639 DANK

Holders

134

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.000001088501961957 DANK

Value
$0.00
0x100a3f316c4e04a1fec48962fc497c52f0f282fd
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
DANKMEME

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-07-10
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.19;


library SafeMath {

    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

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

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

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

interface IERC20 {
    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 totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);}

abstract contract Ownable {
    address internal owner;
    constructor(address _owner) {owner = _owner;}
    modifier onlyOwner() {require(isOwner(msg.sender), "!OWNER"); _;}
    function isOwner(address account) public view returns (bool) {return account == owner;}
    function transferOwnership(address payable adr) public onlyOwner {owner = adr; emit OwnershipTransferred(adr);}
    event OwnershipTransferred(address owner);
}

interface IFactory{
        function createPair(address tokenA, address tokenB) external returns (address pair);
        function getPair(address tokenA, address tokenB) external view returns (address pair);
}

interface IRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

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

contract DANKMEME is IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = 'DankMEME';
    string private constant _symbol = 'DANK';
    uint8 private constant _decimals = 18;
    uint256 private _totalSupply = 100000000000000 * (10 ** _decimals);
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) private isBot;
    IRouter router;
    address public pair;
    bool private tradingAllowed = false;
    bool private swapEnabled = true;
    uint256 private swapTimes;
    bool private swapping;
    uint256 swapAmount = 1;
    uint256 private swapThreshold = ( _totalSupply * 1000 ) / 100000;
    uint256 private minTokenAmount = ( _totalSupply * 10 ) / 100000;
    modifier lockTheSwap {swapping = true; _; swapping = false;}
    uint256 private liquidityFee = 0;
    uint256 private marketingFee = 0;
    uint256 private developmentFee = 0;
    uint256 private burnFee = 0;
    uint256 private totalFee = 0;
    uint256 private sellFee = 0;
    uint256 private transferFee = 0;
    uint256 private denominator = 10000;
    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address internal development_receiver = 0xfC51C618E666a70c47F34C542D3332DE92758Fa4; 
    address internal marketing_receiver = 0xfC51C618E666a70c47F34C542D3332DE92758Fa4;
    address internal liquidity_receiver = 0xfC51C618E666a70c47F34C542D3332DE92758Fa4;
    uint256 public _maxTxAmount = ( _totalSupply * 200 ) / 10000;
    uint256 public _maxSellAmount = ( _totalSupply * 200 ) / 10000;
    uint256 public _maxWalletToken = ( _totalSupply * 200 ) / 10000;

    constructor() Ownable(msg.sender) {
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());
        router = _router; pair = _pair;
        isFeeExempt[address(this)] = true;
        isFeeExempt[liquidity_receiver] = true;
        isFeeExempt[marketing_receiver] = true;
        isFeeExempt[development_receiver] = true;
        isFeeExempt[msg.sender] = true;
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable {}
    function name() public pure returns (string memory) {return _name;}
    function symbol() public pure returns (string memory) {return _symbol;}
    function decimals() public pure returns (uint8) {return _decimals;}
    function startTrading() external onlyOwner {tradingAllowed = true;}
    function getOwner() external view override returns (address) { return owner; }
    function balanceOf(address account) public view override returns (uint256) {return _balances[account];}
    function transfer(address recipient, uint256 amount) public override returns (bool) {_transfer(msg.sender, recipient, amount);return true;}
    function allowance(address owner, address spender) public view override returns (uint256) {return _allowances[owner][spender];}
    function approve(address spender, uint256 amount) public override returns (bool) {_approve(msg.sender, spender, amount);return true;}
    function totalSupply() public view override returns (uint256) {return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));}

    function shouldContractSwap(address sender, address recipient, uint256 amount) internal view returns (bool) {
        bool aboveMin = amount >= minTokenAmount;
        bool aboveThreshold = balanceOf(address(this)) >= swapThreshold;
        return !swapping && swapEnabled && tradingAllowed && aboveMin && !isFeeExempt[sender] && recipient == pair && swapTimes >= swapAmount && aboveThreshold;
    }

    function setContractSwapSettings(uint256 _swapAmount, uint256 _swapThreshold, uint256 _minTokenAmount) external onlyOwner {
        swapAmount = _swapAmount; swapThreshold = _totalSupply.mul(_swapThreshold).div(uint256(100000)); 
        minTokenAmount = _totalSupply.mul(_minTokenAmount).div(uint256(100000));
    }

    function setTransactionRequirements(uint256 _liquidity, uint256 _marketing, uint256 _burn, uint256 _development, uint256 _total, uint256 _sell, uint256 _trans) external onlyOwner {
        liquidityFee = _liquidity; marketingFee = _marketing; burnFee = _burn; developmentFee = _development; totalFee = _total; sellFee = _sell; transferFee = _trans;
        require(totalFee <= denominator.div(1) && sellFee <= denominator.div(1) && transferFee <= denominator.div(1), "totalFee and sellFee cannot be more than 20%");
    }

    function setTransactionLimits(uint256 _buy, uint256 _sell, uint256 _wallet) external onlyOwner {
        uint256 newTx = _totalSupply.mul(_buy).div(10000); uint256 newTransfer = _totalSupply.mul(_sell).div(10000); uint256 newWallet = _totalSupply.mul(_wallet).div(10000);
        _maxTxAmount = newTx; _maxSellAmount = newTransfer; _maxWalletToken = newWallet;
        uint256 limit = totalSupply().mul(5).div(1000);
        require(newTx >= limit && newTransfer >= limit && newWallet >= limit, "Max TXs and Max Wallet cannot be less than .5%");
    }

    function setInternalAddresses(address _marketing, address _liquidity, address _development) external onlyOwner {
        marketing_receiver = _marketing; liquidity_receiver = _liquidity; development_receiver = _development;
        isFeeExempt[_marketing] = true; isFeeExempt[_liquidity] = true; isFeeExempt[_development] = true;
    }

    function manualSwap() external onlyOwner {
        swapAndLiquify(swapThreshold);
    }

    function rescueERC20(address _address, uint256 percent) external onlyOwner {
        uint256 _amount = IERC20(_address).balanceOf(address(this)).mul(percent).div(100);
        IERC20(_address).transfer(development_receiver, _amount);
    }

    function swapAndLiquify(uint256 tokens) private lockTheSwap {
        uint256 _denominator = (liquidityFee.add(1).add(marketingFee).add(developmentFee)).mul(2);
        uint256 tokensToAddLiquidityWith = tokens.mul(liquidityFee).div(_denominator);
        uint256 toSwap = tokens.sub(tokensToAddLiquidityWith);
        uint256 initialBalance = address(this).balance;
        swapTokensForETH(toSwap);
        uint256 deltaBalance = address(this).balance.sub(initialBalance);
        uint256 unitBalance= deltaBalance.div(_denominator.sub(liquidityFee));
        uint256 ETHToAddLiquidityWith = unitBalance.mul(liquidityFee);
        if(ETHToAddLiquidityWith > uint256(0)){addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith); }
        uint256 marketingAmt = unitBalance.mul(2).mul(marketingFee);
        if(marketingAmt > 0){payable(marketing_receiver).transfer(marketingAmt);}
        uint256 contractBalance = address(this).balance;
        if(contractBalance > uint256(0)){payable(development_receiver).transfer(contractBalance);}
    }

    function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private {
        _approve(address(this), address(router), tokenAmount);
        router.addLiquidityETH{value: ETHAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            liquidity_receiver,
            block.timestamp);
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
        _approve(address(this), address(router), tokenAmount);
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp);
    }

    function shouldTakeFee(address sender, address recipient) internal view returns (bool) {
        return !isFeeExempt[sender] && !isFeeExempt[recipient];
    }

    function getTotalFee(address sender, address recipient) internal view returns (uint256) {
        if(isBot[sender] || isBot[recipient]){return denominator.sub(uint256(100));}
        if(recipient == pair){return sellFee;}
        if(sender == pair){return totalFee;}
        return transferFee;
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        if(getTotalFee(sender, recipient) > 0){
        uint256 feeAmount = amount.div(denominator).mul(getTotalFee(sender, recipient));
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
        if(burnFee > uint256(0) && getTotalFee(sender, recipient) > burnFee){_transfer(address(this), address(DEAD), amount.div(denominator).mul(burnFee));}
        return amount.sub(feeAmount);} return amount;
    }

    function _transfer(address sender, address recipient, uint256 amount) private {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount <= balanceOf(sender),"You are trying to transfer more than your balance");
        if(!isFeeExempt[sender] && !isFeeExempt[recipient]){require(tradingAllowed, "tradingAllowed");}
        if(!isFeeExempt[sender] && !isFeeExempt[recipient] && recipient != address(pair) && recipient != address(DEAD)){
        require((_balances[recipient].add(amount)) <= _maxWalletToken, "Exceeds maximum wallet amount.");}
        if(sender != pair){require(amount <= _maxSellAmount || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded");}
        require(amount <= _maxTxAmount || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded"); 
        if(recipient == pair && !isFeeExempt[sender]){swapTimes += uint256(1);}
        if(shouldContractSwap(sender, recipient, amount)){swapAndLiquify(swapThreshold); swapTimes = uint256(0);}
        _balances[sender] = _balances[sender].sub(amount);
        uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
    }

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

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

}

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":"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":"_maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","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":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapAmount","type":"uint256"},{"internalType":"uint256","name":"_swapThreshold","type":"uint256"},{"internalType":"uint256","name":"_minTokenAmount","type":"uint256"}],"name":"setContractSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketing","type":"address"},{"internalType":"address","name":"_liquidity","type":"address"},{"internalType":"address","name":"_development","type":"address"}],"name":"setInternalAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_wallet","type":"uint256"}],"name":"setTransactionLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"},{"internalType":"uint256","name":"_development","type":"uint256"},{"internalType":"uint256","name":"_total","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setTransactionRequirements","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"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"},{"stateMutability":"payable","type":"receive"}]

60806040526012600a62000014919062000903565b655af3107a400062000027919062000954565b6001556000600760146101000a81548160ff0219169083151502179055506001600760156101000a81548160ff0219169083151502179055506001600a55620186a06103e86001546200007b919062000954565b620000879190620009ce565b600b55620186a0600a6001546200009f919062000954565b620000ab9190620009ce565b600c556000600d556000600e556000600f55600060105560006011556000601255600060135561271060145573fc51c618e666a70c47f34c542d3332de92758fa4601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073fc51c618e666a70c47f34c542d3332de92758fa4601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073fc51c618e666a70c47f34c542d3332de92758fa4601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061271060c8600154620001ea919062000954565b620001f69190620009ce565b60185561271060c86001546200020d919062000954565b620002199190620009ce565b60195561271060c860015462000230919062000954565b6200023c9190620009ce565b601a553480156200024c57600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002f6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200031c919062000a70565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000384573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003aa919062000a70565b6040518363ffffffff1660e01b8152600401620003c992919062000ab3565b6020604051808303816000875af1158015620003e9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200040f919062000a70565b905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600154600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60015460405162000759919062000af1565b60405180910390a3505062000b0e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620007f757808604811115620007cf57620007ce62000769565b5b6001851615620007df5780820291505b8081029050620007ef8562000798565b9450620007af565b94509492505050565b600082620008125760019050620008e5565b81620008225760009050620008e5565b81600181146200083b576002811462000846576200087c565b6001915050620008e5565b60ff8411156200085b576200085a62000769565b5b8360020a91508482111562000875576200087462000769565b5b50620008e5565b5060208310610133831016604e8410600b8410161715620008b65782820a905083811115620008b057620008af62000769565b5b620008e5565b620008c58484846001620007a5565b92509050818404811115620008df57620008de62000769565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b60006200091082620008ec565b91506200091d83620008f6565b92506200094c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000800565b905092915050565b60006200096182620008ec565b91506200096e83620008ec565b92508282026200097e81620008ec565b9150828204841483151762000998576200099762000769565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620009db82620008ec565b9150620009e883620008ec565b925082620009fb57620009fa6200099f565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000a388262000a0b565b9050919050565b62000a4a8162000a2b565b811462000a5657600080fd5b50565b60008151905062000a6a8162000a3f565b92915050565b60006020828403121562000a895762000a8862000a06565b5b600062000a998482850162000a59565b91505092915050565b62000aad8162000a2b565b82525050565b600060408201905062000aca600083018562000aa2565b62000ad9602083018462000aa2565b9392505050565b62000aeb81620008ec565b82525050565b600060208201905062000b08600083018462000ae0565b92915050565b6137988062000b1e6000396000f3fe60806040526004361061014f5760003560e01c80637d1db4a5116100b65780639d8740cb1161006f5780639d8740cb1461048d578063a8aa1b31146104b6578063a9059cbb146104e1578063cb7f97d71461051e578063dd62ed3e14610547578063f2fde38b1461058457610156565b80637d1db4a514610391578063893d20e8146103bc5780638cd4426d146103e75780639213c3581461041057806395d89b41146104395780639cc353511461046457610156565b8063313ce56711610108578063313ce5671461027f5780633f4218e0146102aa57806351bc3c85146102e757806370a08231146102fe57806378109e541461033b5780637cca52fe1461036657610156565b806306fdde031461015b578063095ea7b31461018657806318160ddd146101c357806323b872dd146101ee578063293230b81461022b5780632f54bf6e1461024257610156565b3661015657005b600080fd5b34801561016757600080fd5b506101706105ad565b60405161017d919061283f565b60405180910390f35b34801561019257600080fd5b506101ad60048036038101906101a891906128fa565b6105ea565b6040516101ba9190612955565b60405180910390f35b3480156101cf57600080fd5b506101d8610601565b6040516101e5919061297f565b60405180910390f35b3480156101fa57600080fd5b506102156004803603810190610210919061299a565b610642565b6040516102229190612955565b60405180910390f35b34801561023757600080fd5b5061024061070d565b005b34801561024e57600080fd5b50610269600480360381019061026491906129ed565b610772565b6040516102769190612955565b60405180910390f35b34801561028b57600080fd5b506102946107cb565b6040516102a19190612a36565b60405180910390f35b3480156102b657600080fd5b506102d160048036038101906102cc91906129ed565b6107d4565b6040516102de9190612955565b60405180910390f35b3480156102f357600080fd5b506102fc6107f4565b005b34801561030a57600080fd5b50610325600480360381019061032091906129ed565b610849565b604051610332919061297f565b60405180910390f35b34801561034757600080fd5b50610350610892565b60405161035d919061297f565b60405180910390f35b34801561037257600080fd5b5061037b610898565b604051610388919061297f565b60405180910390f35b34801561039d57600080fd5b506103a661089e565b6040516103b3919061297f565b60405180910390f35b3480156103c857600080fd5b506103d16108a4565b6040516103de9190612a60565b60405180910390f35b3480156103f357600080fd5b5061040e600480360381019061040991906128fa565b6108cd565b005b34801561041c57600080fd5b5061043760048036038101906104329190612a7b565b610a5e565b005b34801561044557600080fd5b5061044e610c76565b60405161045b919061283f565b60405180910390f35b34801561047057600080fd5b5061048b60048036038101906104869190612ace565b610cb3565b005b34801561049957600080fd5b506104b460048036038101906104af9190612ace565b610e2e565b005b3480156104c257600080fd5b506104cb610ee2565b6040516104d89190612a60565b60405180910390f35b3480156104ed57600080fd5b50610508600480360381019061050391906128fa565b610f08565b6040516105159190612955565b60405180910390f35b34801561052a57600080fd5b5061054560048036038101906105409190612b21565b610f1f565b005b34801561055357600080fd5b5061056e60048036038101906105699190612bc3565b611041565b60405161057b919061297f565b60405180910390f35b34801561059057600080fd5b506105ab60048036038101906105a69190612c41565b6110c8565b005b60606040518060400160405280600881526020017f44616e6b4d454d45000000000000000000000000000000000000000000000000815250905090565b60006105f733848461118a565b6001905092915050565b600061063d6106106000610849565b61062f61061e61dead610849565b60015461135390919063ffffffff16565b61135390919063ffffffff16565b905090565b600061064f848484611369565b61070284336106fd8560405180606001604052806028815260200161373b60289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c339092919063ffffffff16565b61118a565b600190509392505050565b61071633610772565b610755576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074c90612cba565b60405180910390fd5b6001600760146101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006012905090565b60046020528060005260406000206000915054906101000a900460ff1681565b6107fd33610772565b61083c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083390612cba565b60405180910390fd5b610847600b54611c88565b565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b601a5481565b60195481565b60185481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6108d633610772565b610915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090c90612cba565b60405180910390fd5b60006109b660646109a8848673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016109599190612a60565b602060405180830381865afa158015610976573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099a9190612cef565b611ef590919063ffffffff16565b611f0b90919063ffffffff16565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610a15929190612d1c565b6020604051808303816000875af1158015610a34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a589190612d71565b50505050565b610a6733610772565b610aa6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9d90612cba565b60405180910390fd5b82601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60606040518060400160405280600481526020017f44414e4b00000000000000000000000000000000000000000000000000000000815250905090565b610cbc33610772565b610cfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf290612cba565b60405180910390fd5b6000610d26612710610d1886600154611ef590919063ffffffff16565b611f0b90919063ffffffff16565b90506000610d53612710610d4586600154611ef590919063ffffffff16565b611f0b90919063ffffffff16565b90506000610d80612710610d7286600154611ef590919063ffffffff16565b611f0b90919063ffffffff16565b9050826018819055508160198190555080601a819055506000610dc86103e8610dba6005610dac610601565b611ef590919063ffffffff16565b611f0b90919063ffffffff16565b9050808410158015610dda5750808310155b8015610de65750808210155b610e25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1c90612e10565b60405180910390fd5b50505050505050565b610e3733610772565b610e76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6d90612cba565b60405180910390fd5b82600a81905550610ea7620186a0610e9984600154611ef590919063ffffffff16565b611f0b90919063ffffffff16565b600b81905550610ed7620186a0610ec983600154611ef590919063ffffffff16565b611f0b90919063ffffffff16565b600c81905550505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610f15338484611369565b6001905092915050565b610f2833610772565b610f67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5e90612cba565b60405180910390fd5b86600d8190555085600e819055508460108190555083600f81905550826011819055508160128190555080601381905550610fae6001601454611f0b90919063ffffffff16565b60115411158015610fd65750610fd06001601454611f0b90919063ffffffff16565b60125411155b8015610ff95750610ff36001601454611f0b90919063ffffffff16565b60135411155b611038576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102f90612ea2565b60405180910390fd5b50505050505050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6110d133610772565b611110576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110790612cba565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861638160405161117f9190612f21565b60405180910390a150565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f090612fae565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611268576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125f90613040565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611346919061297f565b60405180910390a3505050565b60008183611361919061308f565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cf90613135565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611447576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143e906131c7565b60405180910390fd5b61145083610849565b811115611492576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148990613259565b60405180910390fd5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156115365750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561158b57600760149054906101000a900460ff1661158a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611581906132c5565b60405180910390fd5b5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561162f5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156116895750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156116c3575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561175f57601a5461171d82600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f2190919063ffffffff16565b111561175e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175590613331565b60405180910390fd5b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146118a2576019548111158061180e5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806118625750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6118a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118989061339d565b60405180910390fd5b5b601854811115806118fc5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806119505750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61198f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119869061339d565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015611a365750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611a5657600160086000828254611a4e91906133bd565b925050819055505b611a61838383611f37565b15611a7a57611a71600b54611c88565b60006008819055505b611acc81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461135390919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611b1b8484612071565b611b255781611b31565b611b3084848461211f565b5b9050611b8581600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f2190919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611c25919061297f565b60405180910390a350505050565b6000838311158290611c7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c72919061283f565b60405180910390fd5b5082840390509392505050565b6001600960006101000a81548160ff0219169083151502179055506000611cf66002611ce8600f54611cda600e54611ccc6001600d54611f2190919063ffffffff16565b611f2190919063ffffffff16565b611f2190919063ffffffff16565b611ef590919063ffffffff16565b90506000611d2182611d13600d5486611ef590919063ffffffff16565b611f0b90919063ffffffff16565b90506000611d38828561135390919063ffffffff16565b90506000479050611d48826122dd565b6000611d5d824761135390919063ffffffff16565b90506000611d88611d79600d548861135390919063ffffffff16565b83611f0b90919063ffffffff16565b90506000611da1600d5483611ef590919063ffffffff16565b90506000811115611db757611db68682612520565b5b6000611de1600e54611dd3600286611ef590919063ffffffff16565b611ef590919063ffffffff16565b90506000811115611e5657601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611e54573d6000803e3d6000fd5b505b60004790506000811115611ece57601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611ecc573d6000803e3d6000fd5b505b5050505050505050506000600960006101000a81548160ff02191690831515021790555050565b60008183611f0391906133f1565b905092915050565b60008183611f199190613462565b905092915050565b60008183611f2f91906133bd565b905092915050565b600080600c5483101590506000600b54611f5030610849565b10159050600960009054906101000a900460ff16158015611f7d5750600760159054906101000a900460ff165b8015611f955750600760149054906101000a900460ff165b8015611f9e5750815b8015611ff45750600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561204d5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b801561205d5750600a5460085410155b80156120665750805b925050509392505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156121175750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b60008061212c8585612620565b11156122d25760006121646121418686612620565b61215660145486611f0b90919063ffffffff16565b611ef590919063ffffffff16565b90506121b881600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f2190919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612258919061297f565b60405180910390a3600060105411801561227c575060105461227a8686612620565b115b156122b7576122b63061dead6122b16010546122a360145489611f0b90919063ffffffff16565b611ef590919063ffffffff16565b611369565b5b6122ca818461135390919063ffffffff16565b9150506122d6565b8190505b9392505050565b6000600267ffffffffffffffff8111156122fa576122f9613493565b5b6040519080825280602002602001820160405280156123285781602001602082028036833780820191505090505b50905030816000815181106123405761233f6134c2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061240b9190613506565b8160018151811061241f5761241e6134c2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061248630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461118a565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016124ea95949392919061362c565b600060405180830381600087803b15801561250457600080fd5b505af1158015612518573d6000803e3d6000fd5b505050505050565b61254d30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461118a565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016125d696959493929190613686565b60606040518083038185885af11580156125f4573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061261991906136e7565b5050505050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806126c35750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156126e5576126de606460145461135390919063ffffffff16565b90506127a9565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036127445760125490506127a9565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036127a35760115490506127a9565b60135490505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156127e95780820151818401526020810190506127ce565b60008484015250505050565b6000601f19601f8301169050919050565b6000612811826127af565b61281b81856127ba565b935061282b8185602086016127cb565b612834816127f5565b840191505092915050565b600060208201905081810360008301526128598184612806565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061289182612866565b9050919050565b6128a181612886565b81146128ac57600080fd5b50565b6000813590506128be81612898565b92915050565b6000819050919050565b6128d7816128c4565b81146128e257600080fd5b50565b6000813590506128f4816128ce565b92915050565b6000806040838503121561291157612910612861565b5b600061291f858286016128af565b9250506020612930858286016128e5565b9150509250929050565b60008115159050919050565b61294f8161293a565b82525050565b600060208201905061296a6000830184612946565b92915050565b612979816128c4565b82525050565b60006020820190506129946000830184612970565b92915050565b6000806000606084860312156129b3576129b2612861565b5b60006129c1868287016128af565b93505060206129d2868287016128af565b92505060406129e3868287016128e5565b9150509250925092565b600060208284031215612a0357612a02612861565b5b6000612a11848285016128af565b91505092915050565b600060ff82169050919050565b612a3081612a1a565b82525050565b6000602082019050612a4b6000830184612a27565b92915050565b612a5a81612886565b82525050565b6000602082019050612a756000830184612a51565b92915050565b600080600060608486031215612a9457612a93612861565b5b6000612aa2868287016128af565b9350506020612ab3868287016128af565b9250506040612ac4868287016128af565b9150509250925092565b600080600060608486031215612ae757612ae6612861565b5b6000612af5868287016128e5565b9350506020612b06868287016128e5565b9250506040612b17868287016128e5565b9150509250925092565b600080600080600080600060e0888a031215612b4057612b3f612861565b5b6000612b4e8a828b016128e5565b9750506020612b5f8a828b016128e5565b9650506040612b708a828b016128e5565b9550506060612b818a828b016128e5565b9450506080612b928a828b016128e5565b93505060a0612ba38a828b016128e5565b92505060c0612bb48a828b016128e5565b91505092959891949750929550565b60008060408385031215612bda57612bd9612861565b5b6000612be8858286016128af565b9250506020612bf9858286016128af565b9150509250929050565b6000612c0e82612866565b9050919050565b612c1e81612c03565b8114612c2957600080fd5b50565b600081359050612c3b81612c15565b92915050565b600060208284031215612c5757612c56612861565b5b6000612c6584828501612c2c565b91505092915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000612ca46006836127ba565b9150612caf82612c6e565b602082019050919050565b60006020820190508181036000830152612cd381612c97565b9050919050565b600081519050612ce9816128ce565b92915050565b600060208284031215612d0557612d04612861565b5b6000612d1384828501612cda565b91505092915050565b6000604082019050612d316000830185612a51565b612d3e6020830184612970565b9392505050565b612d4e8161293a565b8114612d5957600080fd5b50565b600081519050612d6b81612d45565b92915050565b600060208284031215612d8757612d86612861565b5b6000612d9584828501612d5c565b91505092915050565b7f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560008201527f206c657373207468616e202e3525000000000000000000000000000000000000602082015250565b6000612dfa602e836127ba565b9150612e0582612d9e565b604082019050919050565b60006020820190508181036000830152612e2981612ded565b9050919050565b7f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60008201527f6f7265207468616e203230250000000000000000000000000000000000000000602082015250565b6000612e8c602c836127ba565b9150612e9782612e30565b604082019050919050565b60006020820190508181036000830152612ebb81612e7f565b9050919050565b6000819050919050565b6000612ee7612ee2612edd84612866565b612ec2565b612866565b9050919050565b6000612ef982612ecc565b9050919050565b6000612f0b82612eee565b9050919050565b612f1b81612f00565b82525050565b6000602082019050612f366000830184612f12565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612f986024836127ba565b9150612fa382612f3c565b604082019050919050565b60006020820190508181036000830152612fc781612f8b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061302a6022836127ba565b915061303582612fce565b604082019050919050565b600060208201905081810360008301526130598161301d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061309a826128c4565b91506130a5836128c4565b92508282039050818111156130bd576130bc613060565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061311f6025836127ba565b915061312a826130c3565b604082019050919050565b6000602082019050818103600083015261314e81613112565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006131b16023836127ba565b91506131bc82613155565b604082019050919050565b600060208201905081810360008301526131e0816131a4565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b60006132436031836127ba565b915061324e826131e7565b604082019050919050565b6000602082019050818103600083015261327281613236565b9050919050565b7f74726164696e67416c6c6f776564000000000000000000000000000000000000600082015250565b60006132af600e836127ba565b91506132ba82613279565b602082019050919050565b600060208201905081810360008301526132de816132a2565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000600082015250565b600061331b601e836127ba565b9150613326826132e5565b602082019050919050565b6000602082019050818103600083015261334a8161330e565b9050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b60006133876011836127ba565b915061339282613351565b602082019050919050565b600060208201905081810360008301526133b68161337a565b9050919050565b60006133c8826128c4565b91506133d3836128c4565b92508282019050808211156133eb576133ea613060565b5b92915050565b60006133fc826128c4565b9150613407836128c4565b9250828202613415816128c4565b9150828204841483151761342c5761342b613060565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061346d826128c4565b9150613478836128c4565b92508261348857613487613433565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061350081612898565b92915050565b60006020828403121561351c5761351b612861565b5b600061352a848285016134f1565b91505092915050565b6000819050919050565b600061355861355361354e84613533565b612ec2565b6128c4565b9050919050565b6135688161353d565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6135a381612886565b82525050565b60006135b5838361359a565b60208301905092915050565b6000602082019050919050565b60006135d98261356e565b6135e38185613579565b93506135ee8361358a565b8060005b8381101561361f57815161360688826135a9565b9750613611836135c1565b9250506001810190506135f2565b5085935050505092915050565b600060a0820190506136416000830188612970565b61364e602083018761355f565b818103604083015261366081866135ce565b905061366f6060830185612a51565b61367c6080830184612970565b9695505050505050565b600060c08201905061369b6000830189612a51565b6136a86020830188612970565b6136b5604083018761355f565b6136c2606083018661355f565b6136cf6080830185612a51565b6136dc60a0830184612970565b979650505050505050565b600080600060608486031215613700576136ff612861565b5b600061370e86828701612cda565b935050602061371f86828701612cda565b925050604061373086828701612cda565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220f54d4b883ce73c8ed2d3a45d96c6d999ae51ceb2b6ea81eb4844d953bca735dc64736f6c63430008130033

Deployed Bytecode

0x60806040526004361061014f5760003560e01c80637d1db4a5116100b65780639d8740cb1161006f5780639d8740cb1461048d578063a8aa1b31146104b6578063a9059cbb146104e1578063cb7f97d71461051e578063dd62ed3e14610547578063f2fde38b1461058457610156565b80637d1db4a514610391578063893d20e8146103bc5780638cd4426d146103e75780639213c3581461041057806395d89b41146104395780639cc353511461046457610156565b8063313ce56711610108578063313ce5671461027f5780633f4218e0146102aa57806351bc3c85146102e757806370a08231146102fe57806378109e541461033b5780637cca52fe1461036657610156565b806306fdde031461015b578063095ea7b31461018657806318160ddd146101c357806323b872dd146101ee578063293230b81461022b5780632f54bf6e1461024257610156565b3661015657005b600080fd5b34801561016757600080fd5b506101706105ad565b60405161017d919061283f565b60405180910390f35b34801561019257600080fd5b506101ad60048036038101906101a891906128fa565b6105ea565b6040516101ba9190612955565b60405180910390f35b3480156101cf57600080fd5b506101d8610601565b6040516101e5919061297f565b60405180910390f35b3480156101fa57600080fd5b506102156004803603810190610210919061299a565b610642565b6040516102229190612955565b60405180910390f35b34801561023757600080fd5b5061024061070d565b005b34801561024e57600080fd5b50610269600480360381019061026491906129ed565b610772565b6040516102769190612955565b60405180910390f35b34801561028b57600080fd5b506102946107cb565b6040516102a19190612a36565b60405180910390f35b3480156102b657600080fd5b506102d160048036038101906102cc91906129ed565b6107d4565b6040516102de9190612955565b60405180910390f35b3480156102f357600080fd5b506102fc6107f4565b005b34801561030a57600080fd5b50610325600480360381019061032091906129ed565b610849565b604051610332919061297f565b60405180910390f35b34801561034757600080fd5b50610350610892565b60405161035d919061297f565b60405180910390f35b34801561037257600080fd5b5061037b610898565b604051610388919061297f565b60405180910390f35b34801561039d57600080fd5b506103a661089e565b6040516103b3919061297f565b60405180910390f35b3480156103c857600080fd5b506103d16108a4565b6040516103de9190612a60565b60405180910390f35b3480156103f357600080fd5b5061040e600480360381019061040991906128fa565b6108cd565b005b34801561041c57600080fd5b5061043760048036038101906104329190612a7b565b610a5e565b005b34801561044557600080fd5b5061044e610c76565b60405161045b919061283f565b60405180910390f35b34801561047057600080fd5b5061048b60048036038101906104869190612ace565b610cb3565b005b34801561049957600080fd5b506104b460048036038101906104af9190612ace565b610e2e565b005b3480156104c257600080fd5b506104cb610ee2565b6040516104d89190612a60565b60405180910390f35b3480156104ed57600080fd5b50610508600480360381019061050391906128fa565b610f08565b6040516105159190612955565b60405180910390f35b34801561052a57600080fd5b5061054560048036038101906105409190612b21565b610f1f565b005b34801561055357600080fd5b5061056e60048036038101906105699190612bc3565b611041565b60405161057b919061297f565b60405180910390f35b34801561059057600080fd5b506105ab60048036038101906105a69190612c41565b6110c8565b005b60606040518060400160405280600881526020017f44616e6b4d454d45000000000000000000000000000000000000000000000000815250905090565b60006105f733848461118a565b6001905092915050565b600061063d6106106000610849565b61062f61061e61dead610849565b60015461135390919063ffffffff16565b61135390919063ffffffff16565b905090565b600061064f848484611369565b61070284336106fd8560405180606001604052806028815260200161373b60289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c339092919063ffffffff16565b61118a565b600190509392505050565b61071633610772565b610755576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074c90612cba565b60405180910390fd5b6001600760146101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006012905090565b60046020528060005260406000206000915054906101000a900460ff1681565b6107fd33610772565b61083c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083390612cba565b60405180910390fd5b610847600b54611c88565b565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b601a5481565b60195481565b60185481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6108d633610772565b610915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090c90612cba565b60405180910390fd5b60006109b660646109a8848673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016109599190612a60565b602060405180830381865afa158015610976573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099a9190612cef565b611ef590919063ffffffff16565b611f0b90919063ffffffff16565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610a15929190612d1c565b6020604051808303816000875af1158015610a34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a589190612d71565b50505050565b610a6733610772565b610aa6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9d90612cba565b60405180910390fd5b82601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60606040518060400160405280600481526020017f44414e4b00000000000000000000000000000000000000000000000000000000815250905090565b610cbc33610772565b610cfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf290612cba565b60405180910390fd5b6000610d26612710610d1886600154611ef590919063ffffffff16565b611f0b90919063ffffffff16565b90506000610d53612710610d4586600154611ef590919063ffffffff16565b611f0b90919063ffffffff16565b90506000610d80612710610d7286600154611ef590919063ffffffff16565b611f0b90919063ffffffff16565b9050826018819055508160198190555080601a819055506000610dc86103e8610dba6005610dac610601565b611ef590919063ffffffff16565b611f0b90919063ffffffff16565b9050808410158015610dda5750808310155b8015610de65750808210155b610e25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1c90612e10565b60405180910390fd5b50505050505050565b610e3733610772565b610e76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6d90612cba565b60405180910390fd5b82600a81905550610ea7620186a0610e9984600154611ef590919063ffffffff16565b611f0b90919063ffffffff16565b600b81905550610ed7620186a0610ec983600154611ef590919063ffffffff16565b611f0b90919063ffffffff16565b600c81905550505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610f15338484611369565b6001905092915050565b610f2833610772565b610f67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5e90612cba565b60405180910390fd5b86600d8190555085600e819055508460108190555083600f81905550826011819055508160128190555080601381905550610fae6001601454611f0b90919063ffffffff16565b60115411158015610fd65750610fd06001601454611f0b90919063ffffffff16565b60125411155b8015610ff95750610ff36001601454611f0b90919063ffffffff16565b60135411155b611038576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102f90612ea2565b60405180910390fd5b50505050505050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6110d133610772565b611110576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110790612cba565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861638160405161117f9190612f21565b60405180910390a150565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f090612fae565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611268576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125f90613040565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611346919061297f565b60405180910390a3505050565b60008183611361919061308f565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cf90613135565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611447576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143e906131c7565b60405180910390fd5b61145083610849565b811115611492576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148990613259565b60405180910390fd5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156115365750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561158b57600760149054906101000a900460ff1661158a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611581906132c5565b60405180910390fd5b5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561162f5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156116895750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156116c3575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561175f57601a5461171d82600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f2190919063ffffffff16565b111561175e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175590613331565b60405180910390fd5b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146118a2576019548111158061180e5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806118625750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6118a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118989061339d565b60405180910390fd5b5b601854811115806118fc5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806119505750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61198f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119869061339d565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015611a365750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611a5657600160086000828254611a4e91906133bd565b925050819055505b611a61838383611f37565b15611a7a57611a71600b54611c88565b60006008819055505b611acc81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461135390919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611b1b8484612071565b611b255781611b31565b611b3084848461211f565b5b9050611b8581600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f2190919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611c25919061297f565b60405180910390a350505050565b6000838311158290611c7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c72919061283f565b60405180910390fd5b5082840390509392505050565b6001600960006101000a81548160ff0219169083151502179055506000611cf66002611ce8600f54611cda600e54611ccc6001600d54611f2190919063ffffffff16565b611f2190919063ffffffff16565b611f2190919063ffffffff16565b611ef590919063ffffffff16565b90506000611d2182611d13600d5486611ef590919063ffffffff16565b611f0b90919063ffffffff16565b90506000611d38828561135390919063ffffffff16565b90506000479050611d48826122dd565b6000611d5d824761135390919063ffffffff16565b90506000611d88611d79600d548861135390919063ffffffff16565b83611f0b90919063ffffffff16565b90506000611da1600d5483611ef590919063ffffffff16565b90506000811115611db757611db68682612520565b5b6000611de1600e54611dd3600286611ef590919063ffffffff16565b611ef590919063ffffffff16565b90506000811115611e5657601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611e54573d6000803e3d6000fd5b505b60004790506000811115611ece57601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611ecc573d6000803e3d6000fd5b505b5050505050505050506000600960006101000a81548160ff02191690831515021790555050565b60008183611f0391906133f1565b905092915050565b60008183611f199190613462565b905092915050565b60008183611f2f91906133bd565b905092915050565b600080600c5483101590506000600b54611f5030610849565b10159050600960009054906101000a900460ff16158015611f7d5750600760159054906101000a900460ff165b8015611f955750600760149054906101000a900460ff165b8015611f9e5750815b8015611ff45750600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561204d5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b801561205d5750600a5460085410155b80156120665750805b925050509392505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156121175750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b60008061212c8585612620565b11156122d25760006121646121418686612620565b61215660145486611f0b90919063ffffffff16565b611ef590919063ffffffff16565b90506121b881600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f2190919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612258919061297f565b60405180910390a3600060105411801561227c575060105461227a8686612620565b115b156122b7576122b63061dead6122b16010546122a360145489611f0b90919063ffffffff16565b611ef590919063ffffffff16565b611369565b5b6122ca818461135390919063ffffffff16565b9150506122d6565b8190505b9392505050565b6000600267ffffffffffffffff8111156122fa576122f9613493565b5b6040519080825280602002602001820160405280156123285781602001602082028036833780820191505090505b50905030816000815181106123405761233f6134c2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061240b9190613506565b8160018151811061241f5761241e6134c2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061248630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461118a565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016124ea95949392919061362c565b600060405180830381600087803b15801561250457600080fd5b505af1158015612518573d6000803e3d6000fd5b505050505050565b61254d30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461118a565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016125d696959493929190613686565b60606040518083038185885af11580156125f4573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061261991906136e7565b5050505050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806126c35750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156126e5576126de606460145461135390919063ffffffff16565b90506127a9565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036127445760125490506127a9565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036127a35760115490506127a9565b60135490505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156127e95780820151818401526020810190506127ce565b60008484015250505050565b6000601f19601f8301169050919050565b6000612811826127af565b61281b81856127ba565b935061282b8185602086016127cb565b612834816127f5565b840191505092915050565b600060208201905081810360008301526128598184612806565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061289182612866565b9050919050565b6128a181612886565b81146128ac57600080fd5b50565b6000813590506128be81612898565b92915050565b6000819050919050565b6128d7816128c4565b81146128e257600080fd5b50565b6000813590506128f4816128ce565b92915050565b6000806040838503121561291157612910612861565b5b600061291f858286016128af565b9250506020612930858286016128e5565b9150509250929050565b60008115159050919050565b61294f8161293a565b82525050565b600060208201905061296a6000830184612946565b92915050565b612979816128c4565b82525050565b60006020820190506129946000830184612970565b92915050565b6000806000606084860312156129b3576129b2612861565b5b60006129c1868287016128af565b93505060206129d2868287016128af565b92505060406129e3868287016128e5565b9150509250925092565b600060208284031215612a0357612a02612861565b5b6000612a11848285016128af565b91505092915050565b600060ff82169050919050565b612a3081612a1a565b82525050565b6000602082019050612a4b6000830184612a27565b92915050565b612a5a81612886565b82525050565b6000602082019050612a756000830184612a51565b92915050565b600080600060608486031215612a9457612a93612861565b5b6000612aa2868287016128af565b9350506020612ab3868287016128af565b9250506040612ac4868287016128af565b9150509250925092565b600080600060608486031215612ae757612ae6612861565b5b6000612af5868287016128e5565b9350506020612b06868287016128e5565b9250506040612b17868287016128e5565b9150509250925092565b600080600080600080600060e0888a031215612b4057612b3f612861565b5b6000612b4e8a828b016128e5565b9750506020612b5f8a828b016128e5565b9650506040612b708a828b016128e5565b9550506060612b818a828b016128e5565b9450506080612b928a828b016128e5565b93505060a0612ba38a828b016128e5565b92505060c0612bb48a828b016128e5565b91505092959891949750929550565b60008060408385031215612bda57612bd9612861565b5b6000612be8858286016128af565b9250506020612bf9858286016128af565b9150509250929050565b6000612c0e82612866565b9050919050565b612c1e81612c03565b8114612c2957600080fd5b50565b600081359050612c3b81612c15565b92915050565b600060208284031215612c5757612c56612861565b5b6000612c6584828501612c2c565b91505092915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000612ca46006836127ba565b9150612caf82612c6e565b602082019050919050565b60006020820190508181036000830152612cd381612c97565b9050919050565b600081519050612ce9816128ce565b92915050565b600060208284031215612d0557612d04612861565b5b6000612d1384828501612cda565b91505092915050565b6000604082019050612d316000830185612a51565b612d3e6020830184612970565b9392505050565b612d4e8161293a565b8114612d5957600080fd5b50565b600081519050612d6b81612d45565b92915050565b600060208284031215612d8757612d86612861565b5b6000612d9584828501612d5c565b91505092915050565b7f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560008201527f206c657373207468616e202e3525000000000000000000000000000000000000602082015250565b6000612dfa602e836127ba565b9150612e0582612d9e565b604082019050919050565b60006020820190508181036000830152612e2981612ded565b9050919050565b7f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60008201527f6f7265207468616e203230250000000000000000000000000000000000000000602082015250565b6000612e8c602c836127ba565b9150612e9782612e30565b604082019050919050565b60006020820190508181036000830152612ebb81612e7f565b9050919050565b6000819050919050565b6000612ee7612ee2612edd84612866565b612ec2565b612866565b9050919050565b6000612ef982612ecc565b9050919050565b6000612f0b82612eee565b9050919050565b612f1b81612f00565b82525050565b6000602082019050612f366000830184612f12565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612f986024836127ba565b9150612fa382612f3c565b604082019050919050565b60006020820190508181036000830152612fc781612f8b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061302a6022836127ba565b915061303582612fce565b604082019050919050565b600060208201905081810360008301526130598161301d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061309a826128c4565b91506130a5836128c4565b92508282039050818111156130bd576130bc613060565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061311f6025836127ba565b915061312a826130c3565b604082019050919050565b6000602082019050818103600083015261314e81613112565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006131b16023836127ba565b91506131bc82613155565b604082019050919050565b600060208201905081810360008301526131e0816131a4565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b60006132436031836127ba565b915061324e826131e7565b604082019050919050565b6000602082019050818103600083015261327281613236565b9050919050565b7f74726164696e67416c6c6f776564000000000000000000000000000000000000600082015250565b60006132af600e836127ba565b91506132ba82613279565b602082019050919050565b600060208201905081810360008301526132de816132a2565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000600082015250565b600061331b601e836127ba565b9150613326826132e5565b602082019050919050565b6000602082019050818103600083015261334a8161330e565b9050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b60006133876011836127ba565b915061339282613351565b602082019050919050565b600060208201905081810360008301526133b68161337a565b9050919050565b60006133c8826128c4565b91506133d3836128c4565b92508282019050808211156133eb576133ea613060565b5b92915050565b60006133fc826128c4565b9150613407836128c4565b9250828202613415816128c4565b9150828204841483151761342c5761342b613060565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061346d826128c4565b9150613478836128c4565b92508261348857613487613433565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061350081612898565b92915050565b60006020828403121561351c5761351b612861565b5b600061352a848285016134f1565b91505092915050565b6000819050919050565b600061355861355361354e84613533565b612ec2565b6128c4565b9050919050565b6135688161353d565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6135a381612886565b82525050565b60006135b5838361359a565b60208301905092915050565b6000602082019050919050565b60006135d98261356e565b6135e38185613579565b93506135ee8361358a565b8060005b8381101561361f57815161360688826135a9565b9750613611836135c1565b9250506001810190506135f2565b5085935050505092915050565b600060a0820190506136416000830188612970565b61364e602083018761355f565b818103604083015261366081866135ce565b905061366f6060830185612a51565b61367c6080830184612970565b9695505050505050565b600060c08201905061369b6000830189612a51565b6136a86020830188612970565b6136b5604083018761355f565b6136c2606083018661355f565b6136cf6080830185612a51565b6136dc60a0830184612970565b979650505050505050565b600080600060608486031215613700576136ff612861565b5b600061370e86828701612cda565b935050602061371f86828701612cda565b925050604061373086828701612cda565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220f54d4b883ce73c8ed2d3a45d96c6d999ae51ceb2b6ea81eb4844d953bca735dc64736f6c63430008130033

Deployed Bytecode Sourcemap

4669:11046:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7101:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7868:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8007:132;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15058:309;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7324:67;;;;;;;;;;;;;:::i;:::-;;3573:87;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7251:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5080:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10327:89;;;;;;;;;;;;;:::i;:::-;;7481:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6384:63;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6315:62;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6248:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7397:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10424:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9981:338;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7174:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9417:556;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8558:319;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5198:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7590:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8885:524;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7735:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3666:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7101:67;7138:13;7161:5;;;;;;;;;;;;;;;;;7154:12;;7101:67;:::o;7868:133::-;7943:4;7950:37;7959:10;7971:7;7980:6;7950:8;:37::i;:::-;7995:4;7988:11;;7868:133;;;;:::o;8007:132::-;8060:7;8077:60;8115:21;8133:1;8115:9;:21::i;:::-;8077:33;8094:15;5935:42;8094:9;:15::i;:::-;8077:12;;:16;;:33;;;;:::i;:::-;:37;;:60;;;;:::i;:::-;8070:67;;8007:132;:::o;15058:309::-;15156:4;15173:36;15183:6;15191:9;15202:6;15173:9;:36::i;:::-;15220:117;15229:6;15237:10;15249:87;15285:6;15249:87;;;;;;;;;;;;;;;;;:11;:19;15261:6;15249:19;;;;;;;;;;;;;;;:31;15269:10;15249:31;;;;;;;;;;;;;;;;:35;;:87;;;;;:::i;:::-;15220:8;:117::i;:::-;15355:4;15348:11;;15058:309;;;;;:::o;7324:67::-;3532:19;3540:10;3532:7;:19::i;:::-;3524:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;7385:4:::1;7368:14;;:21;;;;;;;;;;;;;;;;;;7324:67::o:0;3573:87::-;3628:4;3653:5;;;;;;;;;;;3642:16;;:7;:16;;;3635:23;;3573:87;;;:::o;7251:67::-;7292:5;4877:2;7300:16;;7251:67;:::o;5080:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;10327:89::-;3532:19;3540:10;3532:7;:19::i;:::-;3524:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10379:29:::1;10394:13;;10379:14;:29::i;:::-;10327:89::o:0;7481:103::-;7547:7;7564:9;:18;7574:7;7564:18;;;;;;;;;;;;;;;;7557:25;;7481:103;;;:::o;6384:63::-;;;;:::o;6315:62::-;;;;:::o;6248:60::-;;;;:::o;7397:78::-;7449:7;7467:5;;;;;;;;;;;7460:12;;7397:78;:::o;10424:242::-;3532:19;3540:10;3532:7;:19::i;:::-;3524:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10510:15:::1;10528:63;10587:3;10528:54;10574:7;10535:8;10528:26;;;10563:4;10528:41;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45;;:54;;;;:::i;:::-;:58;;:63;;;;:::i;:::-;10510:81;;10609:8;10602:25;;;10628:20;;;;;;;;;;;10650:7;10602:56;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10499:167;10424:242:::0;;:::o;9981:338::-;3532:19;3540:10;3532:7;:19::i;:::-;3524:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10124:10:::1;10103:18;;:31;;;;;;;;;;;;;;;;;;10157:10;10136:18;;:31;;;;;;;;;;;;;;;;;;10192:12;10169:20;;:35;;;;;;;;;;;;;;;;;;10241:4;10215:11;:23;10227:10;10215:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;10273:4;10247:11;:23;10259:10;10247:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;10307:4;10279:11;:25;10291:12;10279:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;9981:338:::0;;;:::o;7174:71::-;7213:13;7236:7;;;;;;;;;;;;;;;;;7229:14;;7174:71;:::o;9417:556::-;3532:19;3540:10;3532:7;:19::i;:::-;3524:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;9523:13:::1;9539:33;9566:5;9539:22;9556:4;9539:12;;:16;;:22;;;;:::i;:::-;:26;;:33;;;;:::i;:::-;9523:49;;9574:19;9596:34;9624:5;9596:23;9613:5;9596:12;;:16;;:23;;;;:::i;:::-;:27;;:34;;;;:::i;:::-;9574:56;;9632:17;9652:36;9682:5;9652:25;9669:7;9652:12;;:16;;:25;;;;:::i;:::-;:29;;:36;;;;:::i;:::-;9632:56;;9714:5;9699:12;:20;;;;9738:11;9721:14;:28;;;;9769:9;9751:15;:27;;;;9789:13;9805:30;9830:4;9805:20;9823:1;9805:13;:11;:13::i;:::-;:17;;:20;;;;:::i;:::-;:24;;:30;;;;:::i;:::-;9789:46;;9863:5;9854;:14;;:38;;;;;9887:5;9872:11;:20;;9854:38;:60;;;;;9909:5;9896:9;:18;;9854:60;9846:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;9512:461;;;;9417:556:::0;;;:::o;8558:319::-;3532:19;3540:10;3532:7;:19::i;:::-;3524:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;8704:11:::1;8691:10;:24;;;;8733:53;8778:6;8733:32;8750:14;8733:12;;:16;;:32;;;;:::i;:::-;:36;;:53;;;;:::i;:::-;8717:13;:69;;;;8815:54;8861:6;8815:33;8832:15;8815:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;8798:14;:71;;;;8558:319:::0;;;:::o;5198:19::-;;;;;;;;;;;;;:::o;7590:139::-;7668:4;7675:40;7685:10;7697:9;7708:6;7675:9;:40::i;:::-;7723:4;7716:11;;7590:139;;;;:::o;8885:524::-;3532:19;3540:10;3532:7;:19::i;:::-;3524:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;9090:10:::1;9075:12;:25;;;;9117:10;9102:12;:25;;;;9139:5;9129:7;:15;;;;9163:12;9146:14;:29;;;;9188:6;9177:8;:17;;;;9206:5;9196:7;:15;;;;9227:6;9213:11;:20;;;;9264:18;9280:1;9264:11;;:15;;:18;;;;:::i;:::-;9252:8;;:30;;:63;;;;;9297:18;9313:1;9297:11;;:15;;:18;;;;:::i;:::-;9286:7;;:29;;9252:63;:100;;;;;9334:18;9350:1;9334:11;;:15;;:18;;;;:::i;:::-;9319:11;;:33;;9252:100;9244:157;;;;;;;;;;;;:::i;:::-;;;;;;;;;8885:524:::0;;;;;;;:::o;7735:127::-;7816:7;7833:11;:18;7845:5;7833:18;;;;;;;;;;;;;;;:27;7852:7;7833:27;;;;;;;;;;;;;;;;7826:34;;7735:127;;;;:::o;3666:111::-;3532:19;3540:10;3532:7;:19::i;:::-;3524:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3740:3:::1;3732:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;3750:25;3771:3;3750:25;;;;;;:::i;:::-;;;;;;;;3666:111:::0;:::o;15375:335::-;15485:1;15468:19;;:5;:19;;;15460:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15566:1;15547:21;;:7;:21;;;15539:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15648:6;15618:11;:18;15630:5;15618:18;;;;;;;;;;;;;;;:27;15637:7;15618:27;;;;;;;;;;;;;;;:36;;;;15686:7;15670:32;;15679:5;15670:32;;;15695:6;15670:32;;;;;;:::i;:::-;;;;;;;;15375:335;;;:::o;1312:98::-;1370:7;1401:1;1397;:5;;;;:::i;:::-;1390:12;;1312:98;;;;:::o;13617:1433::-;13732:1;13714:20;;:6;:20;;;13706:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;13816:1;13795:23;;:9;:23;;;13787:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13887:17;13897:6;13887:9;:17::i;:::-;13877:6;:27;;13869:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;13972:11;:19;13984:6;13972:19;;;;;;;;;;;;;;;;;;;;;;;;;13971:20;:47;;;;;13996:11;:22;14008:9;13996:22;;;;;;;;;;;;;;;;;;;;;;;;;13995:23;13971:47;13968:95;;;14028:14;;;;;;;;;;;14020:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;13968:95;14077:11;:19;14089:6;14077:19;;;;;;;;;;;;;;;;;;;;;;;;;14076:20;:47;;;;;14101:11;:22;14113:9;14101:22;;;;;;;;;;;;;;;;;;;;;;;;;14100:23;14076:47;:77;;;;;14148:4;;;;;;;;;;;14127:26;;:9;:26;;;;14076:77;:107;;;;;5935:42;14157:26;;:9;:26;;;;14076:107;14073:220;;;14241:15;;14204:32;14229:6;14204:9;:20;14214:9;14204:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;14203:53;;14195:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;14073:220;14316:4;;;;;;;;;;;14306:14;;:6;:14;;;14303:124;;14340:14;;14330:6;:24;;:47;;;;14358:11;:19;14370:6;14358:19;;;;;;;;;;;;;;;;;;;;;;;;;14330:47;:73;;;;14381:11;:22;14393:9;14381:22;;;;;;;;;;;;;;;;;;;;;;;;;14330:73;14322:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;14303:124;14455:12;;14445:6;:22;;:45;;;;14471:11;:19;14483:6;14471:19;;;;;;;;;;;;;;;;;;;;;;;;;14445:45;:71;;;;14494:11;:22;14506:9;14494:22;;;;;;;;;;;;;;;;;;;;;;;;;14445:71;14437:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;14566:4;;;;;;;;;;;14553:17;;:9;:17;;;:41;;;;;14575:11;:19;14587:6;14575:19;;;;;;;;;;;;;;;;;;;;;;;;;14574:20;14553:41;14550:71;;;14617:1;14596:9;;:23;;;;;;;:::i;:::-;;;;;;;;14550:71;14634:45;14653:6;14661:9;14672:6;14634:18;:45::i;:::-;14631:105;;;14681:29;14696:13;;14681:14;:29::i;:::-;14732:1;14712:9;:22;;;;14631:105;14766:29;14788:6;14766:9;:17;14776:6;14766:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;14746:9;:17;14756:6;14746:17;;;;;;;;;;;;;;;:49;;;;14806:22;14831:32;14845:6;14853:9;14831:13;:32::i;:::-;:78;;14903:6;14831:78;;;14866:34;14874:6;14882:9;14893:6;14866:7;:34::i;:::-;14831:78;14806:103;;14943:40;14968:14;14943:9;:20;14953:9;14943:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;14920:9;:20;14930:9;14920:20;;;;;;;;;;;;;;;:63;;;;15016:9;14999:43;;15008:6;14999:43;;;15027:14;14999:43;;;;;;:::i;:::-;;;;;;;;13695:1355;13617:1433;;;:::o;1736:240::-;1856:7;1914:1;1909;:6;;1917:12;1901:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1956:1;1952;:5;1945:12;;1736:240;;;;;:::o;10674:1063::-;5567:4;5556:8;;:15;;;;;;;;;;;;;;;;;;10745:20:::1;10768:66;10832:1;10769:57;10811:14;;10769:37;10793:12;;10769:19;10786:1;10769:12;;:16;;:19;;;;:::i;:::-;:23;;:37;;;;:::i;:::-;:41;;:57;;;;:::i;:::-;10768:63;;:66;;;;:::i;:::-;10745:89;;10845:32;10880:42;10909:12;10880:24;10891:12;;10880:6;:10;;:24;;;;:::i;:::-;:28;;:42;;;;:::i;:::-;10845:77;;10933:14;10950:36;10961:24;10950:6;:10;;:36;;;;:::i;:::-;10933:53;;10997:22;11022:21;10997:46;;11054:24;11071:6;11054:16;:24::i;:::-;11089:20;11112:41;11138:14;11112:21;:25;;:41;;;;:::i;:::-;11089:64;;11164:19;11185:48;11202:30;11219:12;;11202;:16;;:30;;;;:::i;:::-;11185:12;:16;;:48;;;;:::i;:::-;11164:69;;11244:29;11276;11292:12;;11276:11;:15;;:29;;;;:::i;:::-;11244:61;;11351:1;11319:21;:34;11316:103;;;11355:61;11368:24;11394:21;11355:12;:61::i;:::-;11316:103;11429:20;11452:36;11475:12;;11452:18;11468:1;11452:11;:15;;:18;;;;:::i;:::-;:22;;:36;;;;:::i;:::-;11429:59;;11517:1;11502:12;:16;11499:73;;;11528:18;;;;;;;;;;;11520:36;;:50;11557:12;11520:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;11499:73;11582:23;11608:21;11582:47;;11669:1;11643:15;:28;11640:90;;;11681:20;;;;;;;;;;;11673:38;;:55;11712:15;11673:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;11640:90;10734:1003;;;;;;;;;5587:5:::0;5576:8;;:16;;;;;;;;;;;;;;;;;;10674:1063;:::o;1418:98::-;1476:7;1507:1;1503;:5;;;;:::i;:::-;1496:12;;1418:98;;;;:::o;1524:::-;1582:7;1613:1;1609;:5;;;;:::i;:::-;1602:12;;1524:98;;;;:::o;1206:::-;1264:7;1295:1;1291;:5;;;;:::i;:::-;1284:12;;1206:98;;;;:::o;8147:403::-;8249:4;8266:13;8292:14;;8282:6;:24;;8266:40;;8317:19;8367:13;;8339:24;8357:4;8339:9;:24::i;:::-;:41;;8317:63;;8399:8;;;;;;;;;;;8398:9;:24;;;;;8411:11;;;;;;;;;;;8398:24;:42;;;;;8426:14;;;;;;;;;;;8398:42;:54;;;;;8444:8;8398:54;:78;;;;;8457:11;:19;8469:6;8457:19;;;;;;;;;;;;;;;;;;;;;;;;;8456:20;8398:78;:99;;;;;8493:4;;;;;;;;;;;8480:17;;:9;:17;;;8398:99;:126;;;;;8514:10;;8501:9;;:23;;8398:126;:144;;;;;8528:14;8398:144;8391:151;;;;8147:403;;;;;:::o;12538:160::-;12619:4;12644:11;:19;12656:6;12644:19;;;;;;;;;;;;;;;;;;;;;;;;;12643:20;:47;;;;;12668:11;:22;12680:9;12668:22;;;;;;;;;;;;;;;;;;;;;;;;;12667:23;12643:47;12636:54;;12538:160;;;;:::o;13019:590::-;13105:7;13161:1;13128:30;13140:6;13148:9;13128:11;:30::i;:::-;:34;13125:462;;;13174:17;13194:59;13222:30;13234:6;13242:9;13222:11;:30::i;:::-;13194:23;13205:11;;13194:6;:10;;:23;;;;:::i;:::-;:27;;:59;;;;:::i;:::-;13174:79;;13291:39;13320:9;13291;:24;13309:4;13291:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;13264:9;:24;13282:4;13264:24;;;;;;;;;;;;;;;:66;;;;13371:4;13346:42;;13355:6;13346:42;;;13378:9;13346:42;;;;;;:::i;:::-;;;;;;;;13420:1;13402:7;;:20;:64;;;;;13459:7;;13426:30;13438:6;13446:9;13426:11;:30::i;:::-;:40;13402:64;13399:148;;;13468:77;13486:4;5935:42;13508:36;13536:7;;13508:23;13519:11;;13508:6;:10;;:23;;;;:::i;:::-;:27;;:36;;;;:::i;:::-;13468:9;:77::i;:::-;13399:148;13564:21;13575:9;13564:6;:10;;:21;;;;:::i;:::-;13557:28;;;;;13125:462;13595:6;13588:13;;13019:590;;;;;;:::o;12096:434::-;12162:21;12200:1;12186:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12162:40;;12231:4;12213;12218:1;12213:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;12257:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12247:4;12252:1;12247:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;12281:53;12298:4;12313:6;;;;;;;;;;;12322:11;12281:8;:53::i;:::-;12345:6;;;;;;;;;;;:57;;;12417:11;12443:1;12459:4;12486;12506:15;12345:177;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12151:379;12096:434;:::o;11745:343::-;11826:53;11843:4;11858:6;;;;;;;;;;;11867:11;11826:8;:53::i;:::-;11890:6;;;;;;;;;;;:22;;;11920:9;11953:4;11973:11;11999:1;12015;12031:18;;;;;;;;;;;12064:15;11890:190;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11745:343;;:::o;12706:305::-;12785:7;12808:5;:13;12814:6;12808:13;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;;12825:5;:16;12831:9;12825:16;;;;;;;;;;;;;;;;;;;;;;;;;12808:33;12805:76;;;12850:29;12874:3;12850:11;;:15;;:29;;;;:::i;:::-;12843:36;;;;12805:76;12907:4;;;;;;;;;;;12894:17;;:9;:17;;;12891:38;;12920:7;;12913:14;;;;12891:38;12952:4;;;;;;;;;;;12942:14;;:6;:14;;;12939:36;;12965:8;;12958:15;;;;12939:36;12992:11;;12985:18;;12706:305;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:329::-;4482:6;4531:2;4519:9;4510:7;4506:23;4502:32;4499:119;;;4537:79;;:::i;:::-;4499:119;4657:1;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4628:117;4423:329;;;;:::o;4758:86::-;4793:7;4833:4;4826:5;4822:16;4811:27;;4758:86;;;:::o;4850:112::-;4933:22;4949:5;4933:22;:::i;:::-;4928:3;4921:35;4850:112;;:::o;4968:214::-;5057:4;5095:2;5084:9;5080:18;5072:26;;5108:67;5172:1;5161:9;5157:17;5148:6;5108:67;:::i;:::-;4968:214;;;;:::o;5188:118::-;5275:24;5293:5;5275:24;:::i;:::-;5270:3;5263:37;5188:118;;:::o;5312:222::-;5405:4;5443:2;5432:9;5428:18;5420:26;;5456:71;5524:1;5513:9;5509:17;5500:6;5456:71;:::i;:::-;5312:222;;;;:::o;5540:619::-;5617:6;5625;5633;5682:2;5670:9;5661:7;5657:23;5653:32;5650:119;;;5688:79;;:::i;:::-;5650:119;5808:1;5833:53;5878:7;5869:6;5858:9;5854:22;5833:53;:::i;:::-;5823:63;;5779:117;5935:2;5961:53;6006:7;5997:6;5986:9;5982:22;5961:53;:::i;:::-;5951:63;;5906:118;6063:2;6089:53;6134:7;6125:6;6114:9;6110:22;6089:53;:::i;:::-;6079:63;;6034:118;5540:619;;;;;:::o;6165:::-;6242:6;6250;6258;6307:2;6295:9;6286:7;6282:23;6278:32;6275:119;;;6313:79;;:::i;:::-;6275:119;6433:1;6458:53;6503:7;6494:6;6483:9;6479:22;6458:53;:::i;:::-;6448:63;;6404:117;6560:2;6586:53;6631:7;6622:6;6611:9;6607:22;6586:53;:::i;:::-;6576:63;;6531:118;6688:2;6714:53;6759:7;6750:6;6739:9;6735:22;6714:53;:::i;:::-;6704:63;;6659:118;6165:619;;;;;:::o;6790:1203::-;6903:6;6911;6919;6927;6935;6943;6951;7000:3;6988:9;6979:7;6975:23;6971:33;6968:120;;;7007:79;;:::i;:::-;6968:120;7127:1;7152:53;7197:7;7188:6;7177:9;7173:22;7152:53;:::i;:::-;7142:63;;7098:117;7254:2;7280:53;7325:7;7316:6;7305:9;7301:22;7280:53;:::i;:::-;7270:63;;7225:118;7382:2;7408:53;7453:7;7444:6;7433:9;7429:22;7408:53;:::i;:::-;7398:63;;7353:118;7510:2;7536:53;7581:7;7572:6;7561:9;7557:22;7536:53;:::i;:::-;7526:63;;7481:118;7638:3;7665:53;7710:7;7701:6;7690:9;7686:22;7665:53;:::i;:::-;7655:63;;7609:119;7767:3;7794:53;7839:7;7830:6;7819:9;7815:22;7794:53;:::i;:::-;7784:63;;7738:119;7896:3;7923:53;7968:7;7959:6;7948:9;7944:22;7923:53;:::i;:::-;7913:63;;7867:119;6790:1203;;;;;;;;;;:::o;7999:474::-;8067:6;8075;8124:2;8112:9;8103:7;8099:23;8095:32;8092:119;;;8130:79;;:::i;:::-;8092:119;8250:1;8275:53;8320:7;8311:6;8300:9;8296:22;8275:53;:::i;:::-;8265:63;;8221:117;8377:2;8403:53;8448:7;8439:6;8428:9;8424:22;8403:53;:::i;:::-;8393:63;;8348:118;7999:474;;;;;:::o;8479:104::-;8524:7;8553:24;8571:5;8553:24;:::i;:::-;8542:35;;8479:104;;;:::o;8589:138::-;8670:32;8696:5;8670:32;:::i;:::-;8663:5;8660:43;8650:71;;8717:1;8714;8707:12;8650:71;8589:138;:::o;8733:155::-;8787:5;8825:6;8812:20;8803:29;;8841:41;8876:5;8841:41;:::i;:::-;8733:155;;;;:::o;8894:345::-;8961:6;9010:2;8998:9;8989:7;8985:23;8981:32;8978:119;;;9016:79;;:::i;:::-;8978:119;9136:1;9161:61;9214:7;9205:6;9194:9;9190:22;9161:61;:::i;:::-;9151:71;;9107:125;8894:345;;;;:::o;9245:156::-;9385:8;9381:1;9373:6;9369:14;9362:32;9245:156;:::o;9407:365::-;9549:3;9570:66;9634:1;9629:3;9570:66;:::i;:::-;9563:73;;9645:93;9734:3;9645:93;:::i;:::-;9763:2;9758:3;9754:12;9747:19;;9407:365;;;:::o;9778:419::-;9944:4;9982:2;9971:9;9967:18;9959:26;;10031:9;10025:4;10021:20;10017:1;10006:9;10002:17;9995:47;10059:131;10185:4;10059:131;:::i;:::-;10051:139;;9778:419;;;:::o;10203:143::-;10260:5;10291:6;10285:13;10276:22;;10307:33;10334:5;10307:33;:::i;:::-;10203:143;;;;:::o;10352:351::-;10422:6;10471:2;10459:9;10450:7;10446:23;10442:32;10439:119;;;10477:79;;:::i;:::-;10439:119;10597:1;10622:64;10678:7;10669:6;10658:9;10654:22;10622:64;:::i;:::-;10612:74;;10568:128;10352:351;;;;:::o;10709:332::-;10830:4;10868:2;10857:9;10853:18;10845:26;;10881:71;10949:1;10938:9;10934:17;10925:6;10881:71;:::i;:::-;10962:72;11030:2;11019:9;11015:18;11006:6;10962:72;:::i;:::-;10709:332;;;;;:::o;11047:116::-;11117:21;11132:5;11117:21;:::i;:::-;11110:5;11107:32;11097:60;;11153:1;11150;11143:12;11097:60;11047:116;:::o;11169:137::-;11223:5;11254:6;11248:13;11239:22;;11270:30;11294:5;11270:30;:::i;:::-;11169:137;;;;:::o;11312:345::-;11379:6;11428:2;11416:9;11407:7;11403:23;11399:32;11396:119;;;11434:79;;:::i;:::-;11396:119;11554:1;11579:61;11632:7;11623:6;11612:9;11608:22;11579:61;:::i;:::-;11569:71;;11525:125;11312:345;;;;:::o;11663:233::-;11803:34;11799:1;11791:6;11787:14;11780:58;11872:16;11867:2;11859:6;11855:15;11848:41;11663:233;:::o;11902:366::-;12044:3;12065:67;12129:2;12124:3;12065:67;:::i;:::-;12058:74;;12141:93;12230:3;12141:93;:::i;:::-;12259:2;12254:3;12250:12;12243:19;;11902:366;;;:::o;12274:419::-;12440:4;12478:2;12467:9;12463:18;12455:26;;12527:9;12521:4;12517:20;12513:1;12502:9;12498:17;12491:47;12555:131;12681:4;12555:131;:::i;:::-;12547:139;;12274:419;;;:::o;12699:231::-;12839:34;12835:1;12827:6;12823:14;12816:58;12908:14;12903:2;12895:6;12891:15;12884:39;12699:231;:::o;12936:366::-;13078:3;13099:67;13163:2;13158:3;13099:67;:::i;:::-;13092:74;;13175:93;13264:3;13175:93;:::i;:::-;13293:2;13288:3;13284:12;13277:19;;12936:366;;;:::o;13308:419::-;13474:4;13512:2;13501:9;13497:18;13489:26;;13561:9;13555:4;13551:20;13547:1;13536:9;13532:17;13525:47;13589:131;13715:4;13589:131;:::i;:::-;13581:139;;13308:419;;;:::o;13733:60::-;13761:3;13782:5;13775:12;;13733:60;;;:::o;13799:142::-;13849:9;13882:53;13900:34;13909:24;13927:5;13909:24;:::i;:::-;13900:34;:::i;:::-;13882:53;:::i;:::-;13869:66;;13799:142;;;:::o;13947:126::-;13997:9;14030:37;14061:5;14030:37;:::i;:::-;14017:50;;13947:126;;;:::o;14079:134::-;14137:9;14170:37;14201:5;14170:37;:::i;:::-;14157:50;;14079:134;;;:::o;14219:147::-;14314:45;14353:5;14314:45;:::i;:::-;14309:3;14302:58;14219:147;;:::o;14372:238::-;14473:4;14511:2;14500:9;14496:18;14488:26;;14524:79;14600:1;14589:9;14585:17;14576:6;14524:79;:::i;:::-;14372:238;;;;:::o;14616:223::-;14756:34;14752:1;14744:6;14740:14;14733:58;14825:6;14820:2;14812:6;14808:15;14801:31;14616:223;:::o;14845:366::-;14987:3;15008:67;15072:2;15067:3;15008:67;:::i;:::-;15001:74;;15084:93;15173:3;15084:93;:::i;:::-;15202:2;15197:3;15193:12;15186:19;;14845:366;;;:::o;15217:419::-;15383:4;15421:2;15410:9;15406:18;15398:26;;15470:9;15464:4;15460:20;15456:1;15445:9;15441:17;15434:47;15498:131;15624:4;15498:131;:::i;:::-;15490:139;;15217:419;;;:::o;15642:221::-;15782:34;15778:1;15770:6;15766:14;15759:58;15851:4;15846:2;15838:6;15834:15;15827:29;15642:221;:::o;15869:366::-;16011:3;16032:67;16096:2;16091:3;16032:67;:::i;:::-;16025:74;;16108:93;16197:3;16108:93;:::i;:::-;16226:2;16221:3;16217:12;16210:19;;15869:366;;;:::o;16241:419::-;16407:4;16445:2;16434:9;16430:18;16422:26;;16494:9;16488:4;16484:20;16480:1;16469:9;16465:17;16458:47;16522:131;16648:4;16522:131;:::i;:::-;16514:139;;16241:419;;;:::o;16666:180::-;16714:77;16711:1;16704:88;16811:4;16808:1;16801:15;16835:4;16832:1;16825:15;16852:194;16892:4;16912:20;16930:1;16912:20;:::i;:::-;16907:25;;16946:20;16964:1;16946:20;:::i;:::-;16941:25;;16990:1;16987;16983:9;16975:17;;17014:1;17008:4;17005:11;17002:37;;;17019:18;;:::i;:::-;17002:37;16852:194;;;;:::o;17052:224::-;17192:34;17188:1;17180:6;17176:14;17169:58;17261:7;17256:2;17248:6;17244:15;17237:32;17052:224;:::o;17282:366::-;17424:3;17445:67;17509:2;17504:3;17445:67;:::i;:::-;17438:74;;17521:93;17610:3;17521:93;:::i;:::-;17639:2;17634:3;17630:12;17623:19;;17282:366;;;:::o;17654:419::-;17820:4;17858:2;17847:9;17843:18;17835:26;;17907:9;17901:4;17897:20;17893:1;17882:9;17878:17;17871:47;17935:131;18061:4;17935:131;:::i;:::-;17927:139;;17654:419;;;:::o;18079:222::-;18219:34;18215:1;18207:6;18203:14;18196:58;18288:5;18283:2;18275:6;18271:15;18264:30;18079:222;:::o;18307:366::-;18449:3;18470:67;18534:2;18529:3;18470:67;:::i;:::-;18463:74;;18546:93;18635:3;18546:93;:::i;:::-;18664:2;18659:3;18655:12;18648:19;;18307:366;;;:::o;18679:419::-;18845:4;18883:2;18872:9;18868:18;18860:26;;18932:9;18926:4;18922:20;18918:1;18907:9;18903:17;18896:47;18960:131;19086:4;18960:131;:::i;:::-;18952:139;;18679:419;;;:::o;19104:236::-;19244:34;19240:1;19232:6;19228:14;19221:58;19313:19;19308:2;19300:6;19296:15;19289:44;19104:236;:::o;19346:366::-;19488:3;19509:67;19573:2;19568:3;19509:67;:::i;:::-;19502:74;;19585:93;19674:3;19585:93;:::i;:::-;19703:2;19698:3;19694:12;19687:19;;19346:366;;;:::o;19718:419::-;19884:4;19922:2;19911:9;19907:18;19899:26;;19971:9;19965:4;19961:20;19957:1;19946:9;19942:17;19935:47;19999:131;20125:4;19999:131;:::i;:::-;19991:139;;19718:419;;;:::o;20143:164::-;20283:16;20279:1;20271:6;20267:14;20260:40;20143:164;:::o;20313:366::-;20455:3;20476:67;20540:2;20535:3;20476:67;:::i;:::-;20469:74;;20552:93;20641:3;20552:93;:::i;:::-;20670:2;20665:3;20661:12;20654:19;;20313:366;;;:::o;20685:419::-;20851:4;20889:2;20878:9;20874:18;20866:26;;20938:9;20932:4;20928:20;20924:1;20913:9;20909:17;20902:47;20966:131;21092:4;20966:131;:::i;:::-;20958:139;;20685:419;;;:::o;21110:180::-;21250:32;21246:1;21238:6;21234:14;21227:56;21110:180;:::o;21296:366::-;21438:3;21459:67;21523:2;21518:3;21459:67;:::i;:::-;21452:74;;21535:93;21624:3;21535:93;:::i;:::-;21653:2;21648:3;21644:12;21637:19;;21296:366;;;:::o;21668:419::-;21834:4;21872:2;21861:9;21857:18;21849:26;;21921:9;21915:4;21911:20;21907:1;21896:9;21892:17;21885:47;21949:131;22075:4;21949:131;:::i;:::-;21941:139;;21668:419;;;:::o;22093:167::-;22233:19;22229:1;22221:6;22217:14;22210:43;22093:167;:::o;22266:366::-;22408:3;22429:67;22493:2;22488:3;22429:67;:::i;:::-;22422:74;;22505:93;22594:3;22505:93;:::i;:::-;22623:2;22618:3;22614:12;22607:19;;22266:366;;;:::o;22638:419::-;22804:4;22842:2;22831:9;22827:18;22819:26;;22891:9;22885:4;22881:20;22877:1;22866:9;22862:17;22855:47;22919:131;23045:4;22919:131;:::i;:::-;22911:139;;22638:419;;;:::o;23063:191::-;23103:3;23122:20;23140:1;23122:20;:::i;:::-;23117:25;;23156:20;23174:1;23156:20;:::i;:::-;23151:25;;23199:1;23196;23192:9;23185:16;;23220:3;23217:1;23214:10;23211:36;;;23227:18;;:::i;:::-;23211:36;23063:191;;;;:::o;23260:410::-;23300:7;23323:20;23341:1;23323:20;:::i;:::-;23318:25;;23357:20;23375:1;23357:20;:::i;:::-;23352:25;;23412:1;23409;23405:9;23434:30;23452:11;23434:30;:::i;:::-;23423:41;;23613:1;23604:7;23600:15;23597:1;23594:22;23574:1;23567:9;23547:83;23524:139;;23643:18;;:::i;:::-;23524:139;23308:362;23260:410;;;;:::o;23676:180::-;23724:77;23721:1;23714:88;23821:4;23818:1;23811:15;23845:4;23842:1;23835:15;23862:185;23902:1;23919:20;23937:1;23919:20;:::i;:::-;23914:25;;23953:20;23971:1;23953:20;:::i;:::-;23948:25;;23992:1;23982:35;;23997:18;;:::i;:::-;23982:35;24039:1;24036;24032:9;24027:14;;23862:185;;;;:::o;24053:180::-;24101:77;24098:1;24091:88;24198:4;24195:1;24188:15;24222:4;24219:1;24212:15;24239:180;24287:77;24284:1;24277:88;24384:4;24381:1;24374:15;24408:4;24405:1;24398:15;24425:143;24482:5;24513:6;24507:13;24498:22;;24529:33;24556:5;24529:33;:::i;:::-;24425:143;;;;:::o;24574:351::-;24644:6;24693:2;24681:9;24672:7;24668:23;24664:32;24661:119;;;24699:79;;:::i;:::-;24661:119;24819:1;24844:64;24900:7;24891:6;24880:9;24876:22;24844:64;:::i;:::-;24834:74;;24790:128;24574:351;;;;:::o;24931:85::-;24976:7;25005:5;24994:16;;24931:85;;;:::o;25022:158::-;25080:9;25113:61;25131:42;25140:32;25166:5;25140:32;:::i;:::-;25131:42;:::i;:::-;25113:61;:::i;:::-;25100:74;;25022:158;;;:::o;25186:147::-;25281:45;25320:5;25281:45;:::i;:::-;25276:3;25269:58;25186:147;;:::o;25339:114::-;25406:6;25440:5;25434:12;25424:22;;25339:114;;;:::o;25459:184::-;25558:11;25592:6;25587:3;25580:19;25632:4;25627:3;25623:14;25608:29;;25459:184;;;;:::o;25649:132::-;25716:4;25739:3;25731:11;;25769:4;25764:3;25760:14;25752:22;;25649:132;;;:::o;25787:108::-;25864:24;25882:5;25864:24;:::i;:::-;25859:3;25852:37;25787:108;;:::o;25901:179::-;25970:10;25991:46;26033:3;26025:6;25991:46;:::i;:::-;26069:4;26064:3;26060:14;26046:28;;25901:179;;;;:::o;26086:113::-;26156:4;26188;26183:3;26179:14;26171:22;;26086:113;;;:::o;26235:732::-;26354:3;26383:54;26431:5;26383:54;:::i;:::-;26453:86;26532:6;26527:3;26453:86;:::i;:::-;26446:93;;26563:56;26613:5;26563:56;:::i;:::-;26642:7;26673:1;26658:284;26683:6;26680:1;26677:13;26658:284;;;26759:6;26753:13;26786:63;26845:3;26830:13;26786:63;:::i;:::-;26779:70;;26872:60;26925:6;26872:60;:::i;:::-;26862:70;;26718:224;26705:1;26702;26698:9;26693:14;;26658:284;;;26662:14;26958:3;26951:10;;26359:608;;;26235:732;;;;:::o;26973:831::-;27236:4;27274:3;27263:9;27259:19;27251:27;;27288:71;27356:1;27345:9;27341:17;27332:6;27288:71;:::i;:::-;27369:80;27445:2;27434:9;27430:18;27421:6;27369:80;:::i;:::-;27496:9;27490:4;27486:20;27481:2;27470:9;27466:18;27459:48;27524:108;27627:4;27618:6;27524:108;:::i;:::-;27516:116;;27642:72;27710:2;27699:9;27695:18;27686:6;27642:72;:::i;:::-;27724:73;27792:3;27781:9;27777:19;27768:6;27724:73;:::i;:::-;26973:831;;;;;;;;:::o;27810:807::-;28059:4;28097:3;28086:9;28082:19;28074:27;;28111:71;28179:1;28168:9;28164:17;28155:6;28111:71;:::i;:::-;28192:72;28260:2;28249:9;28245:18;28236:6;28192:72;:::i;:::-;28274:80;28350:2;28339:9;28335:18;28326:6;28274:80;:::i;:::-;28364;28440:2;28429:9;28425:18;28416:6;28364:80;:::i;:::-;28454:73;28522:3;28511:9;28507:19;28498:6;28454:73;:::i;:::-;28537;28605:3;28594:9;28590:19;28581:6;28537:73;:::i;:::-;27810:807;;;;;;;;;:::o;28623:663::-;28711:6;28719;28727;28776:2;28764:9;28755:7;28751:23;28747:32;28744:119;;;28782:79;;:::i;:::-;28744:119;28902:1;28927:64;28983:7;28974:6;28963:9;28959:22;28927:64;:::i;:::-;28917:74;;28873:128;29040:2;29066:64;29122:7;29113:6;29102:9;29098:22;29066:64;:::i;:::-;29056:74;;29011:129;29179:2;29205:64;29261:7;29252:6;29241:9;29237:22;29205:64;:::i;:::-;29195:74;;29150:129;28623:663;;;;;:::o

Swarm Source

ipfs://f54d4b883ce73c8ed2d3a45d96c6d999ae51ceb2b6ea81eb4844d953bca735dc
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.