ETH Price: $2,891.29 (-5.24%)
Gas: 2 Gwei

Token

Bubble Tea (BOBA)
 

Overview

Max Total Supply

888,888,888,888 BOBA

Holders

83

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
11,972,125,047.308760225 BOBA

Value
$0.00
0x380fab7b48b12c3c17749f7f52b7c716b9cec012
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:
Boba

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-06-16
*/

/**                            
The Sweetest token in your wallet.

TG: https://t.me/Bobatoken
Website: Boba-token.com
Twitter: https://twitter.com/Boba_ETH_
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.16;


library SafeMath {
    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 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 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 totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);}

abstract contract 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 removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);

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

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

contract Boba is IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = 'Bubble Tea';
    string private constant _symbol = 'BOBA';
    uint8 private constant _decimals = 9;
    uint256 private _totalSupply = 888888888888 * (10 ** _decimals);
    uint256 private _maxTxAmountPercent = 100; // 10000;
    uint256 private _maxTransferPercent = 100;
    uint256 private _maxWalletPercent = 100;
    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;
    uint256 private liquidityFee = 0;
    uint256 private marketingFee = 2000;
    uint256 private developmentFee = 0;
    uint256 private burnFee = 0;
    uint256 private totalFee = 2000;
    uint256 private sellFee = 4000;
    uint256 private transferFee = 4000;
    uint256 private denominator = 10000;
    bool private swapEnabled = true;
    uint256 private swapTimes;
    bool private swapping; 
    uint256 private swapThreshold = ( _totalSupply * 300 ) / 100000;
    uint256 private _minTokenAmount = ( _totalSupply * 10 ) / 100000;
    modifier lockTheSwap {swapping = true; _; swapping = false;}

    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address internal constant development_receiver = 0x5F71E85b23D0BE7B5d7209B9B6449323340F60e2; 
    address internal constant marketing_receiver = 0x5F71E85b23D0BE7B5d7209B9B6449323340F60e2;
    address internal constant liquidity_receiver = 0x5F71E85b23D0BE7B5d7209B9B6449323340F60e2;

    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[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 isCont(address addr) internal view returns (bool) {uint size; assembly { size := extcodesize(addr) } return size > 0; }
    function setisExempt(address _address, bool _enabled) external onlyOwner {isFeeExempt[_address] = _enabled;}
    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 _maxWalletToken() public view returns (uint256) {return totalSupply() * _maxWalletPercent / denominator;}
    function _maxTxAmount() public view returns (uint256) {return totalSupply() * _maxTxAmountPercent / denominator;}
    function _maxTransferAmount() public view returns (uint256) {return totalSupply() * _maxTransferPercent / denominator;}

    function preTxCheck(address sender, address recipient, uint256 amount) internal view {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount > uint256(0), "Transfer amount must be greater than zero");
        require(amount <= balanceOf(sender),"You are trying to transfer more than your balance");
    }

    function _transfer(address sender, address recipient, uint256 amount) private {
        preTxCheck(sender, recipient, amount);
        checkTradingAllowed(sender, recipient);
        checkMaxWallet(sender, recipient, amount); 
        swapbackCounters(sender, recipient);
        checkTxLimit(sender, recipient, amount); 
        swapBack(sender, recipient, amount);
        _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 setFee(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(5) && sellFee <= denominator.div(5), "totalFee and sellFee cannot be more than 20%");
    }

    function setLimits(uint256 _buy, uint256 _trans, uint256 _wallet) external onlyOwner {
        uint256 newTx = (totalSupply() * _buy) / 10000;
        uint256 newTransfer = (totalSupply() * _trans) / 10000;
        uint256 newWallet = (totalSupply() * _wallet) / 10000;
        _maxTxAmountPercent = _buy;
        _maxTransferPercent = _trans;
        _maxWalletPercent = _wallet;
        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 checkTradingAllowed(address sender, address recipient) internal view {
        if(!isFeeExempt[sender] && !isFeeExempt[recipient]){require(tradingAllowed, "tradingAllowed");}
    }
    
    function checkMaxWallet(address sender, address recipient, uint256 amount) internal view {
        if(!isFeeExempt[sender] && !isFeeExempt[recipient] && recipient != address(pair) && recipient != address(DEAD)){
            require((_balances[recipient].add(amount)) <= _maxWalletToken(), "Exceeds maximum wallet amount.");}
    }

    function swapbackCounters(address sender, address recipient) internal {
        if(recipient == pair && !isFeeExempt[sender]){swapTimes += uint256(1);}
    }

    function checkTxLimit(address sender, address recipient, uint256 amount) internal view {
        if(sender != pair){require(amount <= _maxTransferAmount() || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded");}
        require(amount <= _maxTxAmount() || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded");
    }

    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 remainingBalance = address(this).balance;
        if(remainingBalance > uint256(0)){payable(development_receiver).transfer(remainingBalance);}
    }

    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 shouldSwapBack(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 >= uint256(0) && aboveThreshold;
    }

    function swapBack(address sender, address recipient, uint256 amount) internal {
        if(shouldSwapBack(sender, recipient, amount)){swapAndLiquify(swapThreshold); swapTimes = uint256(0);}
    }

    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)){_transfer(address(this), address(DEAD), amount.div(denominator).mul(burnFee));}
        return amount.sub(feeAmount);} return amount;
    }

    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":"_maxTransferAmount","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":"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":"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":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"},{"internalType":"uint256","name":"_wallet","type":"uint256"}],"name":"setLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisExempt","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"}]

60806040526009600a62000014919062000712565b64cef5e80e3862000026919062000763565b6001556064600255606460035560646004556000600a60146101000a81548160ff0219169083151502179055506000600b556107d0600c556000600d556000600e556107d0600f55610fa0601055610fa06011556127106012556001601360006101000a81548160ff021916908315150217905550620186a061012c600154620000b1919062000763565b620000bd9190620007f3565b601655620186a0600a600154620000d5919062000763565b620000e19190620007f3565b601755348015620000f157600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200019b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c1919062000895565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000229573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200024f919062000895565b6040518363ffffffff1660e01b81526004016200026e929190620008d8565b6020604051808303816000875af11580156200028e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b4919062000895565b905081600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000735f71e85b23d0be7b5d7209b9b6449323340f60e273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000735f71e85b23d0be7b5d7209b9b6449323340f60e273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600154600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60015460405162000568919062000916565b60405180910390a3505062000933565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200060657808604811115620005de57620005dd62000578565b5b6001851615620005ee5780820291505b8081029050620005fe85620005a7565b9450620005be565b94509492505050565b600082620006215760019050620006f4565b81620006315760009050620006f4565b81600181146200064a576002811462000655576200068b565b6001915050620006f4565b60ff8411156200066a576200066962000578565b5b8360020a91508482111562000684576200068362000578565b5b50620006f4565b5060208310610133831016604e8410600b8410161715620006c55782820a905083811115620006bf57620006be62000578565b5b620006f4565b620006d48484846001620005b4565b92509050818404811115620006ee57620006ed62000578565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b60006200071f82620006fb565b91506200072c8362000705565b92506200075b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200060f565b905092915050565b60006200077082620006fb565b91506200077d83620006fb565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620007b957620007b862000578565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200080082620006fb565b91506200080d83620006fb565b92508262000820576200081f620007c4565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200085d8262000830565b9050919050565b6200086f8162000850565b81146200087b57600080fd5b50565b6000815190506200088f8162000864565b92915050565b600060208284031215620008ae57620008ad6200082b565b5b6000620008be848285016200087e565b91505092915050565b620008d28162000850565b82525050565b6000604082019050620008ef6000830185620008c7565b620008fe6020830184620008c7565b9392505050565b6200091081620006fb565b82525050565b60006020820190506200092d600083018462000905565b92915050565b6133ab80620009436000396000f3fe60806040526004361061012e5760003560e01c806348ff2b8b116100ab57806395d89b411161006f57806395d89b4114610401578063a8aa1b311461042c578063a9059cbb14610457578063aeb5b9b514610494578063dd62ed3e146104bd578063f2fde38b146104fa57610135565b806348ff2b8b1461031a57806370a082311461034357806378109e54146103805780637d1db4a5146103ab578063893d20e8146103d657610135565b806323b872dd116100f257806323b872dd14610221578063293230b81461025e5780632f54bf6e14610275578063313ce567146102b25780633f4218e0146102dd57610135565b806306fdde031461013a578063095ea7b31461016557806318160ddd146101a2578063189ae5f2146101cd5780631f976b7e146101f657610135565b3661013557005b600080fd5b34801561014657600080fd5b5061014f610523565b60405161015c919061243e565b60405180910390f35b34801561017157600080fd5b5061018c600480360381019061018791906124f9565b610560565b6040516101999190612554565b60405180910390f35b3480156101ae57600080fd5b506101b7610577565b6040516101c4919061257e565b60405180910390f35b3480156101d957600080fd5b506101f460048036038101906101ef9190612599565b6105b8565b005b34801561020257600080fd5b5061020b610718565b604051610218919061257e565b60405180910390f35b34801561022d57600080fd5b50610248600480360381019061024391906125ec565b610741565b6040516102559190612554565b60405180910390f35b34801561026a57600080fd5b5061027361080c565b005b34801561028157600080fd5b5061029c6004803603810190610297919061263f565b610871565b6040516102a99190612554565b60405180910390f35b3480156102be57600080fd5b506102c76108ca565b6040516102d49190612688565b60405180910390f35b3480156102e957600080fd5b5061030460048036038101906102ff919061263f565b6108d3565b6040516103119190612554565b60405180910390f35b34801561032657600080fd5b50610341600480360381019061033c91906126cf565b6108f3565b005b34801561034f57600080fd5b5061036a6004803603810190610365919061263f565b610996565b604051610377919061257e565b60405180910390f35b34801561038c57600080fd5b506103956109df565b6040516103a2919061257e565b60405180910390f35b3480156103b757600080fd5b506103c0610a08565b6040516103cd919061257e565b60405180910390f35b3480156103e257600080fd5b506103eb610a31565b6040516103f8919061271e565b60405180910390f35b34801561040d57600080fd5b50610416610a5a565b604051610423919061243e565b60405180910390f35b34801561043857600080fd5b50610441610a97565b60405161044e919061271e565b60405180910390f35b34801561046357600080fd5b5061047e600480360381019061047991906124f9565b610abd565b60405161048b9190612554565b60405180910390f35b3480156104a057600080fd5b506104bb60048036038101906104b69190612739565b610ad4565b005b3480156104c957600080fd5b506104e460048036038101906104df91906127db565b610bd3565b6040516104f1919061257e565b60405180910390f35b34801561050657600080fd5b50610521600480360381019061051c9190612859565b610c5a565b005b60606040518060400160405280600a81526020017f427562626c652054656100000000000000000000000000000000000000000000815250905090565b600061056d338484610d1c565b6001905092915050565b60006105b36105866000610996565b6105a561059461dead610996565b600154610ee590919063ffffffff16565b610ee590919063ffffffff16565b905090565b6105c133610871565b610600576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105f7906128d2565b60405180910390fd5b60006127108461060e610577565b6106189190612921565b61062291906129aa565b9050600061271084610632610577565b61063c9190612921565b61064691906129aa565b9050600061271084610656610577565b6106609190612921565b61066a91906129aa565b905085600281905550846003819055508360048190555060006106b26103e86106a46005610696610577565b610efb90919063ffffffff16565b610f1190919063ffffffff16565b90508084101580156106c45750808310155b80156106d05750808210155b61070f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070690612a4d565b60405180910390fd5b50505050505050565b6000601254600354610728610577565b6107329190612921565b61073c91906129aa565b905090565b600061074e848484610f27565b61080184336107fc8560405180606001604052806028815260200161334e60289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111209092919063ffffffff16565b610d1c565b600190509392505050565b61081533610871565b610854576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084b906128d2565b60405180910390fd5b6001600a60146101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b60076020528060005260406000206000915054906101000a900460ff1681565b6108fc33610871565b61093b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610932906128d2565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60006012546004546109ef610577565b6109f99190612921565b610a0391906129aa565b905090565b6000601254600254610a18610577565b610a229190612921565b610a2c91906129aa565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f424f424100000000000000000000000000000000000000000000000000000000815250905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610aca338484610f27565b6001905092915050565b610add33610871565b610b1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b13906128d2565b60405180910390fd5b86600b8190555085600c8190555084600e8190555083600d8190555082600f819055508160108190555080601181905550610b636005601254610f1190919063ffffffff16565b600f5411158015610b8b5750610b856005601254610f1190919063ffffffff16565b60105411155b610bca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc190612adf565b60405180910390fd5b50505050505050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610c6333610871565b610ca2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c99906128d2565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051610d119190612b5e565b60405180910390a150565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8290612beb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610dfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df190612c7d565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610ed8919061257e565b60405180910390a3505050565b60008183610ef39190612c9d565b905092915050565b60008183610f099190612921565b905092915050565b60008183610f1f91906129aa565b905092915050565b610f32838383611175565b610f3c83836112e6565b610f478383836113e3565b610f5183836115c1565b610f5c83838361168c565b610f678383836118cb565b610fb981600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ee590919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061100884846118f4565b611012578161101e565b61101d8484846119a2565b5b905061107281600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b4a90919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611112919061257e565b60405180910390a350505050565b6000838311158290611168576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115f919061243e565b60405180910390fd5b5082840390509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111db90612d43565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611253576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124a90612dd5565b60405180910390fd5b60008111611296576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128d90612e67565b60405180910390fd5b61129f83610996565b8111156112e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d890612ef9565b60405180910390fd5b505050565b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561138a5750600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156113df57600a60149054906101000a900460ff166113de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d590612f65565b60405180910390fd5b5b5050565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156114875750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156114e15750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561151b575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156115bc576115286109df565b61157a82600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b4a90919063ffffffff16565b11156115bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b290612fd1565b60405180910390fd5b5b505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480156116685750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611688576001601460008282546116809190612ff1565b925050819055505b5050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146117d4576116e9610718565b811115806117405750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806117945750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6117d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ca90613071565b60405180910390fd5b5b6117dc610a08565b811115806118335750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806118875750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6118c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118bd90613071565b60405180910390fd5b505050565b6118d6838383611b60565b156118ef576118e6601654611c99565b60006014819055505b505050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561199a5750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b6000806119af8585611eea565b1115611b3f5760006119e76119c48686611eea565b6119d960125486610f1190919063ffffffff16565b610efb90919063ffffffff16565b9050611a3b81600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b4a90919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611adb919061257e565b60405180910390a36000600e541115611b2457611b233061dead611b1e600e54611b1060125489610f1190919063ffffffff16565b610efb90919063ffffffff16565b610f27565b5b611b378184610ee590919063ffffffff16565b915050611b43565b8190505b9392505050565b60008183611b589190612ff1565b905092915050565b60008060175483101590506000601654611b7930610996565b10159050601560009054906101000a900460ff16158015611ba65750601360009054906101000a900460ff165b8015611bbe5750600a60149054906101000a900460ff165b8015611bc75750815b8015611c1d5750600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611c765750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b8015611c855750600060145410155b8015611c8e5750805b925050509392505050565b6001601560006101000a81548160ff0219169083151502179055506000611d076002611cf9600d54611ceb600c54611cdd6001600b54611b4a90919063ffffffff16565b611b4a90919063ffffffff16565b611b4a90919063ffffffff16565b610efb90919063ffffffff16565b90506000611d3282611d24600b5486610efb90919063ffffffff16565b610f1190919063ffffffff16565b90506000611d498285610ee590919063ffffffff16565b90506000479050611d5982612079565b6000611d6e8247610ee590919063ffffffff16565b90506000611d99611d8a600b5488610ee590919063ffffffff16565b83610f1190919063ffffffff16565b90506000611db2600b5483610efb90919063ffffffff16565b90506000811115611dc857611dc786826122bc565b5b6000611df2600c54611de4600286610efb90919063ffffffff16565b610efb90919063ffffffff16565b90506000811115611e5957735f71e85b23d0be7b5d7209b9b6449323340f60e273ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611e57573d6000803e3d6000fd5b505b60004790506000811115611ec357735f71e85b23d0be7b5d7209b9b6449323340f60e273ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611ec1573d6000803e3d6000fd5b505b5050505050505050506000601560006101000a81548160ff02191690831515021790555050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611f8d5750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611faf57611fa86064601254610ee590919063ffffffff16565b9050612073565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361200e576010549050612073565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361206d57600f549050612073565b60115490505b92915050565b6000600267ffffffffffffffff81111561209657612095613091565b5b6040519080825280602002602001820160405280156120c45781602001602082028036833780820191505090505b50905030816000815181106120dc576120db6130c0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612183573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121a79190613104565b816001815181106121bb576121ba6130c0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061222230600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610d1c565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161228695949392919061322a565b600060405180830381600087803b1580156122a057600080fd5b505af11580156122b4573d6000803e3d6000fd5b505050505050565b6122e930600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610d1c565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080735f71e85b23d0be7b5d7209b9b6449323340f60e2426040518863ffffffff1660e01b815260040161236496959493929190613284565b60606040518083038185885af1158015612382573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906123a791906132fa565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156123e85780820151818401526020810190506123cd565b60008484015250505050565b6000601f19601f8301169050919050565b6000612410826123ae565b61241a81856123b9565b935061242a8185602086016123ca565b612433816123f4565b840191505092915050565b600060208201905081810360008301526124588184612405565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061249082612465565b9050919050565b6124a081612485565b81146124ab57600080fd5b50565b6000813590506124bd81612497565b92915050565b6000819050919050565b6124d6816124c3565b81146124e157600080fd5b50565b6000813590506124f3816124cd565b92915050565b600080604083850312156125105761250f612460565b5b600061251e858286016124ae565b925050602061252f858286016124e4565b9150509250929050565b60008115159050919050565b61254e81612539565b82525050565b60006020820190506125696000830184612545565b92915050565b612578816124c3565b82525050565b6000602082019050612593600083018461256f565b92915050565b6000806000606084860312156125b2576125b1612460565b5b60006125c0868287016124e4565b93505060206125d1868287016124e4565b92505060406125e2868287016124e4565b9150509250925092565b60008060006060848603121561260557612604612460565b5b6000612613868287016124ae565b9350506020612624868287016124ae565b9250506040612635868287016124e4565b9150509250925092565b60006020828403121561265557612654612460565b5b6000612663848285016124ae565b91505092915050565b600060ff82169050919050565b6126828161266c565b82525050565b600060208201905061269d6000830184612679565b92915050565b6126ac81612539565b81146126b757600080fd5b50565b6000813590506126c9816126a3565b92915050565b600080604083850312156126e6576126e5612460565b5b60006126f4858286016124ae565b9250506020612705858286016126ba565b9150509250929050565b61271881612485565b82525050565b6000602082019050612733600083018461270f565b92915050565b600080600080600080600060e0888a03121561275857612757612460565b5b60006127668a828b016124e4565b97505060206127778a828b016124e4565b96505060406127888a828b016124e4565b95505060606127998a828b016124e4565b94505060806127aa8a828b016124e4565b93505060a06127bb8a828b016124e4565b92505060c06127cc8a828b016124e4565b91505092959891949750929550565b600080604083850312156127f2576127f1612460565b5b6000612800858286016124ae565b9250506020612811858286016124ae565b9150509250929050565b600061282682612465565b9050919050565b6128368161281b565b811461284157600080fd5b50565b6000813590506128538161282d565b92915050565b60006020828403121561286f5761286e612460565b5b600061287d84828501612844565b91505092915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b60006128bc6006836123b9565b91506128c782612886565b602082019050919050565b600060208201905081810360008301526128eb816128af565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061292c826124c3565b9150612937836124c3565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156129705761296f6128f2565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006129b5826124c3565b91506129c0836124c3565b9250826129d0576129cf61297b565b5b828204905092915050565b7f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560008201527f206c657373207468616e202e3525000000000000000000000000000000000000602082015250565b6000612a37602e836123b9565b9150612a42826129db565b604082019050919050565b60006020820190508181036000830152612a6681612a2a565b9050919050565b7f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60008201527f6f7265207468616e203230250000000000000000000000000000000000000000602082015250565b6000612ac9602c836123b9565b9150612ad482612a6d565b604082019050919050565b60006020820190508181036000830152612af881612abc565b9050919050565b6000819050919050565b6000612b24612b1f612b1a84612465565b612aff565b612465565b9050919050565b6000612b3682612b09565b9050919050565b6000612b4882612b2b565b9050919050565b612b5881612b3d565b82525050565b6000602082019050612b736000830184612b4f565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612bd56024836123b9565b9150612be082612b79565b604082019050919050565b60006020820190508181036000830152612c0481612bc8565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612c676022836123b9565b9150612c7282612c0b565b604082019050919050565b60006020820190508181036000830152612c9681612c5a565b9050919050565b6000612ca8826124c3565b9150612cb3836124c3565b9250828203905081811115612ccb57612cca6128f2565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612d2d6025836123b9565b9150612d3882612cd1565b604082019050919050565b60006020820190508181036000830152612d5c81612d20565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612dbf6023836123b9565b9150612dca82612d63565b604082019050919050565b60006020820190508181036000830152612dee81612db2565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612e516029836123b9565b9150612e5c82612df5565b604082019050919050565b60006020820190508181036000830152612e8081612e44565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b6000612ee36031836123b9565b9150612eee82612e87565b604082019050919050565b60006020820190508181036000830152612f1281612ed6565b9050919050565b7f74726164696e67416c6c6f776564000000000000000000000000000000000000600082015250565b6000612f4f600e836123b9565b9150612f5a82612f19565b602082019050919050565b60006020820190508181036000830152612f7e81612f42565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000600082015250565b6000612fbb601e836123b9565b9150612fc682612f85565b602082019050919050565b60006020820190508181036000830152612fea81612fae565b9050919050565b6000612ffc826124c3565b9150613007836124c3565b925082820190508082111561301f5761301e6128f2565b5b92915050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b600061305b6011836123b9565b915061306682613025565b602082019050919050565b6000602082019050818103600083015261308a8161304e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506130fe81612497565b92915050565b60006020828403121561311a57613119612460565b5b6000613128848285016130ef565b91505092915050565b6000819050919050565b600061315661315161314c84613131565b612aff565b6124c3565b9050919050565b6131668161313b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6131a181612485565b82525050565b60006131b38383613198565b60208301905092915050565b6000602082019050919050565b60006131d78261316c565b6131e18185613177565b93506131ec83613188565b8060005b8381101561321d57815161320488826131a7565b975061320f836131bf565b9250506001810190506131f0565b5085935050505092915050565b600060a08201905061323f600083018861256f565b61324c602083018761315d565b818103604083015261325e81866131cc565b905061326d606083018561270f565b61327a608083018461256f565b9695505050505050565b600060c082019050613299600083018961270f565b6132a6602083018861256f565b6132b3604083018761315d565b6132c0606083018661315d565b6132cd608083018561270f565b6132da60a083018461256f565b979650505050505050565b6000815190506132f4816124cd565b92915050565b60008060006060848603121561331357613312612460565b5b6000613321868287016132e5565b9350506020613332868287016132e5565b9250506040613343868287016132e5565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122092f9f25c2ea023305be93a93de21b58c96026c4943c4b1b906880fe4fc77f9e864736f6c63430008100033

Deployed Bytecode

0x60806040526004361061012e5760003560e01c806348ff2b8b116100ab57806395d89b411161006f57806395d89b4114610401578063a8aa1b311461042c578063a9059cbb14610457578063aeb5b9b514610494578063dd62ed3e146104bd578063f2fde38b146104fa57610135565b806348ff2b8b1461031a57806370a082311461034357806378109e54146103805780637d1db4a5146103ab578063893d20e8146103d657610135565b806323b872dd116100f257806323b872dd14610221578063293230b81461025e5780632f54bf6e14610275578063313ce567146102b25780633f4218e0146102dd57610135565b806306fdde031461013a578063095ea7b31461016557806318160ddd146101a2578063189ae5f2146101cd5780631f976b7e146101f657610135565b3661013557005b600080fd5b34801561014657600080fd5b5061014f610523565b60405161015c919061243e565b60405180910390f35b34801561017157600080fd5b5061018c600480360381019061018791906124f9565b610560565b6040516101999190612554565b60405180910390f35b3480156101ae57600080fd5b506101b7610577565b6040516101c4919061257e565b60405180910390f35b3480156101d957600080fd5b506101f460048036038101906101ef9190612599565b6105b8565b005b34801561020257600080fd5b5061020b610718565b604051610218919061257e565b60405180910390f35b34801561022d57600080fd5b50610248600480360381019061024391906125ec565b610741565b6040516102559190612554565b60405180910390f35b34801561026a57600080fd5b5061027361080c565b005b34801561028157600080fd5b5061029c6004803603810190610297919061263f565b610871565b6040516102a99190612554565b60405180910390f35b3480156102be57600080fd5b506102c76108ca565b6040516102d49190612688565b60405180910390f35b3480156102e957600080fd5b5061030460048036038101906102ff919061263f565b6108d3565b6040516103119190612554565b60405180910390f35b34801561032657600080fd5b50610341600480360381019061033c91906126cf565b6108f3565b005b34801561034f57600080fd5b5061036a6004803603810190610365919061263f565b610996565b604051610377919061257e565b60405180910390f35b34801561038c57600080fd5b506103956109df565b6040516103a2919061257e565b60405180910390f35b3480156103b757600080fd5b506103c0610a08565b6040516103cd919061257e565b60405180910390f35b3480156103e257600080fd5b506103eb610a31565b6040516103f8919061271e565b60405180910390f35b34801561040d57600080fd5b50610416610a5a565b604051610423919061243e565b60405180910390f35b34801561043857600080fd5b50610441610a97565b60405161044e919061271e565b60405180910390f35b34801561046357600080fd5b5061047e600480360381019061047991906124f9565b610abd565b60405161048b9190612554565b60405180910390f35b3480156104a057600080fd5b506104bb60048036038101906104b69190612739565b610ad4565b005b3480156104c957600080fd5b506104e460048036038101906104df91906127db565b610bd3565b6040516104f1919061257e565b60405180910390f35b34801561050657600080fd5b50610521600480360381019061051c9190612859565b610c5a565b005b60606040518060400160405280600a81526020017f427562626c652054656100000000000000000000000000000000000000000000815250905090565b600061056d338484610d1c565b6001905092915050565b60006105b36105866000610996565b6105a561059461dead610996565b600154610ee590919063ffffffff16565b610ee590919063ffffffff16565b905090565b6105c133610871565b610600576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105f7906128d2565b60405180910390fd5b60006127108461060e610577565b6106189190612921565b61062291906129aa565b9050600061271084610632610577565b61063c9190612921565b61064691906129aa565b9050600061271084610656610577565b6106609190612921565b61066a91906129aa565b905085600281905550846003819055508360048190555060006106b26103e86106a46005610696610577565b610efb90919063ffffffff16565b610f1190919063ffffffff16565b90508084101580156106c45750808310155b80156106d05750808210155b61070f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070690612a4d565b60405180910390fd5b50505050505050565b6000601254600354610728610577565b6107329190612921565b61073c91906129aa565b905090565b600061074e848484610f27565b61080184336107fc8560405180606001604052806028815260200161334e60289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111209092919063ffffffff16565b610d1c565b600190509392505050565b61081533610871565b610854576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084b906128d2565b60405180910390fd5b6001600a60146101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b60076020528060005260406000206000915054906101000a900460ff1681565b6108fc33610871565b61093b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610932906128d2565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60006012546004546109ef610577565b6109f99190612921565b610a0391906129aa565b905090565b6000601254600254610a18610577565b610a229190612921565b610a2c91906129aa565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f424f424100000000000000000000000000000000000000000000000000000000815250905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610aca338484610f27565b6001905092915050565b610add33610871565b610b1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b13906128d2565b60405180910390fd5b86600b8190555085600c8190555084600e8190555083600d8190555082600f819055508160108190555080601181905550610b636005601254610f1190919063ffffffff16565b600f5411158015610b8b5750610b856005601254610f1190919063ffffffff16565b60105411155b610bca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc190612adf565b60405180910390fd5b50505050505050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610c6333610871565b610ca2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c99906128d2565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051610d119190612b5e565b60405180910390a150565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8290612beb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610dfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df190612c7d565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610ed8919061257e565b60405180910390a3505050565b60008183610ef39190612c9d565b905092915050565b60008183610f099190612921565b905092915050565b60008183610f1f91906129aa565b905092915050565b610f32838383611175565b610f3c83836112e6565b610f478383836113e3565b610f5183836115c1565b610f5c83838361168c565b610f678383836118cb565b610fb981600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ee590919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061100884846118f4565b611012578161101e565b61101d8484846119a2565b5b905061107281600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b4a90919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611112919061257e565b60405180910390a350505050565b6000838311158290611168576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115f919061243e565b60405180910390fd5b5082840390509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111db90612d43565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611253576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124a90612dd5565b60405180910390fd5b60008111611296576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128d90612e67565b60405180910390fd5b61129f83610996565b8111156112e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d890612ef9565b60405180910390fd5b505050565b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561138a5750600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156113df57600a60149054906101000a900460ff166113de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d590612f65565b60405180910390fd5b5b5050565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156114875750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156114e15750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561151b575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156115bc576115286109df565b61157a82600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b4a90919063ffffffff16565b11156115bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b290612fd1565b60405180910390fd5b5b505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480156116685750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611688576001601460008282546116809190612ff1565b925050819055505b5050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146117d4576116e9610718565b811115806117405750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806117945750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6117d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ca90613071565b60405180910390fd5b5b6117dc610a08565b811115806118335750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806118875750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6118c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118bd90613071565b60405180910390fd5b505050565b6118d6838383611b60565b156118ef576118e6601654611c99565b60006014819055505b505050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561199a5750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b6000806119af8585611eea565b1115611b3f5760006119e76119c48686611eea565b6119d960125486610f1190919063ffffffff16565b610efb90919063ffffffff16565b9050611a3b81600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b4a90919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611adb919061257e565b60405180910390a36000600e541115611b2457611b233061dead611b1e600e54611b1060125489610f1190919063ffffffff16565b610efb90919063ffffffff16565b610f27565b5b611b378184610ee590919063ffffffff16565b915050611b43565b8190505b9392505050565b60008183611b589190612ff1565b905092915050565b60008060175483101590506000601654611b7930610996565b10159050601560009054906101000a900460ff16158015611ba65750601360009054906101000a900460ff165b8015611bbe5750600a60149054906101000a900460ff165b8015611bc75750815b8015611c1d5750600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611c765750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b8015611c855750600060145410155b8015611c8e5750805b925050509392505050565b6001601560006101000a81548160ff0219169083151502179055506000611d076002611cf9600d54611ceb600c54611cdd6001600b54611b4a90919063ffffffff16565b611b4a90919063ffffffff16565b611b4a90919063ffffffff16565b610efb90919063ffffffff16565b90506000611d3282611d24600b5486610efb90919063ffffffff16565b610f1190919063ffffffff16565b90506000611d498285610ee590919063ffffffff16565b90506000479050611d5982612079565b6000611d6e8247610ee590919063ffffffff16565b90506000611d99611d8a600b5488610ee590919063ffffffff16565b83610f1190919063ffffffff16565b90506000611db2600b5483610efb90919063ffffffff16565b90506000811115611dc857611dc786826122bc565b5b6000611df2600c54611de4600286610efb90919063ffffffff16565b610efb90919063ffffffff16565b90506000811115611e5957735f71e85b23d0be7b5d7209b9b6449323340f60e273ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611e57573d6000803e3d6000fd5b505b60004790506000811115611ec357735f71e85b23d0be7b5d7209b9b6449323340f60e273ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611ec1573d6000803e3d6000fd5b505b5050505050505050506000601560006101000a81548160ff02191690831515021790555050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611f8d5750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611faf57611fa86064601254610ee590919063ffffffff16565b9050612073565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361200e576010549050612073565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361206d57600f549050612073565b60115490505b92915050565b6000600267ffffffffffffffff81111561209657612095613091565b5b6040519080825280602002602001820160405280156120c45781602001602082028036833780820191505090505b50905030816000815181106120dc576120db6130c0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612183573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121a79190613104565b816001815181106121bb576121ba6130c0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061222230600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610d1c565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161228695949392919061322a565b600060405180830381600087803b1580156122a057600080fd5b505af11580156122b4573d6000803e3d6000fd5b505050505050565b6122e930600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610d1c565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080735f71e85b23d0be7b5d7209b9b6449323340f60e2426040518863ffffffff1660e01b815260040161236496959493929190613284565b60606040518083038185885af1158015612382573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906123a791906132fa565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156123e85780820151818401526020810190506123cd565b60008484015250505050565b6000601f19601f8301169050919050565b6000612410826123ae565b61241a81856123b9565b935061242a8185602086016123ca565b612433816123f4565b840191505092915050565b600060208201905081810360008301526124588184612405565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061249082612465565b9050919050565b6124a081612485565b81146124ab57600080fd5b50565b6000813590506124bd81612497565b92915050565b6000819050919050565b6124d6816124c3565b81146124e157600080fd5b50565b6000813590506124f3816124cd565b92915050565b600080604083850312156125105761250f612460565b5b600061251e858286016124ae565b925050602061252f858286016124e4565b9150509250929050565b60008115159050919050565b61254e81612539565b82525050565b60006020820190506125696000830184612545565b92915050565b612578816124c3565b82525050565b6000602082019050612593600083018461256f565b92915050565b6000806000606084860312156125b2576125b1612460565b5b60006125c0868287016124e4565b93505060206125d1868287016124e4565b92505060406125e2868287016124e4565b9150509250925092565b60008060006060848603121561260557612604612460565b5b6000612613868287016124ae565b9350506020612624868287016124ae565b9250506040612635868287016124e4565b9150509250925092565b60006020828403121561265557612654612460565b5b6000612663848285016124ae565b91505092915050565b600060ff82169050919050565b6126828161266c565b82525050565b600060208201905061269d6000830184612679565b92915050565b6126ac81612539565b81146126b757600080fd5b50565b6000813590506126c9816126a3565b92915050565b600080604083850312156126e6576126e5612460565b5b60006126f4858286016124ae565b9250506020612705858286016126ba565b9150509250929050565b61271881612485565b82525050565b6000602082019050612733600083018461270f565b92915050565b600080600080600080600060e0888a03121561275857612757612460565b5b60006127668a828b016124e4565b97505060206127778a828b016124e4565b96505060406127888a828b016124e4565b95505060606127998a828b016124e4565b94505060806127aa8a828b016124e4565b93505060a06127bb8a828b016124e4565b92505060c06127cc8a828b016124e4565b91505092959891949750929550565b600080604083850312156127f2576127f1612460565b5b6000612800858286016124ae565b9250506020612811858286016124ae565b9150509250929050565b600061282682612465565b9050919050565b6128368161281b565b811461284157600080fd5b50565b6000813590506128538161282d565b92915050565b60006020828403121561286f5761286e612460565b5b600061287d84828501612844565b91505092915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b60006128bc6006836123b9565b91506128c782612886565b602082019050919050565b600060208201905081810360008301526128eb816128af565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061292c826124c3565b9150612937836124c3565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156129705761296f6128f2565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006129b5826124c3565b91506129c0836124c3565b9250826129d0576129cf61297b565b5b828204905092915050565b7f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560008201527f206c657373207468616e202e3525000000000000000000000000000000000000602082015250565b6000612a37602e836123b9565b9150612a42826129db565b604082019050919050565b60006020820190508181036000830152612a6681612a2a565b9050919050565b7f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60008201527f6f7265207468616e203230250000000000000000000000000000000000000000602082015250565b6000612ac9602c836123b9565b9150612ad482612a6d565b604082019050919050565b60006020820190508181036000830152612af881612abc565b9050919050565b6000819050919050565b6000612b24612b1f612b1a84612465565b612aff565b612465565b9050919050565b6000612b3682612b09565b9050919050565b6000612b4882612b2b565b9050919050565b612b5881612b3d565b82525050565b6000602082019050612b736000830184612b4f565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612bd56024836123b9565b9150612be082612b79565b604082019050919050565b60006020820190508181036000830152612c0481612bc8565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612c676022836123b9565b9150612c7282612c0b565b604082019050919050565b60006020820190508181036000830152612c9681612c5a565b9050919050565b6000612ca8826124c3565b9150612cb3836124c3565b9250828203905081811115612ccb57612cca6128f2565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612d2d6025836123b9565b9150612d3882612cd1565b604082019050919050565b60006020820190508181036000830152612d5c81612d20565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612dbf6023836123b9565b9150612dca82612d63565b604082019050919050565b60006020820190508181036000830152612dee81612db2565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612e516029836123b9565b9150612e5c82612df5565b604082019050919050565b60006020820190508181036000830152612e8081612e44565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b6000612ee36031836123b9565b9150612eee82612e87565b604082019050919050565b60006020820190508181036000830152612f1281612ed6565b9050919050565b7f74726164696e67416c6c6f776564000000000000000000000000000000000000600082015250565b6000612f4f600e836123b9565b9150612f5a82612f19565b602082019050919050565b60006020820190508181036000830152612f7e81612f42565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000600082015250565b6000612fbb601e836123b9565b9150612fc682612f85565b602082019050919050565b60006020820190508181036000830152612fea81612fae565b9050919050565b6000612ffc826124c3565b9150613007836124c3565b925082820190508082111561301f5761301e6128f2565b5b92915050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b600061305b6011836123b9565b915061306682613025565b602082019050919050565b6000602082019050818103600083015261308a8161304e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506130fe81612497565b92915050565b60006020828403121561311a57613119612460565b5b6000613128848285016130ef565b91505092915050565b6000819050919050565b600061315661315161314c84613131565b612aff565b6124c3565b9050919050565b6131668161313b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6131a181612485565b82525050565b60006131b38383613198565b60208301905092915050565b6000602082019050919050565b60006131d78261316c565b6131e18185613177565b93506131ec83613188565b8060005b8381101561321d57815161320488826131a7565b975061320f836131bf565b9250506001810190506131f0565b5085935050505092915050565b600060a08201905061323f600083018861256f565b61324c602083018761315d565b818103604083015261325e81866131cc565b905061326d606083018561270f565b61327a608083018461256f565b9695505050505050565b600060c082019050613299600083018961270f565b6132a6602083018861256f565b6132b3604083018761315d565b6132c0606083018661315d565b6132cd608083018561270f565b6132da60a083018461256f565b979650505050505050565b6000815190506132f4816124cd565b92915050565b60008060006060848603121561331357613312612460565b5b6000613321868287016132e5565b9350506020613332868287016132e5565b9250506040613343868287016132e5565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122092f9f25c2ea023305be93a93de21b58c96026c4943c4b1b906880fe4fc77f9e864736f6c63430008100033

Deployed Bytecode Sourcemap

4780:11499:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7123:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8138:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8277:132;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10451:580;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8654:119;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15622:309;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7346:67;;;;;;;;;;;;;:::i;:::-;;3160:87;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7273:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5337:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8024:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7503:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8415:114;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8535:113;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7419:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7196:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5455:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7612:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9922:521;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7757:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3253:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7123:67;7160:13;7183:5;;;;;;;;;;;;;;;;;7176:12;;7123:67;:::o;8138:133::-;8213:4;8220:37;8229:10;8241:7;8250:6;8220:8;:37::i;:::-;8265:4;8258:11;;8138:133;;;;:::o;8277:132::-;8330:7;8347:60;8385:21;8403:1;8385:9;:21::i;:::-;8347:33;8364:15;6178:42;8364:9;:15::i;:::-;8347:12;;:16;;:33;;;;:::i;:::-;:37;;:60;;;;:::i;:::-;8340:67;;8277:132;:::o;10451:580::-;3119:19;3127:10;3119:7;:19::i;:::-;3111:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10547:13:::1;10588:5;10580:4;10564:13;:11;:13::i;:::-;:20;;;;:::i;:::-;10563:30;;;;:::i;:::-;10547:46;;10604:19;10653:5;10643:6;10627:13;:11;:13::i;:::-;:22;;;;:::i;:::-;10626:32;;;;:::i;:::-;10604:54;;10669:17;10717:5;10706:7;10690:13;:11;:13::i;:::-;:23;;;;:::i;:::-;10689:33;;;;:::i;:::-;10669:53;;10755:4;10733:19;:26;;;;10792:6;10770:19;:28;;;;10829:7;10809:17;:27;;;;10847:13;10863:30;10888:4;10863:20;10881:1;10863:13;:11;:13::i;:::-;:17;;:20;;;;:::i;:::-;:24;;:30;;;;:::i;:::-;10847:46;;10921:5;10912;:14;;:38;;;;;10945:5;10930:11;:20;;10912:38;:60;;;;;10967:5;10954:9;:18;;10912:60;10904:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;10536:495;;;;10451:580:::0;;;:::o;8654:119::-;8705:7;8760:11;;8738:19;;8722:13;:11;:13::i;:::-;:35;;;;:::i;:::-;:49;;;;:::i;:::-;8715:56;;8654:119;:::o;15622:309::-;15720:4;15737:36;15747:6;15755:9;15766:6;15737:9;:36::i;:::-;15784:117;15793:6;15801:10;15813:87;15849:6;15813:87;;;;;;;;;;;;;;;;;:11;:19;15825:6;15813:19;;;;;;;;;;;;;;;:31;15833:10;15813:31;;;;;;;;;;;;;;;;:35;;:87;;;;;:::i;:::-;15784:8;:117::i;:::-;15919:4;15912:11;;15622:309;;;;;:::o;7346:67::-;3119:19;3127:10;3119:7;:19::i;:::-;3111:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;7407:4:::1;7390:14;;:21;;;;;;;;;;;;;;;;;;7346:67::o:0;3160:87::-;3215:4;3240:5;;;;;;;;;;;3229:16;;:7;:16;;;3222:23;;3160:87;;;:::o;7273:67::-;7314:5;4986:1;7322:16;;7273:67;:::o;5337:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;8024:108::-;3119:19;3127:10;3119:7;:19::i;:::-;3111:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;8122:8:::1;8098:11;:21;8110:8;8098:21;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;8024:108:::0;;:::o;7503:103::-;7569:7;7586:9;:18;7596:7;7586:18;;;;;;;;;;;;;;;;7579:25;;7503:103;;;:::o;8415:114::-;8463:7;8516:11;;8496:17;;8480:13;:11;:13::i;:::-;:33;;;;:::i;:::-;:47;;;;:::i;:::-;8473:54;;8415:114;:::o;8535:113::-;8580:7;8635:11;;8613:19;;8597:13;:11;:13::i;:::-;:35;;;;:::i;:::-;:49;;;;:::i;:::-;8590:56;;8535:113;:::o;7419:78::-;7471:7;7489:5;;;;;;;;;;;7482:12;;7419:78;:::o;7196:71::-;7235:13;7258:7;;;;;;;;;;;;;;;;;7251:14;;7196:71;:::o;5455:19::-;;;;;;;;;;;;;:::o;7612:139::-;7690:4;7697:40;7707:10;7719:9;7730:6;7697:9;:40::i;:::-;7745:4;7738:11;;7612:139;;;;:::o;9922:521::-;3119:19;3127:10;3119:7;:19::i;:::-;3111:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10107:10:::1;10092:12;:25;;;;10143:10;10128:12;:25;;;;10174:5;10164:7;:15;;;;10207:12;10190:14;:29;;;;10241:6;10230:8;:17;;;;10268:5;10258:7;:15;;;;10298:6;10284:11;:20;;;;10335:18;10351:1;10335:11;;:15;;:18;;;;:::i;:::-;10323:8;;:30;;:63;;;;;10368:18;10384:1;10368:11;;:15;;:18;;;;:::i;:::-;10357:7;;:29;;10323:63;10315:120;;;;;;;;;;;;:::i;:::-;;;;;;;;;9922:521:::0;;;;;;;:::o;7757:127::-;7838:7;7855:11;:18;7867:5;7855:18;;;;;;;;;;;;;;;:27;7874:7;7855:27;;;;;;;;;;;;;;;;7848:34;;7757:127;;;;:::o;3253:111::-;3119:19;3127:10;3119:7;:19::i;:::-;3111:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3327:3:::1;3319:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;3337:25;3358:3;3337:25;;;;;;:::i;:::-;;;;;;;;3253:111:::0;:::o;15939:335::-;16049:1;16032:19;;:5;:19;;;16024:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16130:1;16111:21;;:7;:21;;;16103:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16212:6;16182:11;:18;16194:5;16182:18;;;;;;;;;;;;;;;:27;16201:7;16182:27;;;;;;;;;;;;;;;:36;;;;16250:7;16234:32;;16243:5;16234:32;;;16259:6;16234:32;;;;;;:::i;:::-;;;;;;;;15939:335;;;:::o;346:82::-;404:7;425:1;421;:5;;;;:::i;:::-;414:12;;346:82;;;;:::o;434:::-;492:7;513:1;509;:5;;;;:::i;:::-;502:12;;434:82;;;;:::o;522:::-;580:7;601:1;597;:5;;;;:::i;:::-;590:12;;522:82;;;;:::o;9228:686::-;9317:37;9328:6;9336:9;9347:6;9317:10;:37::i;:::-;9365:38;9385:6;9393:9;9365:19;:38::i;:::-;9414:41;9429:6;9437:9;9448:6;9414:14;:41::i;:::-;9467:35;9484:6;9492:9;9467:16;:35::i;:::-;9513:39;9526:6;9534:9;9545:6;9513:12;:39::i;:::-;9564:35;9573:6;9581:9;9592:6;9564:8;:35::i;:::-;9630:29;9652:6;9630:9;:17;9640:6;9630:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;9610:9;:17;9620:6;9610:17;;;;;;;;;;;;;;;:49;;;;9670:22;9695:32;9709:6;9717:9;9695:13;:32::i;:::-;:78;;9767:6;9695:78;;;9730:34;9738:6;9746:9;9757:6;9730:7;:34::i;:::-;9695:78;9670:103;;9807:40;9832:14;9807:9;:20;9817:9;9807:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;9784:9;:20;9794:9;9784:20;;;;;;;;;;;;;;;:63;;;;9880:9;9863:43;;9872:6;9863:43;;;9891:14;9863:43;;;;;;:::i;:::-;;;;;;;;9306:608;9228:686;;;:::o;1559:162::-;1645:7;1688:1;1683;:6;;1691:12;1675:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1717:1;1713;:5;1706:12;;1559:162;;;;;:::o;8781:439::-;8903:1;8885:20;;:6;:20;;;8877:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;8987:1;8966:23;;:9;:23;;;8958:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;9065:1;9048:6;:19;9040:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;9142:17;9152:6;9142:9;:17::i;:::-;9132:6;:27;;9124:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;8781:439;;;:::o;11039:191::-;11132:11;:19;11144:6;11132:19;;;;;;;;;;;;;;;;;;;;;;;;;11131:20;:47;;;;;11156:11;:22;11168:9;11156:22;;;;;;;;;;;;;;;;;;;;;;;;;11155:23;11131:47;11128:95;;;11188:14;;;;;;;;;;;11180:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;11128:95;11039:191;;:::o;11242:333::-;11346:11;:19;11358:6;11346:19;;;;;;;;;;;;;;;;;;;;;;;;;11345:20;:47;;;;;11370:11;:22;11382:9;11370:22;;;;;;;;;;;;;;;;;;;;;;;;;11369:23;11345:47;:77;;;;;11417:4;;;;;;;;;;;11396:26;;:9;:26;;;;11345:77;:107;;;;;6178:42;11426:26;;:9;:26;;;;11345:107;11342:226;;;11514:17;:15;:17::i;:::-;11477:32;11502:6;11477:9;:20;11487:9;11477:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;11476:55;;11468:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;11342:226;11242:333;;;:::o;11583:159::-;11680:4;;;;;;;;;;;11667:17;;:9;:17;;;:41;;;;;11689:11;:19;11701:6;11689:19;;;;;;;;;;;;;;;;;;;;;;;;;11688:20;11667:41;11664:71;;;11731:1;11710:9;;:23;;;;;;;:::i;:::-;;;;;;;;11664:71;11583:159;;:::o;11750:349::-;11861:4;;;;;;;;;;;11851:14;;:6;:14;;;11848:130;;11885:20;:18;:20::i;:::-;11875:6;:30;;:53;;;;11909:11;:19;11921:6;11909:19;;;;;;;;;;;;;;;;;;;;;;;;;11875:53;:79;;;;11932:11;:22;11944:9;11932:22;;;;;;;;;;;;;;;;;;;;;;;;;11875:79;11867:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;11848:130;12006:14;:12;:14::i;:::-;11996:6;:24;;:47;;;;12024:11;:19;12036:6;12024:19;;;;;;;;;;;;;;;;;;;;;;;;;11996:47;:73;;;;12047:11;:22;12059:9;12047:22;;;;;;;;;;;;;;;;;;;;;;;;;11996:73;11988:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;11750:349;;;:::o;14382:197::-;14474:41;14489:6;14497:9;14508:6;14474:14;:41::i;:::-;14471:101;;;14517:29;14532:13;;14517:14;:29::i;:::-;14568:1;14548:9;:22;;;;14471:101;14382:197;;;:::o;14587:160::-;14668:4;14693:11;:19;14705:6;14693:19;;;;;;;;;;;;;;;;;;;;;;;;;14692:20;:47;;;;;14717:11;:22;14729:9;14717:22;;;;;;;;;;;;;;;;;;;;;;;;;14716:23;14692:47;14685:54;;14587:160;;;;:::o;15068:546::-;15154:7;15210:1;15177:30;15189:6;15197:9;15177:11;:30::i;:::-;:34;15174:418;;;15223:17;15243:59;15271:30;15283:6;15291:9;15271:11;:30::i;:::-;15243:23;15254:11;;15243:6;:10;;:23;;;;:::i;:::-;:27;;:59;;;;:::i;:::-;15223:79;;15340:39;15369:9;15340;:24;15358:4;15340:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;15313:9;:24;15331:4;15313:24;;;;;;;;;;;;;;;:66;;;;15420:4;15395:42;;15404:6;15395:42;;;15427:9;15395:42;;;;;;:::i;:::-;;;;;;;;15469:1;15451:7;;:20;15448:104;;;15473:77;15491:4;6178:42;15513:36;15541:7;;15513:23;15524:11;;15513:6;:10;;:23;;;;:::i;:::-;:27;;:36;;;;:::i;:::-;15473:9;:77::i;:::-;15448:104;15569:21;15580:9;15569:6;:10;;:21;;;;:::i;:::-;15562:28;;;;;15174:418;15600:6;15593:13;;15068:546;;;;;;:::o;258:82::-;316:7;337:1;333;:5;;;;:::i;:::-;326:12;;258:82;;;;:::o;13974:400::-;14072:4;14089:13;14115:15;;14105:6;:25;;14089:41;;14141:19;14191:13;;14163:24;14181:4;14163:9;:24::i;:::-;:41;;14141:63;;14223:8;;;;;;;;;;;14222:9;:24;;;;;14235:11;;;;;;;;;;;14222:24;:42;;;;;14250:14;;;;;;;;;;;14222:42;:54;;;;;14268:8;14222:54;:78;;;;;14281:11;:19;14293:6;14281:19;;;;;;;;;;;;;;;;;;;;;;;;;14280:20;14222:78;:99;;;;;14317:4;;;;;;;;;;;14304:17;;:9;:17;;;14222:99;:126;;;;;14346:1;14325:9;;:23;;14222:126;:144;;;;;14352:14;14222:144;14215:151;;;;13974:400;;;;;:::o;12107:1066::-;6110:4;6099:8;;:15;;;;;;;;;;;;;;;;;;12178:20:::1;12201:66;12265:1;12202:57;12244:14;;12202:37;12226:12;;12202:19;12219:1;12202:12;;:16;;:19;;;;:::i;:::-;:23;;:37;;;;:::i;:::-;:41;;:57;;;;:::i;:::-;12201:63;;:66;;;;:::i;:::-;12178:89;;12278:32;12313:42;12342:12;12313:24;12324:12;;12313:6;:10;;:24;;;;:::i;:::-;:28;;:42;;;;:::i;:::-;12278:77;;12366:14;12383:36;12394:24;12383:6;:10;;:36;;;;:::i;:::-;12366:53;;12430:22;12455:21;12430:46;;12487:24;12504:6;12487:16;:24::i;:::-;12522:20;12545:41;12571:14;12545:21;:25;;:41;;;;:::i;:::-;12522:64;;12597:19;12618:48;12635:30;12652:12;;12635;:16;;:30;;;;:::i;:::-;12618:12;:16;;:48;;;;:::i;:::-;12597:69;;12677:29;12709;12725:12;;12709:11;:15;;:29;;;;:::i;:::-;12677:61;;12784:1;12752:21;:34;12749:103;;;12788:61;12801:24;12827:21;12788:12;:61::i;:::-;12749:103;12862:20;12885:36;12908:12;;12885:18;12901:1;12885:11;:15;;:18;;;;:::i;:::-;:22;;:36;;;;:::i;:::-;12862:59;;12950:1;12935:12;:16;12932:73;;;6373:42;12953:36;;:50;12990:12;12953:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;12932:73;13015:24;13042:21;13015:48;;13104:1;13077:16;:29;13074:92;;;6276:42;13108:38;;:56;13147:16;13108:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;13074:92;12167:1006;;;;;;;;;6130:5:::0;6119:8;;:16;;;;;;;;;;;;;;;;;;12107:1066;:::o;14755:305::-;14834:7;14857:5;:13;14863:6;14857:13;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;;14874:5;:16;14880:9;14874:16;;;;;;;;;;;;;;;;;;;;;;;;;14857:33;14854:76;;;14899:29;14923:3;14899:11;;:15;;:29;;;;:::i;:::-;14892:36;;;;14854:76;14956:4;;;;;;;;;;;14943:17;;:9;:17;;;14940:38;;14969:7;;14962:14;;;;14940:38;15001:4;;;;;;;;;;;14991:14;;:6;:14;;;14988:36;;15014:8;;15007:15;;;;14988:36;15041:11;;15034:18;;14755:305;;;;;:::o;13532:434::-;13598:21;13636:1;13622:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13598:40;;13667:4;13649;13654:1;13649:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;13693:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13683:4;13688:1;13683:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;13717:53;13734:4;13749:6;;;;;;;;;;;13758:11;13717:8;:53::i;:::-;13781:6;;;;;;;;;;;:57;;;13853:11;13879:1;13895:4;13922;13942:15;13781:177;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13587:379;13532:434;:::o;13181:343::-;13262:53;13279:4;13294:6;;;;;;;;;;;13303:11;13262:8;:53::i;:::-;13326:6;;;;;;;;;;;:22;;;13356:9;13389:4;13409:11;13435:1;13451;6469:42;13500:15;13326:190;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13181:343;;:::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:::-;4500:6;4508;4516;4565:2;4553:9;4544:7;4540:23;4536:32;4533:119;;;4571:79;;:::i;:::-;4533:119;4691:1;4716:53;4761:7;4752:6;4741:9;4737:22;4716:53;:::i;:::-;4706:63;;4662:117;4818:2;4844:53;4889:7;4880:6;4869:9;4865:22;4844:53;:::i;:::-;4834:63;;4789:118;4946:2;4972:53;5017:7;5008:6;4997:9;4993:22;4972:53;:::i;:::-;4962:63;;4917:118;4423:619;;;;;:::o;5048:329::-;5107:6;5156:2;5144:9;5135:7;5131:23;5127:32;5124:119;;;5162:79;;:::i;:::-;5124:119;5282:1;5307:53;5352:7;5343:6;5332:9;5328:22;5307:53;:::i;:::-;5297:63;;5253:117;5048:329;;;;:::o;5383:86::-;5418:7;5458:4;5451:5;5447:16;5436:27;;5383:86;;;:::o;5475:112::-;5558:22;5574:5;5558:22;:::i;:::-;5553:3;5546:35;5475:112;;:::o;5593:214::-;5682:4;5720:2;5709:9;5705:18;5697:26;;5733:67;5797:1;5786:9;5782:17;5773:6;5733:67;:::i;:::-;5593:214;;;;:::o;5813:116::-;5883:21;5898:5;5883:21;:::i;:::-;5876:5;5873:32;5863:60;;5919:1;5916;5909:12;5863:60;5813:116;:::o;5935:133::-;5978:5;6016:6;6003:20;5994:29;;6032:30;6056:5;6032:30;:::i;:::-;5935:133;;;;:::o;6074:468::-;6139:6;6147;6196:2;6184:9;6175:7;6171:23;6167:32;6164:119;;;6202:79;;:::i;:::-;6164:119;6322:1;6347:53;6392:7;6383:6;6372:9;6368:22;6347:53;:::i;:::-;6337:63;;6293:117;6449:2;6475:50;6517:7;6508:6;6497:9;6493:22;6475:50;:::i;:::-;6465:60;;6420:115;6074:468;;;;;:::o;6548:118::-;6635:24;6653:5;6635:24;:::i;:::-;6630:3;6623:37;6548:118;;:::o;6672:222::-;6765:4;6803:2;6792:9;6788:18;6780:26;;6816:71;6884:1;6873:9;6869:17;6860:6;6816:71;:::i;:::-;6672:222;;;;:::o;6900:1203::-;7013:6;7021;7029;7037;7045;7053;7061;7110:3;7098:9;7089:7;7085:23;7081:33;7078:120;;;7117:79;;:::i;:::-;7078:120;7237:1;7262:53;7307:7;7298:6;7287:9;7283:22;7262:53;:::i;:::-;7252:63;;7208:117;7364:2;7390:53;7435:7;7426:6;7415:9;7411:22;7390:53;:::i;:::-;7380:63;;7335:118;7492:2;7518:53;7563:7;7554:6;7543:9;7539:22;7518:53;:::i;:::-;7508:63;;7463:118;7620:2;7646:53;7691:7;7682:6;7671:9;7667:22;7646:53;:::i;:::-;7636:63;;7591:118;7748:3;7775:53;7820:7;7811:6;7800:9;7796:22;7775:53;:::i;:::-;7765:63;;7719:119;7877:3;7904:53;7949:7;7940:6;7929:9;7925:22;7904:53;:::i;:::-;7894:63;;7848:119;8006:3;8033:53;8078:7;8069:6;8058:9;8054:22;8033:53;:::i;:::-;8023:63;;7977:119;6900:1203;;;;;;;;;;:::o;8109:474::-;8177:6;8185;8234:2;8222:9;8213:7;8209:23;8205:32;8202:119;;;8240:79;;:::i;:::-;8202:119;8360:1;8385:53;8430:7;8421:6;8410:9;8406:22;8385:53;:::i;:::-;8375:63;;8331:117;8487:2;8513:53;8558:7;8549:6;8538:9;8534:22;8513:53;:::i;:::-;8503:63;;8458:118;8109:474;;;;;:::o;8589:104::-;8634:7;8663:24;8681:5;8663:24;:::i;:::-;8652:35;;8589:104;;;:::o;8699:138::-;8780:32;8806:5;8780:32;:::i;:::-;8773:5;8770:43;8760:71;;8827:1;8824;8817:12;8760:71;8699:138;:::o;8843:155::-;8897:5;8935:6;8922:20;8913:29;;8951:41;8986:5;8951:41;:::i;:::-;8843:155;;;;:::o;9004:345::-;9071:6;9120:2;9108:9;9099:7;9095:23;9091:32;9088:119;;;9126:79;;:::i;:::-;9088:119;9246:1;9271:61;9324:7;9315:6;9304:9;9300:22;9271:61;:::i;:::-;9261:71;;9217:125;9004:345;;;;:::o;9355:156::-;9495:8;9491:1;9483:6;9479:14;9472:32;9355:156;:::o;9517:365::-;9659:3;9680:66;9744:1;9739:3;9680:66;:::i;:::-;9673:73;;9755:93;9844:3;9755:93;:::i;:::-;9873:2;9868:3;9864:12;9857:19;;9517:365;;;:::o;9888:419::-;10054:4;10092:2;10081:9;10077:18;10069:26;;10141:9;10135:4;10131:20;10127:1;10116:9;10112:17;10105:47;10169:131;10295:4;10169:131;:::i;:::-;10161:139;;9888:419;;;:::o;10313:180::-;10361:77;10358:1;10351:88;10458:4;10455:1;10448:15;10482:4;10479:1;10472:15;10499:348;10539:7;10562:20;10580:1;10562:20;:::i;:::-;10557:25;;10596:20;10614:1;10596:20;:::i;:::-;10591:25;;10784:1;10716:66;10712:74;10709:1;10706:81;10701:1;10694:9;10687:17;10683:105;10680:131;;;10791:18;;:::i;:::-;10680:131;10839:1;10836;10832:9;10821:20;;10499:348;;;;:::o;10853:180::-;10901:77;10898:1;10891:88;10998:4;10995:1;10988:15;11022:4;11019:1;11012:15;11039:185;11079:1;11096:20;11114:1;11096:20;:::i;:::-;11091:25;;11130:20;11148:1;11130:20;:::i;:::-;11125:25;;11169:1;11159:35;;11174:18;;:::i;:::-;11159:35;11216:1;11213;11209:9;11204:14;;11039:185;;;;:::o;11230:233::-;11370:34;11366:1;11358:6;11354:14;11347:58;11439:16;11434:2;11426:6;11422:15;11415:41;11230:233;:::o;11469:366::-;11611:3;11632:67;11696:2;11691:3;11632:67;:::i;:::-;11625:74;;11708:93;11797:3;11708:93;:::i;:::-;11826:2;11821:3;11817:12;11810:19;;11469:366;;;:::o;11841:419::-;12007:4;12045:2;12034:9;12030:18;12022:26;;12094:9;12088:4;12084:20;12080:1;12069:9;12065:17;12058:47;12122:131;12248:4;12122:131;:::i;:::-;12114:139;;11841:419;;;:::o;12266:231::-;12406:34;12402:1;12394:6;12390:14;12383:58;12475:14;12470:2;12462:6;12458:15;12451:39;12266:231;:::o;12503:366::-;12645:3;12666:67;12730:2;12725:3;12666:67;:::i;:::-;12659:74;;12742:93;12831:3;12742:93;:::i;:::-;12860:2;12855:3;12851:12;12844:19;;12503:366;;;:::o;12875:419::-;13041:4;13079:2;13068:9;13064:18;13056:26;;13128:9;13122:4;13118:20;13114:1;13103:9;13099:17;13092:47;13156:131;13282:4;13156:131;:::i;:::-;13148:139;;12875:419;;;:::o;13300:60::-;13328:3;13349:5;13342:12;;13300:60;;;:::o;13366:142::-;13416:9;13449:53;13467:34;13476:24;13494:5;13476:24;:::i;:::-;13467:34;:::i;:::-;13449:53;:::i;:::-;13436:66;;13366:142;;;:::o;13514:126::-;13564:9;13597:37;13628:5;13597:37;:::i;:::-;13584:50;;13514:126;;;:::o;13646:134::-;13704:9;13737:37;13768:5;13737:37;:::i;:::-;13724:50;;13646:134;;;:::o;13786:147::-;13881:45;13920:5;13881:45;:::i;:::-;13876:3;13869:58;13786:147;;:::o;13939:238::-;14040:4;14078:2;14067:9;14063:18;14055:26;;14091:79;14167:1;14156:9;14152:17;14143:6;14091:79;:::i;:::-;13939:238;;;;:::o;14183:223::-;14323:34;14319:1;14311:6;14307:14;14300:58;14392:6;14387:2;14379:6;14375:15;14368:31;14183:223;:::o;14412:366::-;14554:3;14575:67;14639:2;14634:3;14575:67;:::i;:::-;14568:74;;14651:93;14740:3;14651:93;:::i;:::-;14769:2;14764:3;14760:12;14753:19;;14412:366;;;:::o;14784:419::-;14950:4;14988:2;14977:9;14973:18;14965:26;;15037:9;15031:4;15027:20;15023:1;15012:9;15008:17;15001:47;15065:131;15191:4;15065:131;:::i;:::-;15057:139;;14784:419;;;:::o;15209:221::-;15349:34;15345:1;15337:6;15333:14;15326:58;15418:4;15413:2;15405:6;15401:15;15394:29;15209:221;:::o;15436:366::-;15578:3;15599:67;15663:2;15658:3;15599:67;:::i;:::-;15592:74;;15675:93;15764:3;15675:93;:::i;:::-;15793:2;15788:3;15784:12;15777:19;;15436:366;;;:::o;15808:419::-;15974:4;16012:2;16001:9;15997:18;15989:26;;16061:9;16055:4;16051:20;16047:1;16036:9;16032:17;16025:47;16089:131;16215:4;16089:131;:::i;:::-;16081:139;;15808:419;;;:::o;16233:194::-;16273:4;16293:20;16311:1;16293:20;:::i;:::-;16288:25;;16327:20;16345:1;16327:20;:::i;:::-;16322:25;;16371:1;16368;16364:9;16356:17;;16395:1;16389:4;16386:11;16383:37;;;16400:18;;:::i;:::-;16383:37;16233:194;;;;:::o;16433:224::-;16573:34;16569:1;16561:6;16557:14;16550:58;16642:7;16637:2;16629:6;16625:15;16618:32;16433:224;:::o;16663:366::-;16805:3;16826:67;16890:2;16885:3;16826:67;:::i;:::-;16819:74;;16902:93;16991:3;16902:93;:::i;:::-;17020:2;17015:3;17011:12;17004:19;;16663:366;;;:::o;17035:419::-;17201:4;17239:2;17228:9;17224:18;17216:26;;17288:9;17282:4;17278:20;17274:1;17263:9;17259:17;17252:47;17316:131;17442:4;17316:131;:::i;:::-;17308:139;;17035:419;;;:::o;17460:222::-;17600:34;17596:1;17588:6;17584:14;17577:58;17669:5;17664:2;17656:6;17652:15;17645:30;17460:222;:::o;17688:366::-;17830:3;17851:67;17915:2;17910:3;17851:67;:::i;:::-;17844:74;;17927:93;18016:3;17927:93;:::i;:::-;18045:2;18040:3;18036:12;18029:19;;17688:366;;;:::o;18060:419::-;18226:4;18264:2;18253:9;18249:18;18241:26;;18313:9;18307:4;18303:20;18299:1;18288:9;18284:17;18277:47;18341:131;18467:4;18341:131;:::i;:::-;18333:139;;18060:419;;;:::o;18485:228::-;18625:34;18621:1;18613:6;18609:14;18602:58;18694:11;18689:2;18681:6;18677:15;18670:36;18485:228;:::o;18719:366::-;18861:3;18882:67;18946:2;18941:3;18882:67;:::i;:::-;18875:74;;18958:93;19047:3;18958:93;:::i;:::-;19076:2;19071:3;19067:12;19060:19;;18719:366;;;:::o;19091:419::-;19257:4;19295:2;19284:9;19280:18;19272:26;;19344:9;19338:4;19334:20;19330:1;19319:9;19315:17;19308:47;19372:131;19498:4;19372:131;:::i;:::-;19364:139;;19091:419;;;:::o;19516:236::-;19656:34;19652:1;19644:6;19640:14;19633:58;19725:19;19720:2;19712:6;19708:15;19701:44;19516:236;:::o;19758:366::-;19900:3;19921:67;19985:2;19980:3;19921:67;:::i;:::-;19914:74;;19997:93;20086:3;19997:93;:::i;:::-;20115:2;20110:3;20106:12;20099:19;;19758:366;;;:::o;20130:419::-;20296:4;20334:2;20323:9;20319:18;20311:26;;20383:9;20377:4;20373:20;20369:1;20358:9;20354:17;20347:47;20411:131;20537:4;20411:131;:::i;:::-;20403:139;;20130:419;;;:::o;20555:164::-;20695:16;20691:1;20683:6;20679:14;20672:40;20555:164;:::o;20725:366::-;20867:3;20888:67;20952:2;20947:3;20888:67;:::i;:::-;20881:74;;20964:93;21053:3;20964:93;:::i;:::-;21082:2;21077:3;21073:12;21066:19;;20725:366;;;:::o;21097:419::-;21263:4;21301:2;21290:9;21286:18;21278:26;;21350:9;21344:4;21340:20;21336:1;21325:9;21321:17;21314:47;21378:131;21504:4;21378:131;:::i;:::-;21370:139;;21097:419;;;:::o;21522:180::-;21662:32;21658:1;21650:6;21646:14;21639:56;21522:180;:::o;21708:366::-;21850:3;21871:67;21935:2;21930:3;21871:67;:::i;:::-;21864:74;;21947:93;22036:3;21947:93;:::i;:::-;22065:2;22060:3;22056:12;22049:19;;21708:366;;;:::o;22080:419::-;22246:4;22284:2;22273:9;22269:18;22261:26;;22333:9;22327:4;22323:20;22319:1;22308:9;22304:17;22297:47;22361:131;22487:4;22361:131;:::i;:::-;22353:139;;22080:419;;;:::o;22505:191::-;22545:3;22564:20;22582:1;22564:20;:::i;:::-;22559:25;;22598:20;22616:1;22598:20;:::i;:::-;22593:25;;22641:1;22638;22634:9;22627:16;;22662:3;22659:1;22656:10;22653:36;;;22669:18;;:::i;:::-;22653:36;22505:191;;;;:::o;22702:167::-;22842:19;22838:1;22830:6;22826:14;22819:43;22702:167;:::o;22875:366::-;23017:3;23038:67;23102:2;23097:3;23038:67;:::i;:::-;23031:74;;23114:93;23203:3;23114:93;:::i;:::-;23232:2;23227:3;23223:12;23216:19;;22875:366;;;:::o;23247:419::-;23413:4;23451:2;23440:9;23436:18;23428:26;;23500:9;23494:4;23490:20;23486:1;23475:9;23471:17;23464:47;23528:131;23654:4;23528:131;:::i;:::-;23520:139;;23247:419;;;:::o;23672:180::-;23720:77;23717:1;23710:88;23817:4;23814:1;23807:15;23841:4;23838:1;23831:15;23858:180;23906:77;23903:1;23896:88;24003:4;24000:1;23993:15;24027:4;24024:1;24017:15;24044:143;24101:5;24132:6;24126:13;24117:22;;24148:33;24175:5;24148:33;:::i;:::-;24044:143;;;;:::o;24193:351::-;24263:6;24312:2;24300:9;24291:7;24287:23;24283:32;24280:119;;;24318:79;;:::i;:::-;24280:119;24438:1;24463:64;24519:7;24510:6;24499:9;24495:22;24463:64;:::i;:::-;24453:74;;24409:128;24193:351;;;;:::o;24550:85::-;24595:7;24624:5;24613:16;;24550:85;;;:::o;24641:158::-;24699:9;24732:61;24750:42;24759:32;24785:5;24759:32;:::i;:::-;24750:42;:::i;:::-;24732:61;:::i;:::-;24719:74;;24641:158;;;:::o;24805:147::-;24900:45;24939:5;24900:45;:::i;:::-;24895:3;24888:58;24805:147;;:::o;24958:114::-;25025:6;25059:5;25053:12;25043:22;;24958:114;;;:::o;25078:184::-;25177:11;25211:6;25206:3;25199:19;25251:4;25246:3;25242:14;25227:29;;25078:184;;;;:::o;25268:132::-;25335:4;25358:3;25350:11;;25388:4;25383:3;25379:14;25371:22;;25268:132;;;:::o;25406:108::-;25483:24;25501:5;25483:24;:::i;:::-;25478:3;25471:37;25406:108;;:::o;25520:179::-;25589:10;25610:46;25652:3;25644:6;25610:46;:::i;:::-;25688:4;25683:3;25679:14;25665:28;;25520:179;;;;:::o;25705:113::-;25775:4;25807;25802:3;25798:14;25790:22;;25705:113;;;:::o;25854:732::-;25973:3;26002:54;26050:5;26002:54;:::i;:::-;26072:86;26151:6;26146:3;26072:86;:::i;:::-;26065:93;;26182:56;26232:5;26182:56;:::i;:::-;26261:7;26292:1;26277:284;26302:6;26299:1;26296:13;26277:284;;;26378:6;26372:13;26405:63;26464:3;26449:13;26405:63;:::i;:::-;26398:70;;26491:60;26544:6;26491:60;:::i;:::-;26481:70;;26337:224;26324:1;26321;26317:9;26312:14;;26277:284;;;26281:14;26577:3;26570:10;;25978:608;;;25854:732;;;;:::o;26592:831::-;26855:4;26893:3;26882:9;26878:19;26870:27;;26907:71;26975:1;26964:9;26960:17;26951:6;26907:71;:::i;:::-;26988:80;27064:2;27053:9;27049:18;27040:6;26988:80;:::i;:::-;27115:9;27109:4;27105:20;27100:2;27089:9;27085:18;27078:48;27143:108;27246:4;27237:6;27143:108;:::i;:::-;27135:116;;27261:72;27329:2;27318:9;27314:18;27305:6;27261:72;:::i;:::-;27343:73;27411:3;27400:9;27396:19;27387:6;27343:73;:::i;:::-;26592:831;;;;;;;;:::o;27429:807::-;27678:4;27716:3;27705:9;27701:19;27693:27;;27730:71;27798:1;27787:9;27783:17;27774:6;27730:71;:::i;:::-;27811:72;27879:2;27868:9;27864:18;27855:6;27811:72;:::i;:::-;27893:80;27969:2;27958:9;27954:18;27945:6;27893:80;:::i;:::-;27983;28059:2;28048:9;28044:18;28035:6;27983:80;:::i;:::-;28073:73;28141:3;28130:9;28126:19;28117:6;28073:73;:::i;:::-;28156;28224:3;28213:9;28209:19;28200:6;28156:73;:::i;:::-;27429:807;;;;;;;;;:::o;28242:143::-;28299:5;28330:6;28324:13;28315:22;;28346:33;28373:5;28346:33;:::i;:::-;28242:143;;;;:::o;28391:663::-;28479:6;28487;28495;28544:2;28532:9;28523:7;28519:23;28515:32;28512:119;;;28550:79;;:::i;:::-;28512:119;28670:1;28695:64;28751:7;28742:6;28731:9;28727:22;28695:64;:::i;:::-;28685:74;;28641:128;28808:2;28834:64;28890:7;28881:6;28870:9;28866:22;28834:64;:::i;:::-;28824:74;;28779:129;28947:2;28973:64;29029:7;29020:6;29009:9;29005:22;28973:64;:::i;:::-;28963:74;;28918:129;28391:663;;;;;:::o

Swarm Source

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