ETH Price: $2,663.34 (+1.99%)

Token

Stranger (Stranger)
 

Overview

Max Total Supply

1,000,000,000 Stranger

Holders

6

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.000000002 Stranger

Value
$0.00
0x7DC2bbDa44C0e3e5CA48ac2c4586a85a9A545512
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:
Stranger

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-11-05
*/

/**

https://t.me/Strangererc

*/

// 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 Stranger is IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = unicode'Stranger';
    string private constant _symbol = unicode'Stranger';
    uint8 private constant _decimals = 9;
    uint256 private _totalSupply = 1000000000 * (10 ** _decimals);
    uint256 private _maxTxAmountPercent = 300; 
    uint256 private _maxTransferPercent = 300;
    uint256 private _maxWalletPercent = 300;
    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 = true;
    uint256 private liquidityFee = 0;
    uint256 private marketingFee = 1000;
    uint256 private developmentFee = 1000;
    uint256 private burnFee = 0;
    uint256 private totalFee = 2000;
    uint256 private sellFee = 2000;
    uint256 private transferFee = 2000;
    uint256 private denominator = 10000;
    bool private swapEnabled = true;
    uint256 private swapTimes;
    bool private swapping;
    uint256 swapAmount = 1;
    uint256 private swapThreshold = ( _totalSupply * 3000 ) / 100000;
    uint256 private minTokenAmount = ( _totalSupply * 20 ) / 100000;
    modifier lockTheSwap {swapping = true; _; swapping = false;}

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

    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 setFees(uint256 _liquidity, uint256 _marketing, uint256 _burn, uint256 _development, uint256 _total, uint256 _sell, uint256 _trans) external onlyOwner {
        liquidityFee = _liquidity;
        marketingFee = _marketing;
        burnFee = _burn;
        developmentFee = _development;
        totalFee = _total;
        sellFee = _sell;
        transferFee = _trans;
        require(totalFee <= denominator.div(1) && sellFee <= denominator.div(1), "totalFee and sellFee cannot be more than 20%");
    }

    function setWalletLimits(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 >= swapAmount && aboveThreshold;
    }

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

    function 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":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapAmount","type":"uint256"},{"internalType":"uint256","name":"_swapThreshold","type":"uint256"},{"internalType":"uint256","name":"_minTokenAmount","type":"uint256"}],"name":"setSwapbackSettings","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":"setWalletLimits","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"}]

