ETH Price: $3,345.99 (-0.62%)
Gas: 5 Gwei

Token

80085 (80085)
 

Overview

Max Total Supply

1,000,000,000 80085

Holders

61

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
40.574914355 80085

Value
$0.00
0x63A5354dFA3b3671E263AdA74E4F191bB50bc6b0
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:
contract2

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-04-11
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.19;


library SafeMath {

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

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

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

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

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

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

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

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

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

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

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

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

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

interface IERC20 {
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);}

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

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

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

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

contract contract2 is IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) private isBot;
    string private constant _name = unicode"80085";
    string private constant _symbol = unicode"80085";
    uint8 private constant _decimals = 9;
    uint256 private _totalSupply = 1000000000 * (10 ** _decimals);
    IRouter router;
    address public pair;
    bool private tradingAllowed = false;
    bool private swapEnabled = true;
    uint256 private swapTimes;
    bool private swapping;
    uint256 swapAmount = 1;
    uint256 private swapThreshold = ( _totalSupply * 1000 ) / 100000;
    uint256 private minTokenAmount = ( _totalSupply * 10 ) / 100000;
    uint256 public _maxTxAmount = ( _totalSupply * 200 ) / 10000;
    uint256 public _maxSellAmount = ( _totalSupply * 200 ) / 10000;
    uint256 public _maxWalletToken = ( _totalSupply * 200 ) / 10000;
    modifier lockTheSwap {swapping = true; _; swapping = false;}
    uint256 private liquidityFee = 0;
    uint256 private marketingFee = 0;
    uint256 private developmentFee = 2500;
    uint256 private burnFee = 0;
    uint256 private totalFee = 2500;
    uint256 private sellFee = 4000;
    uint256 private transferFee = 6000;
    uint256 private denominator = 10000;

    address internal liquidity_receiver = 0x220fC74721110Ccc14489d21d9c9Cae672708Ae2;
    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address internal development_receiver = 0x1768582a3119ae6eE85Eb16Eec07C13cbdE439C9; 
    address internal marketing_receiver = 0x220fC74721110Ccc14489d21d9c9Cae672708Ae2;

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

    receive() external payable {}
    function name() public pure returns (string memory) {return _name;}
    function symbol() public pure returns (string memory) {return _symbol;}
    function decimals() public pure returns (uint8) {return _decimals;}
    function startTrading() external onlyOwner {tradingAllowed = true;}
    function getOwner() external view override returns (address) { return owner; }
    function balanceOf(address account) public view override returns (uint256) {return _balances[account];}
    function transfer(address recipient, uint256 amount) public override returns (bool) {_transfer(msg.sender, recipient, amount);return true;}
    function allowance(address owner, address spender) public view override returns (uint256) {return _allowances[owner][spender];}
    function 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 shouldContractSwap(address sender, address recipient, uint256 amount) internal view returns (bool) {
        bool aboveMin = amount >= minTokenAmount;
        bool aboveThreshold = balanceOf(address(this)) >= swapThreshold;
        return !swapping && swapEnabled && tradingAllowed && aboveMin && !isFeeExempt[sender] && recipient == pair && swapTimes >= swapAmount && aboveThreshold;
    }

    function changeContractSwapConfig0001(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 set0001Fees(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;
    }

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

    function setisBot(address[] calldata addresses, bool _enabled) external onlyOwner {
        for(uint i=0; i < addresses.length; i++){
        isBot[addresses[i]] = _enabled; }
    }

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

    function manualSwap0001() external onlyOwner {
        uint256 amount = balanceOf(address(this));
        if(amount > swapThreshold){amount = swapThreshold;}
        swapAndLiquify(amount);
    }

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

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

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

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

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

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

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

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

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

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapAmount","type":"uint256"},{"internalType":"uint256","name":"_swapThreshold","type":"uint256"},{"internalType":"uint256","name":"_minTokenAmount","type":"uint256"}],"name":"changeContractSwapConfig0001","outputs":[],"stateMutability":"nonpayable","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":"manualSwap0001","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"rescueERC20989898","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketing","type":"address"},{"internalType":"address","name":"_liquidity","type":"address"},{"internalType":"address","name":"_development","type":"address"}],"name":"set00001FeeAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_wallet","type":"uint256"}],"name":"set00001TxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"},{"internalType":"uint256","name":"_development","type":"uint256"},{"internalType":"uint256","name":"_total","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"set0001Fees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisBot","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"}]

60806040526009600a62000014919062000905565b633b9aca0062000025919062000956565b6005556000600760146101000a81548160ff0219169083151502179055506001600760156101000a81548160ff0219169083151502179055506001600a55620186a06103e860055462000079919062000956565b620000859190620009d0565b600b55620186a0600a6005546200009d919062000956565b620000a99190620009d0565b600c5561271060c8600554620000c0919062000956565b620000cc9190620009d0565b600d5561271060c8600554620000e3919062000956565b620000ef9190620009d0565b600e5561271060c860055462000106919062000956565b620001129190620009d0565b600f55600060105560006011556109c460125560006013556109c4601455610fa060155561177060165561271060175573220fc74721110ccc14489d21d9c9cae672708ae2601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550731768582a3119ae6ee85eb16eec07c13cbde439c9601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073220fc74721110ccc14489d21d9c9cae672708ae2601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200024e57600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002f8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200031e919062000a72565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000386573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003ac919062000a72565b6040518363ffffffff1660e01b8152600401620003cb92919062000ab5565b6020604051808303816000875af1158015620003eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000411919062000a72565b905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600554600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6005546040516200075b919062000af3565b60405180910390a3505062000b10565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620007f957808604811115620007d157620007d06200076b565b5b6001851615620007e15780820291505b8081029050620007f1856200079a565b9450620007b1565b94509492505050565b600082620008145760019050620008e7565b81620008245760009050620008e7565b81600181146200083d576002811462000848576200087e565b6001915050620008e7565b60ff8411156200085d576200085c6200076b565b5b8360020a9150848211156200087757620008766200076b565b5b50620008e7565b5060208310610133831016604e8410600b8410161715620008b85782820a905083811115620008b257620008b16200076b565b5b620008e7565b620008c78484846001620007a7565b92509050818404811115620008e157620008e06200076b565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b60006200091282620008ee565b91506200091f83620008f8565b92506200094e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000802565b905092915050565b60006200096382620008ee565b91506200097083620008ee565b92508282026200098081620008ee565b915082820484148315176200099a57620009996200076b565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620009dd82620008ee565b9150620009ea83620008ee565b925082620009fd57620009fc620009a1565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000a3a8262000a0d565b9050919050565b62000a4c8162000a2d565b811462000a5857600080fd5b50565b60008151905062000a6c8162000a41565b92915050565b60006020828403121562000a8b5762000a8a62000a08565b5b600062000a9b8482850162000a5b565b91505092915050565b62000aaf8162000a2d565b82525050565b600060408201905062000acc600083018562000aa4565b62000adb602083018462000aa4565b9392505050565b62000aed81620008ee565b82525050565b600060208201905062000b0a600083018462000ae2565b92915050565b6139dc8062000b206000396000f3fe6080604052600436106101855760003560e01c806370a08231116100d157806395d89b411161008a578063dd62ed3e11610064578063dd62ed3e1461057d578063ddc95913146105ba578063e8543b27146105e3578063f2fde38b1461060c5761018c565b806395d89b41146104ea578063a8aa1b3114610515578063a9059cbb146105405761018c565b806370a08231146103d857806378109e54146104155780637cca52fe146104405780637d1db4a51461046b578063893d20e8146104965780638dd14333146104c15761018c565b8063293230b81161013e5780633f4218e0116101185780633f4218e01461033257806348ff2b8b1461036f5780635935eead146103985780635d57e2fb146103af5761018c565b8063293230b8146102b35780632f54bf6e146102ca578063313ce567146103075761018c565b806306fdde0314610191578063095ea7b3146101bc57806318160ddd146101f95780631af4872714610224578063229b6a5e1461024d57806323b872dd146102765761018c565b3661018c57005b600080fd5b34801561019d57600080fd5b506101a6610635565b6040516101b391906129d3565b60405180910390f35b3480156101c857600080fd5b506101e360048036038101906101de9190612a93565b610672565b6040516101f09190612aee565b60405180910390f35b34801561020557600080fd5b5061020e610689565b60405161021b9190612b18565b60405180910390f35b34801561023057600080fd5b5061024b60048036038101906102469190612b33565b6106ca565b005b34801561025957600080fd5b50610274600480360381019061026f9190612c17565b61077e565b005b34801561028257600080fd5b5061029d60048036038101906102989190612c77565b61086b565b6040516102aa9190612aee565b60405180910390f35b3480156102bf57600080fd5b506102c8610936565b005b3480156102d657600080fd5b506102f160048036038101906102ec9190612cca565b61099b565b6040516102fe9190612aee565b60405180910390f35b34801561031357600080fd5b5061031c6109f4565b6040516103299190612d13565b60405180910390f35b34801561033e57600080fd5b5061035960048036038101906103549190612cca565b6109fd565b6040516103669190612aee565b60405180910390f35b34801561037b57600080fd5b5061039660048036038101906103919190612d2e565b610a1d565b005b3480156103a457600080fd5b506103ad610ac0565b005b3480156103bb57600080fd5b506103d660048036038101906103d19190612a93565b610b31565b005b3480156103e457600080fd5b506103ff60048036038101906103fa9190612cca565b610cc2565b60405161040c9190612b18565b60405180910390f35b34801561042157600080fd5b5061042a610d0b565b6040516104379190612b18565b60405180910390f35b34801561044c57600080fd5b50610455610d11565b6040516104629190612b18565b60405180910390f35b34801561047757600080fd5b50610480610d17565b60405161048d9190612b18565b60405180910390f35b3480156104a257600080fd5b506104ab610d1d565b6040516104b89190612d7d565b60405180910390f35b3480156104cd57600080fd5b506104e860048036038101906104e39190612b33565b610d46565b005b3480156104f657600080fd5b506104ff610ec1565b60405161050c91906129d3565b60405180910390f35b34801561052157600080fd5b5061052a610efe565b6040516105379190612d7d565b60405180910390f35b34801561054c57600080fd5b5061056760048036038101906105629190612a93565b610f24565b6040516105749190612aee565b60405180910390f35b34801561058957600080fd5b506105a4600480360381019061059f9190612d98565b610f3b565b6040516105b19190612b18565b60405180910390f35b3480156105c657600080fd5b506105e160048036038101906105dc9190612dd8565b610fc2565b005b3480156105ef57600080fd5b5061060a60048036038101906106059190612e2b565b6111da565b005b34801561061857600080fd5b50610633600480360381019061062e9190612f0b565b61125c565b005b60606040518060400160405280600581526020017f3830303835000000000000000000000000000000000000000000000000000000815250905090565b600061067f33848461131e565b6001905092915050565b60006106c56106986000610cc2565b6106b76106a661dead610cc2565b6005546114e790919063ffffffff16565b6114e790919063ffffffff16565b905090565b6106d33361099b565b610712576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070990612f84565b60405180910390fd5b82600a81905550610743620186a0610735846005546114fd90919063ffffffff16565b61151390919063ffffffff16565b600b81905550610773620186a0610765836005546114fd90919063ffffffff16565b61151390919063ffffffff16565b600c81905550505050565b6107873361099b565b6107c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107bd90612f84565b60405180910390fd5b60005b838390508110156108655781600460008686858181106107ec576107eb612fa4565b5b90506020020160208101906108019190612cca565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061085d90613002565b9150506107c9565b50505050565b6000610878848484611529565b61092b84336109268560405180606001604052806029815260200161397e60299139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611df39092919063ffffffff16565b61131e565b600190509392505050565b61093f3361099b565b61097e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097590612f84565b60405180910390fd5b6001600760146101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b60036020528060005260406000206000915054906101000a900460ff1681565b610a263361099b565b610a65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5c90612f84565b60405180910390fd5b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610ac93361099b565b610b08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aff90612f84565b60405180910390fd5b6000610b1330610cc2565b9050600b54811115610b2557600b5490505b610b2e81611e48565b50565b610b3a3361099b565b610b79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7090612f84565b60405180910390fd5b6000610c1a6064610c0c848673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610bbd9190612d7d565b602060405180830381865afa158015610bda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bfe919061305f565b6114fd90919063ffffffff16565b61151390919063ffffffff16565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610c7992919061308c565b6020604051808303816000875af1158015610c98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cbc91906130ca565b50505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600f5481565b600e5481565b600d5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610d4f3361099b565b610d8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8590612f84565b60405180910390fd5b6000610db9612710610dab866005546114fd90919063ffffffff16565b61151390919063ffffffff16565b90506000610de6612710610dd8866005546114fd90919063ffffffff16565b61151390919063ffffffff16565b90506000610e13612710610e05866005546114fd90919063ffffffff16565b61151390919063ffffffff16565b905082600d8190555081600e8190555080600f819055506000610e5b6103e8610e4d6005610e3f610689565b6114fd90919063ffffffff16565b61151390919063ffffffff16565b9050808410158015610e6d5750808310155b8015610e795750808210155b610eb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eaf90613143565b60405180910390fd5b50505050505050565b60606040518060400160405280600581526020017f3830303835000000000000000000000000000000000000000000000000000000815250905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610f31338484611529565b6001905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610fcb3361099b565b61100a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100190612f84565b60405180910390fd5b82601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b6111e33361099b565b611222576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121990612f84565b60405180910390fd5b8660108190555085601181905550846013819055508360128190555082601481905550816015819055508060168190555050505050505050565b6112653361099b565b6112a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129b90612f84565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861638160405161131391906131c2565b60405180910390a150565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361138d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113849061324f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f3906132e1565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516114da9190612b18565b60405180910390a3505050565b600081836114f59190613301565b905092915050565b6000818361150b9190613335565b905092915050565b6000818361152191906133a6565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611598576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158f90613449565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611607576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115fe906134db565b60405180910390fd5b61161083610cc2565b811115611652576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116499061356d565b60405180910390fd5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156116f65750600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561174b57600760149054906101000a900460ff1661174a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611741906135d9565b60405180910390fd5b5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156117ef5750600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156118495750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611883575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561191f57600f546118dd82600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120b590919063ffffffff16565b111561191e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191590613645565b60405180910390fd5b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611a6257600e54811115806119ce5750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611a225750600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611a61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a58906136b1565b60405180910390fd5b5b600d5481111580611abc5750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611b105750600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611b4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b46906136b1565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015611bf65750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611c1657600160086000828254611c0e91906136d1565b925050819055505b611c218383836120cb565b15611c3a57611c31600b54611e48565b60006008819055505b611c8c81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114e790919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611cdb8484612205565b611ce55781611cf1565b611cf08484846122b3565b5b9050611d4581600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120b590919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611de59190612b18565b60405180910390a350505050565b6000838311158290611e3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3291906129d3565b60405180910390fd5b5082840390509392505050565b6001600960006101000a81548160ff0219169083151502179055506000611eb66002611ea8601254611e9a601154611e8c60016010546120b590919063ffffffff16565b6120b590919063ffffffff16565b6120b590919063ffffffff16565b6114fd90919063ffffffff16565b90506000611ee182611ed3601054866114fd90919063ffffffff16565b61151390919063ffffffff16565b90506000611ef882856114e790919063ffffffff16565b90506000479050611f0882612471565b6000611f1d82476114e790919063ffffffff16565b90506000611f48611f39601054886114e790919063ffffffff16565b8361151390919063ffffffff16565b90506000611f61601054836114fd90919063ffffffff16565b90506000811115611f7757611f7686826126b4565b5b6000611fa1601154611f936002866114fd90919063ffffffff16565b6114fd90919063ffffffff16565b9050600081111561201657601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612014573d6000803e3d6000fd5b505b6000479050600081111561208e57601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561208c573d6000803e3d6000fd5b505b5050505050505050506000600960006101000a81548160ff02191690831515021790555050565b600081836120c391906136d1565b905092915050565b600080600c5483101590506000600b546120e430610cc2565b10159050600960009054906101000a900460ff161580156121115750600760159054906101000a900460ff165b80156121295750600760149054906101000a900460ff165b80156121325750815b80156121885750600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121e15750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b80156121f15750600a5460085410155b80156121fa5750805b925050509392505050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156122ab5750600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b6000806122c085856127b4565b11156124665760006122f86122d586866127b4565b6122ea6017548661151390919063ffffffff16565b6114fd90919063ffffffff16565b905061234c81600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120b590919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516123ec9190612b18565b60405180910390a36000601354118015612410575060135461240e86866127b4565b115b1561244b5761244a3061dead6124456013546124376017548961151390919063ffffffff16565b6114fd90919063ffffffff16565b611529565b5b61245e81846114e790919063ffffffff16565b91505061246a565b8190505b9392505050565b6000600267ffffffffffffffff81111561248e5761248d613705565b5b6040519080825280602002602001820160405280156124bc5781602001602082028036833780820191505090505b50905030816000815181106124d4576124d3612fa4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561257b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061259f9190613749565b816001815181106125b3576125b2612fa4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061261a30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461131e565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161267e95949392919061386f565b600060405180830381600087803b15801561269857600080fd5b505af11580156126ac573d6000803e3d6000fd5b505050505050565b6126e130600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461131e565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161276a969594939291906138c9565b60606040518083038185885af1158015612788573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906127ad919061392a565b5050505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806128575750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156128795761287260646017546114e790919063ffffffff16565b905061293d565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036128d857601554905061293d565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361293757601454905061293d565b60165490505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561297d578082015181840152602081019050612962565b60008484015250505050565b6000601f19601f8301169050919050565b60006129a582612943565b6129af818561294e565b93506129bf81856020860161295f565b6129c881612989565b840191505092915050565b600060208201905081810360008301526129ed818461299a565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612a2a826129ff565b9050919050565b612a3a81612a1f565b8114612a4557600080fd5b50565b600081359050612a5781612a31565b92915050565b6000819050919050565b612a7081612a5d565b8114612a7b57600080fd5b50565b600081359050612a8d81612a67565b92915050565b60008060408385031215612aaa57612aa96129f5565b5b6000612ab885828601612a48565b9250506020612ac985828601612a7e565b9150509250929050565b60008115159050919050565b612ae881612ad3565b82525050565b6000602082019050612b036000830184612adf565b92915050565b612b1281612a5d565b82525050565b6000602082019050612b2d6000830184612b09565b92915050565b600080600060608486031215612b4c57612b4b6129f5565b5b6000612b5a86828701612a7e565b9350506020612b6b86828701612a7e565b9250506040612b7c86828701612a7e565b9150509250925092565b600080fd5b600080fd5b600080fd5b60008083601f840112612bab57612baa612b86565b5b8235905067ffffffffffffffff811115612bc857612bc7612b8b565b5b602083019150836020820283011115612be457612be3612b90565b5b9250929050565b612bf481612ad3565b8114612bff57600080fd5b50565b600081359050612c1181612beb565b92915050565b600080600060408486031215612c3057612c2f6129f5565b5b600084013567ffffffffffffffff811115612c4e57612c4d6129fa565b5b612c5a86828701612b95565b93509350506020612c6d86828701612c02565b9150509250925092565b600080600060608486031215612c9057612c8f6129f5565b5b6000612c9e86828701612a48565b9350506020612caf86828701612a48565b9250506040612cc086828701612a7e565b9150509250925092565b600060208284031215612ce057612cdf6129f5565b5b6000612cee84828501612a48565b91505092915050565b600060ff82169050919050565b612d0d81612cf7565b82525050565b6000602082019050612d286000830184612d04565b92915050565b60008060408385031215612d4557612d446129f5565b5b6000612d5385828601612a48565b9250506020612d6485828601612c02565b9150509250929050565b612d7781612a1f565b82525050565b6000602082019050612d926000830184612d6e565b92915050565b60008060408385031215612daf57612dae6129f5565b5b6000612dbd85828601612a48565b9250506020612dce85828601612a48565b9150509250929050565b600080600060608486031215612df157612df06129f5565b5b6000612dff86828701612a48565b9350506020612e1086828701612a48565b9250506040612e2186828701612a48565b9150509250925092565b600080600080600080600060e0888a031215612e4a57612e496129f5565b5b6000612e588a828b01612a7e565b9750506020612e698a828b01612a7e565b9650506040612e7a8a828b01612a7e565b9550506060612e8b8a828b01612a7e565b9450506080612e9c8a828b01612a7e565b93505060a0612ead8a828b01612a7e565b92505060c0612ebe8a828b01612a7e565b91505092959891949750929550565b6000612ed8826129ff565b9050919050565b612ee881612ecd565b8114612ef357600080fd5b50565b600081359050612f0581612edf565b92915050565b600060208284031215612f2157612f206129f5565b5b6000612f2f84828501612ef6565b91505092915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000612f6e60068361294e565b9150612f7982612f38565b602082019050919050565b60006020820190508181036000830152612f9d81612f61565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061300d82612a5d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361303f5761303e612fd3565b5b600182019050919050565b60008151905061305981612a67565b92915050565b600060208284031215613075576130746129f5565b5b60006130838482850161304a565b91505092915050565b60006040820190506130a16000830185612d6e565b6130ae6020830184612b09565b9392505050565b6000815190506130c481612beb565b92915050565b6000602082840312156130e0576130df6129f5565b5b60006130ee848285016130b5565b91505092915050565b7f4d61782054587320616e64204d61782057616c6c657400000000000000000000600082015250565b600061312d60168361294e565b9150613138826130f7565b602082019050919050565b6000602082019050818103600083015261315c81613120565b9050919050565b6000819050919050565b600061318861318361317e846129ff565b613163565b6129ff565b9050919050565b600061319a8261316d565b9050919050565b60006131ac8261318f565b9050919050565b6131bc816131a1565b82525050565b60006020820190506131d760008301846131b3565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061323960248361294e565b9150613244826131dd565b604082019050919050565b600060208201905081810360008301526132688161322c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006132cb60228361294e565b91506132d68261326f565b604082019050919050565b600060208201905081810360008301526132fa816132be565b9050919050565b600061330c82612a5d565b915061331783612a5d565b925082820390508181111561332f5761332e612fd3565b5b92915050565b600061334082612a5d565b915061334b83612a5d565b925082820261335981612a5d565b915082820484148315176133705761336f612fd3565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006133b182612a5d565b91506133bc83612a5d565b9250826133cc576133cb613377565b5b828204905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f64726573732e0000000000000000000000000000000000000000000000000000602082015250565b600061343360268361294e565b915061343e826133d7565b604082019050919050565b6000602082019050818103600083015261346281613426565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573732e00000000000000000000000000000000000000000000000000000000602082015250565b60006134c560248361294e565b91506134d082613469565b604082019050919050565b600060208201905081810360008301526134f4816134b8565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e63652e0000000000000000000000000000602082015250565b600061355760328361294e565b9150613562826134fb565b604082019050919050565b600060208201905081810360008301526135868161354a565b9050919050565b7f74726164696e67416c6c6f7765642e0000000000000000000000000000000000600082015250565b60006135c3600f8361294e565b91506135ce8261358d565b602082019050919050565b600060208201905081810360008301526135f2816135b6565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000600082015250565b600061362f601e8361294e565b915061363a826135f9565b602082019050919050565b6000602082019050818103600083015261365e81613622565b9050919050565b7f5458204c696d69742045786365656465642e0000000000000000000000000000600082015250565b600061369b60128361294e565b91506136a682613665565b602082019050919050565b600060208201905081810360008301526136ca8161368e565b9050919050565b60006136dc82612a5d565b91506136e783612a5d565b92508282019050808211156136ff576136fe612fd3565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061374381612a31565b92915050565b60006020828403121561375f5761375e6129f5565b5b600061376d84828501613734565b91505092915050565b6000819050919050565b600061379b61379661379184613776565b613163565b612a5d565b9050919050565b6137ab81613780565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6137e681612a1f565b82525050565b60006137f883836137dd565b60208301905092915050565b6000602082019050919050565b600061381c826137b1565b61382681856137bc565b9350613831836137cd565b8060005b8381101561386257815161384988826137ec565b975061385483613804565b925050600181019050613835565b5085935050505092915050565b600060a0820190506138846000830188612b09565b61389160208301876137a2565b81810360408301526138a38186613811565b90506138b26060830185612d6e565b6138bf6080830184612b09565b9695505050505050565b600060c0820190506138de6000830189612d6e565b6138eb6020830188612b09565b6138f860408301876137a2565b61390560608301866137a2565b6139126080830185612d6e565b61391f60a0830184612b09565b979650505050505050565b600080600060608486031215613943576139426129f5565b5b60006139518682870161304a565b93505060206139628682870161304a565b92505060406139738682870161304a565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63652ea26469706673582212201244944d2bc006e1840377e82f9005743b6d861675443f873870e39df817067d64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101855760003560e01c806370a08231116100d157806395d89b411161008a578063dd62ed3e11610064578063dd62ed3e1461057d578063ddc95913146105ba578063e8543b27146105e3578063f2fde38b1461060c5761018c565b806395d89b41146104ea578063a8aa1b3114610515578063a9059cbb146105405761018c565b806370a08231146103d857806378109e54146104155780637cca52fe146104405780637d1db4a51461046b578063893d20e8146104965780638dd14333146104c15761018c565b8063293230b81161013e5780633f4218e0116101185780633f4218e01461033257806348ff2b8b1461036f5780635935eead146103985780635d57e2fb146103af5761018c565b8063293230b8146102b35780632f54bf6e146102ca578063313ce567146103075761018c565b806306fdde0314610191578063095ea7b3146101bc57806318160ddd146101f95780631af4872714610224578063229b6a5e1461024d57806323b872dd146102765761018c565b3661018c57005b600080fd5b34801561019d57600080fd5b506101a6610635565b6040516101b391906129d3565b60405180910390f35b3480156101c857600080fd5b506101e360048036038101906101de9190612a93565b610672565b6040516101f09190612aee565b60405180910390f35b34801561020557600080fd5b5061020e610689565b60405161021b9190612b18565b60405180910390f35b34801561023057600080fd5b5061024b60048036038101906102469190612b33565b6106ca565b005b34801561025957600080fd5b50610274600480360381019061026f9190612c17565b61077e565b005b34801561028257600080fd5b5061029d60048036038101906102989190612c77565b61086b565b6040516102aa9190612aee565b60405180910390f35b3480156102bf57600080fd5b506102c8610936565b005b3480156102d657600080fd5b506102f160048036038101906102ec9190612cca565b61099b565b6040516102fe9190612aee565b60405180910390f35b34801561031357600080fd5b5061031c6109f4565b6040516103299190612d13565b60405180910390f35b34801561033e57600080fd5b5061035960048036038101906103549190612cca565b6109fd565b6040516103669190612aee565b60405180910390f35b34801561037b57600080fd5b5061039660048036038101906103919190612d2e565b610a1d565b005b3480156103a457600080fd5b506103ad610ac0565b005b3480156103bb57600080fd5b506103d660048036038101906103d19190612a93565b610b31565b005b3480156103e457600080fd5b506103ff60048036038101906103fa9190612cca565b610cc2565b60405161040c9190612b18565b60405180910390f35b34801561042157600080fd5b5061042a610d0b565b6040516104379190612b18565b60405180910390f35b34801561044c57600080fd5b50610455610d11565b6040516104629190612b18565b60405180910390f35b34801561047757600080fd5b50610480610d17565b60405161048d9190612b18565b60405180910390f35b3480156104a257600080fd5b506104ab610d1d565b6040516104b89190612d7d565b60405180910390f35b3480156104cd57600080fd5b506104e860048036038101906104e39190612b33565b610d46565b005b3480156104f657600080fd5b506104ff610ec1565b60405161050c91906129d3565b60405180910390f35b34801561052157600080fd5b5061052a610efe565b6040516105379190612d7d565b60405180910390f35b34801561054c57600080fd5b5061056760048036038101906105629190612a93565b610f24565b6040516105749190612aee565b60405180910390f35b34801561058957600080fd5b506105a4600480360381019061059f9190612d98565b610f3b565b6040516105b19190612b18565b60405180910390f35b3480156105c657600080fd5b506105e160048036038101906105dc9190612dd8565b610fc2565b005b3480156105ef57600080fd5b5061060a60048036038101906106059190612e2b565b6111da565b005b34801561061857600080fd5b50610633600480360381019061062e9190612f0b565b61125c565b005b60606040518060400160405280600581526020017f3830303835000000000000000000000000000000000000000000000000000000815250905090565b600061067f33848461131e565b6001905092915050565b60006106c56106986000610cc2565b6106b76106a661dead610cc2565b6005546114e790919063ffffffff16565b6114e790919063ffffffff16565b905090565b6106d33361099b565b610712576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070990612f84565b60405180910390fd5b82600a81905550610743620186a0610735846005546114fd90919063ffffffff16565b61151390919063ffffffff16565b600b81905550610773620186a0610765836005546114fd90919063ffffffff16565b61151390919063ffffffff16565b600c81905550505050565b6107873361099b565b6107c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107bd90612f84565b60405180910390fd5b60005b838390508110156108655781600460008686858181106107ec576107eb612fa4565b5b90506020020160208101906108019190612cca565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061085d90613002565b9150506107c9565b50505050565b6000610878848484611529565b61092b84336109268560405180606001604052806029815260200161397e60299139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611df39092919063ffffffff16565b61131e565b600190509392505050565b61093f3361099b565b61097e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097590612f84565b60405180910390fd5b6001600760146101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b60036020528060005260406000206000915054906101000a900460ff1681565b610a263361099b565b610a65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5c90612f84565b60405180910390fd5b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610ac93361099b565b610b08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aff90612f84565b60405180910390fd5b6000610b1330610cc2565b9050600b54811115610b2557600b5490505b610b2e81611e48565b50565b610b3a3361099b565b610b79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7090612f84565b60405180910390fd5b6000610c1a6064610c0c848673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610bbd9190612d7d565b602060405180830381865afa158015610bda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bfe919061305f565b6114fd90919063ffffffff16565b61151390919063ffffffff16565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610c7992919061308c565b6020604051808303816000875af1158015610c98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cbc91906130ca565b50505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600f5481565b600e5481565b600d5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610d4f3361099b565b610d8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8590612f84565b60405180910390fd5b6000610db9612710610dab866005546114fd90919063ffffffff16565b61151390919063ffffffff16565b90506000610de6612710610dd8866005546114fd90919063ffffffff16565b61151390919063ffffffff16565b90506000610e13612710610e05866005546114fd90919063ffffffff16565b61151390919063ffffffff16565b905082600d8190555081600e8190555080600f819055506000610e5b6103e8610e4d6005610e3f610689565b6114fd90919063ffffffff16565b61151390919063ffffffff16565b9050808410158015610e6d5750808310155b8015610e795750808210155b610eb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eaf90613143565b60405180910390fd5b50505050505050565b60606040518060400160405280600581526020017f3830303835000000000000000000000000000000000000000000000000000000815250905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610f31338484611529565b6001905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610fcb3361099b565b61100a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100190612f84565b60405180910390fd5b82601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b6111e33361099b565b611222576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121990612f84565b60405180910390fd5b8660108190555085601181905550846013819055508360128190555082601481905550816015819055508060168190555050505050505050565b6112653361099b565b6112a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129b90612f84565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861638160405161131391906131c2565b60405180910390a150565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361138d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113849061324f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f3906132e1565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516114da9190612b18565b60405180910390a3505050565b600081836114f59190613301565b905092915050565b6000818361150b9190613335565b905092915050565b6000818361152191906133a6565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611598576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158f90613449565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611607576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115fe906134db565b60405180910390fd5b61161083610cc2565b811115611652576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116499061356d565b60405180910390fd5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156116f65750600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561174b57600760149054906101000a900460ff1661174a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611741906135d9565b60405180910390fd5b5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156117ef5750600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156118495750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611883575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561191f57600f546118dd82600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120b590919063ffffffff16565b111561191e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191590613645565b60405180910390fd5b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611a6257600e54811115806119ce5750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611a225750600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611a61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a58906136b1565b60405180910390fd5b5b600d5481111580611abc5750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611b105750600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611b4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b46906136b1565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015611bf65750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611c1657600160086000828254611c0e91906136d1565b925050819055505b611c218383836120cb565b15611c3a57611c31600b54611e48565b60006008819055505b611c8c81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114e790919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611cdb8484612205565b611ce55781611cf1565b611cf08484846122b3565b5b9050611d4581600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120b590919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611de59190612b18565b60405180910390a350505050565b6000838311158290611e3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3291906129d3565b60405180910390fd5b5082840390509392505050565b6001600960006101000a81548160ff0219169083151502179055506000611eb66002611ea8601254611e9a601154611e8c60016010546120b590919063ffffffff16565b6120b590919063ffffffff16565b6120b590919063ffffffff16565b6114fd90919063ffffffff16565b90506000611ee182611ed3601054866114fd90919063ffffffff16565b61151390919063ffffffff16565b90506000611ef882856114e790919063ffffffff16565b90506000479050611f0882612471565b6000611f1d82476114e790919063ffffffff16565b90506000611f48611f39601054886114e790919063ffffffff16565b8361151390919063ffffffff16565b90506000611f61601054836114fd90919063ffffffff16565b90506000811115611f7757611f7686826126b4565b5b6000611fa1601154611f936002866114fd90919063ffffffff16565b6114fd90919063ffffffff16565b9050600081111561201657601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612014573d6000803e3d6000fd5b505b6000479050600081111561208e57601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561208c573d6000803e3d6000fd5b505b5050505050505050506000600960006101000a81548160ff02191690831515021790555050565b600081836120c391906136d1565b905092915050565b600080600c5483101590506000600b546120e430610cc2565b10159050600960009054906101000a900460ff161580156121115750600760159054906101000a900460ff165b80156121295750600760149054906101000a900460ff165b80156121325750815b80156121885750600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121e15750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b80156121f15750600a5460085410155b80156121fa5750805b925050509392505050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156122ab5750600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b6000806122c085856127b4565b11156124665760006122f86122d586866127b4565b6122ea6017548661151390919063ffffffff16565b6114fd90919063ffffffff16565b905061234c81600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120b590919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516123ec9190612b18565b60405180910390a36000601354118015612410575060135461240e86866127b4565b115b1561244b5761244a3061dead6124456013546124376017548961151390919063ffffffff16565b6114fd90919063ffffffff16565b611529565b5b61245e81846114e790919063ffffffff16565b91505061246a565b8190505b9392505050565b6000600267ffffffffffffffff81111561248e5761248d613705565b5b6040519080825280602002602001820160405280156124bc5781602001602082028036833780820191505090505b50905030816000815181106124d4576124d3612fa4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561257b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061259f9190613749565b816001815181106125b3576125b2612fa4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061261a30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461131e565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161267e95949392919061386f565b600060405180830381600087803b15801561269857600080fd5b505af11580156126ac573d6000803e3d6000fd5b505050505050565b6126e130600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461131e565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161276a969594939291906138c9565b60606040518083038185885af1158015612788573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906127ad919061392a565b5050505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806128575750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156128795761287260646017546114e790919063ffffffff16565b905061293d565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036128d857601554905061293d565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361293757601454905061293d565b60165490505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561297d578082015181840152602081019050612962565b60008484015250505050565b6000601f19601f8301169050919050565b60006129a582612943565b6129af818561294e565b93506129bf81856020860161295f565b6129c881612989565b840191505092915050565b600060208201905081810360008301526129ed818461299a565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612a2a826129ff565b9050919050565b612a3a81612a1f565b8114612a4557600080fd5b50565b600081359050612a5781612a31565b92915050565b6000819050919050565b612a7081612a5d565b8114612a7b57600080fd5b50565b600081359050612a8d81612a67565b92915050565b60008060408385031215612aaa57612aa96129f5565b5b6000612ab885828601612a48565b9250506020612ac985828601612a7e565b9150509250929050565b60008115159050919050565b612ae881612ad3565b82525050565b6000602082019050612b036000830184612adf565b92915050565b612b1281612a5d565b82525050565b6000602082019050612b2d6000830184612b09565b92915050565b600080600060608486031215612b4c57612b4b6129f5565b5b6000612b5a86828701612a7e565b9350506020612b6b86828701612a7e565b9250506040612b7c86828701612a7e565b9150509250925092565b600080fd5b600080fd5b600080fd5b60008083601f840112612bab57612baa612b86565b5b8235905067ffffffffffffffff811115612bc857612bc7612b8b565b5b602083019150836020820283011115612be457612be3612b90565b5b9250929050565b612bf481612ad3565b8114612bff57600080fd5b50565b600081359050612c1181612beb565b92915050565b600080600060408486031215612c3057612c2f6129f5565b5b600084013567ffffffffffffffff811115612c4e57612c4d6129fa565b5b612c5a86828701612b95565b93509350506020612c6d86828701612c02565b9150509250925092565b600080600060608486031215612c9057612c8f6129f5565b5b6000612c9e86828701612a48565b9350506020612caf86828701612a48565b9250506040612cc086828701612a7e565b9150509250925092565b600060208284031215612ce057612cdf6129f5565b5b6000612cee84828501612a48565b91505092915050565b600060ff82169050919050565b612d0d81612cf7565b82525050565b6000602082019050612d286000830184612d04565b92915050565b60008060408385031215612d4557612d446129f5565b5b6000612d5385828601612a48565b9250506020612d6485828601612c02565b9150509250929050565b612d7781612a1f565b82525050565b6000602082019050612d926000830184612d6e565b92915050565b60008060408385031215612daf57612dae6129f5565b5b6000612dbd85828601612a48565b9250506020612dce85828601612a48565b9150509250929050565b600080600060608486031215612df157612df06129f5565b5b6000612dff86828701612a48565b9350506020612e1086828701612a48565b9250506040612e2186828701612a48565b9150509250925092565b600080600080600080600060e0888a031215612e4a57612e496129f5565b5b6000612e588a828b01612a7e565b9750506020612e698a828b01612a7e565b9650506040612e7a8a828b01612a7e565b9550506060612e8b8a828b01612a7e565b9450506080612e9c8a828b01612a7e565b93505060a0612ead8a828b01612a7e565b92505060c0612ebe8a828b01612a7e565b91505092959891949750929550565b6000612ed8826129ff565b9050919050565b612ee881612ecd565b8114612ef357600080fd5b50565b600081359050612f0581612edf565b92915050565b600060208284031215612f2157612f206129f5565b5b6000612f2f84828501612ef6565b91505092915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000612f6e60068361294e565b9150612f7982612f38565b602082019050919050565b60006020820190508181036000830152612f9d81612f61565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061300d82612a5d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361303f5761303e612fd3565b5b600182019050919050565b60008151905061305981612a67565b92915050565b600060208284031215613075576130746129f5565b5b60006130838482850161304a565b91505092915050565b60006040820190506130a16000830185612d6e565b6130ae6020830184612b09565b9392505050565b6000815190506130c481612beb565b92915050565b6000602082840312156130e0576130df6129f5565b5b60006130ee848285016130b5565b91505092915050565b7f4d61782054587320616e64204d61782057616c6c657400000000000000000000600082015250565b600061312d60168361294e565b9150613138826130f7565b602082019050919050565b6000602082019050818103600083015261315c81613120565b9050919050565b6000819050919050565b600061318861318361317e846129ff565b613163565b6129ff565b9050919050565b600061319a8261316d565b9050919050565b60006131ac8261318f565b9050919050565b6131bc816131a1565b82525050565b60006020820190506131d760008301846131b3565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061323960248361294e565b9150613244826131dd565b604082019050919050565b600060208201905081810360008301526132688161322c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006132cb60228361294e565b91506132d68261326f565b604082019050919050565b600060208201905081810360008301526132fa816132be565b9050919050565b600061330c82612a5d565b915061331783612a5d565b925082820390508181111561332f5761332e612fd3565b5b92915050565b600061334082612a5d565b915061334b83612a5d565b925082820261335981612a5d565b915082820484148315176133705761336f612fd3565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006133b182612a5d565b91506133bc83612a5d565b9250826133cc576133cb613377565b5b828204905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f64726573732e0000000000000000000000000000000000000000000000000000602082015250565b600061343360268361294e565b915061343e826133d7565b604082019050919050565b6000602082019050818103600083015261346281613426565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573732e00000000000000000000000000000000000000000000000000000000602082015250565b60006134c560248361294e565b91506134d082613469565b604082019050919050565b600060208201905081810360008301526134f4816134b8565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e63652e0000000000000000000000000000602082015250565b600061355760328361294e565b9150613562826134fb565b604082019050919050565b600060208201905081810360008301526135868161354a565b9050919050565b7f74726164696e67416c6c6f7765642e0000000000000000000000000000000000600082015250565b60006135c3600f8361294e565b91506135ce8261358d565b602082019050919050565b600060208201905081810360008301526135f2816135b6565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000600082015250565b600061362f601e8361294e565b915061363a826135f9565b602082019050919050565b6000602082019050818103600083015261365e81613622565b9050919050565b7f5458204c696d69742045786365656465642e0000000000000000000000000000600082015250565b600061369b60128361294e565b91506136a682613665565b602082019050919050565b600060208201905081810360008301526136ca8161368e565b9050919050565b60006136dc82612a5d565b91506136e783612a5d565b92508282019050808211156136ff576136fe612fd3565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061374381612a31565b92915050565b60006020828403121561375f5761375e6129f5565b5b600061376d84828501613734565b91505092915050565b6000819050919050565b600061379b61379661379184613776565b613163565b612a5d565b9050919050565b6137ab81613780565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6137e681612a1f565b82525050565b60006137f883836137dd565b60208301905092915050565b6000602082019050919050565b600061381c826137b1565b61382681856137bc565b9350613831836137cd565b8060005b8381101561386257815161384988826137ec565b975061385483613804565b925050600181019050613835565b5085935050505092915050565b600060a0820190506138846000830188612b09565b61389160208301876137a2565b81810360408301526138a38186613811565b90506138b26060830185612d6e565b6138bf6080830184612b09565b9695505050505050565b600060c0820190506138de6000830189612d6e565b6138eb6020830188612b09565b6138f860408301876137a2565b61390560608301866137a2565b6139126080830185612d6e565b61391f60a0830184612b09565b979650505050505050565b600080600060608486031215613943576139426129f5565b5b60006139518682870161304a565b93505060206139628682870161304a565b92505060406139738682870161304a565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63652ea26469706673582212201244944d2bc006e1840377e82f9005743b6d861675443f873870e39df817067d64736f6c63430008130033

Deployed Bytecode Sourcemap

4669:11287:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7122:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8003:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8142:132;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8693:324;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9909:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15300:310;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7345:67;;;;;;;;;;;;;:::i;:::-;;3573:87;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7272:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4868:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7889:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10447:199;;;;;;;;;;;;;:::i;:::-;;10654:248;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7502:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5677:63;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5608:62;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5541:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7418:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9374:527;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7195:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5205:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7611:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7756:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10101:338;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9025:341;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3666:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7122:67;7159:13;7182:5;;;;;;;;;;;;;;;;;7175:12;;7122:67;:::o;8003:133::-;8078:4;8085:37;8094:10;8106:7;8115:6;8085:8;:37::i;:::-;8130:4;8123:11;;8003:133;;;;:::o;8142:132::-;8195:7;8212:60;8250:21;8268:1;8250:9;:21::i;:::-;8212:33;8229:15;6249:42;8229:9;:15::i;:::-;8212:12;;:16;;:33;;;;:::i;:::-;:37;;:60;;;;:::i;:::-;8205:67;;8142:132;:::o;8693:324::-;3532:19;3540:10;3532:7;:19::i;:::-;3524:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;8844:11:::1;8831:10;:24;;;;8873:53;8918:6;8873:32;8890:14;8873:12;;:16;;:32;;;;:::i;:::-;:36;;:53;;;;:::i;:::-;8857:13;:69;;;;8955:54;9001:6;8955:33;8972:15;8955:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;8938:14;:71;;;;8693:324:::0;;;:::o;9909:184::-;3532:19;3540:10;3532:7;:19::i;:::-;3524:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10006:6:::1;10002:84;10020:9;;:16;;10016:1;:20;10002:84;;;10075:8;10053:5;:19;10059:9;;10069:1;10059:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;10053:19;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;10038:3;;;;;:::i;:::-;;;;10002:84;;;;9909:184:::0;;;:::o;15300:310::-;15398:4;15415:36;15425:6;15433:9;15444:6;15415:9;:36::i;:::-;15462:118;15471:6;15479:10;15491:88;15527:6;15491:88;;;;;;;;;;;;;;;;;:11;:19;15503:6;15491:19;;;;;;;;;;;;;;;:31;15511:10;15491:31;;;;;;;;;;;;;;;;:35;;:88;;;;;:::i;:::-;15462:8;:118::i;:::-;15598:4;15591:11;;15300:310;;;;;:::o;7345:67::-;3532:19;3540:10;3532:7;:19::i;:::-;3524:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;7406:4:::1;7389:14;;:21;;;;;;;;;;;;;;;;;;7345:67::o:0;3573:87::-;3628:4;3653:5;;;;;;;;;;;3642:16;;:7;:16;;;3635:23;;3573:87;;;:::o;7272:67::-;7313:5;5108:1;7321:16;;7272:67;:::o;4868:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;7889:108::-;3532:19;3540:10;3532:7;:19::i;:::-;3524:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;7987:8:::1;7963:11;:21;7975:8;7963:21;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;7889:108:::0;;:::o;10447:199::-;3532:19;3540:10;3532:7;:19::i;:::-;3524:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10503:14:::1;10520:24;10538:4;10520:9;:24::i;:::-;10503:41;;10567:13;;10558:6;:22;10555:51;;;10591:13;;10582:22;;10555:51;10616:22;10631:6;10616:14;:22::i;:::-;10492:154;10447:199::o:0;10654:248::-;3532:19;3540:10;3532:7;:19::i;:::-;3524:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10746:15:::1;10764:63;10823:3;10764:54;10810:7;10771:8;10764:26;;;10799:4;10764:41;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45;;:54;;;;:::i;:::-;:58;;:63;;;;:::i;:::-;10746:81;;10845:8;10838:25;;;10864:20;;;;;;;;;;;10886:7;10838:56;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10735:167;10654:248:::0;;:::o;7502:103::-;7568:7;7585:9;:18;7595:7;7585:18;;;;;;;;;;;;;;;;7578:25;;7502:103;;;:::o;5677:63::-;;;;:::o;5608:62::-;;;;:::o;5541:60::-;;;;:::o;7418:78::-;7470:7;7488:5;;;;;;;;;;;7481:12;;7418:78;:::o;9374:527::-;3532:19;3540:10;3532:7;:19::i;:::-;3524:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;9475:13:::1;9491:33;9518:5;9491:22;9508:4;9491:12;;:16;;:22;;;;:::i;:::-;:26;;:33;;;;:::i;:::-;9475:49;;9526:19;9548:34;9576:5;9548:23;9565:5;9548:12;;:16;;:23;;;;:::i;:::-;:27;;:34;;;;:::i;:::-;9526:56;;9584:17;9604:36;9634:5;9604:25;9621:7;9604:12;;:16;;:25;;;;:::i;:::-;:29;;:36;;;;:::i;:::-;9584:56;;9666:5;9651:12;:20;;;;9690:11;9673:14;:28;;;;9721:9;9703:15;:27;;;;9741:13;9757:30;9782:4;9757:20;9775:1;9757:13;:11;:13::i;:::-;:17;;:20;;;;:::i;:::-;:24;;:30;;;;:::i;:::-;9741:46;;9815:5;9806;:14;;:38;;;;;9839:5;9824:11;:20;;9806:38;:60;;;;;9861:5;9848:9;:18;;9806:60;9798:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;9464:437;;;;9374:527:::0;;;:::o;7195:71::-;7234:13;7257:7;;;;;;;;;;;;;;;;;7250:14;;7195:71;:::o;5205:19::-;;;;;;;;;;;;;:::o;7611:139::-;7689:4;7696:40;7706:10;7718:9;7729:6;7696:9;:40::i;:::-;7744:4;7737:11;;7611:139;;;;:::o;7756:127::-;7837:7;7854:11;:18;7866:5;7854:18;;;;;;;;;;;;;;;:27;7873:7;7854:27;;;;;;;;;;;;;;;;7847:34;;7756:127;;;;:::o;10101:338::-;3532:19;3540:10;3532:7;:19::i;:::-;3524:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10244:10:::1;10223:18;;:31;;;;;;;;;;;;;;;;;;10277:10;10256:18;;:31;;;;;;;;;;;;;;;;;;10312:12;10289:20;;:35;;;;;;;;;;;;;;;;;;10361:4;10335:11;:23;10347:10;10335:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;10393:4;10367:11;:23;10379:10;10367:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;10427:4;10399:11;:25;10411:12;10399:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;10101:338:::0;;;:::o;9025:341::-;3532:19;3540:10;3532:7;:19::i;:::-;3524:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;9215:10:::1;9200:12;:25;;;;9242:10;9227:12;:25;;;;9264:5;9254:7;:15;;;;9288:12;9271:14;:29;;;;9313:6;9302:8;:17;;;;9331:5;9321:7;:15;;;;9352:6;9338:11;:20;;;;9025:341:::0;;;;;;;:::o;3666:111::-;3532:19;3540:10;3532:7;:19::i;:::-;3524:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3740:3:::1;3732:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;3750:25;3771:3;3750:25;;;;;;:::i;:::-;;;;;;;;3666:111:::0;:::o;15618:335::-;15728:1;15711:19;;:5;:19;;;15703:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15809:1;15790:21;;:7;:21;;;15782:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15891:6;15861:11;:18;15873:5;15861:18;;;;;;;;;;;;;;;:27;15880:7;15861:27;;;;;;;;;;;;;;;:36;;;;15929:7;15913:32;;15922:5;15913:32;;;15938:6;15913:32;;;;;;:::i;:::-;;;;;;;;15618:335;;;:::o;1312:98::-;1370:7;1401:1;1397;:5;;;;:::i;:::-;1390:12;;1312:98;;;;:::o;1418:::-;1476:7;1507:1;1503;:5;;;;:::i;:::-;1496:12;;1418:98;;;;:::o;1524:::-;1582:7;1613:1;1609;:5;;;;:::i;:::-;1602:12;;1524:98;;;;:::o;13853:1439::-;13968:1;13950:20;;:6;:20;;;13942:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;14053:1;14032:23;;:9;:23;;;14024:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;14125:17;14135:6;14125:9;:17::i;:::-;14115:6;:27;;14107:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;14211:11;:19;14223:6;14211:19;;;;;;;;;;;;;;;;;;;;;;;;;14210:20;:47;;;;;14235:11;:22;14247:9;14235:22;;;;;;;;;;;;;;;;;;;;;;;;;14234:23;14210:47;14207:96;;;14267:14;;;;;;;;;;;14259:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;14207:96;14317:11;:19;14329:6;14317:19;;;;;;;;;;;;;;;;;;;;;;;;;14316:20;:47;;;;;14341:11;:22;14353:9;14341:22;;;;;;;;;;;;;;;;;;;;;;;;;14340:23;14316:47;:77;;;;;14388:4;;;;;;;;;;;14367:26;;:9;:26;;;;14316:77;:107;;;;;6249:42;14397:26;;:9;:26;;;;14316:107;14313:220;;;14481:15;;14444:32;14469:6;14444:9;:20;14454:9;14444:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;14443:53;;14435:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;14313:220;14556:4;;;;;;;;;;;14546:14;;:6;:14;;;14543:125;;14580:14;;14570:6;:24;;:47;;;;14598:11;:19;14610:6;14598:19;;;;;;;;;;;;;;;;;;;;;;;;;14570:47;:73;;;;14621:11;:22;14633:9;14621:22;;;;;;;;;;;;;;;;;;;;;;;;;14570:73;14562:104;;;;;;;;;;;;:::i;:::-;;;;;;;;;14543:125;14696:12;;14686:6;:22;;:45;;;;14712:11;:19;14724:6;14712:19;;;;;;;;;;;;;;;;;;;;;;;;;14686:45;:71;;;;14735:11;:22;14747:9;14735:22;;;;;;;;;;;;;;;;;;;;;;;;;14686:71;14678:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;14808:4;;;;;;;;;;;14795:17;;:9;:17;;;:41;;;;;14817:11;:19;14829:6;14817:19;;;;;;;;;;;;;;;;;;;;;;;;;14816:20;14795:41;14792:71;;;14859:1;14838:9;;:23;;;;;;;:::i;:::-;;;;;;;;14792:71;14876:45;14895:6;14903:9;14914:6;14876:18;:45::i;:::-;14873:105;;;14923:29;14938:13;;14923:14;:29::i;:::-;14974:1;14954:9;:22;;;;14873:105;15008:29;15030:6;15008:9;:17;15018:6;15008:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;14988:9;:17;14998:6;14988:17;;;;;;;;;;;;;;;:49;;;;15048:22;15073:32;15087:6;15095:9;15073:13;:32::i;:::-;:78;;15145:6;15073:78;;;15108:34;15116:6;15124:9;15135:6;15108:7;:34::i;:::-;15073:78;15048:103;;15185:40;15210:14;15185:9;:20;15195:9;15185:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;15162:9;:20;15172:9;15162:20;;;;;;;;;;;;;;;:63;;;;15258:9;15241:43;;15250:6;15241:43;;;15269:14;15241:43;;;;;;:::i;:::-;;;;;;;;13931:1361;13853:1439;;;:::o;1736:240::-;1856:7;1914:1;1909;:6;;1917:12;1901:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1956:1;1952;:5;1945:12;;1736:240;;;;;:::o;10910:1063::-;5780:4;5769:8;;:15;;;;;;;;;;;;;;;;;;10981:20:::1;11004:66;11068:1;11005:57;11047:14;;11005:37;11029:12;;11005:19;11022:1;11005:12;;:16;;:19;;;;:::i;:::-;:23;;:37;;;;:::i;:::-;:41;;:57;;;;:::i;:::-;11004:63;;:66;;;;:::i;:::-;10981:89;;11081:32;11116:42;11145:12;11116:24;11127:12;;11116:6;:10;;:24;;;;:::i;:::-;:28;;:42;;;;:::i;:::-;11081:77;;11169:14;11186:36;11197:24;11186:6;:10;;:36;;;;:::i;:::-;11169:53;;11233:22;11258:21;11233:46;;11290:24;11307:6;11290:16;:24::i;:::-;11325:20;11348:41;11374:14;11348:21;:25;;:41;;;;:::i;:::-;11325:64;;11400:19;11421:48;11438:30;11455:12;;11438;:16;;:30;;;;:::i;:::-;11421:12;:16;;:48;;;;:::i;:::-;11400:69;;11480:29;11512;11528:12;;11512:11;:15;;:29;;;;:::i;:::-;11480:61;;11587:1;11555:21;:34;11552:103;;;11591:61;11604:24;11630:21;11591:12;:61::i;:::-;11552:103;11665:20;11688:36;11711:12;;11688:18;11704:1;11688:11;:15;;:18;;;;:::i;:::-;:22;;:36;;;;:::i;:::-;11665:59;;11753:1;11738:12;:16;11735:73;;;11764:18;;;;;;;;;;;11756:36;;:50;11793:12;11756:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;11735:73;11818:23;11844:21;11818:47;;11905:1;11879:15;:28;11876:90;;;11917:20;;;;;;;;;;;11909:38;;:55;11948:15;11909:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;11876:90;10970:1003;;;;;;;;;5800:5:::0;5789:8;;:16;;;;;;;;;;;;;;;;;;10910:1063;:::o;1206:98::-;1264:7;1295:1;1291;:5;;;;:::i;:::-;1284:12;;1206:98;;;;:::o;8282:403::-;8384:4;8401:13;8427:14;;8417:6;:24;;8401:40;;8452:19;8502:13;;8474:24;8492:4;8474:9;:24::i;:::-;:41;;8452:63;;8534:8;;;;;;;;;;;8533:9;:24;;;;;8546:11;;;;;;;;;;;8533:24;:42;;;;;8561:14;;;;;;;;;;;8533:42;:54;;;;;8579:8;8533:54;:78;;;;;8592:11;:19;8604:6;8592:19;;;;;;;;;;;;;;;;;;;;;;;;;8591:20;8533:78;:99;;;;;8628:4;;;;;;;;;;;8615:17;;:9;:17;;;8533:99;:126;;;;;8649:10;;8636:9;;:23;;8533:126;:144;;;;;8663:14;8533:144;8526:151;;;;8282:403;;;;;:::o;12774:160::-;12855:4;12880:11;:19;12892:6;12880:19;;;;;;;;;;;;;;;;;;;;;;;;;12879:20;:47;;;;;12904:11;:22;12916:9;12904:22;;;;;;;;;;;;;;;;;;;;;;;;;12903:23;12879:47;12872:54;;12774:160;;;;:::o;13255:590::-;13341:7;13397:1;13364:30;13376:6;13384:9;13364:11;:30::i;:::-;:34;13361:462;;;13410:17;13430:59;13458:30;13470:6;13478:9;13458:11;:30::i;:::-;13430:23;13441:11;;13430:6;:10;;:23;;;;:::i;:::-;:27;;:59;;;;:::i;:::-;13410:79;;13527:39;13556:9;13527;:24;13545:4;13527:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;13500:9;:24;13518:4;13500:24;;;;;;;;;;;;;;;:66;;;;13607:4;13582:42;;13591:6;13582:42;;;13614:9;13582:42;;;;;;:::i;:::-;;;;;;;;13656:1;13638:7;;:20;:64;;;;;13695:7;;13662:30;13674:6;13682:9;13662:11;:30::i;:::-;:40;13638:64;13635:148;;;13704:77;13722:4;6249:42;13744:36;13772:7;;13744:23;13755:11;;13744:6;:10;;:23;;;;:::i;:::-;:27;;:36;;;;:::i;:::-;13704:9;:77::i;:::-;13635:148;13800:21;13811:9;13800:6;:10;;:21;;;;:::i;:::-;13793:28;;;;;13361:462;13831:6;13824:13;;13255:590;;;;;;:::o;12332:434::-;12398:21;12436:1;12422:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12398:40;;12467:4;12449;12454:1;12449:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;12493:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12483:4;12488:1;12483:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;12517:53;12534:4;12549:6;;;;;;;;;;;12558:11;12517:8;:53::i;:::-;12581:6;;;;;;;;;;;:57;;;12653:11;12679:1;12695:4;12722;12742:15;12581:177;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12387:379;12332:434;:::o;11981:343::-;12062:53;12079:4;12094:6;;;;;;;;;;;12103:11;12062:8;:53::i;:::-;12126:6;;;;;;;;;;;:22;;;12156:9;12189:4;12209:11;12235:1;12251;12267:18;;;;;;;;;;;12300:15;12126:190;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11981:343;;:::o;12942:305::-;13021:7;13044:5;:13;13050:6;13044:13;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;;13061:5;:16;13067:9;13061:16;;;;;;;;;;;;;;;;;;;;;;;;;13044:33;13041:76;;;13086:29;13110:3;13086:11;;:15;;:29;;;;:::i;:::-;13079:36;;;;13041:76;13143:4;;;;;;;;;;;13130:17;;:9;:17;;;13127:38;;13156:7;;13149:14;;;;13127:38;13188:4;;;;;;;;;;;13178:14;;:6;:14;;;13175:36;;13201:8;;13194:15;;;;13175:36;13228:11;;13221:18;;12942:305;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652: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:117::-;4532:1;4529;4522:12;4546:117;4655:1;4652;4645:12;4669:117;4778:1;4775;4768:12;4809:568;4882:8;4892:6;4942:3;4935:4;4927:6;4923:17;4919:27;4909:122;;4950:79;;:::i;:::-;4909:122;5063:6;5050:20;5040:30;;5093:18;5085:6;5082:30;5079:117;;;5115:79;;:::i;:::-;5079:117;5229:4;5221:6;5217:17;5205:29;;5283:3;5275:4;5267:6;5263:17;5253:8;5249:32;5246:41;5243:128;;;5290:79;;:::i;:::-;5243:128;4809:568;;;;;:::o;5383:116::-;5453:21;5468:5;5453:21;:::i;:::-;5446:5;5443:32;5433:60;;5489:1;5486;5479:12;5433:60;5383:116;:::o;5505:133::-;5548:5;5586:6;5573:20;5564:29;;5602:30;5626:5;5602:30;:::i;:::-;5505:133;;;;:::o;5644:698::-;5736:6;5744;5752;5801:2;5789:9;5780:7;5776:23;5772:32;5769:119;;;5807:79;;:::i;:::-;5769:119;5955:1;5944:9;5940:17;5927:31;5985:18;5977:6;5974:30;5971:117;;;6007:79;;:::i;:::-;5971:117;6120:80;6192:7;6183:6;6172:9;6168:22;6120:80;:::i;:::-;6102:98;;;;5898:312;6249:2;6275:50;6317:7;6308:6;6297:9;6293:22;6275:50;:::i;:::-;6265:60;;6220:115;5644:698;;;;;:::o;6348:619::-;6425:6;6433;6441;6490:2;6478:9;6469:7;6465:23;6461:32;6458:119;;;6496:79;;:::i;:::-;6458:119;6616:1;6641:53;6686:7;6677:6;6666:9;6662:22;6641:53;:::i;:::-;6631:63;;6587:117;6743:2;6769:53;6814:7;6805:6;6794:9;6790:22;6769:53;:::i;:::-;6759:63;;6714:118;6871:2;6897:53;6942:7;6933:6;6922:9;6918:22;6897:53;:::i;:::-;6887:63;;6842:118;6348:619;;;;;:::o;6973:329::-;7032:6;7081:2;7069:9;7060:7;7056:23;7052:32;7049:119;;;7087:79;;:::i;:::-;7049:119;7207:1;7232:53;7277:7;7268:6;7257:9;7253:22;7232:53;:::i;:::-;7222:63;;7178:117;6973:329;;;;:::o;7308:86::-;7343:7;7383:4;7376:5;7372:16;7361:27;;7308:86;;;:::o;7400:112::-;7483:22;7499:5;7483:22;:::i;:::-;7478:3;7471:35;7400:112;;:::o;7518:214::-;7607:4;7645:2;7634:9;7630:18;7622:26;;7658:67;7722:1;7711:9;7707:17;7698:6;7658:67;:::i;:::-;7518:214;;;;:::o;7738:468::-;7803:6;7811;7860:2;7848:9;7839:7;7835:23;7831:32;7828:119;;;7866:79;;:::i;:::-;7828:119;7986:1;8011:53;8056:7;8047:6;8036:9;8032:22;8011:53;:::i;:::-;8001:63;;7957:117;8113:2;8139:50;8181:7;8172:6;8161:9;8157:22;8139:50;:::i;:::-;8129:60;;8084:115;7738:468;;;;;:::o;8212:118::-;8299:24;8317:5;8299:24;:::i;:::-;8294:3;8287:37;8212:118;;:::o;8336:222::-;8429:4;8467:2;8456:9;8452:18;8444:26;;8480:71;8548:1;8537:9;8533:17;8524:6;8480:71;:::i;:::-;8336:222;;;;:::o;8564:474::-;8632:6;8640;8689:2;8677:9;8668:7;8664:23;8660:32;8657:119;;;8695:79;;:::i;:::-;8657:119;8815:1;8840:53;8885:7;8876:6;8865:9;8861:22;8840:53;:::i;:::-;8830:63;;8786:117;8942:2;8968:53;9013:7;9004:6;8993:9;8989:22;8968:53;:::i;:::-;8958:63;;8913:118;8564:474;;;;;:::o;9044:619::-;9121:6;9129;9137;9186:2;9174:9;9165:7;9161:23;9157:32;9154:119;;;9192:79;;:::i;:::-;9154:119;9312:1;9337:53;9382:7;9373:6;9362:9;9358:22;9337:53;:::i;:::-;9327:63;;9283:117;9439:2;9465:53;9510:7;9501:6;9490:9;9486:22;9465:53;:::i;:::-;9455:63;;9410:118;9567:2;9593:53;9638:7;9629:6;9618:9;9614:22;9593:53;:::i;:::-;9583:63;;9538:118;9044:619;;;;;:::o;9669:1203::-;9782:6;9790;9798;9806;9814;9822;9830;9879:3;9867:9;9858:7;9854:23;9850:33;9847:120;;;9886:79;;:::i;:::-;9847:120;10006:1;10031:53;10076:7;10067:6;10056:9;10052:22;10031:53;:::i;:::-;10021:63;;9977:117;10133:2;10159:53;10204:7;10195:6;10184:9;10180:22;10159:53;:::i;:::-;10149:63;;10104:118;10261:2;10287:53;10332:7;10323:6;10312:9;10308:22;10287:53;:::i;:::-;10277:63;;10232:118;10389:2;10415:53;10460:7;10451:6;10440:9;10436:22;10415:53;:::i;:::-;10405:63;;10360:118;10517:3;10544:53;10589:7;10580:6;10569:9;10565:22;10544:53;:::i;:::-;10534:63;;10488:119;10646:3;10673:53;10718:7;10709:6;10698:9;10694:22;10673:53;:::i;:::-;10663:63;;10617:119;10775:3;10802:53;10847:7;10838:6;10827:9;10823:22;10802:53;:::i;:::-;10792:63;;10746:119;9669:1203;;;;;;;;;;:::o;10878:104::-;10923:7;10952:24;10970:5;10952:24;:::i;:::-;10941:35;;10878:104;;;:::o;10988:138::-;11069:32;11095:5;11069:32;:::i;:::-;11062:5;11059:43;11049:71;;11116:1;11113;11106:12;11049:71;10988:138;:::o;11132:155::-;11186:5;11224:6;11211:20;11202:29;;11240:41;11275:5;11240:41;:::i;:::-;11132:155;;;;:::o;11293:345::-;11360:6;11409:2;11397:9;11388:7;11384:23;11380:32;11377:119;;;11415:79;;:::i;:::-;11377:119;11535:1;11560:61;11613:7;11604:6;11593:9;11589:22;11560:61;:::i;:::-;11550:71;;11506:125;11293:345;;;;:::o;11644:156::-;11784:8;11780:1;11772:6;11768:14;11761:32;11644:156;:::o;11806:365::-;11948:3;11969:66;12033:1;12028:3;11969:66;:::i;:::-;11962:73;;12044:93;12133:3;12044:93;:::i;:::-;12162:2;12157:3;12153:12;12146:19;;11806:365;;;:::o;12177:419::-;12343:4;12381:2;12370:9;12366:18;12358:26;;12430:9;12424:4;12420:20;12416:1;12405:9;12401:17;12394:47;12458:131;12584:4;12458:131;:::i;:::-;12450:139;;12177:419;;;:::o;12602:180::-;12650:77;12647:1;12640:88;12747:4;12744:1;12737:15;12771:4;12768:1;12761:15;12788:180;12836:77;12833:1;12826:88;12933:4;12930:1;12923:15;12957:4;12954:1;12947:15;12974:233;13013:3;13036:24;13054:5;13036:24;:::i;:::-;13027:33;;13082:66;13075:5;13072:77;13069:103;;13152:18;;:::i;:::-;13069:103;13199:1;13192:5;13188:13;13181:20;;12974:233;;;:::o;13213:143::-;13270:5;13301:6;13295:13;13286:22;;13317:33;13344:5;13317:33;:::i;:::-;13213:143;;;;:::o;13362:351::-;13432:6;13481:2;13469:9;13460:7;13456:23;13452:32;13449:119;;;13487:79;;:::i;:::-;13449:119;13607:1;13632:64;13688:7;13679:6;13668:9;13664:22;13632:64;:::i;:::-;13622:74;;13578:128;13362:351;;;;:::o;13719:332::-;13840:4;13878:2;13867:9;13863:18;13855:26;;13891:71;13959:1;13948:9;13944:17;13935:6;13891:71;:::i;:::-;13972:72;14040:2;14029:9;14025:18;14016:6;13972:72;:::i;:::-;13719:332;;;;;:::o;14057:137::-;14111:5;14142:6;14136:13;14127:22;;14158:30;14182:5;14158:30;:::i;:::-;14057:137;;;;:::o;14200:345::-;14267:6;14316:2;14304:9;14295:7;14291:23;14287:32;14284:119;;;14322:79;;:::i;:::-;14284:119;14442:1;14467:61;14520:7;14511:6;14500:9;14496:22;14467:61;:::i;:::-;14457:71;;14413:125;14200:345;;;;:::o;14551:172::-;14691:24;14687:1;14679:6;14675:14;14668:48;14551:172;:::o;14729:366::-;14871:3;14892:67;14956:2;14951:3;14892:67;:::i;:::-;14885:74;;14968:93;15057:3;14968:93;:::i;:::-;15086:2;15081:3;15077:12;15070:19;;14729:366;;;:::o;15101:419::-;15267:4;15305:2;15294:9;15290:18;15282:26;;15354:9;15348:4;15344:20;15340:1;15329:9;15325:17;15318:47;15382:131;15508:4;15382:131;:::i;:::-;15374:139;;15101:419;;;:::o;15526:60::-;15554:3;15575:5;15568:12;;15526:60;;;:::o;15592:142::-;15642:9;15675:53;15693:34;15702:24;15720:5;15702:24;:::i;:::-;15693:34;:::i;:::-;15675:53;:::i;:::-;15662:66;;15592:142;;;:::o;15740:126::-;15790:9;15823:37;15854:5;15823:37;:::i;:::-;15810:50;;15740:126;;;:::o;15872:134::-;15930:9;15963:37;15994:5;15963:37;:::i;:::-;15950:50;;15872:134;;;:::o;16012:147::-;16107:45;16146:5;16107:45;:::i;:::-;16102:3;16095:58;16012:147;;:::o;16165:238::-;16266:4;16304:2;16293:9;16289:18;16281:26;;16317:79;16393:1;16382:9;16378:17;16369:6;16317:79;:::i;:::-;16165:238;;;;:::o;16409:223::-;16549:34;16545:1;16537:6;16533:14;16526:58;16618:6;16613:2;16605:6;16601:15;16594:31;16409:223;:::o;16638:366::-;16780:3;16801:67;16865:2;16860:3;16801:67;:::i;:::-;16794:74;;16877:93;16966:3;16877:93;:::i;:::-;16995:2;16990:3;16986:12;16979:19;;16638:366;;;:::o;17010:419::-;17176:4;17214:2;17203:9;17199:18;17191:26;;17263:9;17257:4;17253:20;17249:1;17238:9;17234:17;17227:47;17291:131;17417:4;17291:131;:::i;:::-;17283:139;;17010:419;;;:::o;17435:221::-;17575:34;17571:1;17563:6;17559:14;17552:58;17644:4;17639:2;17631:6;17627:15;17620:29;17435:221;:::o;17662:366::-;17804:3;17825:67;17889:2;17884:3;17825:67;:::i;:::-;17818:74;;17901:93;17990:3;17901:93;:::i;:::-;18019:2;18014:3;18010:12;18003:19;;17662:366;;;:::o;18034:419::-;18200:4;18238:2;18227:9;18223:18;18215:26;;18287:9;18281:4;18277:20;18273:1;18262:9;18258:17;18251:47;18315:131;18441:4;18315:131;:::i;:::-;18307:139;;18034:419;;;:::o;18459:194::-;18499:4;18519:20;18537:1;18519:20;:::i;:::-;18514:25;;18553:20;18571:1;18553:20;:::i;:::-;18548:25;;18597:1;18594;18590:9;18582:17;;18621:1;18615:4;18612:11;18609:37;;;18626:18;;:::i;:::-;18609:37;18459:194;;;;:::o;18659:410::-;18699:7;18722:20;18740:1;18722:20;:::i;:::-;18717:25;;18756:20;18774:1;18756:20;:::i;:::-;18751:25;;18811:1;18808;18804:9;18833:30;18851:11;18833:30;:::i;:::-;18822:41;;19012:1;19003:7;18999:15;18996:1;18993:22;18973:1;18966:9;18946:83;18923:139;;19042:18;;:::i;:::-;18923:139;18707:362;18659:410;;;;:::o;19075:180::-;19123:77;19120:1;19113:88;19220:4;19217:1;19210:15;19244:4;19241:1;19234:15;19261:185;19301:1;19318:20;19336:1;19318:20;:::i;:::-;19313:25;;19352:20;19370:1;19352:20;:::i;:::-;19347:25;;19391:1;19381:35;;19396:18;;:::i;:::-;19381:35;19438:1;19435;19431:9;19426:14;;19261:185;;;;:::o;19452:225::-;19592:34;19588:1;19580:6;19576:14;19569:58;19661:8;19656:2;19648:6;19644:15;19637:33;19452:225;:::o;19683:366::-;19825:3;19846:67;19910:2;19905:3;19846:67;:::i;:::-;19839:74;;19922:93;20011:3;19922:93;:::i;:::-;20040:2;20035:3;20031:12;20024:19;;19683:366;;;:::o;20055:419::-;20221:4;20259:2;20248:9;20244:18;20236:26;;20308:9;20302:4;20298:20;20294:1;20283:9;20279:17;20272:47;20336:131;20462:4;20336:131;:::i;:::-;20328:139;;20055:419;;;:::o;20480:223::-;20620:34;20616:1;20608:6;20604:14;20597:58;20689:6;20684:2;20676:6;20672:15;20665:31;20480:223;:::o;20709:366::-;20851:3;20872:67;20936:2;20931:3;20872:67;:::i;:::-;20865:74;;20948:93;21037:3;20948:93;:::i;:::-;21066:2;21061:3;21057:12;21050:19;;20709:366;;;:::o;21081:419::-;21247:4;21285:2;21274:9;21270:18;21262:26;;21334:9;21328:4;21324:20;21320:1;21309:9;21305:17;21298:47;21362:131;21488:4;21362:131;:::i;:::-;21354:139;;21081:419;;;:::o;21506:237::-;21646:34;21642:1;21634:6;21630:14;21623:58;21715:20;21710:2;21702:6;21698:15;21691:45;21506:237;:::o;21749:366::-;21891:3;21912:67;21976:2;21971:3;21912:67;:::i;:::-;21905:74;;21988:93;22077:3;21988:93;:::i;:::-;22106:2;22101:3;22097:12;22090:19;;21749:366;;;:::o;22121:419::-;22287:4;22325:2;22314:9;22310:18;22302:26;;22374:9;22368:4;22364:20;22360:1;22349:9;22345:17;22338:47;22402:131;22528:4;22402:131;:::i;:::-;22394:139;;22121:419;;;:::o;22546:165::-;22686:17;22682:1;22674:6;22670:14;22663:41;22546:165;:::o;22717:366::-;22859:3;22880:67;22944:2;22939:3;22880:67;:::i;:::-;22873:74;;22956:93;23045:3;22956:93;:::i;:::-;23074:2;23069:3;23065:12;23058:19;;22717:366;;;:::o;23089:419::-;23255:4;23293:2;23282:9;23278:18;23270:26;;23342:9;23336:4;23332:20;23328:1;23317:9;23313:17;23306:47;23370:131;23496:4;23370:131;:::i;:::-;23362:139;;23089:419;;;:::o;23514:180::-;23654:32;23650:1;23642:6;23638:14;23631:56;23514:180;:::o;23700:366::-;23842:3;23863:67;23927:2;23922:3;23863:67;:::i;:::-;23856:74;;23939:93;24028:3;23939:93;:::i;:::-;24057:2;24052:3;24048:12;24041:19;;23700:366;;;:::o;24072:419::-;24238:4;24276:2;24265:9;24261:18;24253:26;;24325:9;24319:4;24315:20;24311:1;24300:9;24296:17;24289:47;24353:131;24479:4;24353:131;:::i;:::-;24345:139;;24072:419;;;:::o;24497:168::-;24637:20;24633:1;24625:6;24621:14;24614:44;24497:168;:::o;24671:366::-;24813:3;24834:67;24898:2;24893:3;24834:67;:::i;:::-;24827:74;;24910:93;24999:3;24910:93;:::i;:::-;25028:2;25023:3;25019:12;25012:19;;24671:366;;;:::o;25043:419::-;25209:4;25247:2;25236:9;25232:18;25224:26;;25296:9;25290:4;25286:20;25282:1;25271:9;25267:17;25260:47;25324:131;25450:4;25324:131;:::i;:::-;25316:139;;25043:419;;;:::o;25468:191::-;25508:3;25527:20;25545:1;25527:20;:::i;:::-;25522:25;;25561:20;25579:1;25561:20;:::i;:::-;25556:25;;25604:1;25601;25597:9;25590:16;;25625:3;25622:1;25619:10;25616:36;;;25632:18;;:::i;:::-;25616:36;25468:191;;;;:::o;25665:180::-;25713:77;25710:1;25703:88;25810:4;25807:1;25800:15;25834:4;25831:1;25824:15;25851:143;25908:5;25939:6;25933:13;25924:22;;25955:33;25982:5;25955:33;:::i;:::-;25851:143;;;;:::o;26000:351::-;26070:6;26119:2;26107:9;26098:7;26094:23;26090:32;26087:119;;;26125:79;;:::i;:::-;26087:119;26245:1;26270:64;26326:7;26317:6;26306:9;26302:22;26270:64;:::i;:::-;26260:74;;26216:128;26000:351;;;;:::o;26357:85::-;26402:7;26431:5;26420:16;;26357:85;;;:::o;26448:158::-;26506:9;26539:61;26557:42;26566:32;26592:5;26566:32;:::i;:::-;26557:42;:::i;:::-;26539:61;:::i;:::-;26526:74;;26448:158;;;:::o;26612:147::-;26707:45;26746:5;26707:45;:::i;:::-;26702:3;26695:58;26612:147;;:::o;26765:114::-;26832:6;26866:5;26860:12;26850:22;;26765:114;;;:::o;26885:184::-;26984:11;27018:6;27013:3;27006:19;27058:4;27053:3;27049:14;27034:29;;26885:184;;;;:::o;27075:132::-;27142:4;27165:3;27157:11;;27195:4;27190:3;27186:14;27178:22;;27075:132;;;:::o;27213:108::-;27290:24;27308:5;27290:24;:::i;:::-;27285:3;27278:37;27213:108;;:::o;27327:179::-;27396:10;27417:46;27459:3;27451:6;27417:46;:::i;:::-;27495:4;27490:3;27486:14;27472:28;;27327:179;;;;:::o;27512:113::-;27582:4;27614;27609:3;27605:14;27597:22;;27512:113;;;:::o;27661:732::-;27780:3;27809:54;27857:5;27809:54;:::i;:::-;27879:86;27958:6;27953:3;27879:86;:::i;:::-;27872:93;;27989:56;28039:5;27989:56;:::i;:::-;28068:7;28099:1;28084:284;28109:6;28106:1;28103:13;28084:284;;;28185:6;28179:13;28212:63;28271:3;28256:13;28212:63;:::i;:::-;28205:70;;28298:60;28351:6;28298:60;:::i;:::-;28288:70;;28144:224;28131:1;28128;28124:9;28119:14;;28084:284;;;28088:14;28384:3;28377:10;;27785:608;;;27661:732;;;;:::o;28399:831::-;28662:4;28700:3;28689:9;28685:19;28677:27;;28714:71;28782:1;28771:9;28767:17;28758:6;28714:71;:::i;:::-;28795:80;28871:2;28860:9;28856:18;28847:6;28795:80;:::i;:::-;28922:9;28916:4;28912:20;28907:2;28896:9;28892:18;28885:48;28950:108;29053:4;29044:6;28950:108;:::i;:::-;28942:116;;29068:72;29136:2;29125:9;29121:18;29112:6;29068:72;:::i;:::-;29150:73;29218:3;29207:9;29203:19;29194:6;29150:73;:::i;:::-;28399:831;;;;;;;;:::o;29236:807::-;29485:4;29523:3;29512:9;29508:19;29500:27;;29537:71;29605:1;29594:9;29590:17;29581:6;29537:71;:::i;:::-;29618:72;29686:2;29675:9;29671:18;29662:6;29618:72;:::i;:::-;29700:80;29776:2;29765:9;29761:18;29752:6;29700:80;:::i;:::-;29790;29866:2;29855:9;29851:18;29842:6;29790:80;:::i;:::-;29880:73;29948:3;29937:9;29933:19;29924:6;29880:73;:::i;:::-;29963;30031:3;30020:9;30016:19;30007:6;29963:73;:::i;:::-;29236:807;;;;;;;;;:::o;30049:663::-;30137:6;30145;30153;30202:2;30190:9;30181:7;30177:23;30173:32;30170:119;;;30208:79;;:::i;:::-;30170:119;30328:1;30353:64;30409:7;30400:6;30389:9;30385:22;30353:64;:::i;:::-;30343:74;;30299:128;30466:2;30492:64;30548:7;30539:6;30528:9;30524:22;30492:64;:::i;:::-;30482:74;;30437:129;30605:2;30631:64;30687:7;30678:6;30667:9;30663:22;30631:64;:::i;:::-;30621:74;;30576:129;30049:663;;;;;:::o

Swarm Source

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