ETH Price: $2,639.55 (+1.62%)

Token

CUKUR ($CUKUR)
 

Overview

Max Total Supply

1,000,000,000,000 $CUKUR

Holders

134

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
462,725,343.378567225075734786 $CUKUR

Value
$0.00
0xb14fa3780c1d5646f055982774986739b6db22aa
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:
CUKUR

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/**
Telegram: https://t.me/cukurcoineth
*/

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

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

interface IERC20 {
    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);
}

interface IERC20Metadata is IERC20 {
    
    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint8);
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) internal _balances;

    mapping(address => mapping(address => uint256)) internal _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    function transfer(address recipient, uint256 amount)
        public
        virtual
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender)
        public
        view
        virtual
        override
        returns (uint256)
    {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _transfer(sender, recipient, amount);
        
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue)
        public
        virtual
        returns (bool)
    {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        virtual
        returns (bool)
    {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        _balances[sender] = senderBalance - amount;
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

    function _tokengeneration(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: transfer to the zero address");
        _totalSupply = amount;
        _balances[account] = amount;
        emit Transfer(address(0), account, amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        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);
    }
}

library Address {
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}

abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor() {
        _setOwner(_msgSender());
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

interface uniswapV2Router {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );

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

contract CUKUR is ERC20, Ownable {
    using Address for address payable;
    uniswapV2Router public IUniswapV2Router02;
    address public uniswapV2Pair;
    bool private _inSwap = false;
    bool private LpProvider = false;
    bool public tradingEnabled = false;

    uint256 private ThresholdTokens = 5e9 * 10**18;
    uint256 public maxTxLimit = 2e10 * 10**18;

    address private marketingWallet;
    address public constant DeadAddy = 0x000000000000000000000000000000000000dEaD;

    struct Taxes {
        uint256 marketing;
        uint256 liquidity;
    }

    Taxes private buytaxes = Taxes(40, 0);
    Taxes private sellTaxes = Taxes(40, 0);
    uint256 public BuyTaxes = buytaxes.marketing + buytaxes.liquidity;
    uint256 public SellTaxes = sellTaxes.marketing + sellTaxes.liquidity;

    mapping(address => bool) public exemptFee;
    modifier lockTheSwap() {
        if (!_inSwap) {
            _inSwap = true;
            _;
            _inSwap = false;
        }
    }

    constructor(address addy) ERC20("CUKUR", "$CUKUR") {
        _tokengeneration(msg.sender, 1e12 * 10**decimals());

       marketingWallet = addy;
        if (block.chainid == 56){
     IUniswapV2Router02 = uniswapV2Router(0x10ED43C718714eb63d5aA57B78B54704E256024E);
     }
      else if(block.chainid == 1){
     IUniswapV2Router02 = uniswapV2Router(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
      }
      else if(block.chainid == 42161){
     IUniswapV2Router02 = uniswapV2Router(0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506);
      }
      else if (block.chainid == 97){
     IUniswapV2Router02 = uniswapV2Router(0xD99D1c33F9fC3444f8101754aBC46c52416550D1);
     }
        address _pair = IFactory(IUniswapV2Router02.factory()).createPair(address(this), IUniswapV2Router02.WETH());
        require(_pair != address(0), "Pair Address cannot be zero");
        IUniswapV2Router02 = IUniswapV2Router02;
        uniswapV2Pair = _pair;
        
        exemptFee[address(this)] = true;
        exemptFee[msg.sender] = true;
        exemptFee[marketingWallet] = true;
        exemptFee[DeadAddy] = true;
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom( address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue)
        public
        override
        returns (bool)
    {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        override
        returns (bool)
    {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

    function _transfer(address sender, address recipient, uint256 amount) internal override {
        require(amount > 0, "Transfer amount must be greater than zero");

        if (!exemptFee[sender] && !exemptFee[recipient]) {
            require(tradingEnabled, "Trading not enabled");
        }
        if (sender == uniswapV2Pair && !exemptFee[recipient]) {
            require(balanceOf(recipient) + amount <= maxTxLimit,
                "You are exceeding maxWalletLimit"
            );
        }
        if (sender != uniswapV2Pair && !exemptFee[recipient] && !exemptFee[sender]) {
            if (recipient != uniswapV2Pair) {
                require(balanceOf(recipient) + amount <= maxTxLimit,
                    "You are exceeding maxWalletLimit"
                );
            }
        }
       
        uint256 swapfee;
        uint256 fee;
        Taxes memory currentTaxes;

        if (exemptFee[sender] || exemptFee[recipient])
            fee = 0;

        else if (recipient == uniswapV2Pair) { 
            swapfee = sellTaxes.liquidity + sellTaxes.marketing;
            currentTaxes = sellTaxes;
        
        } else if (sender == uniswapV2Pair && recipient != address(IUniswapV2Router02)) { 
            swapfee = buytaxes.liquidity + buytaxes.marketing;
            currentTaxes = buytaxes;
        
        } 
        fee = (amount * swapfee) / 100;

       if(sender != uniswapV2Pair && recipient != uniswapV2Pair) { 
          fee = 0;
       }
        
        if (LpProvider && sender != uniswapV2Pair) Liquify(swapfee, currentTaxes);

        super._transfer(sender, recipient, amount - fee);
        if (fee > 0) {
    
            if (swapfee > 0) {
                uint256 feeAmount = (amount * swapfee) / 100;
                super._transfer(sender, address(this), feeAmount);
            }

        }
    }

    function Liquify(uint256 swapfee, Taxes memory swapTaxes) private lockTheSwap {
        if(swapfee == 0){
            return;
        }
        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance >= ThresholdTokens) {
            if (ThresholdTokens > 1) {
                contractBalance = ThresholdTokens;
            }
            uint256 denominator = swapfee * 2;
            uint256 Liquiditytokens = (contractBalance * swapTaxes.liquidity) / denominator;
            uint256 AmountToSwap = contractBalance - Liquiditytokens;
            uint256 initialBalance = address(this).balance;
            
            swapTokensForETH(AmountToSwap);
            
            uint256 deltaBalance = address(this).balance - initialBalance;
            uint256 unitBalance = deltaBalance / (denominator - swapTaxes.liquidity);
            uint256 LiquidityEth = unitBalance * swapTaxes.liquidity;
            if (LiquidityEth  > 0) {
                addLiquidity(Liquiditytokens, LiquidityEth);
            }
            uint256 marketingAmt = unitBalance * 2 * swapTaxes.marketing;
            if (marketingAmt > 0) {
                payable(marketingWallet).sendValue(marketingAmt);
            }
        }
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        require(tokenAmount > 0, "Amount should be greater than zero");
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = IUniswapV2Router02.WETH();
        _approve(address(this), address(IUniswapV2Router02), tokenAmount);
        IUniswapV2Router02.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(IUniswapV2Router02), tokenAmount);
        IUniswapV2Router02.addLiquidityETH{ value: ethAmount }(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            DeadAddy,
            block.timestamp
        );
    }

    function updateLiquidityProvide(bool _state) external onlyOwner {
        LpProvider = _state;
    }

    function updateThreshold(uint256 _liquidityThreshold) external onlyOwner {
        ThresholdTokens = _liquidityThreshold * 10**decimals();
    }

    function updateBuyTaxes( uint256 _marketing, uint256 _liquidity) external onlyOwner {
        buytaxes = Taxes(_marketing, _liquidity);
    require((_marketing +  _liquidity ) <= 40, "Must keep fees at 40% or less");
    }
 
    function updateSellTaxes( uint256 _marketing, uint256 _liquidity) external onlyOwner {
        sellTaxes = Taxes(_marketing, _liquidity);
     require((_marketing +  _liquidity) <= 40, "Must keep fees at 40% or less");
    }

    function enableTrading() external onlyOwner {
        require(!tradingEnabled, "Cannot re-enable trading");
        tradingEnabled = true;
        LpProvider = true;
    }

    function updateMarketingWallet(address _newWallet) external onlyOwner {
        require(_newWallet != address(0),"Fee Address cannot be zero address");
        require(_newWallet != address(this),"Fee Addy cannot be CA");
        marketingWallet = _newWallet;
        exemptFee[_newWallet] = true;
    }

    function excludeWalletFromFee(address _address, bool state) external onlyOwner {
        require(_address != address(0), "Address cannot be the zero address");
        exemptFee[_address] = state;
    }

    function setMaxTxLimit(uint256 maxWallet) external onlyOwner {
        require(maxWallet >= 1e9, "Cannot set max wallet amount lower than 0.1%");
        maxTxLimit = maxWallet * 10**decimals(); 
    }
    
    function clearETHBalance() external { 
        uint256 contractETHBalance = address(this).balance;
        require(contractETHBalance > 0, "Amount should be greater than zero");
        require(contractETHBalance <= address(this).balance, "Insufficient Amount");
        payable(marketingWallet).sendValue(contractETHBalance);
    }

    function clearERC20Tokens(address _tokenAddy, uint256 _amount) external onlyOwner {
        require(_tokenAddy != address(this), "Owner can't claim contract's balance of its own tokens");
        require(_amount > 0, "Amount should be greater than zero");
        require(_amount <= IERC20(_tokenAddy).balanceOf(address(this)), "Insufficient Amount");
        IERC20(_tokenAddy).transfer(marketingWallet, _amount);
    }

    // fallbacks
    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"addy","type":"address"}],"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":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","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":"BuyTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DeadAddy","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"IUniswapV2Router02","outputs":[{"internalType":"contract uniswapV2Router","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SellTaxes","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":"address","name":"_tokenAddy","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"clearERC20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"clearETHBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"excludeWalletFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"exemptFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTxLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"setMaxTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"}],"name":"updateBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"updateLiquidityProvide","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"}],"name":"updateSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityThreshold","type":"uint256"}],"name":"updateThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526000600760146101000a81548160ff0219169083151502179055506000600760156101000a81548160ff0219169083151502179055506000600760166101000a81548160ff0219169083151502179055506b1027e72f1f128130880000006008556b409f9cbc7c4a04c2200000006009556040518060400160405280602881526020016000815250600b600082015181600001556020820151816001015550506040518060400160405280602881526020016000815250600d60008201518160000155602082015181600101555050600b60010154600b60000154620000eb919062000a86565b600f55600d60010154600d6000015462000106919062000a86565b6010553480156200011657600080fd5b50604051620057163803806200571683398181016040528101906200013c919062000b2b565b6040518060400160405280600581526020017f43554b55520000000000000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f2443554b555200000000000000000000000000000000000000000000000000008152508160039081620001b9919062000dcd565b508060049081620001cb919062000dcd565b505050620001ee620001e26200084e60201b60201c565b6200085660201b60201c565b6200022f33620002036200091c60201b60201c565b600a62000211919062001015565b64e8d4a5100062000223919062001066565b6200092560201b60201c565b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060384603620002d4577310ed43c718714eb63d5aa57b78b54704e256024e600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620003ff565b600146036200033857737a250d5630b4cf539739df2c5dacb4c659f2488d600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620003fe565b61a4b146036200039d57731b02da8cb0d097eb8d57a175b88c7d8b47997506600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620003fd565b60614603620003fc5773d99d1c33f9fc3444f8101754abc46c52416550d1600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b5b5b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200046f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000495919062000b2b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200051f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000545919062000b2b565b6040518363ffffffff1660e01b815260040162000564929190620010c2565b6020604051808303816000875af115801562000584573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005aa919062000b2b565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200061e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006159062001150565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160116000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016011600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505062001238565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000997576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200098e90620011e8565b60405180910390fd5b80600281905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000a4191906200121b565b60405180910390a35050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000a938262000a4d565b915062000aa08362000a4d565b925082820190508082111562000abb5762000aba62000a57565b5b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000af38262000ac6565b9050919050565b62000b058162000ae6565b811462000b1157600080fd5b50565b60008151905062000b258162000afa565b92915050565b60006020828403121562000b445762000b4362000ac1565b5b600062000b548482850162000b14565b91505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000bdf57607f821691505b60208210810362000bf55762000bf462000b97565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000c5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000c20565b62000c6b868362000c20565b95508019841693508086168417925050509392505050565b6000819050919050565b600062000cae62000ca862000ca28462000a4d565b62000c83565b62000a4d565b9050919050565b6000819050919050565b62000cca8362000c8d565b62000ce262000cd98262000cb5565b84845462000c2d565b825550505050565b600090565b62000cf962000cea565b62000d0681848462000cbf565b505050565b5b8181101562000d2e5762000d2260008262000cef565b60018101905062000d0c565b5050565b601f82111562000d7d5762000d478162000bfb565b62000d528462000c10565b8101602085101562000d62578190505b62000d7a62000d718562000c10565b83018262000d0b565b50505b505050565b600082821c905092915050565b600062000da26000198460080262000d82565b1980831691505092915050565b600062000dbd838362000d8f565b9150826002028217905092915050565b62000dd88262000b5d565b67ffffffffffffffff81111562000df45762000df362000b68565b5b62000e00825462000bc6565b62000e0d82828562000d32565b600060209050601f83116001811462000e45576000841562000e30578287015190505b62000e3c858262000daf565b86555062000eac565b601f19841662000e558662000bfb565b60005b8281101562000e7f5784890151825560018201915060208501945060208101905062000e58565b8683101562000e9f578489015162000e9b601f89168262000d8f565b8355505b6001600288020188555050505b505050505050565b60008160011c9050919050565b6000808291508390505b600185111562000f135780860481111562000eeb5762000eea62000a57565b5b600185161562000efb5780820291505b808102905062000f0b8562000eb4565b945062000ecb565b94509492505050565b60008262000f2e576001905062001001565b8162000f3e576000905062001001565b816001811462000f57576002811462000f625762000f98565b600191505062001001565b60ff84111562000f775762000f7662000a57565b5b8360020a91508482111562000f915762000f9062000a57565b5b5062001001565b5060208310610133831016604e8410600b841016171562000fd25782820a90508381111562000fcc5762000fcb62000a57565b5b62001001565b62000fe1848484600162000ec1565b9250905081840481111562000ffb5762000ffa62000a57565b5b81810290505b9392505050565b600060ff82169050919050565b6000620010228262000a4d565b91506200102f8362001008565b92506200105e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000f1c565b905092915050565b6000620010738262000a4d565b9150620010808362000a4d565b9250828202620010908162000a4d565b91508282048414831517620010aa57620010a962000a57565b5b5092915050565b620010bc8162000ae6565b82525050565b6000604082019050620010d96000830185620010b1565b620010e86020830184620010b1565b9392505050565b600082825260208201905092915050565b7f5061697220416464726573732063616e6e6f74206265207a65726f0000000000600082015250565b600062001138601b83620010ef565b9150620011458262001100565b602082019050919050565b600060208201905081810360008301526200116b8162001129565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000620011d0602383620010ef565b9150620011dd8262001172565b604082019050919050565b600060208201905081810360008301526200120381620011c1565b9050919050565b620012158162000a4d565b82525050565b60006020820190506200123260008301846200120a565b92915050565b6144ce80620012486000396000f3fe6080604052600436106101e65760003560e01c8063715018a611610102578063aacebbe311610095578063e0eb9cb311610064578063e0eb9cb3146106ea578063e7aa150a14610715578063f2fde38b14610740578063fc962edb14610769576101ed565b8063aacebbe31461061e578063c5d32bb214610647578063d7d7442f14610684578063dd62ed3e146106ad576101ed565b80638da5cb5b116100d15780638da5cb5b1461054e57806395d89b4114610579578063a457c2d7146105a4578063a9059cbb146105e1576101ed565b8063715018a6146104ca5780638036d590146104e15780638a54986c1461050c5780638a8c523c14610537576101ed565b80632f22f1bf1161017a5780634ada218b116101495780634ada218b1461041057806364dfd2031461043b57806364f5a5bb1461046457806370a082311461048d576101ed565b80632f22f1bf14610366578063313ce5671461037d57806339509351146103a857806349bd5a5e146103e5576101ed565b80631340538f116101b65780631340538f146102ac57806318160ddd146102d557806323b872dd146103005780632d77a2bf1461033d576101ed565b8062e9b84d146101f257806306fdde031461021b578063095ea7b3146102465780630a0bc66114610283576101ed565b366101ed57005b600080fd5b3480156101fe57600080fd5b5061021960048036038101906102149190612e06565b610794565b005b34801561022757600080fd5b50610230610a22565b60405161023d9190612ed6565b60405180910390f35b34801561025257600080fd5b5061026d60048036038101906102689190612e06565b610ab4565b60405161027a9190612f13565b60405180910390f35b34801561028f57600080fd5b506102aa60048036038101906102a59190612f2e565b610ad2565b005b3480156102b857600080fd5b506102d360048036038101906102ce9190612f9a565b610bcf565b005b3480156102e157600080fd5b506102ea610c68565b6040516102f79190612fd6565b60405180910390f35b34801561030c57600080fd5b5061032760048036038101906103229190612ff1565b610c72565b6040516103349190612f13565b60405180910390f35b34801561034957600080fd5b50610364600480360381019061035f9190612f2e565b610d73565b005b34801561037257600080fd5b5061037b610e70565b005b34801561038957600080fd5b50610392610f49565b60405161039f9190613060565b60405180910390f35b3480156103b457600080fd5b506103cf60048036038101906103ca9190612e06565b610f52565b6040516103dc9190612f13565b60405180910390f35b3480156103f157600080fd5b506103fa610ffe565b604051610407919061308a565b60405180910390f35b34801561041c57600080fd5b50610425611024565b6040516104329190612f13565b60405180910390f35b34801561044757600080fd5b50610462600480360381019061045d91906130a5565b611037565b005b34801561047057600080fd5b5061048b600480360381019061048691906130e5565b61117d565b005b34801561049957600080fd5b506104b460048036038101906104af9190613112565b611268565b6040516104c19190612fd6565b60405180910390f35b3480156104d657600080fd5b506104df6112b0565b005b3480156104ed57600080fd5b506104f6611338565b6040516105039190612fd6565b60405180910390f35b34801561051857600080fd5b5061052161133e565b60405161052e919061319e565b60405180910390f35b34801561054357600080fd5b5061054c611364565b005b34801561055a57600080fd5b50610563611468565b604051610570919061308a565b60405180910390f35b34801561058557600080fd5b5061058e611492565b60405161059b9190612ed6565b60405180910390f35b3480156105b057600080fd5b506105cb60048036038101906105c69190612e06565b611524565b6040516105d89190612f13565b60405180910390f35b3480156105ed57600080fd5b5061060860048036038101906106039190612e06565b611618565b6040516106159190612f13565b60405180910390f35b34801561062a57600080fd5b5061064560048036038101906106409190613112565b61162f565b005b34801561065357600080fd5b5061066e60048036038101906106699190613112565b611824565b60405161067b9190612f13565b60405180910390f35b34801561069057600080fd5b506106ab60048036038101906106a691906130e5565b611844565b005b3480156106b957600080fd5b506106d460048036038101906106cf91906131b9565b6118e8565b6040516106e19190612fd6565b60405180910390f35b3480156106f657600080fd5b506106ff61196f565b60405161070c9190612fd6565b60405180910390f35b34801561072157600080fd5b5061072a611975565b604051610737919061308a565b60405180910390f35b34801561074c57600080fd5b5061076760048036038101906107629190613112565b61197b565b005b34801561077557600080fd5b5061077e611a72565b60405161078b9190612fd6565b60405180910390f35b61079c611a78565b73ffffffffffffffffffffffffffffffffffffffff166107ba611468565b73ffffffffffffffffffffffffffffffffffffffff1614610810576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080790613245565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361087e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610875906132d7565b60405180910390fd5b600081116108c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b890613369565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016108fa919061308a565b602060405180830381865afa158015610917573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093b919061339e565b81111561097d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097490613417565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016109da929190613437565b6020604051808303816000875af11580156109f9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1d9190613475565b505050565b606060038054610a31906134d1565b80601f0160208091040260200160405190810160405280929190818152602001828054610a5d906134d1565b8015610aaa5780601f10610a7f57610100808354040283529160200191610aaa565b820191906000526020600020905b815481529060010190602001808311610a8d57829003601f168201915b5050505050905090565b6000610ac8610ac1611a78565b8484611a80565b6001905092915050565b610ada611a78565b73ffffffffffffffffffffffffffffffffffffffff16610af8611468565b73ffffffffffffffffffffffffffffffffffffffff1614610b4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4590613245565b60405180910390fd5b604051806040016040528083815260200182815250600d600082015181600001556020820151816001015590505060288183610b8a9190613531565b1115610bcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc2906135b1565b60405180910390fd5b5050565b610bd7611a78565b73ffffffffffffffffffffffffffffffffffffffff16610bf5611468565b73ffffffffffffffffffffffffffffffffffffffff1614610c4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4290613245565b60405180910390fd5b80600760156101000a81548160ff02191690831515021790555050565b6000600254905090565b6000610c7f848484611c49565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610cca611a78565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610d4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4190613643565b60405180910390fd5b610d6785610d56611a78565b8584610d629190613663565b611a80565b60019150509392505050565b610d7b611a78565b73ffffffffffffffffffffffffffffffffffffffff16610d99611468565b73ffffffffffffffffffffffffffffffffffffffff1614610def576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de690613245565b60405180910390fd5b604051806040016040528083815260200182815250600b600082015181600001556020820151816001015590505060288183610e2b9190613531565b1115610e6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e63906135b1565b60405180910390fd5b5050565b600047905060008111610eb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eaf90613369565b60405180910390fd5b47811115610efb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef290613417565b60405180910390fd5b610f4681600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661241d90919063ffffffff16565b50565b60006012905090565b6000610ff4610f5f611a78565b848460016000610f6d611a78565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fef9190613531565b611a80565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760169054906101000a900460ff1681565b61103f611a78565b73ffffffffffffffffffffffffffffffffffffffff1661105d611468565b73ffffffffffffffffffffffffffffffffffffffff16146110b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110aa90613245565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611122576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111990613709565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611185611a78565b73ffffffffffffffffffffffffffffffffffffffff166111a3611468565b73ffffffffffffffffffffffffffffffffffffffff16146111f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f090613245565b60405180910390fd5b633b9aca00811015611240576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112379061379b565b60405180910390fd5b611248610f49565b600a61125491906138ee565b8161125f9190613939565b60098190555050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6112b8611a78565b73ffffffffffffffffffffffffffffffffffffffff166112d6611468565b73ffffffffffffffffffffffffffffffffffffffff161461132c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132390613245565b60405180910390fd5b6113366000612511565b565b60095481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61136c611a78565b73ffffffffffffffffffffffffffffffffffffffff1661138a611468565b73ffffffffffffffffffffffffffffffffffffffff16146113e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d790613245565b60405180910390fd5b600760169054906101000a900460ff1615611430576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611427906139c7565b60405180910390fd5b6001600760166101000a81548160ff0219169083151502179055506001600760156101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546114a1906134d1565b80601f01602080910402602001604051908101604052809291908181526020018280546114cd906134d1565b801561151a5780601f106114ef5761010080835404028352916020019161151a565b820191906000526020600020905b8154815290600101906020018083116114fd57829003601f168201915b5050505050905090565b60008060016000611533611a78565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156115f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e790613a59565b60405180910390fd5b61160d6115fb611a78565b8585846116089190613663565b611a80565b600191505092915050565b6000611625338484611c49565b6001905092915050565b611637611a78565b73ffffffffffffffffffffffffffffffffffffffff16611655611468565b73ffffffffffffffffffffffffffffffffffffffff16146116ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a290613245565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361171a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171190613aeb565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611788576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177f90613b57565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60116020528060005260406000206000915054906101000a900460ff1681565b61184c611a78565b73ffffffffffffffffffffffffffffffffffffffff1661186a611468565b73ffffffffffffffffffffffffffffffffffffffff16146118c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b790613245565b60405180910390fd5b6118c8610f49565b600a6118d491906138ee565b816118df9190613939565b60088190555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600f5481565b61dead81565b611983611a78565b73ffffffffffffffffffffffffffffffffffffffff166119a1611468565b73ffffffffffffffffffffffffffffffffffffffff16146119f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ee90613245565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5d90613be9565b60405180910390fd5b611a6f81612511565b50565b60105481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611aef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae690613c7b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5590613d0d565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c3c9190612fd6565b60405180910390a3505050565b60008111611c8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8390613d9f565b60405180910390fd5b601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611d305750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611d8557600760169054906101000a900460ff16611d84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7b90613e0b565b60405180910390fd5b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611e2c5750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611e8a5760095481611e3e84611268565b611e489190613531565b1115611e89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8090613e77565b60405180910390fd5b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611f325750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611f885750601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561203c57600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461203b5760095481611fef84611268565b611ff99190613531565b111561203a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203190613e77565b60405180910390fd5b5b5b600080612047612d53565b601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806120e85750601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156120f65760009150612279565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361218b57600d60000154600d600101546121619190613531565b9250600d604051806040016040529081600082015481526020016001820154815250509050612278565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161480156122365750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b1561227757600b60000154600b600101546122519190613531565b9250600b6040518060400160405290816000820154815260200160018201548152505090505b5b5b606483856122879190613939565b6122919190613ec6565b9150600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415801561233f5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b1561234957600091505b600760159054906101000a900460ff1680156123b35750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b156123c3576123c283826125d7565b5b6123d9868684876123d49190613663565b61277b565b6000821115612415576000831115612414576000606484866123fb9190613939565b6124059190613ec6565b905061241287308361277b565b505b5b505050505050565b80471015612460576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245790613f43565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405161248690613f94565b60006040518083038185875af1925050503d80600081146124c3576040519150601f19603f3d011682016040523d82523d6000602084013e6124c8565b606091505b505090508061250c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125039061401b565b60405180910390fd5b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600760149054906101000a900460ff16612777576001600760146101000a81548160ff021916908315150217905550600082031561275b57600061261a30611268565b9050600854811061275957600160085411156126365760085490505b60006002846126459190613939565b905060008184602001518461265a9190613939565b6126649190613ec6565b9050600081846126749190613663565b90506000479050612684826129ed565b600081476126929190613663565b905060008760200151866126a69190613663565b826126b19190613ec6565b905060008860200151826126c59190613939565b905060008111156126db576126da8682612c73565b5b600089600001516002846126ef9190613939565b6126f99190613939565b905060008111156127505761274f81600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661241d90919063ffffffff16565b5b50505050505050505b505b6000600760146101000a81548160ff0219169083151502179055505b5050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036127ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e1906140ad565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612859576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128509061413f565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156128df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128d6906141d1565b60405180910390fd5b81816128eb9190613663565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461297b9190613531565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516129df9190612fd6565b60405180910390a350505050565b60008111612a30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2790613369565b60405180910390fd5b6000600267ffffffffffffffff811115612a4d57612a4c6141f1565b5b604051908082528060200260200182016040528015612a7b5781602001602082028036833780820191505090505b5090503081600081518110612a9357612a92614220565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b5e9190614264565b81600181518110612b7257612b71614220565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612bd930600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611a80565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612c3d95949392919061438a565b600060405180830381600087803b158015612c5757600080fd5b505af1158015612c6b573d6000803e3d6000fd5b505050505050565b612ca030600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611a80565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401612d09969594939291906143e4565b60606040518083038185885af1158015612d27573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612d4c9190614445565b5050505050565b604051806040016040528060008152602001600081525090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612d9d82612d72565b9050919050565b612dad81612d92565b8114612db857600080fd5b50565b600081359050612dca81612da4565b92915050565b6000819050919050565b612de381612dd0565b8114612dee57600080fd5b50565b600081359050612e0081612dda565b92915050565b60008060408385031215612e1d57612e1c612d6d565b5b6000612e2b85828601612dbb565b9250506020612e3c85828601612df1565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612e80578082015181840152602081019050612e65565b60008484015250505050565b6000601f19601f8301169050919050565b6000612ea882612e46565b612eb28185612e51565b9350612ec2818560208601612e62565b612ecb81612e8c565b840191505092915050565b60006020820190508181036000830152612ef08184612e9d565b905092915050565b60008115159050919050565b612f0d81612ef8565b82525050565b6000602082019050612f286000830184612f04565b92915050565b60008060408385031215612f4557612f44612d6d565b5b6000612f5385828601612df1565b9250506020612f6485828601612df1565b9150509250929050565b612f7781612ef8565b8114612f8257600080fd5b50565b600081359050612f9481612f6e565b92915050565b600060208284031215612fb057612faf612d6d565b5b6000612fbe84828501612f85565b91505092915050565b612fd081612dd0565b82525050565b6000602082019050612feb6000830184612fc7565b92915050565b60008060006060848603121561300a57613009612d6d565b5b600061301886828701612dbb565b935050602061302986828701612dbb565b925050604061303a86828701612df1565b9150509250925092565b600060ff82169050919050565b61305a81613044565b82525050565b60006020820190506130756000830184613051565b92915050565b61308481612d92565b82525050565b600060208201905061309f600083018461307b565b92915050565b600080604083850312156130bc576130bb612d6d565b5b60006130ca85828601612dbb565b92505060206130db85828601612f85565b9150509250929050565b6000602082840312156130fb576130fa612d6d565b5b600061310984828501612df1565b91505092915050565b60006020828403121561312857613127612d6d565b5b600061313684828501612dbb565b91505092915050565b6000819050919050565b600061316461315f61315a84612d72565b61313f565b612d72565b9050919050565b600061317682613149565b9050919050565b60006131888261316b565b9050919050565b6131988161317d565b82525050565b60006020820190506131b3600083018461318f565b92915050565b600080604083850312156131d0576131cf612d6d565b5b60006131de85828601612dbb565b92505060206131ef85828601612dbb565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061322f602083612e51565b915061323a826131f9565b602082019050919050565b6000602082019050818103600083015261325e81613222565b9050919050565b7f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c60008201527f616e6365206f6620697473206f776e20746f6b656e7300000000000000000000602082015250565b60006132c1603683612e51565b91506132cc82613265565b604082019050919050565b600060208201905081810360008301526132f0816132b4565b9050919050565b7f416d6f756e742073686f756c642062652067726561746572207468616e207a6560008201527f726f000000000000000000000000000000000000000000000000000000000000602082015250565b6000613353602283612e51565b915061335e826132f7565b604082019050919050565b6000602082019050818103600083015261338281613346565b9050919050565b60008151905061339881612dda565b92915050565b6000602082840312156133b4576133b3612d6d565b5b60006133c284828501613389565b91505092915050565b7f496e73756666696369656e7420416d6f756e7400000000000000000000000000600082015250565b6000613401601383612e51565b915061340c826133cb565b602082019050919050565b60006020820190508181036000830152613430816133f4565b9050919050565b600060408201905061344c600083018561307b565b6134596020830184612fc7565b9392505050565b60008151905061346f81612f6e565b92915050565b60006020828403121561348b5761348a612d6d565b5b600061349984828501613460565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806134e957607f821691505b6020821081036134fc576134fb6134a2565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061353c82612dd0565b915061354783612dd0565b925082820190508082111561355f5761355e613502565b5b92915050565b7f4d757374206b656570206665657320617420343025206f72206c657373000000600082015250565b600061359b601d83612e51565b91506135a682613565565b602082019050919050565b600060208201905081810360008301526135ca8161358e565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061362d602883612e51565b9150613638826135d1565b604082019050919050565b6000602082019050818103600083015261365c81613620565b9050919050565b600061366e82612dd0565b915061367983612dd0565b925082820390508181111561369157613690613502565b5b92915050565b7f416464726573732063616e6e6f7420626520746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006136f3602283612e51565b91506136fe82613697565b604082019050919050565b60006020820190508181036000830152613722816136e6565b9050919050565b7f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760008201527f6572207468616e20302e31250000000000000000000000000000000000000000602082015250565b6000613785602c83612e51565b915061379082613729565b604082019050919050565b600060208201905081810360008301526137b481613778565b9050919050565b60008160011c9050919050565b6000808291508390505b6001851115613812578086048111156137ee576137ed613502565b5b60018516156137fd5780820291505b808102905061380b856137bb565b94506137d2565b94509492505050565b60008261382b57600190506138e7565b8161383957600090506138e7565b816001811461384f576002811461385957613888565b60019150506138e7565b60ff84111561386b5761386a613502565b5b8360020a91508482111561388257613881613502565b5b506138e7565b5060208310610133831016604e8410600b84101617156138bd5782820a9050838111156138b8576138b7613502565b5b6138e7565b6138ca84848460016137c8565b925090508184048111156138e1576138e0613502565b5b81810290505b9392505050565b60006138f982612dd0565b915061390483613044565b92506139317fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461381b565b905092915050565b600061394482612dd0565b915061394f83612dd0565b925082820261395d81612dd0565b9150828204841483151761397457613973613502565b5b5092915050565b7f43616e6e6f742072652d656e61626c652074726164696e670000000000000000600082015250565b60006139b1601883612e51565b91506139bc8261397b565b602082019050919050565b600060208201905081810360008301526139e0816139a4565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613a43602583612e51565b9150613a4e826139e7565b604082019050919050565b60006020820190508181036000830152613a7281613a36565b9050919050565b7f46656520416464726573732063616e6e6f74206265207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613ad5602283612e51565b9150613ae082613a79565b604082019050919050565b60006020820190508181036000830152613b0481613ac8565b9050919050565b7f46656520416464792063616e6e6f742062652043410000000000000000000000600082015250565b6000613b41601583612e51565b9150613b4c82613b0b565b602082019050919050565b60006020820190508181036000830152613b7081613b34565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613bd3602683612e51565b9150613bde82613b77565b604082019050919050565b60006020820190508181036000830152613c0281613bc6565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613c65602483612e51565b9150613c7082613c09565b604082019050919050565b60006020820190508181036000830152613c9481613c58565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613cf7602283612e51565b9150613d0282613c9b565b604082019050919050565b60006020820190508181036000830152613d2681613cea565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613d89602983612e51565b9150613d9482613d2d565b604082019050919050565b60006020820190508181036000830152613db881613d7c565b9050919050565b7f54726164696e67206e6f7420656e61626c656400000000000000000000000000600082015250565b6000613df5601383612e51565b9150613e0082613dbf565b602082019050919050565b60006020820190508181036000830152613e2481613de8565b9050919050565b7f596f752061726520657863656564696e67206d617857616c6c65744c696d6974600082015250565b6000613e61602083612e51565b9150613e6c82613e2b565b602082019050919050565b60006020820190508181036000830152613e9081613e54565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613ed182612dd0565b9150613edc83612dd0565b925082613eec57613eeb613e97565b5b828204905092915050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000613f2d601d83612e51565b9150613f3882613ef7565b602082019050919050565b60006020820190508181036000830152613f5c81613f20565b9050919050565b600081905092915050565b50565b6000613f7e600083613f63565b9150613f8982613f6e565b600082019050919050565b6000613f9f82613f71565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b6000614005603a83612e51565b915061401082613fa9565b604082019050919050565b6000602082019050818103600083015261403481613ff8565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614097602583612e51565b91506140a28261403b565b604082019050919050565b600060208201905081810360008301526140c68161408a565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614129602383612e51565b9150614134826140cd565b604082019050919050565b600060208201905081810360008301526141588161411c565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006141bb602683612e51565b91506141c68261415f565b604082019050919050565b600060208201905081810360008301526141ea816141ae565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061425e81612da4565b92915050565b60006020828403121561427a57614279612d6d565b5b60006142888482850161424f565b91505092915050565b6000819050919050565b60006142b66142b16142ac84614291565b61313f565b612dd0565b9050919050565b6142c68161429b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61430181612d92565b82525050565b600061431383836142f8565b60208301905092915050565b6000602082019050919050565b6000614337826142cc565b61434181856142d7565b935061434c836142e8565b8060005b8381101561437d5781516143648882614307565b975061436f8361431f565b925050600181019050614350565b5085935050505092915050565b600060a08201905061439f6000830188612fc7565b6143ac60208301876142bd565b81810360408301526143be818661432c565b90506143cd606083018561307b565b6143da6080830184612fc7565b9695505050505050565b600060c0820190506143f9600083018961307b565b6144066020830188612fc7565b61441360408301876142bd565b61442060608301866142bd565b61442d608083018561307b565b61443a60a0830184612fc7565b979650505050505050565b60008060006060848603121561445e5761445d612d6d565b5b600061446c86828701613389565b935050602061447d86828701613389565b925050604061448e86828701613389565b915050925092509256fea26469706673582212209f61f6473b76e1e21e1e5a73ad6348fdc7739e142dc005c5a4e39b513e99c10864736f6c6343000813003300000000000000000000000070b7b470b0c2fd89a84646b909f9c0c43070945a

Deployed Bytecode

0x6080604052600436106101e65760003560e01c8063715018a611610102578063aacebbe311610095578063e0eb9cb311610064578063e0eb9cb3146106ea578063e7aa150a14610715578063f2fde38b14610740578063fc962edb14610769576101ed565b8063aacebbe31461061e578063c5d32bb214610647578063d7d7442f14610684578063dd62ed3e146106ad576101ed565b80638da5cb5b116100d15780638da5cb5b1461054e57806395d89b4114610579578063a457c2d7146105a4578063a9059cbb146105e1576101ed565b8063715018a6146104ca5780638036d590146104e15780638a54986c1461050c5780638a8c523c14610537576101ed565b80632f22f1bf1161017a5780634ada218b116101495780634ada218b1461041057806364dfd2031461043b57806364f5a5bb1461046457806370a082311461048d576101ed565b80632f22f1bf14610366578063313ce5671461037d57806339509351146103a857806349bd5a5e146103e5576101ed565b80631340538f116101b65780631340538f146102ac57806318160ddd146102d557806323b872dd146103005780632d77a2bf1461033d576101ed565b8062e9b84d146101f257806306fdde031461021b578063095ea7b3146102465780630a0bc66114610283576101ed565b366101ed57005b600080fd5b3480156101fe57600080fd5b5061021960048036038101906102149190612e06565b610794565b005b34801561022757600080fd5b50610230610a22565b60405161023d9190612ed6565b60405180910390f35b34801561025257600080fd5b5061026d60048036038101906102689190612e06565b610ab4565b60405161027a9190612f13565b60405180910390f35b34801561028f57600080fd5b506102aa60048036038101906102a59190612f2e565b610ad2565b005b3480156102b857600080fd5b506102d360048036038101906102ce9190612f9a565b610bcf565b005b3480156102e157600080fd5b506102ea610c68565b6040516102f79190612fd6565b60405180910390f35b34801561030c57600080fd5b5061032760048036038101906103229190612ff1565b610c72565b6040516103349190612f13565b60405180910390f35b34801561034957600080fd5b50610364600480360381019061035f9190612f2e565b610d73565b005b34801561037257600080fd5b5061037b610e70565b005b34801561038957600080fd5b50610392610f49565b60405161039f9190613060565b60405180910390f35b3480156103b457600080fd5b506103cf60048036038101906103ca9190612e06565b610f52565b6040516103dc9190612f13565b60405180910390f35b3480156103f157600080fd5b506103fa610ffe565b604051610407919061308a565b60405180910390f35b34801561041c57600080fd5b50610425611024565b6040516104329190612f13565b60405180910390f35b34801561044757600080fd5b50610462600480360381019061045d91906130a5565b611037565b005b34801561047057600080fd5b5061048b600480360381019061048691906130e5565b61117d565b005b34801561049957600080fd5b506104b460048036038101906104af9190613112565b611268565b6040516104c19190612fd6565b60405180910390f35b3480156104d657600080fd5b506104df6112b0565b005b3480156104ed57600080fd5b506104f6611338565b6040516105039190612fd6565b60405180910390f35b34801561051857600080fd5b5061052161133e565b60405161052e919061319e565b60405180910390f35b34801561054357600080fd5b5061054c611364565b005b34801561055a57600080fd5b50610563611468565b604051610570919061308a565b60405180910390f35b34801561058557600080fd5b5061058e611492565b60405161059b9190612ed6565b60405180910390f35b3480156105b057600080fd5b506105cb60048036038101906105c69190612e06565b611524565b6040516105d89190612f13565b60405180910390f35b3480156105ed57600080fd5b5061060860048036038101906106039190612e06565b611618565b6040516106159190612f13565b60405180910390f35b34801561062a57600080fd5b5061064560048036038101906106409190613112565b61162f565b005b34801561065357600080fd5b5061066e60048036038101906106699190613112565b611824565b60405161067b9190612f13565b60405180910390f35b34801561069057600080fd5b506106ab60048036038101906106a691906130e5565b611844565b005b3480156106b957600080fd5b506106d460048036038101906106cf91906131b9565b6118e8565b6040516106e19190612fd6565b60405180910390f35b3480156106f657600080fd5b506106ff61196f565b60405161070c9190612fd6565b60405180910390f35b34801561072157600080fd5b5061072a611975565b604051610737919061308a565b60405180910390f35b34801561074c57600080fd5b5061076760048036038101906107629190613112565b61197b565b005b34801561077557600080fd5b5061077e611a72565b60405161078b9190612fd6565b60405180910390f35b61079c611a78565b73ffffffffffffffffffffffffffffffffffffffff166107ba611468565b73ffffffffffffffffffffffffffffffffffffffff1614610810576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080790613245565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361087e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610875906132d7565b60405180910390fd5b600081116108c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b890613369565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016108fa919061308a565b602060405180830381865afa158015610917573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093b919061339e565b81111561097d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097490613417565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016109da929190613437565b6020604051808303816000875af11580156109f9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1d9190613475565b505050565b606060038054610a31906134d1565b80601f0160208091040260200160405190810160405280929190818152602001828054610a5d906134d1565b8015610aaa5780601f10610a7f57610100808354040283529160200191610aaa565b820191906000526020600020905b815481529060010190602001808311610a8d57829003601f168201915b5050505050905090565b6000610ac8610ac1611a78565b8484611a80565b6001905092915050565b610ada611a78565b73ffffffffffffffffffffffffffffffffffffffff16610af8611468565b73ffffffffffffffffffffffffffffffffffffffff1614610b4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4590613245565b60405180910390fd5b604051806040016040528083815260200182815250600d600082015181600001556020820151816001015590505060288183610b8a9190613531565b1115610bcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc2906135b1565b60405180910390fd5b5050565b610bd7611a78565b73ffffffffffffffffffffffffffffffffffffffff16610bf5611468565b73ffffffffffffffffffffffffffffffffffffffff1614610c4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4290613245565b60405180910390fd5b80600760156101000a81548160ff02191690831515021790555050565b6000600254905090565b6000610c7f848484611c49565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610cca611a78565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610d4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4190613643565b60405180910390fd5b610d6785610d56611a78565b8584610d629190613663565b611a80565b60019150509392505050565b610d7b611a78565b73ffffffffffffffffffffffffffffffffffffffff16610d99611468565b73ffffffffffffffffffffffffffffffffffffffff1614610def576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de690613245565b60405180910390fd5b604051806040016040528083815260200182815250600b600082015181600001556020820151816001015590505060288183610e2b9190613531565b1115610e6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e63906135b1565b60405180910390fd5b5050565b600047905060008111610eb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eaf90613369565b60405180910390fd5b47811115610efb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef290613417565b60405180910390fd5b610f4681600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661241d90919063ffffffff16565b50565b60006012905090565b6000610ff4610f5f611a78565b848460016000610f6d611a78565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fef9190613531565b611a80565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760169054906101000a900460ff1681565b61103f611a78565b73ffffffffffffffffffffffffffffffffffffffff1661105d611468565b73ffffffffffffffffffffffffffffffffffffffff16146110b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110aa90613245565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611122576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111990613709565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611185611a78565b73ffffffffffffffffffffffffffffffffffffffff166111a3611468565b73ffffffffffffffffffffffffffffffffffffffff16146111f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f090613245565b60405180910390fd5b633b9aca00811015611240576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112379061379b565b60405180910390fd5b611248610f49565b600a61125491906138ee565b8161125f9190613939565b60098190555050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6112b8611a78565b73ffffffffffffffffffffffffffffffffffffffff166112d6611468565b73ffffffffffffffffffffffffffffffffffffffff161461132c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132390613245565b60405180910390fd5b6113366000612511565b565b60095481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61136c611a78565b73ffffffffffffffffffffffffffffffffffffffff1661138a611468565b73ffffffffffffffffffffffffffffffffffffffff16146113e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d790613245565b60405180910390fd5b600760169054906101000a900460ff1615611430576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611427906139c7565b60405180910390fd5b6001600760166101000a81548160ff0219169083151502179055506001600760156101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546114a1906134d1565b80601f01602080910402602001604051908101604052809291908181526020018280546114cd906134d1565b801561151a5780601f106114ef5761010080835404028352916020019161151a565b820191906000526020600020905b8154815290600101906020018083116114fd57829003601f168201915b5050505050905090565b60008060016000611533611a78565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156115f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e790613a59565b60405180910390fd5b61160d6115fb611a78565b8585846116089190613663565b611a80565b600191505092915050565b6000611625338484611c49565b6001905092915050565b611637611a78565b73ffffffffffffffffffffffffffffffffffffffff16611655611468565b73ffffffffffffffffffffffffffffffffffffffff16146116ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a290613245565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361171a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171190613aeb565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611788576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177f90613b57565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60116020528060005260406000206000915054906101000a900460ff1681565b61184c611a78565b73ffffffffffffffffffffffffffffffffffffffff1661186a611468565b73ffffffffffffffffffffffffffffffffffffffff16146118c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b790613245565b60405180910390fd5b6118c8610f49565b600a6118d491906138ee565b816118df9190613939565b60088190555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600f5481565b61dead81565b611983611a78565b73ffffffffffffffffffffffffffffffffffffffff166119a1611468565b73ffffffffffffffffffffffffffffffffffffffff16146119f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ee90613245565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5d90613be9565b60405180910390fd5b611a6f81612511565b50565b60105481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611aef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae690613c7b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5590613d0d565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c3c9190612fd6565b60405180910390a3505050565b60008111611c8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8390613d9f565b60405180910390fd5b601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611d305750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611d8557600760169054906101000a900460ff16611d84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7b90613e0b565b60405180910390fd5b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611e2c5750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611e8a5760095481611e3e84611268565b611e489190613531565b1115611e89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8090613e77565b60405180910390fd5b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611f325750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611f885750601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561203c57600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461203b5760095481611fef84611268565b611ff99190613531565b111561203a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203190613e77565b60405180910390fd5b5b5b600080612047612d53565b601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806120e85750601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156120f65760009150612279565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361218b57600d60000154600d600101546121619190613531565b9250600d604051806040016040529081600082015481526020016001820154815250509050612278565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161480156122365750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b1561227757600b60000154600b600101546122519190613531565b9250600b6040518060400160405290816000820154815260200160018201548152505090505b5b5b606483856122879190613939565b6122919190613ec6565b9150600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415801561233f5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b1561234957600091505b600760159054906101000a900460ff1680156123b35750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b156123c3576123c283826125d7565b5b6123d9868684876123d49190613663565b61277b565b6000821115612415576000831115612414576000606484866123fb9190613939565b6124059190613ec6565b905061241287308361277b565b505b5b505050505050565b80471015612460576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245790613f43565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405161248690613f94565b60006040518083038185875af1925050503d80600081146124c3576040519150601f19603f3d011682016040523d82523d6000602084013e6124c8565b606091505b505090508061250c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125039061401b565b60405180910390fd5b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600760149054906101000a900460ff16612777576001600760146101000a81548160ff021916908315150217905550600082031561275b57600061261a30611268565b9050600854811061275957600160085411156126365760085490505b60006002846126459190613939565b905060008184602001518461265a9190613939565b6126649190613ec6565b9050600081846126749190613663565b90506000479050612684826129ed565b600081476126929190613663565b905060008760200151866126a69190613663565b826126b19190613ec6565b905060008860200151826126c59190613939565b905060008111156126db576126da8682612c73565b5b600089600001516002846126ef9190613939565b6126f99190613939565b905060008111156127505761274f81600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661241d90919063ffffffff16565b5b50505050505050505b505b6000600760146101000a81548160ff0219169083151502179055505b5050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036127ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e1906140ad565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612859576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128509061413f565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156128df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128d6906141d1565b60405180910390fd5b81816128eb9190613663565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461297b9190613531565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516129df9190612fd6565b60405180910390a350505050565b60008111612a30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2790613369565b60405180910390fd5b6000600267ffffffffffffffff811115612a4d57612a4c6141f1565b5b604051908082528060200260200182016040528015612a7b5781602001602082028036833780820191505090505b5090503081600081518110612a9357612a92614220565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b5e9190614264565b81600181518110612b7257612b71614220565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612bd930600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611a80565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612c3d95949392919061438a565b600060405180830381600087803b158015612c5757600080fd5b505af1158015612c6b573d6000803e3d6000fd5b505050505050565b612ca030600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611a80565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401612d09969594939291906143e4565b60606040518083038185885af1158015612d27573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612d4c9190614445565b5050505050565b604051806040016040528060008152602001600081525090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612d9d82612d72565b9050919050565b612dad81612d92565b8114612db857600080fd5b50565b600081359050612dca81612da4565b92915050565b6000819050919050565b612de381612dd0565b8114612dee57600080fd5b50565b600081359050612e0081612dda565b92915050565b60008060408385031215612e1d57612e1c612d6d565b5b6000612e2b85828601612dbb565b9250506020612e3c85828601612df1565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612e80578082015181840152602081019050612e65565b60008484015250505050565b6000601f19601f8301169050919050565b6000612ea882612e46565b612eb28185612e51565b9350612ec2818560208601612e62565b612ecb81612e8c565b840191505092915050565b60006020820190508181036000830152612ef08184612e9d565b905092915050565b60008115159050919050565b612f0d81612ef8565b82525050565b6000602082019050612f286000830184612f04565b92915050565b60008060408385031215612f4557612f44612d6d565b5b6000612f5385828601612df1565b9250506020612f6485828601612df1565b9150509250929050565b612f7781612ef8565b8114612f8257600080fd5b50565b600081359050612f9481612f6e565b92915050565b600060208284031215612fb057612faf612d6d565b5b6000612fbe84828501612f85565b91505092915050565b612fd081612dd0565b82525050565b6000602082019050612feb6000830184612fc7565b92915050565b60008060006060848603121561300a57613009612d6d565b5b600061301886828701612dbb565b935050602061302986828701612dbb565b925050604061303a86828701612df1565b9150509250925092565b600060ff82169050919050565b61305a81613044565b82525050565b60006020820190506130756000830184613051565b92915050565b61308481612d92565b82525050565b600060208201905061309f600083018461307b565b92915050565b600080604083850312156130bc576130bb612d6d565b5b60006130ca85828601612dbb565b92505060206130db85828601612f85565b9150509250929050565b6000602082840312156130fb576130fa612d6d565b5b600061310984828501612df1565b91505092915050565b60006020828403121561312857613127612d6d565b5b600061313684828501612dbb565b91505092915050565b6000819050919050565b600061316461315f61315a84612d72565b61313f565b612d72565b9050919050565b600061317682613149565b9050919050565b60006131888261316b565b9050919050565b6131988161317d565b82525050565b60006020820190506131b3600083018461318f565b92915050565b600080604083850312156131d0576131cf612d6d565b5b60006131de85828601612dbb565b92505060206131ef85828601612dbb565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061322f602083612e51565b915061323a826131f9565b602082019050919050565b6000602082019050818103600083015261325e81613222565b9050919050565b7f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c60008201527f616e6365206f6620697473206f776e20746f6b656e7300000000000000000000602082015250565b60006132c1603683612e51565b91506132cc82613265565b604082019050919050565b600060208201905081810360008301526132f0816132b4565b9050919050565b7f416d6f756e742073686f756c642062652067726561746572207468616e207a6560008201527f726f000000000000000000000000000000000000000000000000000000000000602082015250565b6000613353602283612e51565b915061335e826132f7565b604082019050919050565b6000602082019050818103600083015261338281613346565b9050919050565b60008151905061339881612dda565b92915050565b6000602082840312156133b4576133b3612d6d565b5b60006133c284828501613389565b91505092915050565b7f496e73756666696369656e7420416d6f756e7400000000000000000000000000600082015250565b6000613401601383612e51565b915061340c826133cb565b602082019050919050565b60006020820190508181036000830152613430816133f4565b9050919050565b600060408201905061344c600083018561307b565b6134596020830184612fc7565b9392505050565b60008151905061346f81612f6e565b92915050565b60006020828403121561348b5761348a612d6d565b5b600061349984828501613460565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806134e957607f821691505b6020821081036134fc576134fb6134a2565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061353c82612dd0565b915061354783612dd0565b925082820190508082111561355f5761355e613502565b5b92915050565b7f4d757374206b656570206665657320617420343025206f72206c657373000000600082015250565b600061359b601d83612e51565b91506135a682613565565b602082019050919050565b600060208201905081810360008301526135ca8161358e565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061362d602883612e51565b9150613638826135d1565b604082019050919050565b6000602082019050818103600083015261365c81613620565b9050919050565b600061366e82612dd0565b915061367983612dd0565b925082820390508181111561369157613690613502565b5b92915050565b7f416464726573732063616e6e6f7420626520746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006136f3602283612e51565b91506136fe82613697565b604082019050919050565b60006020820190508181036000830152613722816136e6565b9050919050565b7f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760008201527f6572207468616e20302e31250000000000000000000000000000000000000000602082015250565b6000613785602c83612e51565b915061379082613729565b604082019050919050565b600060208201905081810360008301526137b481613778565b9050919050565b60008160011c9050919050565b6000808291508390505b6001851115613812578086048111156137ee576137ed613502565b5b60018516156137fd5780820291505b808102905061380b856137bb565b94506137d2565b94509492505050565b60008261382b57600190506138e7565b8161383957600090506138e7565b816001811461384f576002811461385957613888565b60019150506138e7565b60ff84111561386b5761386a613502565b5b8360020a91508482111561388257613881613502565b5b506138e7565b5060208310610133831016604e8410600b84101617156138bd5782820a9050838111156138b8576138b7613502565b5b6138e7565b6138ca84848460016137c8565b925090508184048111156138e1576138e0613502565b5b81810290505b9392505050565b60006138f982612dd0565b915061390483613044565b92506139317fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461381b565b905092915050565b600061394482612dd0565b915061394f83612dd0565b925082820261395d81612dd0565b9150828204841483151761397457613973613502565b5b5092915050565b7f43616e6e6f742072652d656e61626c652074726164696e670000000000000000600082015250565b60006139b1601883612e51565b91506139bc8261397b565b602082019050919050565b600060208201905081810360008301526139e0816139a4565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613a43602583612e51565b9150613a4e826139e7565b604082019050919050565b60006020820190508181036000830152613a7281613a36565b9050919050565b7f46656520416464726573732063616e6e6f74206265207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613ad5602283612e51565b9150613ae082613a79565b604082019050919050565b60006020820190508181036000830152613b0481613ac8565b9050919050565b7f46656520416464792063616e6e6f742062652043410000000000000000000000600082015250565b6000613b41601583612e51565b9150613b4c82613b0b565b602082019050919050565b60006020820190508181036000830152613b7081613b34565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613bd3602683612e51565b9150613bde82613b77565b604082019050919050565b60006020820190508181036000830152613c0281613bc6565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613c65602483612e51565b9150613c7082613c09565b604082019050919050565b60006020820190508181036000830152613c9481613c58565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613cf7602283612e51565b9150613d0282613c9b565b604082019050919050565b60006020820190508181036000830152613d2681613cea565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613d89602983612e51565b9150613d9482613d2d565b604082019050919050565b60006020820190508181036000830152613db881613d7c565b9050919050565b7f54726164696e67206e6f7420656e61626c656400000000000000000000000000600082015250565b6000613df5601383612e51565b9150613e0082613dbf565b602082019050919050565b60006020820190508181036000830152613e2481613de8565b9050919050565b7f596f752061726520657863656564696e67206d617857616c6c65744c696d6974600082015250565b6000613e61602083612e51565b9150613e6c82613e2b565b602082019050919050565b60006020820190508181036000830152613e9081613e54565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613ed182612dd0565b9150613edc83612dd0565b925082613eec57613eeb613e97565b5b828204905092915050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000613f2d601d83612e51565b9150613f3882613ef7565b602082019050919050565b60006020820190508181036000830152613f5c81613f20565b9050919050565b600081905092915050565b50565b6000613f7e600083613f63565b9150613f8982613f6e565b600082019050919050565b6000613f9f82613f71565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b6000614005603a83612e51565b915061401082613fa9565b604082019050919050565b6000602082019050818103600083015261403481613ff8565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614097602583612e51565b91506140a28261403b565b604082019050919050565b600060208201905081810360008301526140c68161408a565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614129602383612e51565b9150614134826140cd565b604082019050919050565b600060208201905081810360008301526141588161411c565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006141bb602683612e51565b91506141c68261415f565b604082019050919050565b600060208201905081810360008301526141ea816141ae565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061425e81612da4565b92915050565b60006020828403121561427a57614279612d6d565b5b60006142888482850161424f565b91505092915050565b6000819050919050565b60006142b66142b16142ac84614291565b61313f565b612dd0565b9050919050565b6142c68161429b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61430181612d92565b82525050565b600061431383836142f8565b60208301905092915050565b6000602082019050919050565b6000614337826142cc565b61434181856142d7565b935061434c836142e8565b8060005b8381101561437d5781516143648882614307565b975061436f8361431f565b925050600181019050614350565b5085935050505092915050565b600060a08201905061439f6000830188612fc7565b6143ac60208301876142bd565b81810360408301526143be818661432c565b90506143cd606083018561307b565b6143da6080830184612fc7565b9695505050505050565b600060c0820190506143f9600083018961307b565b6144066020830188612fc7565b61441360408301876142bd565b61442060608301866142bd565b61442d608083018561307b565b61443a60a0830184612fc7565b979650505050505050565b60008060006060848603121561445e5761445d612d6d565b5b600061446c86828701613389565b935050602061447d86828701613389565b925050604061448e86828701613389565b915050925092509256fea26469706673582212209f61f6473b76e1e21e1e5a73ad6348fdc7739e142dc005c5a4e39b513e99c10864736f6c63430008130033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

00000000000000000000000070b7b470b0c2fd89a84646b909f9c0c43070945a

-----Decoded View---------------
Arg [0] : addy (address): 0x70B7B470b0c2fD89a84646B909F9C0C43070945a

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000070b7b470b0c2fd89a84646b909f9c0c43070945a


Deployed Bytecode Sourcemap

7595:10260:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17372:425;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1853:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9762:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15864:227;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15366:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2174:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9931:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15630:225;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17027:337;;;;;;;;;;;;;:::i;:::-;;2073:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10352:248;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7723:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7831:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16598:205;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16811:204;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2290:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6250:94;;;;;;;;;;;;;:::i;:::-;;7927:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7675;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16099:175;;;;;;;;;;;;;:::i;:::-;;6027:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1961:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10608:410;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11026:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16282:308;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8424:41;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15476:146;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2649:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8275:65;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8015:77;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6352:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8347:68;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17372:425;6173:12;:10;:12::i;:::-;6162:23;;:7;:5;:7::i;:::-;:23;;;6154:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17495:4:::1;17473:27;;:10;:27;;::::0;17465:94:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;17588:1;17578:7;:11;17570:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;17665:10;17658:28;;;17695:4;17658:43;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17647:7;:54;;17639:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;17743:10;17736:27;;;17764:15;;;;;;;;;;;17781:7;17736:53;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17372:425:::0;;:::o;1853:100::-;1907:13;1940:5;1933:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1853:100;:::o;9762:161::-;9837:4;9854:39;9863:12;:10;:12::i;:::-;9877:7;9886:6;9854:8;:39::i;:::-;9911:4;9904:11;;9762:161;;;;:::o;15864:227::-;6173:12;:10;:12::i;:::-;6162:23;;:7;:5;:7::i;:::-;:23;;;6154:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15972:29:::1;;;;;;;;15978:10;15972:29;;;;15990:10;15972:29;;::::0;15960:9:::1;:41;;;;;;;;;;;;;;;;;;;16047:2;16032:10;16018;:24;;;;:::i;:::-;16017:32;;16009:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;15864:227:::0;;:::o;15366:102::-;6173:12;:10;:12::i;:::-;6162:23;;:7;:5;:7::i;:::-;:23;;;6154:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15454:6:::1;15441:10;;:19;;;;;;;;;;;;;;;;;;15366:102:::0;:::o;2174:108::-;2235:7;2262:12;;2255:19;;2174:108;:::o;9931:413::-;10030:4;10047:36;10057:6;10065:9;10076:6;10047:9;:36::i;:::-;10094:24;10121:11;:19;10133:6;10121:19;;;;;;;;;;;;;;;:33;10141:12;:10;:12::i;:::-;10121:33;;;;;;;;;;;;;;;;10094:60;;10193:6;10173:16;:26;;10165:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;10255:57;10264:6;10272:12;:10;:12::i;:::-;10305:6;10286:16;:25;;;;:::i;:::-;10255:8;:57::i;:::-;10332:4;10325:11;;;9931:413;;;;;:::o;15630:225::-;6173:12;:10;:12::i;:::-;6162:23;;:7;:5;:7::i;:::-;:23;;;6154:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15736:29:::1;;;;;;;;15742:10;15736:29;;;;15754:10;15736:29;;::::0;15725:8:::1;:40;;;;;;;;;;;;;;;;;;;15811:2;15795:10;15781;:24;;;;:::i;:::-;15780:33;;15772:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;15630:225:::0;;:::o;17027:337::-;17075:26;17104:21;17075:50;;17165:1;17144:18;:22;17136:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;17246:21;17224:18;:43;;17216:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;17302:54;17337:18;17310:15;;;;;;;;;;;17302:34;;;;:54;;;;:::i;:::-;17063:301;17027:337::o;2073:93::-;2131:5;2156:2;2149:9;;2073:93;:::o;10352:248::-;10468:4;10490:80;10499:12;:10;:12::i;:::-;10513:7;10559:10;10522:11;:25;10534:12;:10;:12::i;:::-;10522:25;;;;;;;;;;;;;;;:34;10548:7;10522:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;10490:8;:80::i;:::-;10588:4;10581:11;;10352:248;;;;:::o;7723:28::-;;;;;;;;;;;;;:::o;7831:34::-;;;;;;;;;;;;;:::o;16598:205::-;6173:12;:10;:12::i;:::-;6162:23;;:7;:5;:7::i;:::-;:23;;;6154:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16716:1:::1;16696:22;;:8;:22;;::::0;16688:69:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;16790:5;16768:9;:19;16778:8;16768:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;16598:205:::0;;:::o;16811:204::-;6173:12;:10;:12::i;:::-;6162:23;;:7;:5;:7::i;:::-;:23;;;6154:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16904:3:::1;16891:9;:16;;16883:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;16996:10;:8;:10::i;:::-;16992:2;:14;;;;:::i;:::-;16980:9;:26;;;;:::i;:::-;16967:10;:39;;;;16811:204:::0;:::o;2290:127::-;2364:7;2391:9;:18;2401:7;2391:18;;;;;;;;;;;;;;;;2384:25;;2290:127;;;:::o;6250:94::-;6173:12;:10;:12::i;:::-;6162:23;;:7;:5;:7::i;:::-;:23;;;6154:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6315:21:::1;6333:1;6315:9;:21::i;:::-;6250:94::o:0;7927:41::-;;;;:::o;7675:::-;;;;;;;;;;;;;:::o;16099:175::-;6173:12;:10;:12::i;:::-;6162:23;;:7;:5;:7::i;:::-;:23;;;6154:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16163:14:::1;;;;;;;;;;;16162:15;16154:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;16234:4;16217:14;;:21;;;;;;;;;;;;;;;;;;16262:4;16249:10;;:17;;;;;;;;;;;;;;;;;;16099:175::o:0;6027:87::-;6073:7;6100:6;;;;;;;;;;;6093:13;;6027:87;:::o;1961:104::-;2017:13;2050:7;2043:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1961:104;:::o;10608:410::-;10729:4;10751:24;10778:11;:25;10790:12;:10;:12::i;:::-;10778:25;;;;;;;;;;;;;;;:34;10804:7;10778:34;;;;;;;;;;;;;;;;10751:61;;10851:15;10831:16;:35;;10823:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;10919:67;10928:12;:10;:12::i;:::-;10942:7;10970:15;10951:16;:34;;;;:::i;:::-;10919:8;:67::i;:::-;11006:4;10999:11;;;10608:410;;;;:::o;11026:165::-;11104:4;11121:40;11131:10;11143:9;11154:6;11121:9;:40::i;:::-;11179:4;11172:11;;11026:165;;;;:::o;16282:308::-;6173:12;:10;:12::i;:::-;6162:23;;:7;:5;:7::i;:::-;:23;;;6154:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16393:1:::1;16371:24;;:10;:24;;::::0;16363:70:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;16474:4;16452:27;;:10;:27;;::::0;16444:60:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;16533:10;16515:15;;:28;;;;;;;;;;;;;;;;;;16578:4;16554:9;:21;16564:10;16554:21;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;16282:308:::0;:::o;8424:41::-;;;;;;;;;;;;;;;;;;;;;;:::o;15476:146::-;6173:12;:10;:12::i;:::-;6162:23;;:7;:5;:7::i;:::-;:23;;;6154:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15604:10:::1;:8;:10::i;:::-;15600:2;:14;;;;:::i;:::-;15578:19;:36;;;;:::i;:::-;15560:15;:54;;;;15476:146:::0;:::o;2649:201::-;2783:7;2815:11;:18;2827:5;2815:18;;;;;;;;;;;;;;;:27;2834:7;2815:27;;;;;;;;;;;;;;;;2808:34;;2649:201;;;;:::o;8275:65::-;;;;:::o;8015:77::-;8050:42;8015:77;:::o;6352:192::-;6173:12;:10;:12::i;:::-;6162:23;;:7;:5;:7::i;:::-;:23;;;6154:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6461:1:::1;6441:22;;:8;:22;;::::0;6433:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;6517:19;6527:8;6517:9;:19::i;:::-;6352:192:::0;:::o;8347:68::-;;;;:::o;141:98::-;194:7;221:10;214:17;;141:98;:::o;5060:380::-;5213:1;5196:19;;:5;:19;;;5188:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5294:1;5275:21;;:7;:21;;;5267:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5378:6;5348:11;:18;5360:5;5348:18;;;;;;;;;;;;;;;:27;5367:7;5348:27;;;;;;;;;;;;;;;:36;;;;5416:7;5400:32;;5409:5;5400:32;;;5425:6;5400:32;;;;;;:::i;:::-;;;;;;;;5060:380;;;:::o;11199:1894::-;11315:1;11306:6;:10;11298:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11380:9;:17;11390:6;11380:17;;;;;;;;;;;;;;;;;;;;;;;;;11379:18;:43;;;;;11402:9;:20;11412:9;11402:20;;;;;;;;;;;;;;;;;;;;;;;;;11401:21;11379:43;11375:122;;;11447:14;;;;;;;;;;;11439:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;11375:122;11521:13;;;;;;;;;;;11511:23;;:6;:23;;;:48;;;;;11539:9;:20;11549:9;11539:20;;;;;;;;;;;;;;;;;;;;;;;;;11538:21;11511:48;11507:200;;;11617:10;;11607:6;11584:20;11594:9;11584;:20::i;:::-;:29;;;;:::i;:::-;:43;;11576:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;11507:200;11731:13;;;;;;;;;;;11721:23;;:6;:23;;;;:48;;;;;11749:9;:20;11759:9;11749:20;;;;;;;;;;;;;;;;;;;;;;;;;11748:21;11721:48;:70;;;;;11774:9;:17;11784:6;11774:17;;;;;;;;;;;;;;;;;;;;;;;;;11773:18;11721:70;11717:296;;;11825:13;;;;;;;;;;;11812:26;;:9;:26;;;11808:194;;11900:10;;11890:6;11867:20;11877:9;11867;:20::i;:::-;:29;;;;:::i;:::-;:43;;11859:127;;;;;;;;;;;;:::i;:::-;;;;;;;;;11808:194;11717:296;12032:15;12058:11;12080:25;;:::i;:::-;12122:9;:17;12132:6;12122:17;;;;;;;;;;;;;;;;;;;;;;;;;:41;;;;12143:9;:20;12153:9;12143:20;;;;;;;;;;;;;;;;;;;;;;;;;12122:41;12118:449;;;12184:1;12178:7;;12118:449;;;12220:13;;;;;;;;;;;12207:26;;:9;:26;;;12203:364;;12283:9;:19;;;12261:9;:19;;;:41;;;;:::i;:::-;12251:51;;12332:9;12317:24;;;;;;;;;;;;;;;;;;;;;;;;;;;12203:364;;;12383:13;;;;;;;;;;;12373:23;;:6;:23;;;:67;;;;;12421:18;;;;;;;;;;;12400:40;;:9;:40;;;;12373:67;12369:198;;;12489:8;:18;;;12468:8;:18;;;:39;;;;:::i;:::-;12458:49;;12537:8;12522:23;;;;;;;;;;;;;;;;;;;;;;;;;;;12369:198;12203:364;12118:449;12605:3;12594:7;12585:6;:16;;;;:::i;:::-;12584:24;;;;:::i;:::-;12578:30;;12633:13;;;;;;;;;;;12623:23;;:6;:23;;;;:53;;;;;12663:13;;;;;;;;;;;12650:26;;:9;:26;;;;12623:53;12620:90;;;12698:1;12692:7;;12620:90;12734:10;;;;;;;;;;;:37;;;;;12758:13;;;;;;;;;;;12748:23;;:6;:23;;;;12734:37;12730:73;;;12773:30;12781:7;12790:12;12773:7;:30::i;:::-;12730:73;12816:48;12832:6;12840:9;12860:3;12851:6;:12;;;;:::i;:::-;12816:15;:48::i;:::-;12885:1;12879:3;:7;12875:211;;;12923:1;12913:7;:11;12909:164;;;12945:17;12986:3;12975:7;12966:6;:16;;;;:::i;:::-;12965:24;;;;:::i;:::-;12945:44;;13008:49;13024:6;13040:4;13047:9;13008:15;:49::i;:::-;12926:147;12909:164;12875:211;11287:1806;;;11199:1894;;;:::o;5470:319::-;5585:6;5560:21;:31;;5552:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;5639:12;5657:9;:14;;5680:6;5657:35;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5638:54;;;5711:7;5703:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;5541:248;5470:319;;:::o;6552:173::-;6608:16;6627:6;;;;;;;;;;;6608:25;;6653:8;6644:6;;:17;;;;;;;;;;;;;;;;;;6708:8;6677:40;;6698:8;6677:40;;;;;;;;;;;;6597:128;6552:173;:::o;13101:1265::-;8511:7;;;;;;;;;;;8506:101;;8545:4;8535:7;;:14;;;;;;;;;;;;;;;;;;13204:1:::1;13193:7;:12:::0;13190:49;13221:7:::1;13190:49;13249:23;13275:24;13293:4;13275:9;:24::i;:::-;13249:50;;13333:15;;13314;:34;13310:1049;;13387:1;13369:15;;:19;13365:93;;;13427:15;;13409:33;;13365:93;13472:19;13504:1;13494:7;:11;;;;:::i;:::-;13472:33;;13520:23;13588:11;13565:9;:19;;;13547:15;:37;;;;:::i;:::-;13546:53;;;;:::i;:::-;13520:79;;13614:20;13655:15;13637;:33;;;;:::i;:::-;13614:56;;13685:22;13710:21;13685:46;;13760:30;13777:12;13760:16;:30::i;:::-;13819:20;13866:14;13842:21;:38;;;;:::i;:::-;13819:61;;13895:19;13947:9;:19;;;13933:11;:33;;;;:::i;:::-;13917:12;:50;;;;:::i;:::-;13895:72;;13982:20;14019:9;:19;;;14005:11;:33;;;;:::i;:::-;13982:56;;14073:1;14057:12;:17;14053:101;;;14095:43;14108:15;14125:12;14095;:43::i;:::-;14053:101;14168:20;14209:9;:19;;;14205:1;14191:11;:15;;;;:::i;:::-;:37;;;;:::i;:::-;14168:60;;14262:1;14247:12;:16;14243:105;;;14284:48;14319:12;14292:15;;;;;;;;;;;14284:34;;;;:48;;;;:::i;:::-;14243:105;13350:1009;;;;;;;;13310:1049;13179:1187;8564:1;8590:5:::0;8580:7;;:15;;;;;;;;;;;;;;;;;;8506:101;13101:1265;;:::o;4179:578::-;4337:1;4319:20;;:6;:20;;;4311:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;4421:1;4400:23;;:9;:23;;;4392:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;4476:21;4500:9;:17;4510:6;4500:17;;;;;;;;;;;;;;;;4476:41;;4553:6;4536:13;:23;;4528:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;4649:6;4633:13;:22;;;;:::i;:::-;4613:9;:17;4623:6;4613:17;;;;;;;;;;;;;;;:42;;;;4690:6;4666:9;:20;4676:9;4666:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;4731:9;4714:35;;4723:6;4714:35;;;4742:6;4714:35;;;;;;:::i;:::-;;;;;;;;4300:457;4179:578;;;:::o;14374:553::-;14462:1;14448:11;:15;14440:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;14513:21;14551:1;14537:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14513:40;;14582:4;14564;14569:1;14564:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;14608:18;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14598:4;14603:1;14598:7;;;;;;;;:::i;:::-;;;;;;;:35;;;;;;;;;;;14644:65;14661:4;14676:18;;;;;;;;;;;14697:11;14644:8;:65::i;:::-;14720:18;;;;;;;;;;;:69;;;14804:11;14830:1;14846:4;14873;14893:15;14720:199;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14429:498;14374:553;:::o;14935:423::-;15016:65;15033:4;15048:18;;;;;;;;;;;15069:11;15016:8;:65::i;:::-;15092:18;;;;;;;;;;;:34;;;15135:9;15169:4;15189:11;15215:1;15258;8050:42;15324:15;15092:258;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;14935:423;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;:::o;88:117:1:-;197:1;194;187:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:77::-;878:7;907:5;896:16;;841:77;;;:::o;924:122::-;997:24;1015:5;997:24;:::i;:::-;990:5;987:35;977:63;;1036:1;1033;1026:12;977:63;924:122;:::o;1052:139::-;1098:5;1136:6;1123:20;1114:29;;1152:33;1179:5;1152:33;:::i;:::-;1052:139;;;;:::o;1197:474::-;1265:6;1273;1322:2;1310:9;1301:7;1297:23;1293:32;1290:119;;;1328:79;;:::i;:::-;1290:119;1448:1;1473:53;1518:7;1509:6;1498:9;1494:22;1473:53;:::i;:::-;1463:63;;1419:117;1575:2;1601:53;1646:7;1637:6;1626:9;1622:22;1601:53;:::i;:::-;1591:63;;1546:118;1197:474;;;;;:::o;1677:99::-;1729:6;1763:5;1757:12;1747:22;;1677:99;;;:::o;1782:169::-;1866:11;1900:6;1895:3;1888:19;1940:4;1935:3;1931:14;1916:29;;1782:169;;;;:::o;1957:246::-;2038:1;2048:113;2062:6;2059:1;2056:13;2048:113;;;2147:1;2142:3;2138:11;2132:18;2128:1;2123:3;2119:11;2112:39;2084:2;2081:1;2077:10;2072:15;;2048:113;;;2195:1;2186:6;2181:3;2177:16;2170:27;2019:184;1957:246;;;:::o;2209:102::-;2250:6;2301:2;2297:7;2292:2;2285:5;2281:14;2277:28;2267:38;;2209:102;;;:::o;2317:377::-;2405:3;2433:39;2466:5;2433:39;:::i;:::-;2488:71;2552:6;2547:3;2488:71;:::i;:::-;2481:78;;2568:65;2626:6;2621:3;2614:4;2607:5;2603:16;2568:65;:::i;:::-;2658:29;2680:6;2658:29;:::i;:::-;2653:3;2649:39;2642:46;;2409:285;2317:377;;;;:::o;2700:313::-;2813:4;2851:2;2840:9;2836:18;2828:26;;2900:9;2894:4;2890:20;2886:1;2875:9;2871:17;2864:47;2928:78;3001:4;2992:6;2928:78;:::i;:::-;2920:86;;2700:313;;;;:::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:474::-;3514:6;3522;3571:2;3559:9;3550:7;3546:23;3542:32;3539:119;;;3577:79;;:::i;:::-;3539:119;3697:1;3722:53;3767:7;3758:6;3747:9;3743:22;3722:53;:::i;:::-;3712:63;;3668:117;3824:2;3850:53;3895:7;3886:6;3875:9;3871:22;3850:53;:::i;:::-;3840:63;;3795:118;3446:474;;;;;:::o;3926:116::-;3996:21;4011:5;3996:21;:::i;:::-;3989:5;3986:32;3976:60;;4032:1;4029;4022:12;3976:60;3926:116;:::o;4048:133::-;4091:5;4129:6;4116:20;4107:29;;4145:30;4169:5;4145:30;:::i;:::-;4048:133;;;;:::o;4187:323::-;4243:6;4292:2;4280:9;4271:7;4267:23;4263:32;4260:119;;;4298:79;;:::i;:::-;4260:119;4418:1;4443:50;4485:7;4476:6;4465:9;4461:22;4443:50;:::i;:::-;4433:60;;4389:114;4187:323;;;;:::o;4516:118::-;4603:24;4621:5;4603:24;:::i;:::-;4598:3;4591:37;4516:118;;:::o;4640:222::-;4733:4;4771:2;4760:9;4756:18;4748:26;;4784:71;4852:1;4841:9;4837:17;4828:6;4784:71;:::i;:::-;4640:222;;;;:::o;4868:619::-;4945:6;4953;4961;5010:2;4998:9;4989:7;4985:23;4981:32;4978:119;;;5016:79;;:::i;:::-;4978:119;5136:1;5161:53;5206:7;5197:6;5186:9;5182:22;5161:53;:::i;:::-;5151:63;;5107:117;5263:2;5289:53;5334:7;5325:6;5314:9;5310:22;5289:53;:::i;:::-;5279:63;;5234:118;5391:2;5417:53;5462:7;5453:6;5442:9;5438:22;5417:53;:::i;:::-;5407:63;;5362:118;4868:619;;;;;:::o;5493:86::-;5528:7;5568:4;5561:5;5557:16;5546:27;;5493:86;;;:::o;5585:112::-;5668:22;5684:5;5668:22;:::i;:::-;5663:3;5656:35;5585:112;;:::o;5703:214::-;5792:4;5830:2;5819:9;5815:18;5807:26;;5843:67;5907:1;5896:9;5892:17;5883:6;5843:67;:::i;:::-;5703:214;;;;:::o;5923:118::-;6010:24;6028:5;6010:24;:::i;:::-;6005:3;5998:37;5923:118;;:::o;6047:222::-;6140:4;6178:2;6167:9;6163:18;6155:26;;6191:71;6259:1;6248:9;6244:17;6235:6;6191:71;:::i;:::-;6047:222;;;;:::o;6275:468::-;6340:6;6348;6397:2;6385:9;6376:7;6372:23;6368:32;6365:119;;;6403:79;;:::i;:::-;6365:119;6523:1;6548:53;6593:7;6584:6;6573:9;6569:22;6548:53;:::i;:::-;6538:63;;6494:117;6650:2;6676:50;6718:7;6709:6;6698:9;6694:22;6676:50;:::i;:::-;6666:60;;6621:115;6275:468;;;;;:::o;6749:329::-;6808:6;6857:2;6845:9;6836:7;6832:23;6828:32;6825:119;;;6863:79;;:::i;:::-;6825:119;6983:1;7008:53;7053:7;7044:6;7033:9;7029:22;7008:53;:::i;:::-;6998:63;;6954:117;6749:329;;;;:::o;7084:::-;7143:6;7192:2;7180:9;7171:7;7167:23;7163:32;7160:119;;;7198:79;;:::i;:::-;7160:119;7318:1;7343:53;7388:7;7379:6;7368:9;7364:22;7343:53;:::i;:::-;7333:63;;7289:117;7084:329;;;;:::o;7419:60::-;7447:3;7468:5;7461:12;;7419:60;;;:::o;7485:142::-;7535:9;7568:53;7586:34;7595:24;7613:5;7595:24;:::i;:::-;7586:34;:::i;:::-;7568:53;:::i;:::-;7555:66;;7485:142;;;:::o;7633:126::-;7683:9;7716:37;7747:5;7716:37;:::i;:::-;7703:50;;7633:126;;;:::o;7765:149::-;7838:9;7871:37;7902:5;7871:37;:::i;:::-;7858:50;;7765:149;;;:::o;7920:177::-;8030:60;8084:5;8030:60;:::i;:::-;8025:3;8018:73;7920:177;;:::o;8103:268::-;8219:4;8257:2;8246:9;8242:18;8234:26;;8270:94;8361:1;8350:9;8346:17;8337:6;8270:94;:::i;:::-;8103:268;;;;:::o;8377:474::-;8445:6;8453;8502:2;8490:9;8481:7;8477:23;8473:32;8470:119;;;8508:79;;:::i;:::-;8470:119;8628:1;8653:53;8698:7;8689:6;8678:9;8674:22;8653:53;:::i;:::-;8643:63;;8599:117;8755:2;8781:53;8826:7;8817:6;8806:9;8802:22;8781:53;:::i;:::-;8771:63;;8726:118;8377:474;;;;;:::o;8857:182::-;8997:34;8993:1;8985:6;8981:14;8974:58;8857:182;:::o;9045:366::-;9187:3;9208:67;9272:2;9267:3;9208:67;:::i;:::-;9201:74;;9284:93;9373:3;9284:93;:::i;:::-;9402:2;9397:3;9393:12;9386:19;;9045:366;;;:::o;9417:419::-;9583:4;9621:2;9610:9;9606:18;9598:26;;9670:9;9664:4;9660:20;9656:1;9645:9;9641:17;9634:47;9698:131;9824:4;9698:131;:::i;:::-;9690:139;;9417:419;;;:::o;9842:241::-;9982:34;9978:1;9970:6;9966:14;9959:58;10051:24;10046:2;10038:6;10034:15;10027:49;9842:241;:::o;10089:366::-;10231:3;10252:67;10316:2;10311:3;10252:67;:::i;:::-;10245:74;;10328:93;10417:3;10328:93;:::i;:::-;10446:2;10441:3;10437:12;10430:19;;10089:366;;;:::o;10461:419::-;10627:4;10665:2;10654:9;10650:18;10642:26;;10714:9;10708:4;10704:20;10700:1;10689:9;10685:17;10678:47;10742:131;10868:4;10742:131;:::i;:::-;10734:139;;10461:419;;;:::o;10886:221::-;11026:34;11022:1;11014:6;11010:14;11003:58;11095:4;11090:2;11082:6;11078:15;11071:29;10886:221;:::o;11113:366::-;11255:3;11276:67;11340:2;11335:3;11276:67;:::i;:::-;11269:74;;11352:93;11441:3;11352:93;:::i;:::-;11470:2;11465:3;11461:12;11454:19;;11113:366;;;:::o;11485:419::-;11651:4;11689:2;11678:9;11674:18;11666:26;;11738:9;11732:4;11728:20;11724:1;11713:9;11709:17;11702:47;11766:131;11892:4;11766:131;:::i;:::-;11758:139;;11485:419;;;:::o;11910:143::-;11967:5;11998:6;11992:13;11983:22;;12014:33;12041:5;12014:33;:::i;:::-;11910:143;;;;:::o;12059:351::-;12129:6;12178:2;12166:9;12157:7;12153:23;12149:32;12146:119;;;12184:79;;:::i;:::-;12146:119;12304:1;12329:64;12385:7;12376:6;12365:9;12361:22;12329:64;:::i;:::-;12319:74;;12275:128;12059:351;;;;:::o;12416:169::-;12556:21;12552:1;12544:6;12540:14;12533:45;12416:169;:::o;12591:366::-;12733:3;12754:67;12818:2;12813:3;12754:67;:::i;:::-;12747:74;;12830:93;12919:3;12830:93;:::i;:::-;12948:2;12943:3;12939:12;12932:19;;12591:366;;;:::o;12963:419::-;13129:4;13167:2;13156:9;13152:18;13144:26;;13216:9;13210:4;13206:20;13202:1;13191:9;13187:17;13180:47;13244:131;13370:4;13244:131;:::i;:::-;13236:139;;12963:419;;;:::o;13388:332::-;13509:4;13547:2;13536:9;13532:18;13524:26;;13560:71;13628:1;13617:9;13613:17;13604:6;13560:71;:::i;:::-;13641:72;13709:2;13698:9;13694:18;13685:6;13641:72;:::i;:::-;13388:332;;;;;:::o;13726:137::-;13780:5;13811:6;13805:13;13796:22;;13827:30;13851:5;13827:30;:::i;:::-;13726:137;;;;:::o;13869:345::-;13936:6;13985:2;13973:9;13964:7;13960:23;13956:32;13953:119;;;13991:79;;:::i;:::-;13953:119;14111:1;14136:61;14189:7;14180:6;14169:9;14165:22;14136:61;:::i;:::-;14126:71;;14082:125;13869:345;;;;:::o;14220:180::-;14268:77;14265:1;14258:88;14365:4;14362:1;14355:15;14389:4;14386:1;14379:15;14406:320;14450:6;14487:1;14481:4;14477:12;14467:22;;14534:1;14528:4;14524:12;14555:18;14545:81;;14611:4;14603:6;14599:17;14589:27;;14545:81;14673:2;14665:6;14662:14;14642:18;14639:38;14636:84;;14692:18;;:::i;:::-;14636:84;14457:269;14406:320;;;:::o;14732:180::-;14780:77;14777:1;14770:88;14877:4;14874:1;14867:15;14901:4;14898:1;14891:15;14918:191;14958:3;14977:20;14995:1;14977:20;:::i;:::-;14972:25;;15011:20;15029:1;15011:20;:::i;:::-;15006:25;;15054:1;15051;15047:9;15040:16;;15075:3;15072:1;15069:10;15066:36;;;15082:18;;:::i;:::-;15066:36;14918:191;;;;:::o;15115:179::-;15255:31;15251:1;15243:6;15239:14;15232:55;15115:179;:::o;15300:366::-;15442:3;15463:67;15527:2;15522:3;15463:67;:::i;:::-;15456:74;;15539:93;15628:3;15539:93;:::i;:::-;15657:2;15652:3;15648:12;15641:19;;15300:366;;;:::o;15672:419::-;15838:4;15876:2;15865:9;15861:18;15853:26;;15925:9;15919:4;15915:20;15911:1;15900:9;15896:17;15889:47;15953:131;16079:4;15953:131;:::i;:::-;15945:139;;15672:419;;;:::o;16097:227::-;16237:34;16233:1;16225:6;16221:14;16214:58;16306:10;16301:2;16293:6;16289:15;16282:35;16097:227;:::o;16330:366::-;16472:3;16493:67;16557:2;16552:3;16493:67;:::i;:::-;16486:74;;16569:93;16658:3;16569:93;:::i;:::-;16687:2;16682:3;16678:12;16671:19;;16330:366;;;:::o;16702:419::-;16868:4;16906:2;16895:9;16891:18;16883:26;;16955:9;16949:4;16945:20;16941:1;16930:9;16926:17;16919:47;16983:131;17109:4;16983:131;:::i;:::-;16975:139;;16702:419;;;:::o;17127:194::-;17167:4;17187:20;17205:1;17187:20;:::i;:::-;17182:25;;17221:20;17239:1;17221:20;:::i;:::-;17216:25;;17265:1;17262;17258:9;17250:17;;17289:1;17283:4;17280:11;17277:37;;;17294:18;;:::i;:::-;17277:37;17127:194;;;;:::o;17327:221::-;17467:34;17463:1;17455:6;17451:14;17444:58;17536:4;17531:2;17523:6;17519:15;17512:29;17327:221;:::o;17554:366::-;17696:3;17717:67;17781:2;17776:3;17717:67;:::i;:::-;17710:74;;17793:93;17882:3;17793:93;:::i;:::-;17911:2;17906:3;17902:12;17895:19;;17554:366;;;:::o;17926:419::-;18092:4;18130:2;18119:9;18115:18;18107:26;;18179:9;18173:4;18169:20;18165:1;18154:9;18150:17;18143:47;18207:131;18333:4;18207:131;:::i;:::-;18199:139;;17926:419;;;:::o;18351:231::-;18491:34;18487:1;18479:6;18475:14;18468:58;18560:14;18555:2;18547:6;18543:15;18536:39;18351:231;:::o;18588:366::-;18730:3;18751:67;18815:2;18810:3;18751:67;:::i;:::-;18744:74;;18827:93;18916:3;18827:93;:::i;:::-;18945:2;18940:3;18936:12;18929:19;;18588:366;;;:::o;18960:419::-;19126:4;19164:2;19153:9;19149:18;19141:26;;19213:9;19207:4;19203:20;19199:1;19188:9;19184:17;19177:47;19241:131;19367:4;19241:131;:::i;:::-;19233:139;;18960:419;;;:::o;19385:102::-;19427:8;19474:5;19471:1;19467:13;19446:34;;19385:102;;;:::o;19493:848::-;19554:5;19561:4;19585:6;19576:15;;19609:5;19600:14;;19623:712;19644:1;19634:8;19631:15;19623:712;;;19739:4;19734:3;19730:14;19724:4;19721:24;19718:50;;;19748:18;;:::i;:::-;19718:50;19798:1;19788:8;19784:16;19781:451;;;20213:4;20206:5;20202:16;20193:25;;19781:451;20263:4;20257;20253:15;20245:23;;20293:32;20316:8;20293:32;:::i;:::-;20281:44;;19623:712;;;19493:848;;;;;;;:::o;20347:1073::-;20401:5;20592:8;20582:40;;20613:1;20604:10;;20615:5;;20582:40;20641:4;20631:36;;20658:1;20649:10;;20660:5;;20631:36;20727:4;20775:1;20770:27;;;;20811:1;20806:191;;;;20720:277;;20770:27;20788:1;20779:10;;20790:5;;;20806:191;20851:3;20841:8;20838:17;20835:43;;;20858:18;;:::i;:::-;20835:43;20907:8;20904:1;20900:16;20891:25;;20942:3;20935:5;20932:14;20929:40;;;20949:18;;:::i;:::-;20929:40;20982:5;;;20720:277;;21106:2;21096:8;21093:16;21087:3;21081:4;21078:13;21074:36;21056:2;21046:8;21043:16;21038:2;21032:4;21029:12;21025:35;21009:111;21006:246;;;21162:8;21156:4;21152:19;21143:28;;21197:3;21190:5;21187:14;21184:40;;;21204:18;;:::i;:::-;21184:40;21237:5;;21006:246;21277:42;21315:3;21305:8;21299:4;21296:1;21277:42;:::i;:::-;21262:57;;;;21351:4;21346:3;21342:14;21335:5;21332:25;21329:51;;;21360:18;;:::i;:::-;21329:51;21409:4;21402:5;21398:16;21389:25;;20347:1073;;;;;;:::o;21426:281::-;21484:5;21508:23;21526:4;21508:23;:::i;:::-;21500:31;;21552:25;21568:8;21552:25;:::i;:::-;21540:37;;21596:104;21633:66;21623:8;21617:4;21596:104;:::i;:::-;21587:113;;21426:281;;;;:::o;21713:410::-;21753:7;21776:20;21794:1;21776:20;:::i;:::-;21771:25;;21810:20;21828:1;21810:20;:::i;:::-;21805:25;;21865:1;21862;21858:9;21887:30;21905:11;21887:30;:::i;:::-;21876:41;;22066:1;22057:7;22053:15;22050:1;22047:22;22027:1;22020:9;22000:83;21977:139;;22096:18;;:::i;:::-;21977:139;21761:362;21713:410;;;;:::o;22129:174::-;22269:26;22265:1;22257:6;22253:14;22246:50;22129:174;:::o;22309:366::-;22451:3;22472:67;22536:2;22531:3;22472:67;:::i;:::-;22465:74;;22548:93;22637:3;22548:93;:::i;:::-;22666:2;22661:3;22657:12;22650:19;;22309:366;;;:::o;22681:419::-;22847:4;22885:2;22874:9;22870:18;22862:26;;22934:9;22928:4;22924:20;22920:1;22909:9;22905:17;22898:47;22962:131;23088:4;22962:131;:::i;:::-;22954:139;;22681:419;;;:::o;23106:224::-;23246:34;23242:1;23234:6;23230:14;23223:58;23315:7;23310:2;23302:6;23298:15;23291:32;23106:224;:::o;23336:366::-;23478:3;23499:67;23563:2;23558:3;23499:67;:::i;:::-;23492:74;;23575:93;23664:3;23575:93;:::i;:::-;23693:2;23688:3;23684:12;23677:19;;23336:366;;;:::o;23708:419::-;23874:4;23912:2;23901:9;23897:18;23889:26;;23961:9;23955:4;23951:20;23947:1;23936:9;23932:17;23925:47;23989:131;24115:4;23989:131;:::i;:::-;23981:139;;23708:419;;;:::o;24133:221::-;24273:34;24269:1;24261:6;24257:14;24250:58;24342:4;24337:2;24329:6;24325:15;24318:29;24133:221;:::o;24360:366::-;24502:3;24523:67;24587:2;24582:3;24523:67;:::i;:::-;24516:74;;24599:93;24688:3;24599:93;:::i;:::-;24717:2;24712:3;24708:12;24701:19;;24360:366;;;:::o;24732:419::-;24898:4;24936:2;24925:9;24921:18;24913:26;;24985:9;24979:4;24975:20;24971:1;24960:9;24956:17;24949:47;25013:131;25139:4;25013:131;:::i;:::-;25005:139;;24732:419;;;:::o;25157:171::-;25297:23;25293:1;25285:6;25281:14;25274:47;25157:171;:::o;25334:366::-;25476:3;25497:67;25561:2;25556:3;25497:67;:::i;:::-;25490:74;;25573:93;25662:3;25573:93;:::i;:::-;25691:2;25686:3;25682:12;25675:19;;25334:366;;;:::o;25706:419::-;25872:4;25910:2;25899:9;25895:18;25887:26;;25959:9;25953:4;25949:20;25945:1;25934:9;25930:17;25923:47;25987:131;26113:4;25987:131;:::i;:::-;25979:139;;25706:419;;;:::o;26131:225::-;26271:34;26267:1;26259:6;26255:14;26248:58;26340:8;26335:2;26327:6;26323:15;26316:33;26131:225;:::o;26362:366::-;26504:3;26525:67;26589:2;26584:3;26525:67;:::i;:::-;26518:74;;26601:93;26690:3;26601:93;:::i;:::-;26719:2;26714:3;26710:12;26703:19;;26362:366;;;:::o;26734:419::-;26900:4;26938:2;26927:9;26923:18;26915:26;;26987:9;26981:4;26977:20;26973:1;26962:9;26958:17;26951:47;27015:131;27141:4;27015:131;:::i;:::-;27007:139;;26734:419;;;:::o;27159:223::-;27299:34;27295:1;27287:6;27283:14;27276:58;27368:6;27363:2;27355:6;27351:15;27344:31;27159:223;:::o;27388:366::-;27530:3;27551:67;27615:2;27610:3;27551:67;:::i;:::-;27544:74;;27627:93;27716:3;27627:93;:::i;:::-;27745:2;27740:3;27736:12;27729:19;;27388:366;;;:::o;27760:419::-;27926:4;27964:2;27953:9;27949:18;27941:26;;28013:9;28007:4;28003:20;27999:1;27988:9;27984:17;27977:47;28041:131;28167:4;28041:131;:::i;:::-;28033:139;;27760:419;;;:::o;28185:221::-;28325:34;28321:1;28313:6;28309:14;28302:58;28394:4;28389:2;28381:6;28377:15;28370:29;28185:221;:::o;28412:366::-;28554:3;28575:67;28639:2;28634:3;28575:67;:::i;:::-;28568:74;;28651:93;28740:3;28651:93;:::i;:::-;28769:2;28764:3;28760:12;28753:19;;28412:366;;;:::o;28784:419::-;28950:4;28988:2;28977:9;28973:18;28965:26;;29037:9;29031:4;29027:20;29023:1;29012:9;29008:17;29001:47;29065:131;29191:4;29065:131;:::i;:::-;29057:139;;28784:419;;;:::o;29209:228::-;29349:34;29345:1;29337:6;29333:14;29326:58;29418:11;29413:2;29405:6;29401:15;29394:36;29209:228;:::o;29443:366::-;29585:3;29606:67;29670:2;29665:3;29606:67;:::i;:::-;29599:74;;29682:93;29771:3;29682:93;:::i;:::-;29800:2;29795:3;29791:12;29784:19;;29443:366;;;:::o;29815:419::-;29981:4;30019:2;30008:9;30004:18;29996:26;;30068:9;30062:4;30058:20;30054:1;30043:9;30039:17;30032:47;30096:131;30222:4;30096:131;:::i;:::-;30088:139;;29815:419;;;:::o;30240:169::-;30380:21;30376:1;30368:6;30364:14;30357:45;30240:169;:::o;30415:366::-;30557:3;30578:67;30642:2;30637:3;30578:67;:::i;:::-;30571:74;;30654:93;30743:3;30654:93;:::i;:::-;30772:2;30767:3;30763:12;30756:19;;30415:366;;;:::o;30787:419::-;30953:4;30991:2;30980:9;30976:18;30968:26;;31040:9;31034:4;31030:20;31026:1;31015:9;31011:17;31004:47;31068:131;31194:4;31068:131;:::i;:::-;31060:139;;30787:419;;;:::o;31212:182::-;31352:34;31348:1;31340:6;31336:14;31329:58;31212:182;:::o;31400:366::-;31542:3;31563:67;31627:2;31622:3;31563:67;:::i;:::-;31556:74;;31639:93;31728:3;31639:93;:::i;:::-;31757:2;31752:3;31748:12;31741:19;;31400:366;;;:::o;31772:419::-;31938:4;31976:2;31965:9;31961:18;31953:26;;32025:9;32019:4;32015:20;32011:1;32000:9;31996:17;31989:47;32053:131;32179:4;32053:131;:::i;:::-;32045:139;;31772:419;;;:::o;32197:180::-;32245:77;32242:1;32235:88;32342:4;32339:1;32332:15;32366:4;32363:1;32356:15;32383:185;32423:1;32440:20;32458:1;32440:20;:::i;:::-;32435:25;;32474:20;32492:1;32474:20;:::i;:::-;32469:25;;32513:1;32503:35;;32518:18;;:::i;:::-;32503:35;32560:1;32557;32553:9;32548:14;;32383:185;;;;:::o;32574:179::-;32714:31;32710:1;32702:6;32698:14;32691:55;32574:179;:::o;32759:366::-;32901:3;32922:67;32986:2;32981:3;32922:67;:::i;:::-;32915:74;;32998:93;33087:3;32998:93;:::i;:::-;33116:2;33111:3;33107:12;33100:19;;32759:366;;;:::o;33131:419::-;33297:4;33335:2;33324:9;33320:18;33312:26;;33384:9;33378:4;33374:20;33370:1;33359:9;33355:17;33348:47;33412:131;33538:4;33412:131;:::i;:::-;33404:139;;33131:419;;;:::o;33556:147::-;33657:11;33694:3;33679:18;;33556:147;;;;:::o;33709:114::-;;:::o;33829:398::-;33988:3;34009:83;34090:1;34085:3;34009:83;:::i;:::-;34002:90;;34101:93;34190:3;34101:93;:::i;:::-;34219:1;34214:3;34210:11;34203:18;;33829:398;;;:::o;34233:379::-;34417:3;34439:147;34582:3;34439:147;:::i;:::-;34432:154;;34603:3;34596:10;;34233:379;;;:::o;34618:245::-;34758:34;34754:1;34746:6;34742:14;34735:58;34827:28;34822:2;34814:6;34810:15;34803:53;34618:245;:::o;34869:366::-;35011:3;35032:67;35096:2;35091:3;35032:67;:::i;:::-;35025:74;;35108:93;35197:3;35108:93;:::i;:::-;35226:2;35221:3;35217:12;35210:19;;34869:366;;;:::o;35241:419::-;35407:4;35445:2;35434:9;35430:18;35422:26;;35494:9;35488:4;35484:20;35480:1;35469:9;35465:17;35458:47;35522:131;35648:4;35522:131;:::i;:::-;35514:139;;35241:419;;;:::o;35666:224::-;35806:34;35802:1;35794:6;35790:14;35783:58;35875:7;35870:2;35862:6;35858:15;35851:32;35666:224;:::o;35896:366::-;36038:3;36059:67;36123:2;36118:3;36059:67;:::i;:::-;36052:74;;36135:93;36224:3;36135:93;:::i;:::-;36253:2;36248:3;36244:12;36237:19;;35896:366;;;:::o;36268:419::-;36434:4;36472:2;36461:9;36457:18;36449:26;;36521:9;36515:4;36511:20;36507:1;36496:9;36492:17;36485:47;36549:131;36675:4;36549:131;:::i;:::-;36541:139;;36268:419;;;:::o;36693:222::-;36833:34;36829:1;36821:6;36817:14;36810:58;36902:5;36897:2;36889:6;36885:15;36878:30;36693:222;:::o;36921:366::-;37063:3;37084:67;37148:2;37143:3;37084:67;:::i;:::-;37077:74;;37160:93;37249:3;37160:93;:::i;:::-;37278:2;37273:3;37269:12;37262:19;;36921:366;;;:::o;37293:419::-;37459:4;37497:2;37486:9;37482:18;37474:26;;37546:9;37540:4;37536:20;37532:1;37521:9;37517:17;37510:47;37574:131;37700:4;37574:131;:::i;:::-;37566:139;;37293:419;;;:::o;37718:225::-;37858:34;37854:1;37846:6;37842:14;37835:58;37927:8;37922:2;37914:6;37910:15;37903:33;37718:225;:::o;37949:366::-;38091:3;38112:67;38176:2;38171:3;38112:67;:::i;:::-;38105:74;;38188:93;38277:3;38188:93;:::i;:::-;38306:2;38301:3;38297:12;38290:19;;37949:366;;;:::o;38321:419::-;38487:4;38525:2;38514:9;38510:18;38502:26;;38574:9;38568:4;38564:20;38560:1;38549:9;38545:17;38538:47;38602:131;38728:4;38602:131;:::i;:::-;38594:139;;38321:419;;;:::o;38746:180::-;38794:77;38791:1;38784:88;38891:4;38888:1;38881:15;38915:4;38912:1;38905:15;38932:180;38980:77;38977:1;38970:88;39077:4;39074:1;39067:15;39101:4;39098:1;39091:15;39118:143;39175:5;39206:6;39200:13;39191:22;;39222:33;39249:5;39222:33;:::i;:::-;39118:143;;;;:::o;39267:351::-;39337:6;39386:2;39374:9;39365:7;39361:23;39357:32;39354:119;;;39392:79;;:::i;:::-;39354:119;39512:1;39537:64;39593:7;39584:6;39573:9;39569:22;39537:64;:::i;:::-;39527:74;;39483:128;39267:351;;;;:::o;39624:85::-;39669:7;39698:5;39687:16;;39624:85;;;:::o;39715:158::-;39773:9;39806:61;39824:42;39833:32;39859:5;39833:32;:::i;:::-;39824:42;:::i;:::-;39806:61;:::i;:::-;39793:74;;39715:158;;;:::o;39879:147::-;39974:45;40013:5;39974:45;:::i;:::-;39969:3;39962:58;39879:147;;:::o;40032:114::-;40099:6;40133:5;40127:12;40117:22;;40032:114;;;:::o;40152:184::-;40251:11;40285:6;40280:3;40273:19;40325:4;40320:3;40316:14;40301:29;;40152:184;;;;:::o;40342:132::-;40409:4;40432:3;40424:11;;40462:4;40457:3;40453:14;40445:22;;40342:132;;;:::o;40480:108::-;40557:24;40575:5;40557:24;:::i;:::-;40552:3;40545:37;40480:108;;:::o;40594:179::-;40663:10;40684:46;40726:3;40718:6;40684:46;:::i;:::-;40762:4;40757:3;40753:14;40739:28;;40594:179;;;;:::o;40779:113::-;40849:4;40881;40876:3;40872:14;40864:22;;40779:113;;;:::o;40928:732::-;41047:3;41076:54;41124:5;41076:54;:::i;:::-;41146:86;41225:6;41220:3;41146:86;:::i;:::-;41139:93;;41256:56;41306:5;41256:56;:::i;:::-;41335:7;41366:1;41351:284;41376:6;41373:1;41370:13;41351:284;;;41452:6;41446:13;41479:63;41538:3;41523:13;41479:63;:::i;:::-;41472:70;;41565:60;41618:6;41565:60;:::i;:::-;41555:70;;41411:224;41398:1;41395;41391:9;41386:14;;41351:284;;;41355:14;41651:3;41644:10;;41052:608;;;40928:732;;;;:::o;41666:831::-;41929:4;41967:3;41956:9;41952:19;41944:27;;41981:71;42049:1;42038:9;42034:17;42025:6;41981:71;:::i;:::-;42062:80;42138:2;42127:9;42123:18;42114:6;42062:80;:::i;:::-;42189:9;42183:4;42179:20;42174:2;42163:9;42159:18;42152:48;42217:108;42320:4;42311:6;42217:108;:::i;:::-;42209:116;;42335:72;42403:2;42392:9;42388:18;42379:6;42335:72;:::i;:::-;42417:73;42485:3;42474:9;42470:19;42461:6;42417:73;:::i;:::-;41666:831;;;;;;;;:::o;42503:807::-;42752:4;42790:3;42779:9;42775:19;42767:27;;42804:71;42872:1;42861:9;42857:17;42848:6;42804:71;:::i;:::-;42885:72;42953:2;42942:9;42938:18;42929:6;42885:72;:::i;:::-;42967:80;43043:2;43032:9;43028:18;43019:6;42967:80;:::i;:::-;43057;43133:2;43122:9;43118:18;43109:6;43057:80;:::i;:::-;43147:73;43215:3;43204:9;43200:19;43191:6;43147:73;:::i;:::-;43230;43298:3;43287:9;43283:19;43274:6;43230:73;:::i;:::-;42503:807;;;;;;;;;:::o;43316:663::-;43404:6;43412;43420;43469:2;43457:9;43448:7;43444:23;43440:32;43437:119;;;43475:79;;:::i;:::-;43437:119;43595:1;43620:64;43676:7;43667:6;43656:9;43652:22;43620:64;:::i;:::-;43610:74;;43566:128;43733:2;43759:64;43815:7;43806:6;43795:9;43791:22;43759:64;:::i;:::-;43749:74;;43704:129;43872:2;43898:64;43954:7;43945:6;43934:9;43930:22;43898:64;:::i;:::-;43888:74;;43843:129;43316:663;;;;;:::o

Swarm Source

ipfs://9f61f6473b76e1e21e1e5a73ad6348fdc7739e142dc005c5a4e39b513e99c108
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.