60806040526009600a6200001491906200071a565b633b9aca006200002591906200076b565b60015561012c60025561012c60035561012c6004556001600a60146101000a81548160ff0219169083151502179055506000600b556103e8600c556103e8600d556000600e556107d0600f556107d06010556107d06011556127106012556001601360006101000a81548160ff0219169083151502179055506001601655620186a0610bb8600154620000b991906200076b565b620000c59190620007fb565b601755620186a06014600154620000dd91906200076b565b620000e99190620007fb565b601855348015620000f957600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001a3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c991906200089d565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000231573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025791906200089d565b6040518363ffffffff1660e01b815260040162000276929190620008e0565b6020604051808303816000875af115801562000296573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002bc91906200089d565b905081600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073a3388b528374bd067a1f01c3272a8701af83db1773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073a3388b528374bd067a1f01c3272a8701af83db1773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600154600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6001546040516200057091906200091e565b60405180910390a350506200093b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200060e57808604811115620005e657620005e562000580565b5b6001851615620005f65780820291505b80810290506200060685620005af565b9450620005c6565b94509492505050565b600082620006295760019050620006fc565b81620006395760009050620006fc565b81600181146200065257600281146200065d5762000693565b6001915050620006fc565b60ff84111562000672576200067162000580565b5b8360020a9150848211156200068c576200068b62000580565b5b50620006fc565b5060208310610133831016604e8410600b8410161715620006cd5782820a905083811115620006c757620006c662000580565b5b620006fc565b620006dc8484846001620005bc565b92509050818404811115620006f657620006f562000580565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620007278262000703565b915062000734836200070d565b9250620007637fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000617565b905092915050565b6000620007788262000703565b9150620007858362000703565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620007c157620007c062000580565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620008088262000703565b9150620008158362000703565b925082620008285762000827620007cc565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620008658262000838565b9050919050565b620008778162000858565b81146200088357600080fd5b50565b60008151905062000897816200086c565b92915050565b600060208284031215620008b657620008b562000833565b5b6000620008c68482850162000886565b91505092915050565b620008da8162000858565b82525050565b6000604082019050620008f76000830185620008cf565b620009066020830184620008cf565b9392505050565b620009188162000703565b82525050565b60006020820190506200093560008301846200090d565b92915050565b613494806200094b6000396000f3fe6080604052600436106101395760003560e01c806370a08231116100ab578063a8aa1b311161006f578063a8aa1b3114610437578063a9059cbb14610462578063da2e3bad1461049f578063dd62ed3e146104c8578063e94dd17c14610505578063f2fde38b1461052e57610140565b806370a082311461034e57806378109e541461038b5780637d1db4a5146103b6578063893d20e8146103e157806395d89b411461040c57610140565b8063293230b8116100fd578063293230b8146102405780632f54bf6e14610257578063313ce567146102945780633f4218e0146102bf57806348ff2b8b146102fc57806366dc3e331461032557610140565b806306fdde0314610145578063095ea7b31461017057806318160ddd146101ad5780631f976b7e146101d857806323b872dd1461020357610140565b3661014057005b600080fd5b34801561015157600080fd5b5061015a610557565b6040516101679190612527565b60405180910390f35b34801561017c57600080fd5b50610197600480360381019061019291906125e2565b610594565b6040516101a4919061263d565b60405180910390f35b3480156101b957600080fd5b506101c26105ab565b6040516101cf9190612667565b60405180910390f35b3480156101e457600080fd5b506101ed6105ec565b6040516101fa9190612667565b60405180910390f35b34801561020f57600080fd5b5061022a60048036038101906102259190612682565b610615565b604051610237919061263d565b60405180910390f35b34801561024c57600080fd5b506102556106e0565b005b34801561026357600080fd5b5061027e600480360381019061027991906126d5565b610745565b60405161028b919061263d565b60405180910390f35b3480156102a057600080fd5b506102a961079e565b6040516102b6919061271e565b60405180910390f35b3480156102cb57600080fd5b506102e660048036038101906102e191906126d5565b6107a7565b6040516102f3919061263d565b60405180910390f35b34801561030857600080fd5b50610323600480360381019061031e9190612765565b6107c7565b005b34801561033157600080fd5b5061034c600480360381019061034791906127a5565b61086a565b005b34801561035a57600080fd5b50610375600480360381019061037091906126d5565b6109ca565b6040516103829190612667565b60405180910390f35b34801561039757600080fd5b506103a0610a13565b6040516103ad9190612667565b60405180910390f35b3480156103c257600080fd5b506103cb610a3c565b6040516103d89190612667565b60405180910390f35b3480156103ed57600080fd5b506103f6610a65565b6040516104039190612807565b60405180910390f35b34801561041857600080fd5b50610421610a8e565b60405161042e9190612527565b60405180910390f35b34801561044357600080fd5b5061044c610acb565b6040516104599190612807565b60405180910390f35b34801561046e57600080fd5b50610489600480360381019061048491906125e2565b610af1565b604051610496919061263d565b60405180910390f35b3480156104ab57600080fd5b506104c660048036038101906104c19190612822565b610b08565b005b3480156104d457600080fd5b506104ef60048036038101906104ea91906128c4565b610c07565b6040516104fc9190612667565b60405180910390f35b34801561051157600080fd5b5061052c600480360381019061052791906127a5565b610c8e565b005b34801561053a57600080fd5b5061055560048036038101906105509190612942565b610d42565b005b60606040518060400160405280600881526020017f537472616e676572000000000000000000000000000000000000000000000000815250905090565b60006105a1338484610e04565b6001905092915050565b60006105e76105ba60006109ca565b6105d96105c861dead6109ca565b600154610fcd90919063ffffffff16565b610fcd90919063ffffffff16565b905090565b60006012546003546105fc6105ab565b610606919061299e565b6106109190612a27565b905090565b6000610622848484610fe3565b6106d584336106d08560405180606001604052806028815260200161343760289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111dc9092919063ffffffff16565b610e04565b600190509392505050565b6106e933610745565b610728576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071f90612aa4565b60405180910390fd5b6001600a60146101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b60076020528060005260406000206000915054906101000a900460ff1681565b6107d033610745565b61080f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080690612aa4565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61087333610745565b6108b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a990612aa4565b60405180910390fd5b6000612710846108c06105ab565b6108ca919061299e565b6108d49190612a27565b90506000612710846108e46105ab565b6108ee919061299e565b6108f89190612a27565b90506000612710846109086105ab565b610912919061299e565b61091c9190612a27565b905085600281905550846003819055508360048190555060006109646103e861095660056109486105ab565b61123190919063ffffffff16565b61124790919063ffffffff16565b90508084101580156109765750808310155b80156109825750808210155b6109c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b890612b36565b60405180910390fd5b50505050505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000601254600454610a236105ab565b610a2d919061299e565b610a379190612a27565b905090565b6000601254600254610a4c6105ab565b610a56919061299e565b610a609190612a27565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600881526020017f537472616e676572000000000000000000000000000000000000000000000000815250905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610afe338484610fe3565b6001905092915050565b610b1133610745565b610b50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4790612aa4565b60405180910390fd5b86600b8190555085600c8190555084600e8190555083600d8190555082600f819055508160108190555080601181905550610b97600160125461124790919063ffffffff16565b600f5411158015610bbf5750610bb9600160125461124790919063ffffffff16565b60105411155b610bfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf590612bc8565b60405180910390fd5b50505050505050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610c9733610745565b610cd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ccd90612aa4565b60405180910390fd5b82601681905550610d07620186a0610cf98460015461123190919063ffffffff16565b61124790919063ffffffff16565b601781905550610d37620186a0610d298360015461123190919063ffffffff16565b61124790919063ffffffff16565b601881905550505050565b610d4b33610745565b610d8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8190612aa4565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051610df99190612c47565b60405180910390a150565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6a90612cd4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ee2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed990612d66565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610fc09190612667565b60405180910390a3505050565b60008183610fdb9190612d86565b905092915050565b610fee83838361125d565b610ff883836113ce565b6110038383836114cb565b61100d83836116a9565b611018838383611774565b6110238383836119b3565b61107581600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fcd90919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006110c484846119dc565b6110ce57816110da565b6110d9848484611a8a565b5b905061112e81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c3290919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516111ce9190612667565b60405180910390a350505050565b6000838311158290611224576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121b9190612527565b60405180910390fd5b5082840390509392505050565b6000818361123f919061299e565b905092915050565b600081836112559190612a27565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036112cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c390612e2c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361133b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133290612ebe565b60405180910390fd5b6000811161137e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137590612f50565b60405180910390fd5b611387836109ca565b8111156113c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c090612fe2565b60405180910390fd5b505050565b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156114725750600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156114c757600a60149054906101000a900460ff166114c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bd9061304e565b60405180910390fd5b5b5050565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561156f5750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156115c95750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611603575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156116a457611610610a13565b61166282600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c3290919063ffffffff16565b11156116a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169a906130ba565b60405180910390fd5b5b505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480156117505750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156117705760016014600082825461176891906130da565b925050819055505b5050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146118bc576117d16105ec565b811115806118285750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061187c5750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6118bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b29061315a565b60405180910390fd5b5b6118c4610a3c565b8111158061191b5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061196f5750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6119ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a59061315a565b60405180910390fd5b505050565b6119be838383611c48565b156119d7576119ce601754611d82565b60006014819055505b505050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611a825750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b600080611a978585611fd3565b1115611c27576000611acf611aac8686611fd3565b611ac16012548661124790919063ffffffff16565b61123190919063ffffffff16565b9050611b2381600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c3290919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611bc39190612667565b60405180910390a36000600e541115611c0c57611c0b3061dead611c06600e54611bf86012548961124790919063ffffffff16565b61123190919063ffffffff16565b610fe3565b5b611c1f8184610fcd90919063ffffffff16565b915050611c2b565b8190505b9392505050565b60008183611c4091906130da565b905092915050565b60008060185483101590506000601754611c61306109ca565b10159050601560009054906101000a900460ff16158015611c8e5750601360009054906101000a900460ff165b8015611ca65750600a60149054906101000a900460ff165b8015611caf5750815b8015611d055750600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d5e5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b8015611d6e575060165460145410155b8015611d775750805b925050509392505050565b6001601560006101000a81548160ff0219169083151502179055506000611df06002611de2600d54611dd4600c54611dc66001600b54611c3290919063ffffffff16565b611c3290919063ffffffff16565b611c3290919063ffffffff16565b61123190919063ffffffff16565b90506000611e1b82611e0d600b548661123190919063ffffffff16565b61124790919063ffffffff16565b90506000611e328285610fcd90919063ffffffff16565b90506000479050611e4282612162565b6000611e578247610fcd90919063ffffffff16565b90506000611e82611e73600b5488610fcd90919063ffffffff16565b8361124790919063ffffffff16565b90506000611e9b600b548361123190919063ffffffff16565b90506000811115611eb157611eb086826123a5565b5b6000611edb600c54611ecd60028661123190919063ffffffff16565b61123190919063ffffffff16565b90506000811115611f425773a3388b528374bd067a1f01c3272a8701af83db1773ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611f40573d6000803e3d6000fd5b505b60004790506000811115611fac5773a3388b528374bd067a1f01c3272a8701af83db1773ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611faa573d6000803e3d6000fd5b505b5050505050505050506000601560006101000a81548160ff02191690831515021790555050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806120765750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612098576120916064601254610fcd90919063ffffffff16565b905061215c565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120f757601054905061215c565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361215657600f54905061215c565b60115490505b92915050565b6000600267ffffffffffffffff81111561217f5761217e61317a565b5b6040519080825280602002602001820160405280156121ad5781602001602082028036833780820191505090505b50905030816000815181106121c5576121c46131a9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561226c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061229091906131ed565b816001815181106122a4576122a36131a9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061230b30600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610e04565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161236f959493929190613313565b600060405180830381600087803b15801561238957600080fd5b505af115801561239d573d6000803e3d6000fd5b505050505050565b6123d230600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610e04565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008073a3388b528374bd067a1f01c3272a8701af83db17426040518863ffffffff1660e01b815260040161244d9695949392919061336d565b60606040518083038185885af115801561246b573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061249091906133e3565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156124d15780820151818401526020810190506124b6565b60008484015250505050565b6000601f19601f8301169050919050565b60006124f982612497565b61250381856124a2565b93506125138185602086016124b3565b61251c816124dd565b840191505092915050565b6000602082019050818103600083015261254181846124ee565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006125798261254e565b9050919050565b6125898161256e565b811461259457600080fd5b50565b6000813590506125a681612580565b92915050565b6000819050919050565b6125bf816125ac565b81146125ca57600080fd5b50565b6000813590506125dc816125b6565b92915050565b600080604083850312156125f9576125f8612549565b5b600061260785828601612597565b9250506020612618858286016125cd565b9150509250929050565b60008115159050919050565b61263781612622565b82525050565b6000602082019050612652600083018461262e565b92915050565b612661816125ac565b82525050565b600060208201905061267c6000830184612658565b92915050565b60008060006060848603121561269b5761269a612549565b5b60006126a986828701612597565b93505060206126ba86828701612597565b92505060406126cb868287016125cd565b9150509250925092565b6000602082840312156126eb576126ea612549565b5b60006126f984828501612597565b91505092915050565b600060ff82169050919050565b61271881612702565b82525050565b6000602082019050612733600083018461270f565b92915050565b61274281612622565b811461274d57600080fd5b50565b60008135905061275f81612739565b92915050565b6000806040838503121561277c5761277b612549565b5b600061278a85828601612597565b925050602061279b85828601612750565b9150509250929050565b6000806000606084860312156127be576127bd612549565b5b60006127cc868287016125cd565b93505060206127dd868287016125cd565b92505060406127ee868287016125cd565b9150509250925092565b6128018161256e565b82525050565b600060208201905061281c60008301846127f8565b92915050565b600080600080600080600060e0888a03121561284157612840612549565b5b600061284f8a828b016125cd565b97505060206128608a828b016125cd565b96505060406128718a828b016125cd565b95505060606128828a828b016125cd565b94505060806128938a828b016125cd565b93505060a06128a48a828b016125cd565b92505060c06128b58a828b016125cd565b91505092959891949750929550565b600080604083850312156128db576128da612549565b5b60006128e985828601612597565b92505060206128fa85828601612597565b9150509250929050565b600061290f8261254e565b9050919050565b61291f81612904565b811461292a57600080fd5b50565b60008135905061293c81612916565b92915050565b60006020828403121561295857612957612549565b5b60006129668482850161292d565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006129a9826125ac565b91506129b4836125ac565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156129ed576129ec61296f565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612a32826125ac565b9150612a3d836125ac565b925082612a4d57612a4c6129f8565b5b828204905092915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000612a8e6006836124a2565b9150612a9982612a58565b602082019050919050565b60006020820190508181036000830152612abd81612a81565b9050919050565b7f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560008201527f206c657373207468616e202e3525000000000000000000000000000000000000602082015250565b6000612b20602e836124a2565b9150612b2b82612ac4565b604082019050919050565b60006020820190508181036000830152612b4f81612b13565b9050919050565b7f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60008201527f6f7265207468616e203230250000000000000000000000000000000000000000602082015250565b6000612bb2602c836124a2565b9150612bbd82612b56565b604082019050919050565b60006020820190508181036000830152612be181612ba5565b9050919050565b6000819050919050565b6000612c0d612c08612c038461254e565b612be8565b61254e565b9050919050565b6000612c1f82612bf2565b9050919050565b6000612c3182612c14565b9050919050565b612c4181612c26565b82525050565b6000602082019050612c5c6000830184612c38565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612cbe6024836124a2565b9150612cc982612c62565b604082019050919050565b60006020820190508181036000830152612ced81612cb1565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612d506022836124a2565b9150612d5b82612cf4565b604082019050919050565b60006020820190508181036000830152612d7f81612d43565b9050919050565b6000612d91826125ac565b9150612d9c836125ac565b9250828203905081811115612db457612db361296f565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612e166025836124a2565b9150612e2182612dba565b604082019050919050565b60006020820190508181036000830152612e4581612e09565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612ea86023836124a2565b9150612eb382612e4c565b604082019050919050565b60006020820190508181036000830152612ed781612e9b565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612f3a6029836124a2565b9150612f4582612ede565b604082019050919050565b60006020820190508181036000830152612f6981612f2d565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b6000612fcc6031836124a2565b9150612fd782612f70565b604082019050919050565b60006020820190508181036000830152612ffb81612fbf565b9050919050565b7f74726164696e67416c6c6f776564000000000000000000000000000000000000600082015250565b6000613038600e836124a2565b915061304382613002565b602082019050919050565b600060208201905081810360008301526130678161302b565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000600082015250565b60006130a4601e836124a2565b91506130af8261306e565b602082019050919050565b600060208201905081810360008301526130d381613097565b9050919050565b60006130e5826125ac565b91506130f0836125ac565b92508282019050808211156131085761310761296f565b5b92915050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b60006131446011836124a2565b915061314f8261310e565b602082019050919050565b6000602082019050818103600083015261317381613137565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506131e781612580565b92915050565b60006020828403121561320357613202612549565b5b6000613211848285016131d8565b91505092915050565b6000819050919050565b600061323f61323a6132358461321a565b612be8565b6125ac565b9050919050565b61324f81613224565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61328a8161256e565b82525050565b600061329c8383613281565b60208301905092915050565b6000602082019050919050565b60006132c082613255565b6132ca8185613260565b93506132d583613271565b8060005b838110156133065781516132ed8882613290565b97506132f8836132a8565b9250506001810190506132d9565b5085935050505092915050565b600060a0820190506133286000830188612658565b6133356020830187613246565b818103604083015261334781866132b5565b905061335660608301856127f8565b6133636080830184612658565b9695505050505050565b600060c08201905061338260008301896127f8565b61338f6020830188612658565b61339c6040830187613246565b6133a96060830186613246565b6133b660808301856127f8565b6133c360a0830184612658565b979650505050505050565b6000815190506133dd816125b6565b92915050565b6000806000606084860312156133fc576133fb612549565b5b600061340a868287016133ce565b935050602061341b868287016133ce565b925050604061342c868287016133ce565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220e32e0239d66ad521ed6e128b08e6571718d17859dbda842dbe5be3bdd49eeaf664736f6c63430008100033

Deployed Bytecode

0x6080604052600436106101395760003560e01c806370a08231116100ab578063a8aa1b311161006f578063a8aa1b3114610437578063a9059cbb14610462578063da2e3bad1461049f578063dd62ed3e146104c8578063e94dd17c14610505578063f2fde38b1461052e57610140565b806370a082311461034e57806378109e541461038b5780637d1db4a5146103b6578063893d20e8146103e157806395d89b411461040c57610140565b8063293230b8116100fd578063293230b8146102405780632f54bf6e14610257578063313ce567146102945780633f4218e0146102bf57806348ff2b8b146102fc57806366dc3e331461032557610140565b806306fdde0314610145578063095ea7b31461017057806318160ddd146101ad5780631f976b7e146101d857806323b872dd1461020357610140565b3661014057005b600080fd5b34801561015157600080fd5b5061015a610557565b6040516101679190612527565b60405180910390f35b34801561017c57600080fd5b50610197600480360381019061019291906125e2565b610594565b6040516101a4919061263d565b60405180910390f35b3480156101b957600080fd5b506101c26105ab565b6040516101cf9190612667565b60405180910390f35b3480156101e457600080fd5b506101ed6105ec565b6040516101fa9190612667565b60405180910390f35b34801561020f57600080fd5b5061022a60048036038101906102259190612682565b610615565b604051610237919061263d565b60405180910390f35b34801561024c57600080fd5b506102556106e0565b005b34801561026357600080fd5b5061027e600480360381019061027991906126d5565b610745565b60405161028b919061263d565b60405180910390f35b3480156102a057600080fd5b506102a961079e565b6040516102b6919061271e565b60405180910390f35b3480156102cb57600080fd5b506102e660048036038101906102e191906126d5565b6107a7565b6040516102f3919061263d565b60405180910390f35b34801561030857600080fd5b50610323600480360381019061031e9190612765565b6107c7565b005b34801561033157600080fd5b5061034c600480360381019061034791906127a5565b61086a565b005b34801561035a57600080fd5b50610375600480360381019061037091906126d5565b6109ca565b6040516103829190612667565b60405180910390f35b34801561039757600080fd5b506103a0610a13565b6040516103ad9190612667565b60405180910390f35b3480156103c257600080fd5b506103cb610a3c565b6040516103d89190612667565b60405180910390f35b3480156103ed57600080fd5b506103f6610a65565b6040516104039190612807565b60405180910390f35b34801561041857600080fd5b50610421610a8e565b60405161042e9190612527565b60405180910390f35b34801561044357600080fd5b5061044c610acb565b6040516104599190612807565b60405180910390f35b34801561046e57600080fd5b50610489600480360381019061048491906125e2565b610af1565b604051610496919061263d565b60405180910390f35b3480156104ab57600080fd5b506104c660048036038101906104c19190612822565b610b08565b005b3480156104d457600080fd5b506104ef60048036038101906104ea91906128c4565b610c07565b6040516104fc9190612667565b60405180910390f35b34801561051157600080fd5b5061052c600480360381019061052791906127a5565b610c8e565b005b34801561053a57600080fd5b5061055560048036038101906105509190612942565b610d42565b005b60606040518060400160405280600881526020017f537472616e676572000000000000000000000000000000000000000000000000815250905090565b60006105a1338484610e04565b6001905092915050565b60006105e76105ba60006109ca565b6105d96105c861dead6109ca565b600154610fcd90919063ffffffff16565b610fcd90919063ffffffff16565b905090565b60006012546003546105fc6105ab565b610606919061299e565b6106109190612a27565b905090565b6000610622848484610fe3565b6106d584336106d08560405180606001604052806028815260200161343760289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111dc9092919063ffffffff16565b610e04565b600190509392505050565b6106e933610745565b610728576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071f90612aa4565b60405180910390fd5b6001600a60146101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b60076020528060005260406000206000915054906101000a900460ff1681565b6107d033610745565b61080f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080690612aa4565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61087333610745565b6108b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a990612aa4565b60405180910390fd5b6000612710846108c06105ab565b6108ca919061299e565b6108d49190612a27565b90506000612710846108e46105ab565b6108ee919061299e565b6108f89190612a27565b90506000612710846109086105ab565b610912919061299e565b61091c9190612a27565b905085600281905550846003819055508360048190555060006109646103e861095660056109486105ab565b61123190919063ffffffff16565b61124790919063ffffffff16565b90508084101580156109765750808310155b80156109825750808210155b6109c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b890612b36565b60405180910390fd5b50505050505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000601254600454610a236105ab565b610a2d919061299e565b610a379190612a27565b905090565b6000601254600254610a4c6105ab565b610a56919061299e565b610a609190612a27565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600881526020017f537472616e676572000000000000000000000000000000000000000000000000815250905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610afe338484610fe3565b6001905092915050565b610b1133610745565b610b50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4790612aa4565b60405180910390fd5b86600b8190555085600c8190555084600e8190555083600d8190555082600f819055508160108190555080601181905550610b97600160125461124790919063ffffffff16565b600f5411158015610bbf5750610bb9600160125461124790919063ffffffff16565b60105411155b610bfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf590612bc8565b60405180910390fd5b50505050505050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610c9733610745565b610cd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ccd90612aa4565b60405180910390fd5b82601681905550610d07620186a0610cf98460015461123190919063ffffffff16565b61124790919063ffffffff16565b601781905550610d37620186a0610d298360015461123190919063ffffffff16565b61124790919063ffffffff16565b601881905550505050565b610d4b33610745565b610d8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8190612aa4565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051610df99190612c47565b60405180910390a150565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6a90612cd4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ee2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed990612d66565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610fc09190612667565b60405180910390a3505050565b60008183610fdb9190612d86565b905092915050565b610fee83838361125d565b610ff883836113ce565b6110038383836114cb565b61100d83836116a9565b611018838383611774565b6110238383836119b3565b61107581600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fcd90919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006110c484846119dc565b6110ce57816110da565b6110d9848484611a8a565b5b905061112e81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c3290919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516111ce9190612667565b60405180910390a350505050565b6000838311158290611224576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121b9190612527565b60405180910390fd5b5082840390509392505050565b6000818361123f919061299e565b905092915050565b600081836112559190612a27565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036112cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c390612e2c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361133b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133290612ebe565b60405180910390fd5b6000811161137e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137590612f50565b60405180910390fd5b611387836109ca565b8111156113c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c090612fe2565b60405180910390fd5b505050565b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156114725750600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156114c757600a60149054906101000a900460ff166114c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bd9061304e565b60405180910390fd5b5b5050565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561156f5750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156115c95750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611603575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156116a457611610610a13565b61166282600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c3290919063ffffffff16565b11156116a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169a906130ba565b60405180910390fd5b5b505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480156117505750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156117705760016014600082825461176891906130da565b925050819055505b5050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146118bc576117d16105ec565b811115806118285750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061187c5750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6118bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b29061315a565b60405180910390fd5b5b6118c4610a3c565b8111158061191b5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061196f5750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6119ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a59061315a565b60405180910390fd5b505050565b6119be838383611c48565b156119d7576119ce601754611d82565b60006014819055505b505050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611a825750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b600080611a978585611fd3565b1115611c27576000611acf611aac8686611fd3565b611ac16012548661124790919063ffffffff16565b61123190919063ffffffff16565b9050611b2381600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c3290919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611bc39190612667565b60405180910390a36000600e541115611c0c57611c0b3061dead611c06600e54611bf86012548961124790919063ffffffff16565b61123190919063ffffffff16565b610fe3565b5b611c1f8184610fcd90919063ffffffff16565b915050611c2b565b8190505b9392505050565b60008183611c4091906130da565b905092915050565b60008060185483101590506000601754611c61306109ca565b10159050601560009054906101000a900460ff16158015611c8e5750601360009054906101000a900460ff165b8015611ca65750600a60149054906101000a900460ff165b8015611caf5750815b8015611d055750600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d5e5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b8015611d6e575060165460145410155b8015611d775750805b925050509392505050565b6001601560006101000a81548160ff0219169083151502179055506000611df06002611de2600d54611dd4600c54611dc66001600b54611c3290919063ffffffff16565b611c3290919063ffffffff16565b611c3290919063ffffffff16565b61123190919063ffffffff16565b90506000611e1b82611e0d600b548661123190919063ffffffff16565b61124790919063ffffffff16565b90506000611e328285610fcd90919063ffffffff16565b90506000479050611e4282612162565b6000611e578247610fcd90919063ffffffff16565b90506000611e82611e73600b5488610fcd90919063ffffffff16565b8361124790919063ffffffff16565b90506000611e9b600b548361123190919063ffffffff16565b90506000811115611eb157611eb086826123a5565b5b6000611edb600c54611ecd60028661123190919063ffffffff16565b61123190919063ffffffff16565b90506000811115611f425773a3388b528374bd067a1f01c3272a8701af83db1773ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611f40573d6000803e3d6000fd5b505b60004790506000811115611fac5773a3388b528374bd067a1f01c3272a8701af83db1773ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611faa573d6000803e3d6000fd5b505b5050505050505050506000601560006101000a81548160ff02191690831515021790555050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806120765750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612098576120916064601254610fcd90919063ffffffff16565b905061215c565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120f757601054905061215c565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361215657600f54905061215c565b60115490505b92915050565b6000600267ffffffffffffffff81111561217f5761217e61317a565b5b6040519080825280602002602001820160405280156121ad5781602001602082028036833780820191505090505b50905030816000815181106121c5576121c46131a9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561226c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061229091906131ed565b816001815181106122a4576122a36131a9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061230b30600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610e04565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161236f959493929190613313565b600060405180830381600087803b15801561238957600080fd5b505af115801561239d573d6000803e3d6000fd5b505050505050565b6123d230600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610e04565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008073a3388b528374bd067a1f01c3272a8701af83db17426040518863ffffffff1660e01b815260040161244d9695949392919061336d565b60606040518083038185885af115801561246b573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061249091906133e3565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156124d15780820151818401526020810190506124b6565b60008484015250505050565b6000601f19601f8301169050919050565b60006124f982612497565b61250381856124a2565b93506125138185602086016124b3565b61251c816124dd565b840191505092915050565b6000602082019050818103600083015261254181846124ee565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006125798261254e565b9050919050565b6125898161256e565b811461259457600080fd5b50565b6000813590506125a681612580565b92915050565b6000819050919050565b6125bf816125ac565b81146125ca57600080fd5b50565b6000813590506125dc816125b6565b92915050565b600080604083850312156125f9576125f8612549565b5b600061260785828601612597565b9250506020612618858286016125cd565b9150509250929050565b60008115159050919050565b61263781612622565b82525050565b6000602082019050612652600083018461262e565b92915050565b612661816125ac565b82525050565b600060208201905061267c6000830184612658565b92915050565b60008060006060848603121561269b5761269a612549565b5b60006126a986828701612597565b93505060206126ba86828701612597565b92505060406126cb868287016125cd565b9150509250925092565b6000602082840312156126eb576126ea612549565b5b60006126f984828501612597565b91505092915050565b600060ff82169050919050565b61271881612702565b82525050565b6000602082019050612733600083018461270f565b92915050565b61274281612622565b811461274d57600080fd5b50565b60008135905061275f81612739565b92915050565b6000806040838503121561277c5761277b612549565b5b600061278a85828601612597565b925050602061279b85828601612750565b9150509250929050565b6000806000606084860312156127be576127bd612549565b5b60006127cc868287016125cd565b93505060206127dd868287016125cd565b92505060406127ee868287016125cd565b9150509250925092565b6128018161256e565b82525050565b600060208201905061281c60008301846127f8565b92915050565b600080600080600080600060e0888a03121561284157612840612549565b5b600061284f8a828b016125cd565b97505060206128608a828b016125cd565b96505060406128718a828b016125cd565b95505060606128828a828b016125cd565b94505060806128938a828b016125cd565b93505060a06128a48a828b016125cd565b92505060c06128b58a828b016125cd565b91505092959891949750929550565b600080604083850312156128db576128da612549565b5b60006128e985828601612597565b92505060206128fa85828601612597565b9150509250929050565b600061290f8261254e565b9050919050565b61291f81612904565b811461292a57600080fd5b50565b60008135905061293c81612916565b92915050565b60006020828403121561295857612957612549565b5b60006129668482850161292d565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006129a9826125ac565b91506129b4836125ac565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156129ed576129ec61296f565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612a32826125ac565b9150612a3d836125ac565b925082612a4d57612a4c6129f8565b5b828204905092915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000612a8e6006836124a2565b9150612a9982612a58565b602082019050919050565b60006020820190508181036000830152612abd81612a81565b9050919050565b7f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560008201527f206c657373207468616e202e3525000000000000000000000000000000000000602082015250565b6000612b20602e836124a2565b9150612b2b82612ac4565b604082019050919050565b60006020820190508181036000830152612b4f81612b13565b9050919050565b7f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60008201527f6f7265207468616e203230250000000000000000000000000000000000000000602082015250565b6000612bb2602c836124a2565b9150612bbd82612b56565b604082019050919050565b60006020820190508181036000830152612be181612ba5565b9050919050565b6000819050919050565b6000612c0d612c08612c038461254e565b612be8565b61254e565b9050919050565b6000612c1f82612bf2565b9050919050565b6000612c3182612c14565b9050919050565b612c4181612c26565b82525050565b6000602082019050612c5c6000830184612c38565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612cbe6024836124a2565b9150612cc982612c62565b604082019050919050565b60006020820190508181036000830152612ced81612cb1565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612d506022836124a2565b9150612d5b82612cf4565b604082019050919050565b60006020820190508181036000830152612d7f81612d43565b9050919050565b6000612d91826125ac565b9150612d9c836125ac565b9250828203905081811115612db457612db361296f565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612e166025836124a2565b9150612e2182612dba565b604082019050919050565b60006020820190508181036000830152612e4581612e09565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612ea86023836124a2565b9150612eb382612e4c565b604082019050919050565b60006020820190508181036000830152612ed781612e9b565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612f3a6029836124a2565b9150612f4582612ede565b604082019050919050565b60006020820190508181036000830152612f6981612f2d565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b6000612fcc6031836124a2565b9150612fd782612f70565b604082019050919050565b60006020820190508181036000830152612ffb81612fbf565b9050919050565b7f74726164696e67416c6c6f776564000000000000000000000000000000000000600082015250565b6000613038600e836124a2565b915061304382613002565b602082019050919050565b600060208201905081810360008301526130678161302b565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000600082015250565b60006130a4601e836124a2565b91506130af8261306e565b602082019050919050565b600060208201905081810360008301526130d381613097565b9050919050565b60006130e5826125ac565b91506130f0836125ac565b92508282019050808211156131085761310761296f565b5b92915050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b60006131446011836124a2565b915061314f8261310e565b602082019050919050565b6000602082019050818103600083015261317381613137565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506131e781612580565b92915050565b60006020828403121561320357613202612549565b5b6000613211848285016131d8565b91505092915050565b6000819050919050565b600061323f61323a6132358461321a565b612be8565b6125ac565b9050919050565b61324f81613224565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61328a8161256e565b82525050565b600061329c8383613281565b60208301905092915050565b6000602082019050919050565b60006132c082613255565b6132ca8185613260565b93506132d583613271565b8060005b838110156133065781516132ed8882613290565b97506132f8836132a8565b9250506001810190506132d9565b5085935050505092915050565b600060a0820190506133286000830188612658565b6133356020830187613246565b818103604083015261334781866132b5565b905061335660608301856127f8565b6133636080830184612658565b9695505050505050565b600060c08201905061338260008301896127f8565b61338f6020830188612658565b61339c6040830187613246565b6133a96060830186613246565b6133b660808301856127f8565b6133c360a0830184612658565b979650505050505050565b6000815190506133dd816125b6565b92915050565b6000806000606084860312156133fc576133fb612549565b5b600061340a868287016133ce565b935050602061341b868287016133ce565b925050604061342c868287016133ce565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220e32e0239d66ad521ed6e128b08e6571718d17859dbda842dbe5be3bdd49eeaf664736f6c63430008100033

Deployed Bytecode Sourcemap

4654:11867:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7036:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8051:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8190:132;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8567:119;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15864:309;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7259:67;;;;;;;;;;;;;:::i;:::-;;3031:87;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7186:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5220:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7937:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10365:586;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7416:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8328:114;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8448:113;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7332:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7109:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5338:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7525:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9835:522;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7670:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14301:315;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3124:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7036:67;7073:13;7096:5;;;;;;;;;;;;;;;;;7089:12;;7036:67;:::o;8051:133::-;8126:4;8133:37;8142:10;8154:7;8163:6;8133:8;:37::i;:::-;8178:4;8171:11;;8051:133;;;;:::o;8190:132::-;8243:7;8260:60;8298:21;8316:1;8298:9;:21::i;:::-;8260:33;8277:15;6091:42;8277:9;:15::i;:::-;8260:12;;:16;;:33;;;;:::i;:::-;:37;;:60;;;;:::i;:::-;8253:67;;8190:132;:::o;8567:119::-;8618:7;8673:11;;8651:19;;8635:13;:11;:13::i;:::-;:35;;;;:::i;:::-;:49;;;;:::i;:::-;8628:56;;8567:119;:::o;15864:309::-;15962:4;15979:36;15989:6;15997:9;16008:6;15979:9;:36::i;:::-;16026:117;16035:6;16043:10;16055:87;16091:6;16055:87;;;;;;;;;;;;;;;;;:11;:19;16067:6;16055:19;;;;;;;;;;;;;;;:31;16075:10;16055:31;;;;;;;;;;;;;;;;:35;;:87;;;;;:::i;:::-;16026:8;:117::i;:::-;16161:4;16154:11;;15864:309;;;;;:::o;7259:67::-;2990:19;2998:10;2990:7;:19::i;:::-;2982:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;7320:4:::1;7303:14;;:21;;;;;;;;;;;;;;;;;;7259:67::o:0;3031:87::-;3086:4;3111:5;;;;;;;;;;;3100:16;;:7;:16;;;3093:23;;3031:87;;;:::o;7186:67::-;7227:5;4880:1;7235:16;;7186:67;:::o;5220:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;7937:108::-;2990:19;2998:10;2990:7;:19::i;:::-;2982:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;8035:8:::1;8011:11;:21;8023:8;8011:21;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;7937:108:::0;;:::o;10365:586::-;2990:19;2998:10;2990:7;:19::i;:::-;2982:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10467:13:::1;10508:5;10500:4;10484:13;:11;:13::i;:::-;:20;;;;:::i;:::-;10483:30;;;;:::i;:::-;10467:46;;10524:19;10573:5;10563:6;10547:13;:11;:13::i;:::-;:22;;;;:::i;:::-;10546:32;;;;:::i;:::-;10524:54;;10589:17;10637:5;10626:7;10610:13;:11;:13::i;:::-;:23;;;;:::i;:::-;10609:33;;;;:::i;:::-;10589:53;;10675:4;10653:19;:26;;;;10712:6;10690:19;:28;;;;10749:7;10729:17;:27;;;;10767:13;10783:30;10808:4;10783:20;10801:1;10783:13;:11;:13::i;:::-;:17;;:20;;;;:::i;:::-;:24;;:30;;;;:::i;:::-;10767:46;;10841:5;10832;:14;;:38;;;;;10865:5;10850:11;:20;;10832:38;:60;;;;;10887:5;10874:9;:18;;10832:60;10824:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;10456:495;;;;10365:586:::0;;;:::o;7416:103::-;7482:7;7499:9;:18;7509:7;7499:18;;;;;;;;;;;;;;;;7492:25;;7416:103;;;:::o;8328:114::-;8376:7;8429:11;;8409:17;;8393:13;:11;:13::i;:::-;:33;;;;:::i;:::-;:47;;;;:::i;:::-;8386:54;;8328:114;:::o;8448:113::-;8493:7;8548:11;;8526:19;;8510:13;:11;:13::i;:::-;:35;;;;:::i;:::-;:49;;;;:::i;:::-;8503:56;;8448:113;:::o;7332:78::-;7384:7;7402:5;;;;;;;;;;;7395:12;;7332:78;:::o;7109:71::-;7148:13;7171:7;;;;;;;;;;;;;;;;;7164:14;;7109:71;:::o;5338:19::-;;;;;;;;;;;;;:::o;7525:139::-;7603:4;7610:40;7620:10;7632:9;7643:6;7610:9;:40::i;:::-;7658:4;7651:11;;7525:139;;;;:::o;9835:522::-;2990:19;2998:10;2990:7;:19::i;:::-;2982:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10021:10:::1;10006:12;:25;;;;10057:10;10042:12;:25;;;;10088:5;10078:7;:15;;;;10121:12;10104:14;:29;;;;10155:6;10144:8;:17;;;;10182:5;10172:7;:15;;;;10212:6;10198:11;:20;;;;10249:18;10265:1;10249:11;;:15;;:18;;;;:::i;:::-;10237:8;;:30;;:63;;;;;10282:18;10298:1;10282:11;;:15;;:18;;;;:::i;:::-;10271:7;;:29;;10237:63;10229:120;;;;;;;;;;;;:::i;:::-;;;;;;;;;9835:522:::0;;;;;;;:::o;7670:127::-;7751:7;7768:11;:18;7780:5;7768:18;;;;;;;;;;;;;;;:27;7787:7;7768:27;;;;;;;;;;;;;;;;7761:34;;7670:127;;;;:::o;14301:315::-;2990:19;2998:10;2990:7;:19::i;:::-;2982:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14443:11:::1;14430:10;:24;;;;14472:53;14517:6;14472:32;14489:14;14472:12;;:16;;:32;;;;:::i;:::-;:36;;:53;;;;:::i;:::-;14456:13;:69;;;;14554:54;14600:6;14554:33;14571:15;14554:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;14537:14;:71;;;;14301:315:::0;;;:::o;3124:111::-;2990:19;2998:10;2990:7;:19::i;:::-;2982:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3198:3:::1;3190:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;3208:25;3229:3;3208:25;;;;;;:::i;:::-;;;;;;;;3124:111:::0;:::o;16181:335::-;16291:1;16274:19;;:5;:19;;;16266:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16372:1;16353:21;;:7;:21;;;16345:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16454:6;16424:11;:18;16436:5;16424:18;;;;;;;;;;;;;;;:27;16443:7;16424:27;;;;;;;;;;;;;;;:36;;;;16492:7;16476:32;;16485:5;16476:32;;;16501:6;16476:32;;;;;;:::i;:::-;;;;;;;;16181:335;;;:::o;217:82::-;275:7;296:1;292;:5;;;;:::i;:::-;285:12;;217:82;;;;:::o;9141:686::-;9230:37;9241:6;9249:9;9260:6;9230:10;:37::i;:::-;9278:38;9298:6;9306:9;9278:19;:38::i;:::-;9327:41;9342:6;9350:9;9361:6;9327:14;:41::i;:::-;9380:35;9397:6;9405:9;9380:16;:35::i;:::-;9426:39;9439:6;9447:9;9458:6;9426:12;:39::i;:::-;9477:35;9486:6;9494:9;9505:6;9477:8;:35::i;:::-;9543:29;9565:6;9543:9;:17;9553:6;9543:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;9523:9;:17;9533:6;9523:17;;;;;;;;;;;;;;;:49;;;;9583:22;9608:32;9622:6;9630:9;9608:13;:32::i;:::-;:78;;9680:6;9608:78;;;9643:34;9651:6;9659:9;9670:6;9643:7;:34::i;:::-;9608:78;9583:103;;9720:40;9745:14;9720:9;:20;9730:9;9720:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;9697:9;:20;9707:9;9697:20;;;;;;;;;;;;;;;:63;;;;9793:9;9776:43;;9785:6;9776:43;;;9804:14;9776:43;;;;;;:::i;:::-;;;;;;;;9219:608;9141:686;;;:::o;1430:162::-;1516:7;1559:1;1554;:6;;1562:12;1546:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1588:1;1584;:5;1577:12;;1430:162;;;;;:::o;305:82::-;363:7;384:1;380;:5;;;;:::i;:::-;373:12;;305:82;;;;:::o;393:::-;451:7;472:1;468;:5;;;;:::i;:::-;461:12;;393:82;;;;:::o;8694:439::-;8816:1;8798:20;;:6;:20;;;8790:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;8900:1;8879:23;;:9;:23;;;8871:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;8978:1;8961:6;:19;8953:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;9055:17;9065:6;9055:9;:17::i;:::-;9045:6;:27;;9037:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;8694:439;;;:::o;10959:191::-;11052:11;:19;11064:6;11052:19;;;;;;;;;;;;;;;;;;;;;;;;;11051:20;:47;;;;;11076:11;:22;11088:9;11076:22;;;;;;;;;;;;;;;;;;;;;;;;;11075:23;11051:47;11048:95;;;11108:14;;;;;;;;;;;11100:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;11048:95;10959:191;;:::o;11162:333::-;11266:11;:19;11278:6;11266:19;;;;;;;;;;;;;;;;;;;;;;;;;11265:20;:47;;;;;11290:11;:22;11302:9;11290:22;;;;;;;;;;;;;;;;;;;;;;;;;11289:23;11265:47;:77;;;;;11337:4;;;;;;;;;;;11316:26;;:9;:26;;;;11265:77;:107;;;;;6091:42;11346:26;;:9;:26;;;;11265:107;11262:226;;;11434:17;:15;:17::i;:::-;11397:32;11422:6;11397:9;:20;11407:9;11397:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;11396:55;;11388:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;11262:226;11162:333;;;:::o;11503:159::-;11600:4;;;;;;;;;;;11587:17;;:9;:17;;;:41;;;;;11609:11;:19;11621:6;11609:19;;;;;;;;;;;;;;;;;;;;;;;;;11608:20;11587:41;11584:71;;;11651:1;11630:9;;:23;;;;;;;:::i;:::-;;;;;;;;11584:71;11503:159;;:::o;11670:349::-;11781:4;;;;;;;;;;;11771:14;;:6;:14;;;11768:130;;11805:20;:18;:20::i;:::-;11795:6;:30;;:53;;;;11829:11;:19;11841:6;11829:19;;;;;;;;;;;;;;;;;;;;;;;;;11795:53;:79;;;;11852:11;:22;11864:9;11852:22;;;;;;;;;;;;;;;;;;;;;;;;;11795:79;11787:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;11768:130;11926:14;:12;:14::i;:::-;11916:6;:24;;:47;;;;11944:11;:19;11956:6;11944:19;;;;;;;;;;;;;;;;;;;;;;;;;11916:47;:73;;;;11967:11;:22;11979:9;11967:22;;;;;;;;;;;;;;;;;;;;;;;;;11916:73;11908:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;11670:349;;;:::o;14624:197::-;14716:41;14731:6;14739:9;14750:6;14716:14;:41::i;:::-;14713:101;;;14759:29;14774:13;;14759:14;:29::i;:::-;14810:1;14790:9;:22;;;;14713:101;14624:197;;;:::o;14829:160::-;14910:4;14935:11;:19;14947:6;14935:19;;;;;;;;;;;;;;;;;;;;;;;;;14934:20;:47;;;;;14959:11;:22;14971:9;14959:22;;;;;;;;;;;;;;;;;;;;;;;;;14958:23;14934:47;14927:54;;14829:160;;;;:::o;15310:546::-;15396:7;15452:1;15419:30;15431:6;15439:9;15419:11;:30::i;:::-;:34;15416:418;;;15465:17;15485:59;15513:30;15525:6;15533:9;15513:11;:30::i;:::-;15485:23;15496:11;;15485:6;:10;;:23;;;;:::i;:::-;:27;;:59;;;;:::i;:::-;15465:79;;15582:39;15611:9;15582;:24;15600:4;15582:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;15555:9;:24;15573:4;15555:24;;;;;;;;;;;;;;;:66;;;;15662:4;15637:42;;15646:6;15637:42;;;15669:9;15637:42;;;;;;:::i;:::-;;;;;;;;15711:1;15693:7;;:20;15690:104;;;15715:77;15733:4;6091:42;15755:36;15783:7;;15755:23;15766:11;;15755:6;:10;;:23;;;;:::i;:::-;:27;;:36;;;;:::i;:::-;15715:9;:77::i;:::-;15690:104;15811:21;15822:9;15811:6;:10;;:21;;;;:::i;:::-;15804:28;;;;;15416:418;15842:6;15835:13;;15310:546;;;;;;:::o;129:82::-;187:7;208:1;204;:5;;;;:::i;:::-;197:12;;129:82;;;;:::o;13894:399::-;13992:4;14009:13;14035:14;;14025:6;:24;;14009:40;;14060:19;14110:13;;14082:24;14100:4;14082:9;:24::i;:::-;:41;;14060:63;;14142:8;;;;;;;;;;;14141:9;:24;;;;;14154:11;;;;;;;;;;;14141:24;:42;;;;;14169:14;;;;;;;;;;;14141:42;:54;;;;;14187:8;14141:54;:78;;;;;14200:11;:19;14212:6;14200:19;;;;;;;;;;;;;;;;;;;;;;;;;14199:20;14141:78;:99;;;;;14236:4;;;;;;;;;;;14223:17;;:9;:17;;;14141:99;:126;;;;;14257:10;;14244:9;;:23;;14141:126;:144;;;;;14271:14;14141:144;14134:151;;;;13894:399;;;;;:::o;12027:1066::-;6023:4;6012:8;;:15;;;;;;;;;;;;;;;;;;12098:20:::1;12121:66;12185:1;12122:57;12164:14;;12122:37;12146:12;;12122:19;12139:1;12122:12;;:16;;:19;;;;:::i;:::-;:23;;:37;;;;:::i;:::-;:41;;:57;;;;:::i;:::-;12121:63;;:66;;;;:::i;:::-;12098:89;;12198:32;12233:42;12262:12;12233:24;12244:12;;12233:6;:10;;:24;;;;:::i;:::-;:28;;:42;;;;:::i;:::-;12198:77;;12286:14;12303:36;12314:24;12303:6;:10;;:36;;;;:::i;:::-;12286:53;;12350:22;12375:21;12350:46;;12407:24;12424:6;12407:16;:24::i;:::-;12442:20;12465:41;12491:14;12465:21;:25;;:41;;;;:::i;:::-;12442:64;;12517:19;12538:48;12555:30;12572:12;;12555;:16;;:30;;;;:::i;:::-;12538:12;:16;;:48;;;;:::i;:::-;12517:69;;12597:29;12629;12645:12;;12629:11;:15;;:29;;;;:::i;:::-;12597:61;;12704:1;12672:21;:34;12669:103;;;12708:61;12721:24;12747:21;12708:12;:61::i;:::-;12669:103;12782:20;12805:36;12828:12;;12805:18;12821:1;12805:11;:15;;:18;;;;:::i;:::-;:22;;:36;;;;:::i;:::-;12782:59;;12870:1;12855:12;:16;12852:73;;;6286:42;12873:36;;:50;12910:12;12873:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;12852:73;12935:24;12962:21;12935:48;;13024:1;12997:16;:29;12994:92;;;6189:42;13028:38;;:56;13067:16;13028:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;12994:92;12087:1006;;;;;;;;;6043:5:::0;6032:8;;:16;;;;;;;;;;;;;;;;;;12027:1066;:::o;14997:305::-;15076:7;15099:5;:13;15105:6;15099:13;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;;15116:5;:16;15122:9;15116:16;;;;;;;;;;;;;;;;;;;;;;;;;15099:33;15096:76;;;15141:29;15165:3;15141:11;;:15;;:29;;;;:::i;:::-;15134:36;;;;15096:76;15198:4;;;;;;;;;;;15185:17;;:9;:17;;;15182:38;;15211:7;;15204:14;;;;15182:38;15243:4;;;;;;;;;;;15233:14;;:6;:14;;;15230:36;;15256:8;;15249:15;;;;15230:36;15283:11;;15276:18;;14997:305;;;;;:::o;13452:434::-;13518:21;13556:1;13542:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13518:40;;13587:4;13569;13574:1;13569:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;13613:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13603:4;13608:1;13603:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;13637:53;13654:4;13669:6;;;;;;;;;;;13678:11;13637:8;:53::i;:::-;13701:6;;;;;;;;;;;:57;;;13773:11;13799:1;13815:4;13842;13862:15;13701:177;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13507:379;13452:434;:::o;13101:343::-;13182:53;13199:4;13214:6;;;;;;;;;;;13223:11;13182:8;:53::i;:::-;13246:6;;;;;;;;;;;:22;;;13276:9;13309:4;13329:11;13355:1;13371;6382:42;13420:15;13246:190;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13101: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:329::-;4482:6;4531:2;4519:9;4510:7;4506:23;4502:32;4499:119;;;4537:79;;:::i;:::-;4499:119;4657:1;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4628:117;4423:329;;;;:::o;4758:86::-;4793:7;4833:4;4826:5;4822:16;4811:27;;4758:86;;;:::o;4850:112::-;4933:22;4949:5;4933:22;:::i;:::-;4928:3;4921:35;4850:112;;:::o;4968:214::-;5057:4;5095:2;5084:9;5080:18;5072:26;;5108:67;5172:1;5161:9;5157:17;5148:6;5108:67;:::i;:::-;4968:214;;;;:::o;5188:116::-;5258:21;5273:5;5258:21;:::i;:::-;5251:5;5248:32;5238:60;;5294:1;5291;5284:12;5238:60;5188:116;:::o;5310:133::-;5353:5;5391:6;5378:20;5369:29;;5407:30;5431:5;5407:30;:::i;:::-;5310:133;;;;:::o;5449:468::-;5514:6;5522;5571:2;5559:9;5550:7;5546:23;5542:32;5539:119;;;5577:79;;:::i;:::-;5539:119;5697:1;5722:53;5767:7;5758:6;5747:9;5743:22;5722:53;:::i;:::-;5712:63;;5668:117;5824:2;5850:50;5892:7;5883:6;5872:9;5868:22;5850:50;:::i;:::-;5840:60;;5795:115;5449:468;;;;;:::o;5923:619::-;6000:6;6008;6016;6065:2;6053:9;6044:7;6040:23;6036:32;6033:119;;;6071:79;;:::i;:::-;6033:119;6191:1;6216:53;6261:7;6252:6;6241:9;6237:22;6216:53;:::i;:::-;6206:63;;6162:117;6318:2;6344:53;6389:7;6380:6;6369:9;6365:22;6344:53;:::i;:::-;6334:63;;6289:118;6446:2;6472:53;6517:7;6508:6;6497:9;6493:22;6472:53;:::i;:::-;6462:63;;6417:118;5923:619;;;;;:::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:180::-;9403:77;9400:1;9393:88;9500:4;9497:1;9490:15;9524:4;9521:1;9514:15;9541:348;9581:7;9604:20;9622:1;9604:20;:::i;:::-;9599:25;;9638:20;9656:1;9638:20;:::i;:::-;9633:25;;9826:1;9758:66;9754:74;9751:1;9748:81;9743:1;9736:9;9729:17;9725:105;9722:131;;;9833:18;;:::i;:::-;9722:131;9881:1;9878;9874:9;9863:20;;9541:348;;;;:::o;9895:180::-;9943:77;9940:1;9933:88;10040:4;10037:1;10030:15;10064:4;10061:1;10054:15;10081:185;10121:1;10138:20;10156:1;10138:20;:::i;:::-;10133:25;;10172:20;10190:1;10172:20;:::i;:::-;10167:25;;10211:1;10201:35;;10216:18;;:::i;:::-;10201:35;10258:1;10255;10251:9;10246:14;;10081:185;;;;:::o;10272:156::-;10412:8;10408:1;10400:6;10396:14;10389:32;10272:156;:::o;10434:365::-;10576:3;10597:66;10661:1;10656:3;10597:66;:::i;:::-;10590:73;;10672:93;10761:3;10672:93;:::i;:::-;10790:2;10785:3;10781:12;10774:19;;10434:365;;;:::o;10805:419::-;10971:4;11009:2;10998:9;10994:18;10986:26;;11058:9;11052:4;11048:20;11044:1;11033:9;11029:17;11022:47;11086:131;11212:4;11086:131;:::i;:::-;11078:139;;10805:419;;;:::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://e32e0239d66ad521ed6e128b08e6571718d17859dbda842dbe5be3bdd49eeaf6
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.