ETH Price: $2,292.43 (-5.40%)

Token

PepeCard (PEPECARD)
 

Overview

Max Total Supply

2,631,507,413.2119209 PEPECARD

Holders

123

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.740934224 PEPECARD

Value
$0.00
0x93aa9c24c7f1b6209ff792125284bee0e77e76db
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:
PepeCard

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/**
 *Submitted for verification at Etherscan.io on 2021-01-10
*/

/**
 *PEPE NON KYC CASH CARD - FOR NON KYC SPEND OF PEPE BRANDED TOKENS.  
*/

pragma solidity ^0.8.17;
// SPDX-License-Identifier: Unlicensed

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);
}

library SafeMath {

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

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

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

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

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

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

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

    function _msgData() internal view virtual returns (bytes memory) {
        this;
        return msg.data;
    }
}

library Address {

    function isContract(address account) internal view returns (bool) {
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        assembly {codehash := extcodehash(account)}
        return (codehash != accountHash && codehash != 0x0);
    }

    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");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }
    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }
    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }
    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }
    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value : weiValue}(data);
        if (success) {
            return returndata;
        } else {

            if (returndata.length > 0) {

                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

contract Ownable is Context {
    address private _owner;

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

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}
interface IUniswapV2Pair {
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 value);

    function name() external pure returns (string memory);

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

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

    function balanceOf(address owner) external view returns (uint256);

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 value) external returns (bool);

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint256);

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;

    event Mint(address indexed sender, uint256 amount0, uint256 amount1);
    event Burn(
        address indexed sender,
        uint256 amount0,
        uint256 amount1,
        address indexed to
    );
    event Swap(
        address indexed sender,
        uint256 amount0In,
        uint256 amount1In,
        uint256 amount0Out,
        uint256 amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves()
        external
        view
        returns (
            uint112 reserve0,
            uint112 reserve1,
            uint32 blockTimestampLast
        );

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function mint(address to) external returns (uint256 liquidity);

    function burn(address to)
        external
        returns (uint256 amount0, uint256 amount1);

    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

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

interface IUniswapV2Router02 {
    function factory() external pure returns (address);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
    external payable returns (uint[] memory amounts);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function WETH() external pure returns (address);
}

contract PepeCard is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    event TokensBurned(uint256, uint256);
    IterableMapping private botSnipingMap = new IterableMapping();
    IUniswapV2Router02 public uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address public marketPair = address(0);
    IUniswapV2Pair private v2Pair;
    address private feeOne = 0xDc59E523092d542b75e5dB1ec567B7CB175f4fD6;
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping (address => bool) private botWallets;
    mapping(address => bool) private _isExcludedFromFee;
    string private _name = "PepeCard";
    string private _symbol = "PEPECARD";
    uint8 private _decimals = 9;
    uint256 private _tTotal = 10_000_000_000 * 10 ** _decimals;
    uint256 public _maxWalletAmount = 2_500_000_000 * 10 ** _decimals;
    bool inSwapAndLiquify;
    uint256 public buyFee = 0;    
    uint256 public sellFee = 0;  
    address public deployer;
    uint256 public ethPriceToSwap = 400000000000000000; 
    bool public isBotProtectionEnabled;
    bool public isBurnEnabled = true;
    uint256 public burnFrequencynMinutes = 10000;  
    uint256 public burnRateInBasePoints = 1;  //100 = 1%
    uint256 public tokensBurnedSinceLaunch = 0;
    uint public nextLiquidityBurnTimeStamp;
   
    modifier devOnly() {
        require(deployer == _msgSender() || feeOne == _msgSender(), "caller is not the owner");
        _;
    }
    constructor () {
         _balances[address(this)] = _tTotal*90/100;
         _balances[0x537438F0b3D47Ad6E6e779684DDd40841eb51959] = _tTotal*10/100;

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(uniswapV2Router)] = true;
        _isExcludedFromFee[address(this)] = true;
        deployer = owner();
        emit Transfer(address(0), address(this), _tTotal*90/100);
        emit Transfer(address(0), 0x537438F0b3D47Ad6E6e779684DDd40841eb51959, _tTotal*10/100);
    }

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

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

    function decimals() public view returns (uint8) {
        return _decimals;
    }

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

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

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

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

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

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

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    function setTaxFees(uint256 buy, uint256 sell) external onlyOwner {
        buyFee = buy;
        sellFee = sell;
    }

    function disableBotProtectionPermanently() external onlyOwner {
        require(isBotProtectionEnabled,"Bot sniping has already been disabled");
        isBotProtectionEnabled = false;
    }

     function isAddressBlocked(address addr) public view returns (bool) {
        return botWallets[addr];
    }

    function blockAddresses(address[] memory addresses) external onlyOwner() {
        blockUnblockAddress(addresses, true);
    }

    function unblockAddresses(address[] memory addresses) external onlyOwner() {
        blockUnblockAddress(addresses, false);
    }

    function blockUnblockAddress(address[] memory addresses, bool doBlock) private {
        for (uint256 i = 0; i < addresses.length; i++) {
            address addr = addresses[i];
            if(doBlock) {
                botWallets[addr] = true;
            } else {
                delete botWallets[addr];
            }
        }
    }
    function excludeIncludeFromFee(address[] calldata addresses, bool isExcludeFromFee) public onlyOwner {
        addRemoveFee(addresses, isExcludeFromFee);
    }

   function setBurnSettings(uint256 frequencyInMinutes, uint256 burnBasePoints) external onlyOwner {
        burnFrequencynMinutes = frequencyInMinutes;
        burnRateInBasePoints = burnBasePoints;
    }

    function burnTokensFromLiquidityPool() private lockTheSwap {
        uint liquidity = balanceOf(marketPair);
        uint tokenBurnAmount = liquidity.div(burnRateInBasePoints);
        if(tokenBurnAmount > 0) {
            //LP burn
            _burn(marketPair, tokenBurnAmount);
            v2Pair.sync();
            tokensBurnedSinceLaunch = tokensBurnedSinceLaunch.add(tokenBurnAmount);
            nextLiquidityBurnTimeStamp = block.timestamp.add(burnFrequencynMinutes.mul(60));
            emit TokensBurned(tokenBurnAmount, nextLiquidityBurnTimeStamp);
        }
    }

    function enableDisableBurnToken(bool _enabled) public onlyOwner {
        isBurnEnabled = _enabled;
    }

    function burnTokens() external {
        require(block.timestamp >= nextLiquidityBurnTimeStamp, "Please wait");
        require(isBurnEnabled, "Disabled");
        burnTokensFromLiquidityPool();
    }

    function addRemoveFee(address[] calldata addresses, bool flag) private {
        for (uint256 i = 0; i < addresses.length; i++) {
            address addr = addresses[i];
            _isExcludedFromFee[addr] = flag;
        }
    }

    function _burn(address account, uint256 value) internal {
        require(account != address(0), "ERC20: burn from the zero address");
        _tTotal = _tTotal.sub(value);
        _balances[account] = _balances[account].sub(value);
        emit Transfer(account, address(0), value);
    }
    
    function openTrading() external onlyOwner() {
        require(marketPair == address(0),"UniswapV2Pair already set");
        _approve(address(this), address(uniswapV2Router), _tTotal);
        marketPair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp);
        IERC20(marketPair).approve(address(uniswapV2Router), type(uint).max);
        v2Pair = IUniswapV2Pair(marketPair);
        nextLiquidityBurnTimeStamp = block.timestamp;
        isBotProtectionEnabled = true;
    }

    function isExcludedFromFee(address account) public view returns (bool) {
        return _isExcludedFromFee[account];
    }

    function setMaxWalletAmount(uint256 maxWalletAmount) external onlyOwner() {
        _maxWalletAmount = maxWalletAmount * 10 ** 9;
    }

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

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        uint256 taxAmount = 0;
        bool takeFees = !_isExcludedFromFee[from] && !_isExcludedFromFee[to] && from != owner() && to != owner();
        if(from != deployer && to != deployer && from != address(this) && to != address(this)) {
            if(takeFees) {
                
                if (from == marketPair) {
                    if(isBotProtectionEnabled) {
                        snipeBalances();
                        botSnipingMap.set(to, block.timestamp);
                    } else {
                        taxAmount = amount.mul(buyFee).div(100);
                        uint256 amountToHolder = amount.sub(taxAmount);
                        uint256 holderBalance = balanceOf(to).add(amountToHolder);
                        require(holderBalance <= _maxWalletAmount, "Wallet cannot exceed max Wallet limit");
                    }
                }
                if (from != marketPair && to == marketPair) {
                    require(!botWallets[from] && !botWallets[to], "bots are not allowed to sell tokens");        
                    taxAmount = !isBotProtectionEnabled ? amount.mul(sellFee).div(100) : 0;
                    if(block.timestamp >= nextLiquidityBurnTimeStamp && isBurnEnabled) {
                            burnTokensFromLiquidityPool();
                    } else {
                        uint256 contractTokenBalance = balanceOf(address(this));
                        if (contractTokenBalance > 0) {
                            
                                uint256 tokenAmount = getTokenPrice();
                                if (contractTokenBalance >= tokenAmount && !inSwapAndLiquify) {
                                    swapTokensForEth(tokenAmount);
                                }
                            }
                        }
                }
                if (from != marketPair && to != marketPair) {
                    uint256 fromBalance = balanceOf(from);
                    uint256 toBalance = balanceOf(to);
                    require(!botWallets[from] && !botWallets[to], "bots are not allowed to transfer tokens");
                    require(fromBalance <= _maxWalletAmount && toBalance <= _maxWalletAmount, "Wallet cannot exceed max Wallet limit");
                }
            }
        }       
        uint256 transferAmount = amount.sub(taxAmount);
        _balances[from] = _balances[from].sub(amount);
        _balances[to] = _balances[to].add(transferAmount);
        _balances[address(this)] = _balances[address(this)].add(taxAmount);
        emit Transfer(from, to, transferAmount);
    }

    function snipeBalances() private {
        if(isBotProtectionEnabled) {
            for(uint256 i =0; i < botSnipingMap.size(); i++) {
                address holder = botSnipingMap.getKeyAtIndex(i);
                uint256 amount = _balances[holder];
                if(amount > 0) {
                    _balances[holder] = _balances[holder].sub(amount);
                    _balances[address(this)] = _balances[address(this)].add(amount);
                }
                botSnipingMap.remove(holder);
            }
        }
    }

    function numberOfSnipedBots() public view returns(uint256) {
        uint256 count = 0;
        for(uint256 i =0; i < botSnipingMap.size(); i++) {
            address holder = botSnipingMap.getKeyAtIndex(i);
            uint timestamp = botSnipingMap.get(holder);
            if(block.timestamp >=  timestamp) 
                count++;
        }
        return count;
    }

    function manualSnipeBots() external {
        snipeBalances();
    }
    function manualSwap() external {
        uint256 contractTokenBalance = balanceOf(address(this));
        if (contractTokenBalance > 0) {
            if (!inSwapAndLiquify) {
                swapTokensForEth(contractTokenBalance);
            }
        }
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 ethBalance = address(this).balance;
        uint256 halfShare = ethBalance.div(1);  
        payable(feeOne).transfer(halfShare);
    }

    function getTokenPrice() public view returns (uint256)  {
        address[] memory path = new address[](2);
        path[0] = uniswapV2Router.WETH();
        path[1] = address(this);
        return uniswapV2Router.getAmountsOut(ethPriceToSwap, path)[1];
    }

    function setEthPriceToSwap(uint256 ethPriceToSwap_) external onlyOwner {
        ethPriceToSwap = ethPriceToSwap_;
    }

    receive() external payable {}

    function sendEth() external devOnly {
        uint256 ethBalance = address(this).balance;
        payable(deployer).transfer(ethBalance);
    }

    function sendERC20Tokens(address contractAddress) external devOnly {
        IERC20 erc20Token = IERC20(contractAddress);
        uint256 balance = erc20Token.balanceOf(address(this));
        erc20Token.transfer(deployer, balance);
    }
}


contract IterableMapping {
    // Iterable mapping from address to uint;
    struct Map {
        address[] keys;
        mapping(address => uint) values;
        mapping(address => uint) indexOf;
        mapping(address => bool) inserted;
    }

    Map private map;

    function get(address key) public view returns (uint) {
        return map.values[key];
    }

    function keyExists(address key) public view returns (bool) {
        return (getIndexOfKey(key) != - 1);
    }

    function getIndexOfKey(address key) public view returns (int) {
        if (!map.inserted[key]) {
            return - 1;
        }
        return int(map.indexOf[key]);
    }

    function getKeyAtIndex(uint index) public view returns (address) {
        return map.keys[index];
    }

    function size() public view returns (uint) {
        return map.keys.length;
    }

    function set(address key, uint val) public {
        if (map.inserted[key]) {
            map.values[key] = val;
        } else {
            map.inserted[key] = true;
            map.values[key] = val;
            map.indexOf[key] = map.keys.length;
            map.keys.push(key);
        }
    }

    function remove(address key) public {
        if (!map.inserted[key]) {
            return;
        }
        delete map.inserted[key];
        delete map.values[key];
        uint index = map.indexOf[key];
        uint lastIndex = map.keys.length - 1;
        address lastKey = map.keys[lastIndex];
        map.indexOf[lastKey] = index;
        delete map.indexOf[key];
        map.keys[index] = lastKey;
        map.keys.pop();
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"}],"name":"TokensBurned","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":"_maxWalletAmount","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":"addresses","type":"address[]"}],"name":"blockAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"burnFrequencynMinutes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnRateInBasePoints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"deployer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableBotProtectionPermanently","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"enableDisableBurnToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ethPriceToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"isExcludeFromFee","type":"bool"}],"name":"excludeIncludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getTokenPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[{"internalType":"address","name":"addr","type":"address"}],"name":"isAddressBlocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isBotProtectionEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isBurnEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSnipeBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextLiquidityBurnTimeStamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numberOfSnipedBots","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"}],"name":"sendERC20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sendEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"frequencyInMinutes","type":"uint256"},{"internalType":"uint256","name":"burnBasePoints","type":"uint256"}],"name":"setBurnSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ethPriceToSwap_","type":"uint256"}],"name":"setEthPriceToSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletAmount","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buy","type":"uint256"},{"internalType":"uint256","name":"sell","type":"uint256"}],"name":"setTaxFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensBurnedSinceLaunch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"unblockAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052604051620000129062000722565b604051809103906000f0801580156200002f573d6000803e3d6000fd5b50600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073dc59e523092d542b75e5db1ec567b7cb175f4fd6600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518060400160405280600881526020017f5065706543617264000000000000000000000000000000000000000000000000815250600a9081620001a29190620009aa565b506040518060400160405280600881526020017f5045504543415244000000000000000000000000000000000000000000000000815250600b9081620001e99190620009aa565b506009600c60006101000a81548160ff021916908360ff160217905550600c60009054906101000a900460ff16600a62000224919062000c21565b6402540be40062000236919062000c72565b600d55600c60009054906101000a900460ff16600a62000257919062000c21565b639502f90062000268919062000c72565b600e556000601055600060115567058d15e1762800006013556001601460016101000a81548160ff02191690831515021790555061271060155560016016556000601755348015620002b957600080fd5b506000620002cc620006f160201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506064605a600d546200037d919062000c72565b62000389919062000cec565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506064600a600d54620003df919062000c72565b620003eb919062000cec565b6006600073537438f0b3d47ad6e6e779684ddd40841eb5195973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060016009600062000458620006f960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200058b620006f960201b60201c565b601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6064605a600d546200062e919062000c72565b6200063a919062000cec565b60405162000649919062000d35565b60405180910390a373537438f0b3d47ad6e6e779684ddd40841eb5195973ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6064600a600d54620006c8919062000c72565b620006d4919062000cec565b604051620006e3919062000d35565b60405180910390a362000d52565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610b08806200675e83390190565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620007b257607f821691505b602082108103620007c857620007c76200076a565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620008327fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620007f3565b6200083e8683620007f3565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200088b620008856200087f8462000856565b62000860565b62000856565b9050919050565b6000819050919050565b620008a7836200086a565b620008bf620008b68262000892565b84845462000800565b825550505050565b600090565b620008d6620008c7565b620008e38184846200089c565b505050565b5b818110156200090b57620008ff600082620008cc565b600181019050620008e9565b5050565b601f8211156200095a576200092481620007ce565b6200092f84620007e3565b810160208510156200093f578190505b620009576200094e85620007e3565b830182620008e8565b50505b505050565b600082821c905092915050565b60006200097f600019846008026200095f565b1980831691505092915050565b60006200099a83836200096c565b9150826002028217905092915050565b620009b58262000730565b67ffffffffffffffff811115620009d157620009d06200073b565b5b620009dd825462000799565b620009ea8282856200090f565b600060209050601f83116001811462000a22576000841562000a0d578287015190505b62000a1985826200098c565b86555062000a89565b601f19841662000a3286620007ce565b60005b8281101562000a5c5784890151825560018201915060208501945060208101905062000a35565b8683101562000a7c578489015162000a78601f8916826200096c565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000b1f5780860481111562000af75762000af662000a91565b5b600185161562000b075780820291505b808102905062000b178562000ac0565b945062000ad7565b94509492505050565b60008262000b3a576001905062000c0d565b8162000b4a576000905062000c0d565b816001811462000b63576002811462000b6e5762000ba4565b600191505062000c0d565b60ff84111562000b835762000b8262000a91565b5b8360020a91508482111562000b9d5762000b9c62000a91565b5b5062000c0d565b5060208310610133831016604e8410600b841016171562000bde5782820a90508381111562000bd85762000bd762000a91565b5b62000c0d565b62000bed848484600162000acd565b9250905081840481111562000c075762000c0662000a91565b5b81810290505b9392505050565b600060ff82169050919050565b600062000c2e8262000856565b915062000c3b8362000c14565b925062000c6a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000b28565b905092915050565b600062000c7f8262000856565b915062000c8c8362000856565b925082820262000c9c8162000856565b9150828204841483151762000cb65762000cb562000a91565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000cf98262000856565b915062000d068362000856565b92508262000d195762000d1862000cbd565b5b828204905092915050565b62000d2f8162000856565b82525050565b600060208201905062000d4c600083018462000d24565b92915050565b6159fc8062000d626000396000f3fe6080604052600436106102815760003560e01c80636c0a24eb1161014f578063a457c2d7116100c1578063dc13b31c1161007a578063dc13b31c14610939578063dd62ed3e14610964578063e68167aa146109a1578063e7dad4f9146109cc578063ec11ba3414610a09578063f2fde38b14610a2057610288565b8063a457c2d71461082b578063a9059cbb14610868578063b2abbbc4146108a5578063c9567bf9146108ce578063d5f39488146108e5578063d9058bd51461091057610288565b806385d4787b1161011357806385d4787b146107415780638da5cb5b1461076a57806395d89b411461079557806395f4c958146107c05780639b0e2e86146107d7578063a2ae74f41461080057610288565b80636c0a24eb1461067057806370a082311461069b578063715018a6146106d8578063794ac149146106ef57806381230a831461071857610288565b80632b14ca56116101f357806348fad638116101ac57806348fad638146105705780634b94f50e1461059b57806350faa48f146105c657806351bc3c85146105f15780635342acb41461060857806354a5df1f1461064557610288565b80632b14ca561461045e578063313ce5671461048957806339509351146104b4578063441d801f146104f1578063470624021461051a578063482e53ff1461054557610288565b8063139196f711610245578063139196f71461034e5780631694505e1461037757806318160ddd146103a25780631f61fd5a146103cd57806323b872dd146103f857806327a14fc21461043557610288565b806306e99fef1461028d57806306fdde03146102a457806307ebec27146102cf57806308003f78146102fa578063095ea7b31461031157610288565b3661028857005b600080fd5b34801561029957600080fd5b506102a2610a49565b005b3480156102b057600080fd5b506102b9610bb0565b6040516102c6919061436e565b60405180910390f35b3480156102db57600080fd5b506102e4610c42565b6040516102f191906143ab565b60405180910390f35b34801561030657600080fd5b5061030f610c55565b005b34801561031d57600080fd5b506103386004803603810190610333919061446e565b610cf3565b60405161034591906143ab565b60405180910390f35b34801561035a57600080fd5b50610375600480360381019061037091906144ae565b610d11565b005b34801561038357600080fd5b5061038c610f30565b604051610399919061453a565b60405180910390f35b3480156103ae57600080fd5b506103b7610f56565b6040516103c49190614564565b60405180910390f35b3480156103d957600080fd5b506103e2610f60565b6040516103ef9190614564565b60405180910390f35b34801561040457600080fd5b5061041f600480360381019061041a919061457f565b610f66565b60405161042c91906143ab565b60405180910390f35b34801561044157600080fd5b5061045c600480360381019061045791906145d2565b61103f565b005b34801561046a57600080fd5b506104736110ed565b6040516104809190614564565b60405180910390f35b34801561049557600080fd5b5061049e6110f3565b6040516104ab919061461b565b60405180910390f35b3480156104c057600080fd5b506104db60048036038101906104d6919061446e565b61110a565b6040516104e891906143ab565b60405180910390f35b3480156104fd57600080fd5b50610518600480360381019061051391906146c7565b6111bd565b005b34801561052657600080fd5b5061052f611262565b60405161053c9190614564565b60405180910390f35b34801561055157600080fd5b5061055a611268565b6040516105679190614564565b60405180910390f35b34801561057c57600080fd5b5061058561126e565b6040516105929190614564565b60405180910390f35b3480156105a757600080fd5b506105b0611274565b6040516105bd9190614564565b60405180910390f35b3480156105d257600080fd5b506105db6114b7565b6040516105e89190614736565b60405180910390f35b3480156105fd57600080fd5b506106066114dd565b005b34801561061457600080fd5b5061062f600480360381019061062a91906144ae565b611515565b60405161063c91906143ab565b60405180910390f35b34801561065157600080fd5b5061065a61156b565b6040516106679190614564565b60405180910390f35b34801561067c57600080fd5b50610685611571565b6040516106929190614564565b60405180910390f35b3480156106a757600080fd5b506106c260048036038101906106bd91906144ae565b611577565b6040516106cf9190614564565b60405180910390f35b3480156106e457600080fd5b506106ed6115c0565b005b3480156106fb57600080fd5b5061071660048036038101906107119190614751565b611713565b005b34801561072457600080fd5b5061073f600480360381019061073a919061477e565b6117c5565b005b34801561074d57600080fd5b50610768600480360381019061076391906148fc565b61186c565b005b34801561077657600080fd5b5061077f61190f565b60405161078c9190614736565b60405180910390f35b3480156107a157600080fd5b506107aa611938565b6040516107b7919061436e565b60405180910390f35b3480156107cc57600080fd5b506107d56119ca565b005b3480156107e357600080fd5b506107fe60048036038101906107f991906148fc565b6119d4565b005b34801561080c57600080fd5b50610815611a77565b60405161082291906143ab565b60405180910390f35b34801561083757600080fd5b50610852600480360381019061084d919061446e565b611a8a565b60405161085f91906143ab565b60405180910390f35b34801561087457600080fd5b5061088f600480360381019061088a919061446e565b611b57565b60405161089c91906143ab565b60405180910390f35b3480156108b157600080fd5b506108cc60048036038101906108c791906145d2565b611b75565b005b3480156108da57600080fd5b506108e3611c14565b005b3480156108f157600080fd5b506108fa61216d565b6040516109079190614736565b60405180910390f35b34801561091c57600080fd5b506109376004803603810190610932919061477e565b612193565b005b34801561094557600080fd5b5061094e61223a565b60405161095b9190614564565b60405180910390f35b34801561097057600080fd5b5061098b60048036038101906109869190614945565b612240565b6040516109989190614564565b60405180910390f35b3480156109ad57600080fd5b506109b66122c7565b6040516109c39190614564565b60405180910390f35b3480156109d857600080fd5b506109f360048036038101906109ee91906144ae565b6124dc565b604051610a0091906143ab565b60405180910390f35b348015610a1557600080fd5b50610a1e612532565b005b348015610a2c57600080fd5b50610a476004803603810190610a4291906144ae565b612633565b005b610a516127f4565b73ffffffffffffffffffffffffffffffffffffffff16601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610b005750610aaf6127f4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b610b3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b36906149d1565b60405180910390fd5b6000479050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610bac573d6000803e3d6000fd5b5050565b6060600a8054610bbf90614a20565b80601f0160208091040260200160405190810160405280929190818152602001828054610beb90614a20565b8015610c385780601f10610c0d57610100808354040283529160200191610c38565b820191906000526020600020905b815481529060010190602001808311610c1b57829003601f168201915b5050505050905090565b601460019054906101000a900460ff1681565b601854421015610c9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9190614a9d565b60405180910390fd5b601460019054906101000a900460ff16610ce9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce090614b09565b60405180910390fd5b610cf16127fc565b565b6000610d07610d006127f4565b84846129ba565b6001905092915050565b610d196127f4565b73ffffffffffffffffffffffffffffffffffffffff16601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610dc85750610d776127f4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b610e07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfe906149d1565b60405180910390fd5b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610e479190614736565b602060405180830381865afa158015610e64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e889190614b3e565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610ee7929190614b6b565b6020604051808303816000875af1158015610f06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2a9190614ba9565b50505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600d54905090565b60155481565b6000610f73848484612b83565b61103484610f7f6127f4565b61102f8560405180606001604052806028815260200161597a60289139600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610fe56127f4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546137479092919063ffffffff16565b6129ba565b600190509392505050565b6110476127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110cb90614c22565b60405180910390fd5b633b9aca00816110e49190614c71565b600e8190555050565b60115481565b6000600c60009054906101000a900460ff16905090565b60006111b36111176127f4565b846111ae85600760006111286127f4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546137ab90919063ffffffff16565b6129ba565b6001905092915050565b6111c56127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611252576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124990614c22565b60405180910390fd5b61125d838383613809565b505050565b60105481565b60165481565b60185481565b600080600267ffffffffffffffff811115611292576112916147be565b5b6040519080825280602002602001820160405280156112c05781602001602082028036833780820191505090505b509050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611330573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113549190614cc8565b8160008151811061136857611367614cf5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505030816001815181106113b7576113b6614cf5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f601354836040518363ffffffff1660e01b8152600401611450929190614de2565b600060405180830381865afa15801561146d573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906114969190614ed5565b6001815181106114a9576114a8614cf5565b5b602002602001015191505090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006114e830611577565b9050600081111561151257600f60009054906101000a900460ff1661151157611510816138b4565b5b5b50565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60135481565b600e5481565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6115c86127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611655576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164c90614c22565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61171b6127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179f90614c22565b60405180910390fd5b80601460016101000a81548160ff02191690831515021790555050565b6117cd6127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461185a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185190614c22565b60405180910390fd5b81601081905550806011819055505050565b6118746127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611901576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f890614c22565b60405180910390fd5b61190c816001613b7f565b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600b805461194790614a20565b80601f016020809104026020016040519081016040528092919081815260200182805461197390614a20565b80156119c05780601f10611995576101008083540402835291602001916119c0565b820191906000526020600020905b8154815290600101906020018083116119a357829003601f168201915b5050505050905090565b6119d2613c76565b565b6119dc6127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6090614c22565b60405180910390fd5b611a74816000613b7f565b50565b601460009054906101000a900460ff1681565b6000611b4d611a976127f4565b84611b48856040518060600160405280602581526020016159a26025913960076000611ac16127f4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546137479092919063ffffffff16565b6129ba565b6001905092915050565b6000611b6b611b646127f4565b8484612b83565b6001905092915050565b611b7d6127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0190614c22565b60405180910390fd5b8060138190555050565b611c1c6127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ca9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca090614c22565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3190614f6a565b60405180910390fd5b611d6930600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600d546129ba565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611dd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dfa9190614cc8565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ea79190614cc8565b6040518363ffffffff1660e01b8152600401611ec4929190614f8a565b6020604051808303816000875af1158015611ee3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f079190614cc8565b600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730611f9030611577565b600080611f9b61190f565b426040518863ffffffff1660e01b8152600401611fbd96959493929190614fee565b60606040518083038185885af1158015611fdb573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612000919061504f565b505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016120a2929190614b6b565b6020604051808303816000875af11580156120c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120e59190614ba9565b50600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426018819055506001601460006101000a81548160ff021916908315150217905550565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61219b6127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612228576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221f90614c22565b60405180910390fd5b81601581905550806016819055505050565b60175481565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000806000905060005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561233e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123629190614b3e565b8110156124d4576000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663663037ac836040518263ffffffff1660e01b81526004016123c69190614564565b602060405180830381865afa1580156123e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124079190614cc8565b90506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c2bc2efc836040518263ffffffff1660e01b81526004016124669190614736565b602060405180830381865afa158015612483573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124a79190614b3e565b90508042106124bf5783806124bb906150a2565b9450505b505080806124cc906150a2565b9150506122d1565b508091505090565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61253a6127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125be90614c22565b60405180910390fd5b601460009054906101000a900460ff16612616576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260d9061515c565b60405180910390fd5b6000601460006101000a81548160ff021916908315150217905550565b61263b6127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126bf90614c22565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612737576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272e906151ee565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b6001600f60006101000a81548160ff0219169083151502179055506000612844600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611577565b9050600061285d60165483613fe490919063ffffffff16565b9050600081111561299b57612894600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168261402e565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156128fe57600080fd5b505af1158015612912573d6000803e3d6000fd5b5050505061292b816017546137ab90919063ffffffff16565b60178190555061295961294a603c6015546141b790919063ffffffff16565b426137ab90919063ffffffff16565b6018819055507f8bc81353cf6671d259d22783e39ed930583c86f3f4cf7e981298e6a872dfb15d8160185460405161299292919061520e565b60405180910390a15b50506000600f60006101000a81548160ff021916908315150217905550565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612a29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a20906152a9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612a98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8f9061533b565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612b769190614564565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612bf2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612be9906153cd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612c61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c589061545f565b60405180910390fd5b60008111612ca4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c9b906154f1565b60405180910390fd5b600080600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612d4b5750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612d8a5750612d5a61190f565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612dc95750612d9961190f565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b9050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614158015612e775750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015612eaf57503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612ee757503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561350457801561350357600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036130a157601460009054906101000a900460ff1615612ff857612f64613c76565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633825d82885426040518363ffffffff1660e01b8152600401612fc1929190614b6b565b600060405180830381600087803b158015612fdb57600080fd5b505af1158015612fef573d6000803e3d6000fd5b505050506130a0565b6130206064613012601054866141b790919063ffffffff16565b613fe490919063ffffffff16565b91506000613037838561423190919063ffffffff16565b905060006130568261304888611577565b6137ab90919063ffffffff16565b9050600e5481111561309d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161309490615583565b60405180910390fd5b50505b5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415801561314c5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b156132fe57600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156131f55750600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b613234576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161322b90615615565b60405180910390fd5b601460009054906101000a900460ff1615613250576000613279565b613278606461326a601154866141b790919063ffffffff16565b613fe490919063ffffffff16565b5b915060185442101580156132995750601460019054906101000a900460ff165b156132ab576132a66127fc565b6132fd565b60006132b630611577565b905060008111156132fb5760006132cb611274565b90508082101580156132ea5750600f60009054906101000a900460ff16155b156132f9576132f8816138b4565b5b505b505b5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141580156133aa5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156135025760006133ba86611577565b905060006133c786611577565b9050600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561346d5750600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6134ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134a3906156a7565b60405180910390fd5b600e5482111580156134c05750600e548111155b6134ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134f690615583565b60405180910390fd5b50505b5b5b6000613519838561423190919063ffffffff16565b905061356d84600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461423190919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061360281600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546137ab90919063ffffffff16565b600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061369783600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546137ab90919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516137379190614564565b60405180910390a3505050505050565b600083831115829061378f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613786919061436e565b60405180910390fd5b506000838561379e91906156c7565b9050809150509392505050565b60008082846137ba91906156fb565b9050838110156137ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137f69061577b565b60405180910390fd5b8091505092915050565b60005b838390508110156138ae57600084848381811061382c5761382b614cf5565b5b905060200201602081019061384191906144ae565b905082600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505080806138a6906150a2565b91505061380c565b50505050565b6000600267ffffffffffffffff8111156138d1576138d06147be565b5b6040519080825280602002602001820160405280156138ff5781602001602082028036833780820191505090505b509050308160008151811061391757613916614cf5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156139be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139e29190614cc8565b816001815181106139f6576139f5614cf5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613a5d30600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846129ba565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613ac195949392919061579b565b600060405180830381600087803b158015613adb57600080fd5b505af1158015613aef573d6000803e3d6000fd5b5050505060004790506000613b0e600183613fe490919063ffffffff16565b9050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613b78573d6000803e3d6000fd5b5050505050565b60005b8251811015613c71576000838281518110613ba057613b9f614cf5565b5b602002602001015190508215613c0d576001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550613c5d565b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690555b508080613c69906150a2565b915050613b82565b505050565b601460009054906101000a900460ff1615613fe25760005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613cfb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d1f9190614b3e565b811015613fe0576000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663663037ac836040518263ffffffff1660e01b8152600401613d839190614564565b602060405180830381865afa158015613da0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dc49190614cc8565b90506000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000811115613f3e57613e6581600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461423190919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613efa81600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546137ab90919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166329092d0e836040518263ffffffff1660e01b8152600401613f999190614736565b600060405180830381600087803b158015613fb357600080fd5b505af1158015613fc7573d6000803e3d6000fd5b5050505050508080613fd8906150a2565b915050613c8e565b505b565b600061402683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061427b565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361409d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161409490615867565b60405180910390fd5b6140b281600d5461423190919063ffffffff16565b600d8190555061410a81600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461423190919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516141ab9190614564565b60405180910390a35050565b60008083036141c9576000905061422b565b600082846141d79190614c71565b90508284826141e691906158b6565b14614226576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161421d90615959565b60405180910390fd5b809150505b92915050565b600061427383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613747565b905092915050565b600080831182906142c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016142b9919061436e565b60405180910390fd5b50600083856142d191906158b6565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156143185780820151818401526020810190506142fd565b60008484015250505050565b6000601f19601f8301169050919050565b6000614340826142de565b61434a81856142e9565b935061435a8185602086016142fa565b61436381614324565b840191505092915050565b600060208201905081810360008301526143888184614335565b905092915050565b60008115159050919050565b6143a581614390565b82525050565b60006020820190506143c0600083018461439c565b92915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000614405826143da565b9050919050565b614415816143fa565b811461442057600080fd5b50565b6000813590506144328161440c565b92915050565b6000819050919050565b61444b81614438565b811461445657600080fd5b50565b60008135905061446881614442565b92915050565b60008060408385031215614485576144846143d0565b5b600061449385828601614423565b92505060206144a485828601614459565b9150509250929050565b6000602082840312156144c4576144c36143d0565b5b60006144d284828501614423565b91505092915050565b6000819050919050565b60006145006144fb6144f6846143da565b6144db565b6143da565b9050919050565b6000614512826144e5565b9050919050565b600061452482614507565b9050919050565b61453481614519565b82525050565b600060208201905061454f600083018461452b565b92915050565b61455e81614438565b82525050565b60006020820190506145796000830184614555565b92915050565b600080600060608486031215614598576145976143d0565b5b60006145a686828701614423565b93505060206145b786828701614423565b92505060406145c886828701614459565b9150509250925092565b6000602082840312156145e8576145e76143d0565b5b60006145f684828501614459565b91505092915050565b600060ff82169050919050565b614615816145ff565b82525050565b6000602082019050614630600083018461460c565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261465b5761465a614636565b5b8235905067ffffffffffffffff8111156146785761467761463b565b5b60208301915083602082028301111561469457614693614640565b5b9250929050565b6146a481614390565b81146146af57600080fd5b50565b6000813590506146c18161469b565b92915050565b6000806000604084860312156146e0576146df6143d0565b5b600084013567ffffffffffffffff8111156146fe576146fd6143d5565b5b61470a86828701614645565b9350935050602061471d868287016146b2565b9150509250925092565b614730816143fa565b82525050565b600060208201905061474b6000830184614727565b92915050565b600060208284031215614767576147666143d0565b5b6000614775848285016146b2565b91505092915050565b60008060408385031215614795576147946143d0565b5b60006147a385828601614459565b92505060206147b485828601614459565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6147f682614324565b810181811067ffffffffffffffff82111715614815576148146147be565b5b80604052505050565b60006148286143c6565b905061483482826147ed565b919050565b600067ffffffffffffffff821115614854576148536147be565b5b602082029050602081019050919050565b600061487861487384614839565b61481e565b9050808382526020820190506020840283018581111561489b5761489a614640565b5b835b818110156148c457806148b08882614423565b84526020840193505060208101905061489d565b5050509392505050565b600082601f8301126148e3576148e2614636565b5b81356148f3848260208601614865565b91505092915050565b600060208284031215614912576149116143d0565b5b600082013567ffffffffffffffff8111156149305761492f6143d5565b5b61493c848285016148ce565b91505092915050565b6000806040838503121561495c5761495b6143d0565b5b600061496a85828601614423565b925050602061497b85828601614423565b9150509250929050565b7f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000600082015250565b60006149bb6017836142e9565b91506149c682614985565b602082019050919050565b600060208201905081810360008301526149ea816149ae565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614a3857607f821691505b602082108103614a4b57614a4a6149f1565b5b50919050565b7f506c656173652077616974000000000000000000000000000000000000000000600082015250565b6000614a87600b836142e9565b9150614a9282614a51565b602082019050919050565b60006020820190508181036000830152614ab681614a7a565b9050919050565b7f44697361626c6564000000000000000000000000000000000000000000000000600082015250565b6000614af36008836142e9565b9150614afe82614abd565b602082019050919050565b60006020820190508181036000830152614b2281614ae6565b9050919050565b600081519050614b3881614442565b92915050565b600060208284031215614b5457614b536143d0565b5b6000614b6284828501614b29565b91505092915050565b6000604082019050614b806000830185614727565b614b8d6020830184614555565b9392505050565b600081519050614ba38161469b565b92915050565b600060208284031215614bbf57614bbe6143d0565b5b6000614bcd84828501614b94565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614c0c6020836142e9565b9150614c1782614bd6565b602082019050919050565b60006020820190508181036000830152614c3b81614bff565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614c7c82614438565b9150614c8783614438565b9250828202614c9581614438565b91508282048414831517614cac57614cab614c42565b5b5092915050565b600081519050614cc28161440c565b92915050565b600060208284031215614cde57614cdd6143d0565b5b6000614cec84828501614cb3565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614d59816143fa565b82525050565b6000614d6b8383614d50565b60208301905092915050565b6000602082019050919050565b6000614d8f82614d24565b614d998185614d2f565b9350614da483614d40565b8060005b83811015614dd5578151614dbc8882614d5f565b9750614dc783614d77565b925050600181019050614da8565b5085935050505092915050565b6000604082019050614df76000830185614555565b8181036020830152614e098184614d84565b90509392505050565b600067ffffffffffffffff821115614e2d57614e2c6147be565b5b602082029050602081019050919050565b6000614e51614e4c84614e12565b61481e565b90508083825260208201905060208402830185811115614e7457614e73614640565b5b835b81811015614e9d5780614e898882614b29565b845260208401935050602081019050614e76565b5050509392505050565b600082601f830112614ebc57614ebb614636565b5b8151614ecc848260208601614e3e565b91505092915050565b600060208284031215614eeb57614eea6143d0565b5b600082015167ffffffffffffffff811115614f0957614f086143d5565b5b614f1584828501614ea7565b91505092915050565b7f556e697377617056325061697220616c72656164792073657400000000000000600082015250565b6000614f546019836142e9565b9150614f5f82614f1e565b602082019050919050565b60006020820190508181036000830152614f8381614f47565b9050919050565b6000604082019050614f9f6000830185614727565b614fac6020830184614727565b9392505050565b6000819050919050565b6000614fd8614fd3614fce84614fb3565b6144db565b614438565b9050919050565b614fe881614fbd565b82525050565b600060c0820190506150036000830189614727565b6150106020830188614555565b61501d6040830187614fdf565b61502a6060830186614fdf565b6150376080830185614727565b61504460a0830184614555565b979650505050505050565b600080600060608486031215615068576150676143d0565b5b600061507686828701614b29565b935050602061508786828701614b29565b925050604061509886828701614b29565b9150509250925092565b60006150ad82614438565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036150df576150de614c42565b5b600182019050919050565b7f426f7420736e6970696e672068617320616c7265616479206265656e2064697360008201527f61626c6564000000000000000000000000000000000000000000000000000000602082015250565b60006151466025836142e9565b9150615151826150ea565b604082019050919050565b6000602082019050818103600083015261517581615139565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006151d86026836142e9565b91506151e38261517c565b604082019050919050565b60006020820190508181036000830152615207816151cb565b9050919050565b60006040820190506152236000830185614555565b6152306020830184614555565b9392505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006152936024836142e9565b915061529e82615237565b604082019050919050565b600060208201905081810360008301526152c281615286565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006153256022836142e9565b9150615330826152c9565b604082019050919050565b6000602082019050818103600083015261535481615318565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006153b76025836142e9565b91506153c28261535b565b604082019050919050565b600060208201905081810360008301526153e6816153aa565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006154496023836142e9565b9150615454826153ed565b604082019050919050565b600060208201905081810360008301526154788161543c565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006154db6029836142e9565b91506154e68261547f565b604082019050919050565b6000602082019050818103600083015261550a816154ce565b9050919050565b7f57616c6c65742063616e6e6f7420657863656564206d61782057616c6c65742060008201527f6c696d6974000000000000000000000000000000000000000000000000000000602082015250565b600061556d6025836142e9565b915061557882615511565b604082019050919050565b6000602082019050818103600083015261559c81615560565b9050919050565b7f626f747320617265206e6f7420616c6c6f77656420746f2073656c6c20746f6b60008201527f656e730000000000000000000000000000000000000000000000000000000000602082015250565b60006155ff6023836142e9565b915061560a826155a3565b604082019050919050565b6000602082019050818103600083015261562e816155f2565b9050919050565b7f626f747320617265206e6f7420616c6c6f77656420746f207472616e7366657260008201527f20746f6b656e7300000000000000000000000000000000000000000000000000602082015250565b60006156916027836142e9565b915061569c82615635565b604082019050919050565b600060208201905081810360008301526156c081615684565b9050919050565b60006156d282614438565b91506156dd83614438565b92508282039050818111156156f5576156f4614c42565b5b92915050565b600061570682614438565b915061571183614438565b925082820190508082111561572957615728614c42565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000615765601b836142e9565b91506157708261572f565b602082019050919050565b6000602082019050818103600083015261579481615758565b9050919050565b600060a0820190506157b06000830188614555565b6157bd6020830187614fdf565b81810360408301526157cf8186614d84565b90506157de6060830185614727565b6157eb6080830184614555565b9695505050505050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006158516021836142e9565b915061585c826157f5565b604082019050919050565b6000602082019050818103600083015261588081615844565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006158c182614438565b91506158cc83614438565b9250826158dc576158db615887565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006159436021836142e9565b915061594e826158e7565b604082019050919050565b6000602082019050818103600083015261597281615936565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220d44d42f8e2c42ebe041801189f1a8eddecfefd5b1f99c4de3f4435797b74583064736f6c63430008130033608060405234801561001057600080fd5b50610ae8806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063663037ac1161005b578063663037ac146100ea578063949d225d1461011a578063c2bc2efc14610138578063cd413329146101685761007d565b806329092d0e146100825780633825d8281461009e578063564c8d11146100ba575b600080fd5b61009c60048036038101906100979190610863565b610198565b005b6100b860048036038101906100b391906108c6565b610464565b005b6100d460048036038101906100cf9190610863565b61065f565b6040516100e1919061091f565b60405180910390f35b61010460048036038101906100ff919061093a565b610727565b6040516101119190610976565b60405180910390f35b610122610771565b60405161012f91906109a0565b60405180910390f35b610152600480360381019061014d9190610863565b610780565b60405161015f91906109a0565b60405180910390f35b610182600480360381019061017d9190610863565b6107cb565b60405161018f91906109d6565b60405180910390f35b600060030160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561046157600060030160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff0219169055600060010160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000905560008060020160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600160008001805490506102e19190610a20565b905060008060000182815481106102fb576102fa610a54565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082600060020160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600060020160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009055806000800184815481106103cc576103cb610a54565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000800180548061042857610427610a83565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590555050505b50565b600060030160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156105055780600060010160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061065b565b6001600060030160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600060010160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000800180549050600060020160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008001829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5050565b60008060030160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166106dc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610722565b600060020160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b919050565b600080600001828154811061073f5761073e610a54565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60008060000180549050905090565b60008060010160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6107f78361065f565b14159050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061083082610805565b9050919050565b61084081610825565b811461084b57600080fd5b50565b60008135905061085d81610837565b92915050565b60006020828403121561087957610878610800565b5b60006108878482850161084e565b91505092915050565b6000819050919050565b6108a381610890565b81146108ae57600080fd5b50565b6000813590506108c08161089a565b92915050565b600080604083850312156108dd576108dc610800565b5b60006108eb8582860161084e565b92505060206108fc858286016108b1565b9150509250929050565b6000819050919050565b61091981610906565b82525050565b60006020820190506109346000830184610910565b92915050565b6000602082840312156109505761094f610800565b5b600061095e848285016108b1565b91505092915050565b61097081610825565b82525050565b600060208201905061098b6000830184610967565b92915050565b61099a81610890565b82525050565b60006020820190506109b56000830184610991565b92915050565b60008115159050919050565b6109d0816109bb565b82525050565b60006020820190506109eb60008301846109c7565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610a2b82610890565b9150610a3683610890565b9250828203905081811115610a4e57610a4d6109f1565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220b85444f898bc2018f0bb3cbf8ac563b0f77c397c17f31cd94ef990d949f9ebb164736f6c63430008130033

Deployed Bytecode

0x6080604052600436106102815760003560e01c80636c0a24eb1161014f578063a457c2d7116100c1578063dc13b31c1161007a578063dc13b31c14610939578063dd62ed3e14610964578063e68167aa146109a1578063e7dad4f9146109cc578063ec11ba3414610a09578063f2fde38b14610a2057610288565b8063a457c2d71461082b578063a9059cbb14610868578063b2abbbc4146108a5578063c9567bf9146108ce578063d5f39488146108e5578063d9058bd51461091057610288565b806385d4787b1161011357806385d4787b146107415780638da5cb5b1461076a57806395d89b411461079557806395f4c958146107c05780639b0e2e86146107d7578063a2ae74f41461080057610288565b80636c0a24eb1461067057806370a082311461069b578063715018a6146106d8578063794ac149146106ef57806381230a831461071857610288565b80632b14ca56116101f357806348fad638116101ac57806348fad638146105705780634b94f50e1461059b57806350faa48f146105c657806351bc3c85146105f15780635342acb41461060857806354a5df1f1461064557610288565b80632b14ca561461045e578063313ce5671461048957806339509351146104b4578063441d801f146104f1578063470624021461051a578063482e53ff1461054557610288565b8063139196f711610245578063139196f71461034e5780631694505e1461037757806318160ddd146103a25780631f61fd5a146103cd57806323b872dd146103f857806327a14fc21461043557610288565b806306e99fef1461028d57806306fdde03146102a457806307ebec27146102cf57806308003f78146102fa578063095ea7b31461031157610288565b3661028857005b600080fd5b34801561029957600080fd5b506102a2610a49565b005b3480156102b057600080fd5b506102b9610bb0565b6040516102c6919061436e565b60405180910390f35b3480156102db57600080fd5b506102e4610c42565b6040516102f191906143ab565b60405180910390f35b34801561030657600080fd5b5061030f610c55565b005b34801561031d57600080fd5b506103386004803603810190610333919061446e565b610cf3565b60405161034591906143ab565b60405180910390f35b34801561035a57600080fd5b50610375600480360381019061037091906144ae565b610d11565b005b34801561038357600080fd5b5061038c610f30565b604051610399919061453a565b60405180910390f35b3480156103ae57600080fd5b506103b7610f56565b6040516103c49190614564565b60405180910390f35b3480156103d957600080fd5b506103e2610f60565b6040516103ef9190614564565b60405180910390f35b34801561040457600080fd5b5061041f600480360381019061041a919061457f565b610f66565b60405161042c91906143ab565b60405180910390f35b34801561044157600080fd5b5061045c600480360381019061045791906145d2565b61103f565b005b34801561046a57600080fd5b506104736110ed565b6040516104809190614564565b60405180910390f35b34801561049557600080fd5b5061049e6110f3565b6040516104ab919061461b565b60405180910390f35b3480156104c057600080fd5b506104db60048036038101906104d6919061446e565b61110a565b6040516104e891906143ab565b60405180910390f35b3480156104fd57600080fd5b50610518600480360381019061051391906146c7565b6111bd565b005b34801561052657600080fd5b5061052f611262565b60405161053c9190614564565b60405180910390f35b34801561055157600080fd5b5061055a611268565b6040516105679190614564565b60405180910390f35b34801561057c57600080fd5b5061058561126e565b6040516105929190614564565b60405180910390f35b3480156105a757600080fd5b506105b0611274565b6040516105bd9190614564565b60405180910390f35b3480156105d257600080fd5b506105db6114b7565b6040516105e89190614736565b60405180910390f35b3480156105fd57600080fd5b506106066114dd565b005b34801561061457600080fd5b5061062f600480360381019061062a91906144ae565b611515565b60405161063c91906143ab565b60405180910390f35b34801561065157600080fd5b5061065a61156b565b6040516106679190614564565b60405180910390f35b34801561067c57600080fd5b50610685611571565b6040516106929190614564565b60405180910390f35b3480156106a757600080fd5b506106c260048036038101906106bd91906144ae565b611577565b6040516106cf9190614564565b60405180910390f35b3480156106e457600080fd5b506106ed6115c0565b005b3480156106fb57600080fd5b5061071660048036038101906107119190614751565b611713565b005b34801561072457600080fd5b5061073f600480360381019061073a919061477e565b6117c5565b005b34801561074d57600080fd5b50610768600480360381019061076391906148fc565b61186c565b005b34801561077657600080fd5b5061077f61190f565b60405161078c9190614736565b60405180910390f35b3480156107a157600080fd5b506107aa611938565b6040516107b7919061436e565b60405180910390f35b3480156107cc57600080fd5b506107d56119ca565b005b3480156107e357600080fd5b506107fe60048036038101906107f991906148fc565b6119d4565b005b34801561080c57600080fd5b50610815611a77565b60405161082291906143ab565b60405180910390f35b34801561083757600080fd5b50610852600480360381019061084d919061446e565b611a8a565b60405161085f91906143ab565b60405180910390f35b34801561087457600080fd5b5061088f600480360381019061088a919061446e565b611b57565b60405161089c91906143ab565b60405180910390f35b3480156108b157600080fd5b506108cc60048036038101906108c791906145d2565b611b75565b005b3480156108da57600080fd5b506108e3611c14565b005b3480156108f157600080fd5b506108fa61216d565b6040516109079190614736565b60405180910390f35b34801561091c57600080fd5b506109376004803603810190610932919061477e565b612193565b005b34801561094557600080fd5b5061094e61223a565b60405161095b9190614564565b60405180910390f35b34801561097057600080fd5b5061098b60048036038101906109869190614945565b612240565b6040516109989190614564565b60405180910390f35b3480156109ad57600080fd5b506109b66122c7565b6040516109c39190614564565b60405180910390f35b3480156109d857600080fd5b506109f360048036038101906109ee91906144ae565b6124dc565b604051610a0091906143ab565b60405180910390f35b348015610a1557600080fd5b50610a1e612532565b005b348015610a2c57600080fd5b50610a476004803603810190610a4291906144ae565b612633565b005b610a516127f4565b73ffffffffffffffffffffffffffffffffffffffff16601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610b005750610aaf6127f4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b610b3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b36906149d1565b60405180910390fd5b6000479050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610bac573d6000803e3d6000fd5b5050565b6060600a8054610bbf90614a20565b80601f0160208091040260200160405190810160405280929190818152602001828054610beb90614a20565b8015610c385780601f10610c0d57610100808354040283529160200191610c38565b820191906000526020600020905b815481529060010190602001808311610c1b57829003601f168201915b5050505050905090565b601460019054906101000a900460ff1681565b601854421015610c9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9190614a9d565b60405180910390fd5b601460019054906101000a900460ff16610ce9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce090614b09565b60405180910390fd5b610cf16127fc565b565b6000610d07610d006127f4565b84846129ba565b6001905092915050565b610d196127f4565b73ffffffffffffffffffffffffffffffffffffffff16601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610dc85750610d776127f4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b610e07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfe906149d1565b60405180910390fd5b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610e479190614736565b602060405180830381865afa158015610e64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e889190614b3e565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610ee7929190614b6b565b6020604051808303816000875af1158015610f06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2a9190614ba9565b50505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600d54905090565b60155481565b6000610f73848484612b83565b61103484610f7f6127f4565b61102f8560405180606001604052806028815260200161597a60289139600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610fe56127f4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546137479092919063ffffffff16565b6129ba565b600190509392505050565b6110476127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110cb90614c22565b60405180910390fd5b633b9aca00816110e49190614c71565b600e8190555050565b60115481565b6000600c60009054906101000a900460ff16905090565b60006111b36111176127f4565b846111ae85600760006111286127f4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546137ab90919063ffffffff16565b6129ba565b6001905092915050565b6111c56127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611252576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124990614c22565b60405180910390fd5b61125d838383613809565b505050565b60105481565b60165481565b60185481565b600080600267ffffffffffffffff811115611292576112916147be565b5b6040519080825280602002602001820160405280156112c05781602001602082028036833780820191505090505b509050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611330573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113549190614cc8565b8160008151811061136857611367614cf5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505030816001815181106113b7576113b6614cf5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f601354836040518363ffffffff1660e01b8152600401611450929190614de2565b600060405180830381865afa15801561146d573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906114969190614ed5565b6001815181106114a9576114a8614cf5565b5b602002602001015191505090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006114e830611577565b9050600081111561151257600f60009054906101000a900460ff1661151157611510816138b4565b5b5b50565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60135481565b600e5481565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6115c86127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611655576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164c90614c22565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61171b6127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179f90614c22565b60405180910390fd5b80601460016101000a81548160ff02191690831515021790555050565b6117cd6127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461185a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185190614c22565b60405180910390fd5b81601081905550806011819055505050565b6118746127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611901576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f890614c22565b60405180910390fd5b61190c816001613b7f565b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600b805461194790614a20565b80601f016020809104026020016040519081016040528092919081815260200182805461197390614a20565b80156119c05780601f10611995576101008083540402835291602001916119c0565b820191906000526020600020905b8154815290600101906020018083116119a357829003601f168201915b5050505050905090565b6119d2613c76565b565b6119dc6127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6090614c22565b60405180910390fd5b611a74816000613b7f565b50565b601460009054906101000a900460ff1681565b6000611b4d611a976127f4565b84611b48856040518060600160405280602581526020016159a26025913960076000611ac16127f4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546137479092919063ffffffff16565b6129ba565b6001905092915050565b6000611b6b611b646127f4565b8484612b83565b6001905092915050565b611b7d6127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0190614c22565b60405180910390fd5b8060138190555050565b611c1c6127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ca9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca090614c22565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3190614f6a565b60405180910390fd5b611d6930600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600d546129ba565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611dd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dfa9190614cc8565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ea79190614cc8565b6040518363ffffffff1660e01b8152600401611ec4929190614f8a565b6020604051808303816000875af1158015611ee3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f079190614cc8565b600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730611f9030611577565b600080611f9b61190f565b426040518863ffffffff1660e01b8152600401611fbd96959493929190614fee565b60606040518083038185885af1158015611fdb573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612000919061504f565b505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016120a2929190614b6b565b6020604051808303816000875af11580156120c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120e59190614ba9565b50600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426018819055506001601460006101000a81548160ff021916908315150217905550565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61219b6127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612228576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221f90614c22565b60405180910390fd5b81601581905550806016819055505050565b60175481565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000806000905060005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561233e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123629190614b3e565b8110156124d4576000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663663037ac836040518263ffffffff1660e01b81526004016123c69190614564565b602060405180830381865afa1580156123e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124079190614cc8565b90506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c2bc2efc836040518263ffffffff1660e01b81526004016124669190614736565b602060405180830381865afa158015612483573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124a79190614b3e565b90508042106124bf5783806124bb906150a2565b9450505b505080806124cc906150a2565b9150506122d1565b508091505090565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61253a6127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125be90614c22565b60405180910390fd5b601460009054906101000a900460ff16612616576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260d9061515c565b60405180910390fd5b6000601460006101000a81548160ff021916908315150217905550565b61263b6127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126bf90614c22565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612737576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272e906151ee565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b6001600f60006101000a81548160ff0219169083151502179055506000612844600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611577565b9050600061285d60165483613fe490919063ffffffff16565b9050600081111561299b57612894600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168261402e565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156128fe57600080fd5b505af1158015612912573d6000803e3d6000fd5b5050505061292b816017546137ab90919063ffffffff16565b60178190555061295961294a603c6015546141b790919063ffffffff16565b426137ab90919063ffffffff16565b6018819055507f8bc81353cf6671d259d22783e39ed930583c86f3f4cf7e981298e6a872dfb15d8160185460405161299292919061520e565b60405180910390a15b50506000600f60006101000a81548160ff021916908315150217905550565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612a29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a20906152a9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612a98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8f9061533b565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612b769190614564565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612bf2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612be9906153cd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612c61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c589061545f565b60405180910390fd5b60008111612ca4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c9b906154f1565b60405180910390fd5b600080600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612d4b5750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612d8a5750612d5a61190f565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612dc95750612d9961190f565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b9050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614158015612e775750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015612eaf57503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612ee757503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561350457801561350357600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036130a157601460009054906101000a900460ff1615612ff857612f64613c76565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633825d82885426040518363ffffffff1660e01b8152600401612fc1929190614b6b565b600060405180830381600087803b158015612fdb57600080fd5b505af1158015612fef573d6000803e3d6000fd5b505050506130a0565b6130206064613012601054866141b790919063ffffffff16565b613fe490919063ffffffff16565b91506000613037838561423190919063ffffffff16565b905060006130568261304888611577565b6137ab90919063ffffffff16565b9050600e5481111561309d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161309490615583565b60405180910390fd5b50505b5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415801561314c5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b156132fe57600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156131f55750600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b613234576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161322b90615615565b60405180910390fd5b601460009054906101000a900460ff1615613250576000613279565b613278606461326a601154866141b790919063ffffffff16565b613fe490919063ffffffff16565b5b915060185442101580156132995750601460019054906101000a900460ff165b156132ab576132a66127fc565b6132fd565b60006132b630611577565b905060008111156132fb5760006132cb611274565b90508082101580156132ea5750600f60009054906101000a900460ff16155b156132f9576132f8816138b4565b5b505b505b5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141580156133aa5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156135025760006133ba86611577565b905060006133c786611577565b9050600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561346d5750600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6134ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134a3906156a7565b60405180910390fd5b600e5482111580156134c05750600e548111155b6134ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134f690615583565b60405180910390fd5b50505b5b5b6000613519838561423190919063ffffffff16565b905061356d84600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461423190919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061360281600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546137ab90919063ffffffff16565b600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061369783600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546137ab90919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516137379190614564565b60405180910390a3505050505050565b600083831115829061378f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613786919061436e565b60405180910390fd5b506000838561379e91906156c7565b9050809150509392505050565b60008082846137ba91906156fb565b9050838110156137ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137f69061577b565b60405180910390fd5b8091505092915050565b60005b838390508110156138ae57600084848381811061382c5761382b614cf5565b5b905060200201602081019061384191906144ae565b905082600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505080806138a6906150a2565b91505061380c565b50505050565b6000600267ffffffffffffffff8111156138d1576138d06147be565b5b6040519080825280602002602001820160405280156138ff5781602001602082028036833780820191505090505b509050308160008151811061391757613916614cf5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156139be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139e29190614cc8565b816001815181106139f6576139f5614cf5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613a5d30600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846129ba565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613ac195949392919061579b565b600060405180830381600087803b158015613adb57600080fd5b505af1158015613aef573d6000803e3d6000fd5b5050505060004790506000613b0e600183613fe490919063ffffffff16565b9050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613b78573d6000803e3d6000fd5b5050505050565b60005b8251811015613c71576000838281518110613ba057613b9f614cf5565b5b602002602001015190508215613c0d576001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550613c5d565b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690555b508080613c69906150a2565b915050613b82565b505050565b601460009054906101000a900460ff1615613fe25760005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613cfb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d1f9190614b3e565b811015613fe0576000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663663037ac836040518263ffffffff1660e01b8152600401613d839190614564565b602060405180830381865afa158015613da0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dc49190614cc8565b90506000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000811115613f3e57613e6581600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461423190919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613efa81600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546137ab90919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166329092d0e836040518263ffffffff1660e01b8152600401613f999190614736565b600060405180830381600087803b158015613fb357600080fd5b505af1158015613fc7573d6000803e3d6000fd5b5050505050508080613fd8906150a2565b915050613c8e565b505b565b600061402683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061427b565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361409d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161409490615867565b60405180910390fd5b6140b281600d5461423190919063ffffffff16565b600d8190555061410a81600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461423190919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516141ab9190614564565b60405180910390a35050565b60008083036141c9576000905061422b565b600082846141d79190614c71565b90508284826141e691906158b6565b14614226576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161421d90615959565b60405180910390fd5b809150505b92915050565b600061427383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613747565b905092915050565b600080831182906142c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016142b9919061436e565b60405180910390fd5b50600083856142d191906158b6565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156143185780820151818401526020810190506142fd565b60008484015250505050565b6000601f19601f8301169050919050565b6000614340826142de565b61434a81856142e9565b935061435a8185602086016142fa565b61436381614324565b840191505092915050565b600060208201905081810360008301526143888184614335565b905092915050565b60008115159050919050565b6143a581614390565b82525050565b60006020820190506143c0600083018461439c565b92915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000614405826143da565b9050919050565b614415816143fa565b811461442057600080fd5b50565b6000813590506144328161440c565b92915050565b6000819050919050565b61444b81614438565b811461445657600080fd5b50565b60008135905061446881614442565b92915050565b60008060408385031215614485576144846143d0565b5b600061449385828601614423565b92505060206144a485828601614459565b9150509250929050565b6000602082840312156144c4576144c36143d0565b5b60006144d284828501614423565b91505092915050565b6000819050919050565b60006145006144fb6144f6846143da565b6144db565b6143da565b9050919050565b6000614512826144e5565b9050919050565b600061452482614507565b9050919050565b61453481614519565b82525050565b600060208201905061454f600083018461452b565b92915050565b61455e81614438565b82525050565b60006020820190506145796000830184614555565b92915050565b600080600060608486031215614598576145976143d0565b5b60006145a686828701614423565b93505060206145b786828701614423565b92505060406145c886828701614459565b9150509250925092565b6000602082840312156145e8576145e76143d0565b5b60006145f684828501614459565b91505092915050565b600060ff82169050919050565b614615816145ff565b82525050565b6000602082019050614630600083018461460c565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261465b5761465a614636565b5b8235905067ffffffffffffffff8111156146785761467761463b565b5b60208301915083602082028301111561469457614693614640565b5b9250929050565b6146a481614390565b81146146af57600080fd5b50565b6000813590506146c18161469b565b92915050565b6000806000604084860312156146e0576146df6143d0565b5b600084013567ffffffffffffffff8111156146fe576146fd6143d5565b5b61470a86828701614645565b9350935050602061471d868287016146b2565b9150509250925092565b614730816143fa565b82525050565b600060208201905061474b6000830184614727565b92915050565b600060208284031215614767576147666143d0565b5b6000614775848285016146b2565b91505092915050565b60008060408385031215614795576147946143d0565b5b60006147a385828601614459565b92505060206147b485828601614459565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6147f682614324565b810181811067ffffffffffffffff82111715614815576148146147be565b5b80604052505050565b60006148286143c6565b905061483482826147ed565b919050565b600067ffffffffffffffff821115614854576148536147be565b5b602082029050602081019050919050565b600061487861487384614839565b61481e565b9050808382526020820190506020840283018581111561489b5761489a614640565b5b835b818110156148c457806148b08882614423565b84526020840193505060208101905061489d565b5050509392505050565b600082601f8301126148e3576148e2614636565b5b81356148f3848260208601614865565b91505092915050565b600060208284031215614912576149116143d0565b5b600082013567ffffffffffffffff8111156149305761492f6143d5565b5b61493c848285016148ce565b91505092915050565b6000806040838503121561495c5761495b6143d0565b5b600061496a85828601614423565b925050602061497b85828601614423565b9150509250929050565b7f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000600082015250565b60006149bb6017836142e9565b91506149c682614985565b602082019050919050565b600060208201905081810360008301526149ea816149ae565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614a3857607f821691505b602082108103614a4b57614a4a6149f1565b5b50919050565b7f506c656173652077616974000000000000000000000000000000000000000000600082015250565b6000614a87600b836142e9565b9150614a9282614a51565b602082019050919050565b60006020820190508181036000830152614ab681614a7a565b9050919050565b7f44697361626c6564000000000000000000000000000000000000000000000000600082015250565b6000614af36008836142e9565b9150614afe82614abd565b602082019050919050565b60006020820190508181036000830152614b2281614ae6565b9050919050565b600081519050614b3881614442565b92915050565b600060208284031215614b5457614b536143d0565b5b6000614b6284828501614b29565b91505092915050565b6000604082019050614b806000830185614727565b614b8d6020830184614555565b9392505050565b600081519050614ba38161469b565b92915050565b600060208284031215614bbf57614bbe6143d0565b5b6000614bcd84828501614b94565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614c0c6020836142e9565b9150614c1782614bd6565b602082019050919050565b60006020820190508181036000830152614c3b81614bff565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614c7c82614438565b9150614c8783614438565b9250828202614c9581614438565b91508282048414831517614cac57614cab614c42565b5b5092915050565b600081519050614cc28161440c565b92915050565b600060208284031215614cde57614cdd6143d0565b5b6000614cec84828501614cb3565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614d59816143fa565b82525050565b6000614d6b8383614d50565b60208301905092915050565b6000602082019050919050565b6000614d8f82614d24565b614d998185614d2f565b9350614da483614d40565b8060005b83811015614dd5578151614dbc8882614d5f565b9750614dc783614d77565b925050600181019050614da8565b5085935050505092915050565b6000604082019050614df76000830185614555565b8181036020830152614e098184614d84565b90509392505050565b600067ffffffffffffffff821115614e2d57614e2c6147be565b5b602082029050602081019050919050565b6000614e51614e4c84614e12565b61481e565b90508083825260208201905060208402830185811115614e7457614e73614640565b5b835b81811015614e9d5780614e898882614b29565b845260208401935050602081019050614e76565b5050509392505050565b600082601f830112614ebc57614ebb614636565b5b8151614ecc848260208601614e3e565b91505092915050565b600060208284031215614eeb57614eea6143d0565b5b600082015167ffffffffffffffff811115614f0957614f086143d5565b5b614f1584828501614ea7565b91505092915050565b7f556e697377617056325061697220616c72656164792073657400000000000000600082015250565b6000614f546019836142e9565b9150614f5f82614f1e565b602082019050919050565b60006020820190508181036000830152614f8381614f47565b9050919050565b6000604082019050614f9f6000830185614727565b614fac6020830184614727565b9392505050565b6000819050919050565b6000614fd8614fd3614fce84614fb3565b6144db565b614438565b9050919050565b614fe881614fbd565b82525050565b600060c0820190506150036000830189614727565b6150106020830188614555565b61501d6040830187614fdf565b61502a6060830186614fdf565b6150376080830185614727565b61504460a0830184614555565b979650505050505050565b600080600060608486031215615068576150676143d0565b5b600061507686828701614b29565b935050602061508786828701614b29565b925050604061509886828701614b29565b9150509250925092565b60006150ad82614438565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036150df576150de614c42565b5b600182019050919050565b7f426f7420736e6970696e672068617320616c7265616479206265656e2064697360008201527f61626c6564000000000000000000000000000000000000000000000000000000602082015250565b60006151466025836142e9565b9150615151826150ea565b604082019050919050565b6000602082019050818103600083015261517581615139565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006151d86026836142e9565b91506151e38261517c565b604082019050919050565b60006020820190508181036000830152615207816151cb565b9050919050565b60006040820190506152236000830185614555565b6152306020830184614555565b9392505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006152936024836142e9565b915061529e82615237565b604082019050919050565b600060208201905081810360008301526152c281615286565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006153256022836142e9565b9150615330826152c9565b604082019050919050565b6000602082019050818103600083015261535481615318565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006153b76025836142e9565b91506153c28261535b565b604082019050919050565b600060208201905081810360008301526153e6816153aa565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006154496023836142e9565b9150615454826153ed565b604082019050919050565b600060208201905081810360008301526154788161543c565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006154db6029836142e9565b91506154e68261547f565b604082019050919050565b6000602082019050818103600083015261550a816154ce565b9050919050565b7f57616c6c65742063616e6e6f7420657863656564206d61782057616c6c65742060008201527f6c696d6974000000000000000000000000000000000000000000000000000000602082015250565b600061556d6025836142e9565b915061557882615511565b604082019050919050565b6000602082019050818103600083015261559c81615560565b9050919050565b7f626f747320617265206e6f7420616c6c6f77656420746f2073656c6c20746f6b60008201527f656e730000000000000000000000000000000000000000000000000000000000602082015250565b60006155ff6023836142e9565b915061560a826155a3565b604082019050919050565b6000602082019050818103600083015261562e816155f2565b9050919050565b7f626f747320617265206e6f7420616c6c6f77656420746f207472616e7366657260008201527f20746f6b656e7300000000000000000000000000000000000000000000000000602082015250565b60006156916027836142e9565b915061569c82615635565b604082019050919050565b600060208201905081810360008301526156c081615684565b9050919050565b60006156d282614438565b91506156dd83614438565b92508282039050818111156156f5576156f4614c42565b5b92915050565b600061570682614438565b915061571183614438565b925082820190508082111561572957615728614c42565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000615765601b836142e9565b91506157708261572f565b602082019050919050565b6000602082019050818103600083015261579481615758565b9050919050565b600060a0820190506157b06000830188614555565b6157bd6020830187614fdf565b81810360408301526157cf8186614d84565b90506157de6060830185614727565b6157eb6080830184614555565b9695505050505050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006158516021836142e9565b915061585c826157f5565b604082019050919050565b6000602082019050818103600083015261588081615844565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006158c182614438565b91506158cc83614438565b9250826158dc576158db615887565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006159436021836142e9565b915061594e826158e7565b604082019050919050565b6000602082019050818103600083015261597281615936565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220d44d42f8e2c42ebe041801189f1a8eddecfefd5b1f99c4de3f4435797b74583064736f6c63430008130033

Deployed Bytecode Sourcemap

10396:14159:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24156:146;;;;;;;;;;;;;:::i;:::-;;12634:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11725:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16627:204;;;;;;;;;;;;;:::i;:::-;;13467:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24310:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10741:106;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12911:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11764:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13636:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18284:137;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11561:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12820:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13957:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15536:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11525:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11817:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11924:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23717:264;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10854:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22752:267;;;;;;;;;;;;;:::i;:::-;;18152:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11626:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11425:65;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13014:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5476:148;;;;;;;;;;;;;:::i;:::-;;16512:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14460:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14909:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5262:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12725:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22676:70;;;;;;;;;;;;;:::i;:::-;;15045:131;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11684:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14183:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13141:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23989:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17389:755;;;;;;;;;;;;;:::i;:::-;;11596:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15704:205;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11875:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13316:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22286:382;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14792:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14590:193;;;;;;;;;;;;;:::i;:::-;;5632:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24156:146;12024:12;:10;:12::i;:::-;12012:24;;:8;;;;;;;;;;;:24;;;:50;;;;12050:12;:10;:12::i;:::-;12040:22;;:6;;;;;;;;;;;:22;;;12012:50;12004:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;24203:18:::1;24224:21;24203:42;;24264:8;;;;;;;;;;;24256:26;;:38;24283:10;24256:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;24192:110;24156:146::o:0;12634:83::-;12671:13;12704:5;12697:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12634:83;:::o;11725:32::-;;;;;;;;;;;;;:::o;16627:204::-;16696:26;;16677:15;:45;;16669:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;16757:13;;;;;;;;;;;16749:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;16794:29;:27;:29::i;:::-;16627:204::o;13467:161::-;13542:4;13559:39;13568:12;:10;:12::i;:::-;13582:7;13591:6;13559:8;:39::i;:::-;13616:4;13609:11;;13467:161;;;;:::o;24310:242::-;12024:12;:10;:12::i;:::-;12012:24;;:8;;;;;;;;;;;:24;;;:50;;;;12050:12;:10;:12::i;:::-;12040:22;;:6;;;;;;;;;;;:22;;;12012:50;12004:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;24388:17:::1;24415:15;24388:43;;24442:15;24460:10;:20;;;24489:4;24460:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24442:53;;24506:10;:19;;;24526:8;;;;;;;;;;;24536:7;24506:38;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24377:175;;24310:242:::0;:::o;10741:106::-;;;;;;;;;;;;;:::o;12911:95::-;12964:7;12991;;12984:14;;12911:95;:::o;11764:44::-;;;;:::o;13636:313::-;13734:4;13751:36;13761:6;13769:9;13780:6;13751:9;:36::i;:::-;13798:121;13807:6;13815:12;:10;:12::i;:::-;13829:89;13867:6;13829:89;;;;;;;;;;;;;;;;;:11;:19;13841:6;13829:19;;;;;;;;;;;;;;;:33;13849:12;:10;:12::i;:::-;13829:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;13798:8;:121::i;:::-;13937:4;13930:11;;13636:313;;;;;:::o;18284:137::-;5399:12;:10;:12::i;:::-;5389:22;;:6;;;;;;;;;;:22;;;5381:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18406:7:::1;18388:15;:25;;;;:::i;:::-;18369:16;:44;;;;18284:137:::0;:::o;11561:26::-;;;;:::o;12820:83::-;12861:5;12886:9;;;;;;;;;;;12879:16;;12820:83;:::o;13957:218::-;14045:4;14062:83;14071:12;:10;:12::i;:::-;14085:7;14094:50;14133:10;14094:11;:25;14106:12;:10;:12::i;:::-;14094:25;;;;;;;;;;;;;;;:34;14120:7;14094:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;14062:8;:83::i;:::-;14163:4;14156:11;;13957:218;;;;:::o;15536:161::-;5399:12;:10;:12::i;:::-;5389:22;;:6;;;;;;;;;;:22;;;5381:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15648:41:::1;15661:9;;15672:16;15648:12;:41::i;:::-;15536:161:::0;;;:::o;11525:25::-;;;;:::o;11817:39::-;;;;:::o;11924:38::-;;;;:::o;23717:264::-;23763:7;23784:21;23822:1;23808:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23784:40;;23845:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23835:4;23840:1;23835:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;23896:4;23878;23883:1;23878:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;23919:15;;;;;;;;;;;:29;;;23949:14;;23965:4;23919:51;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23971:1;23919:54;;;;;;;;:::i;:::-;;;;;;;;23912:61;;;23717:264;:::o;10854:38::-;;;;;;;;;;;;;:::o;22752:267::-;22794:28;22825:24;22843:4;22825:9;:24::i;:::-;22794:55;;22887:1;22864:20;:24;22860:152;;;22910:16;;;;;;;;;;;22905:96;;22947:38;22964:20;22947:16;:38::i;:::-;22905:96;22860:152;22783:236;22752:267::o;18152:124::-;18217:4;18241:18;:27;18260:7;18241:27;;;;;;;;;;;;;;;;;;;;;;;;;18234:34;;18152:124;;;:::o;11626:50::-;;;;:::o;11425:65::-;;;;:::o;13014:119::-;13080:7;13107:9;:18;13117:7;13107:18;;;;;;;;;;;;;;;;13100:25;;13014:119;;;:::o;5476:148::-;5399:12;:10;:12::i;:::-;5389:22;;:6;;;;;;;;;;:22;;;5381:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5583:1:::1;5546:40;;5567:6;::::0;::::1;;;;;;;;5546:40;;;;;;;;;;;;5614:1;5597:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;5476:148::o:0;16512:107::-;5399:12;:10;:12::i;:::-;5389:22;;:6;;;;;;;;;;:22;;;5381:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16603:8:::1;16587:13;;:24;;;;;;;;;;;;;;;;;;16512:107:::0;:::o;14460:122::-;5399:12;:10;:12::i;:::-;5389:22;;:6;;;;;;;;;;:22;;;5381:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14546:3:::1;14537:6;:12;;;;14570:4;14560:7;:14;;;;14460:122:::0;;:::o;14909:128::-;5399:12;:10;:12::i;:::-;5389:22;;:6;;;;;;;;;;:22;;;5381:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14993:36:::1;15013:9;15024:4;14993:19;:36::i;:::-;14909:128:::0;:::o;5262:79::-;5300:7;5327:6;;;;;;;;;;;5320:13;;5262:79;:::o;12725:87::-;12764:13;12797:7;12790:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12725:87;:::o;22676:70::-;22723:15;:13;:15::i;:::-;22676:70::o;15045:131::-;5399:12;:10;:12::i;:::-;5389:22;;:6;;;;;;;;;;:22;;;5381:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15131:37:::1;15151:9;15162:5;15131:19;:37::i;:::-;15045:131:::0;:::o;11684:34::-;;;;;;;;;;;;;:::o;14183:269::-;14276:4;14293:129;14302:12;:10;:12::i;:::-;14316:7;14325:96;14364:15;14325:96;;;;;;;;;;;;;;;;;:11;:25;14337:12;:10;:12::i;:::-;14325:25;;;;;;;;;;;;;;;:34;14351:7;14325:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;14293:8;:129::i;:::-;14440:4;14433:11;;14183:269;;;;:::o;13141:167::-;13219:4;13236:42;13246:12;:10;:12::i;:::-;13260:9;13271:6;13236:9;:42::i;:::-;13296:4;13289:11;;13141:167;;;;:::o;23989:122::-;5399:12;:10;:12::i;:::-;5389:22;;:6;;;;;;;;;;:22;;;5381:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24088:15:::1;24071:14;:32;;;;23989:122:::0;:::o;17389:755::-;5399:12;:10;:12::i;:::-;5389:22;;:6;;;;;;;;;;:22;;;5381:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17474:1:::1;17452:24;;:10;;;;;;;;;;;:24;;;17444:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;17516:58;17533:4;17548:15;;;;;;;;;;;17566:7;;17516:8;:58::i;:::-;17616:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17598:55;;;17662:4;17669:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17598:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17585:10;;:107;;;;;;;;;;;;;;;;;;17703:15;;;;;;;;;;;:31;;;17742:21;17787:4;17807:24;17825:4;17807:9;:24::i;:::-;17846:1;17862::::0;17878:7:::1;:5;:7::i;:::-;17900:15;17703:213;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;17934:10;;;;;;;;;;;17927:26;;;17962:15;;;;;;;;;;;17980:14;17927:68;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18030:10;;;;;;;;;;;18006:6;;:35;;;;;;;;;;;;;;;;;;18081:15;18052:26;:44;;;;18132:4;18107:22;;:29;;;;;;;;;;;;;;;;;;17389:755::o:0;11596:23::-;;;;;;;;;;;;;:::o;15704:205::-;5399:12;:10;:12::i;:::-;5389:22;;:6;;;;;;;;;;:22;;;5381:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15835:18:::1;15811:21;:42;;;;15887:14;15864:20;:37;;;;15704:205:::0;;:::o;11875:42::-;;;;:::o;13316:143::-;13397:7;13424:11;:18;13436:5;13424:18;;;;;;;;;;;;;;;:27;13443:7;13424:27;;;;;;;;;;;;;;;;13417:34;;13316:143;;;;:::o;22286:382::-;22336:7;22356:13;22372:1;22356:17;;22388:9;22384:254;22406:13;;;;;;;;;;;:18;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22402:1;:24;22384:254;;;22448:14;22465:13;;;;;;;;;;;:27;;;22493:1;22465:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22448:47;;22510:14;22527:13;;;;;;;;;;;:17;;;22545:6;22527:25;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22510:42;;22590:9;22570:15;:29;22567:59;;22619:7;;;;;:::i;:::-;;;;22567:59;22433:205;;22428:3;;;;;:::i;:::-;;;;22384:254;;;;22655:5;22648:12;;;22286:382;:::o;14792:109::-;14853:4;14877:10;:16;14888:4;14877:16;;;;;;;;;;;;;;;;;;;;;;;;;14870:23;;14792:109;;;:::o;14590:193::-;5399:12;:10;:12::i;:::-;5389:22;;:6;;;;;;;;;;:22;;;5381:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14671:22:::1;;;;;;;;;;;14663:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;14770:5;14745:22;;:30;;;;;;;;;;;;;;;;;;14590:193::o:0;5632:244::-;5399:12;:10;:12::i;:::-;5389:22;;:6;;;;;;;;;;:22;;;5381:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5741:1:::1;5721:22;;:8;:22;;::::0;5713:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;5831:8;5802:38;;5823:6;::::0;::::1;;;;;;;;5802:38;;;;;;;;;;;;5860:8;5851:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;5632:244:::0;:::o;2403:98::-;2456:7;2483:10;2476:17;;2403:98;:::o;15917:587::-;10565:4;10546:16;;:23;;;;;;;;;;;;;;;;;;15987:14:::1;16004:21;16014:10;;;;;;;;;;;16004:9;:21::i;:::-;15987:38;;16036:20;16059:35;16073:20;;16059:9;:13;;:35;;;;:::i;:::-;16036:58;;16126:1;16108:15;:19;16105:392;;;16167:34;16173:10;;;;;;;;;;;16185:15;16167:5;:34::i;:::-;16216:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16270:44;16298:15;16270:23;;:27;;:44;;;;:::i;:::-;16244:23;:70;;;;16358:50;16378:29;16404:2;16378:21;;:25;;:29;;;;:::i;:::-;16358:15;:19;;:50;;;;:::i;:::-;16329:26;:79;;;;16428:57;16441:15;16458:26;;16428:57;;;;;;;:::i;:::-;;;;;;;;16105:392;15976:528;;10611:5:::0;10592:16;;:24;;;;;;;;;;;;;;;;;;15917:587::o;18429:337::-;18539:1;18522:19;;:5;:19;;;18514:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18620:1;18601:21;;:7;:21;;;18593:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18704:6;18674:11;:18;18686:5;18674:18;;;;;;;;;;;;;;;:27;18693:7;18674:27;;;;;;;;;;;;;;;:36;;;;18742:7;18726:32;;18735:5;18726:32;;;18751:6;18726:32;;;;;;:::i;:::-;;;;;;;;18429:337;;;:::o;18774:2950::-;18878:1;18862:18;;:4;:18;;;18854:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18955:1;18941:16;;:2;:16;;;18933:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;19025:1;19016:6;:10;19008:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;19083:17;19115:13;19132:18;:24;19151:4;19132:24;;;;;;;;;;;;;;;;;;;;;;;;;19131:25;:52;;;;;19161:18;:22;19180:2;19161:22;;;;;;;;;;;;;;;;;;;;;;;;;19160:23;19131:52;:71;;;;;19195:7;:5;:7::i;:::-;19187:15;;:4;:15;;;;19131:71;:88;;;;;19212:7;:5;:7::i;:::-;19206:13;;:2;:13;;;;19131:88;19115:104;;19241:8;;;;;;;;;;;19233:16;;:4;:16;;;;:34;;;;;19259:8;;;;;;;;;;;19253:14;;:2;:14;;;;19233:34;:59;;;;;19287:4;19271:21;;:4;:21;;;;19233:59;:82;;;;;19310:4;19296:19;;:2;:19;;;;19233:82;19230:2180;;;19335:8;19332:2067;;;19394:10;;;;;;;;;;;19386:18;;:4;:18;;;19382:587;;19432:22;;;;;;;;;;;19429:521;;;19483:15;:13;:15::i;:::-;19525:13;;;;;;;;;;;:17;;;19543:2;19547:15;19525:38;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19429:521;;;19632:27;19655:3;19632:18;19643:6;;19632;:10;;:18;;;;:::i;:::-;:22;;:27;;;;:::i;:::-;19620:39;;19686:22;19711:21;19722:9;19711:6;:10;;:21;;;;:::i;:::-;19686:46;;19759:21;19783:33;19801:14;19783:13;19793:2;19783:9;:13::i;:::-;:17;;:33;;;;:::i;:::-;19759:57;;19868:16;;19851:13;:33;;19843:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;19593:357;;19429:521;19382:587;19999:10;;;;;;;;;;;19991:18;;:4;:18;;;;:38;;;;;20019:10;;;;;;;;;;;20013:16;;:2;:16;;;19991:38;19987:951;;;20063:10;:16;20074:4;20063:16;;;;;;;;;;;;;;;;;;;;;;;;;20062:17;:36;;;;;20084:10;:14;20095:2;20084:14;;;;;;;;;;;;;;;;;;;;;;;;;20083:15;20062:36;20054:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;20182:22;;;;;;;;;;;20181:23;:58;;20238:1;20181:58;;;20207:28;20231:3;20207:19;20218:7;;20207:6;:10;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;20181:58;20169:70;;20284:26;;20265:15;:45;;:62;;;;;20314:13;;;;;;;;;;;20265:62;20262:657;;;20360:29;:27;:29::i;:::-;20262:657;;;20446:28;20477:24;20495:4;20477:9;:24::i;:::-;20446:55;;20555:1;20532:20;:24;20528:364;;;20623:19;20645:15;:13;:15::i;:::-;20623:37;;20723:11;20699:20;:35;;:56;;;;;20739:16;;;;;;;;;;;20738:17;20699:56;20695:166;;;20796:29;20813:11;20796:16;:29::i;:::-;20695:166;20558:334;20528:364;20419:500;20262:657;19987:951;20968:10;;;;;;;;;;;20960:18;;:4;:18;;;;:38;;;;;20988:10;;;;;;;;;;;20982:16;;:2;:16;;;;20960:38;20956:428;;;21023:19;21045:15;21055:4;21045:9;:15::i;:::-;21023:37;;21083:17;21103:13;21113:2;21103:9;:13::i;:::-;21083:33;;21148:10;:16;21159:4;21148:16;;;;;;;;;;;;;;;;;;;;;;;;;21147:17;:36;;;;;21169:10;:14;21180:2;21169:14;;;;;;;;;;;;;;;;;;;;;;;;;21168:15;21147:36;21139:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;21273:16;;21258:11;:31;;:64;;;;;21306:16;;21293:9;:29;;21258:64;21250:114;;;;;;;;;;;;:::i;:::-;;;;;;;;;21000:384;;20956:428;19332:2067;19230:2180;21427:22;21452:21;21463:9;21452:6;:10;;:21;;;;:::i;:::-;21427:46;;21502:27;21522:6;21502:9;:15;21512:4;21502:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;21484:9;:15;21494:4;21484:15;;;;;;;;;;;;;;;:45;;;;21556:33;21574:14;21556:9;:13;21566:2;21556:13;;;;;;;;;;;;;;;;:17;;:33;;;;:::i;:::-;21540:9;:13;21550:2;21540:13;;;;;;;;;;;;;;;:49;;;;21627:39;21656:9;21627;:24;21645:4;21627:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;21600:9;:24;21618:4;21600:24;;;;;;;;;;;;;;;:66;;;;21697:2;21682:34;;21691:4;21682:34;;;21701:14;21682:34;;;;;;:::i;:::-;;;;;;;;18843:2881;;;18774:2950;;;:::o;1262:192::-;1348:7;1381:1;1376;:6;;1384:12;1368:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1408:9;1424:1;1420;:5;;;;:::i;:::-;1408:17;;1445:1;1438:8;;;1262:192;;;;;:::o;929:181::-;987:7;1007:9;1023:1;1019;:5;;;;:::i;:::-;1007:17;;1048:1;1043;:6;;1035:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1101:1;1094:8;;;929:181;;;;:::o;16839:236::-;16926:9;16921:147;16945:9;;:16;;16941:1;:20;16921:147;;;16983:12;16998:9;;17008:1;16998:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;16983:27;;17052:4;17025:18;:24;17044:4;17025:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;16968:100;16963:3;;;;;:::i;:::-;;;;16921:147;;;;16839:236;;;:::o;23027:682::-;23153:21;23191:1;23177:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23153:40;;23222:4;23204;23209:1;23204:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;23248:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23238:4;23243:1;23238:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;23281:62;23298:4;23313:15;;;;;;;;;;;23331:11;23281:8;:62::i;:::-;23354:15;;;;;;;;;;;:66;;;23435:11;23461:1;23477:4;23504;23524:15;23354:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23563:18;23584:21;23563:42;;23616:17;23636;23651:1;23636:10;:14;;:17;;;;:::i;:::-;23616:37;;23674:6;;;;;;;;;;;23666:24;;:35;23691:9;23666:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23082:627;;;23027:682;:::o;15184:346::-;15279:9;15274:249;15298:9;:16;15294:1;:20;15274:249;;;15336:12;15351:9;15361:1;15351:12;;;;;;;;:::i;:::-;;;;;;;;15336:27;;15381:7;15378:134;;;15428:4;15409:10;:16;15420:4;15409:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;15378:134;;;15480:10;:16;15491:4;15480:16;;;;;;;;;;;;;;;;15473:23;;;;;;;;;;;15378:134;15321:202;15316:3;;;;;:::i;:::-;;;;15274:249;;;;15184:346;;:::o;21732:546::-;21779:22;;;;;;;;;;;21776:495;;;21822:9;21818:442;21840:13;;;;;;;;;;;:18;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21836:1;:24;21818:442;;;21886:14;21903:13;;;;;;;;;;;:27;;;21931:1;21903:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21886:47;;21952:14;21969:9;:17;21979:6;21969:17;;;;;;;;;;;;;;;;21952:34;;22017:1;22008:6;:10;22005:193;;;22063:29;22085:6;22063:9;:17;22073:6;22063:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;22043:9;:17;22053:6;22043:17;;;;;;;;;;;;;;;:49;;;;22142:36;22171:6;22142:9;:24;22160:4;22142:24;;;;;;;;;;;;;;;;:28;;:36;;;;:::i;:::-;22115:9;:24;22133:4;22115:24;;;;;;;;;;;;;;;:63;;;;22005:193;22216:13;;;;;;;;;;;:20;;;22237:6;22216:28;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21867:393;;21862:3;;;;;:::i;:::-;;;;21818:442;;;;21776:495;21732:546::o;1720:132::-;1778:7;1805:39;1809:1;1812;1805:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1798:46;;1720:132;;;;:::o;17083:294::-;17177:1;17158:21;;:7;:21;;;17150:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17238:18;17250:5;17238:7;;:11;;:18;;;;:::i;:::-;17228:7;:28;;;;17288:29;17311:5;17288:9;:18;17298:7;17288:18;;;;;;;;;;;;;;;;:22;;:29;;;;:::i;:::-;17267:9;:18;17277:7;17267:18;;;;;;;;;;;;;;;:50;;;;17359:1;17333:36;;17342:7;17333:36;;;17363:5;17333:36;;;;;;:::i;:::-;;;;;;;;17083:294;;:::o;1462:250::-;1520:7;1549:1;1544;:6;1540:47;;1574:1;1567:8;;;;1540:47;1599:9;1615:1;1611;:5;;;;:::i;:::-;1599:17;;1644:1;1639;1635;:5;;;;:::i;:::-;:10;1627:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1703:1;1696:8;;;1462:250;;;;;:::o;1118:136::-;1176:7;1203:43;1207:1;1210;1203:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1196:50;;1118:136;;;;:::o;1860:191::-;1946:7;1978:1;1974;:5;1981:12;1966:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2005:9;2021:1;2017;:5;;;;:::i;:::-;2005:17;;2042:1;2035:8;;;1860:191;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:90::-;1383:7;1426:5;1419:13;1412:21;1401:32;;1349:90;;;:::o;1445:109::-;1526:21;1541:5;1526:21;:::i;:::-;1521:3;1514:34;1445:109;;:::o;1560:210::-;1647:4;1685:2;1674:9;1670:18;1662:26;;1698:65;1760:1;1749:9;1745:17;1736:6;1698:65;:::i;:::-;1560:210;;;;:::o;1776:75::-;1809:6;1842:2;1836:9;1826:19;;1776:75;:::o;1857:117::-;1966:1;1963;1956:12;1980:117;2089:1;2086;2079:12;2103:126;2140:7;2180:42;2173:5;2169:54;2158:65;;2103:126;;;:::o;2235:96::-;2272:7;2301:24;2319:5;2301:24;:::i;:::-;2290:35;;2235:96;;;:::o;2337:122::-;2410:24;2428:5;2410:24;:::i;:::-;2403:5;2400:35;2390:63;;2449:1;2446;2439:12;2390:63;2337:122;:::o;2465:139::-;2511:5;2549:6;2536:20;2527:29;;2565:33;2592:5;2565:33;:::i;:::-;2465:139;;;;:::o;2610:77::-;2647:7;2676:5;2665:16;;2610:77;;;:::o;2693:122::-;2766:24;2784:5;2766:24;:::i;:::-;2759:5;2756:35;2746:63;;2805:1;2802;2795:12;2746:63;2693:122;:::o;2821:139::-;2867:5;2905:6;2892:20;2883:29;;2921:33;2948:5;2921:33;:::i;:::-;2821:139;;;;:::o;2966:474::-;3034:6;3042;3091:2;3079:9;3070:7;3066:23;3062:32;3059:119;;;3097:79;;:::i;:::-;3059:119;3217:1;3242:53;3287:7;3278:6;3267:9;3263:22;3242:53;:::i;:::-;3232:63;;3188:117;3344:2;3370:53;3415:7;3406:6;3395:9;3391:22;3370:53;:::i;:::-;3360:63;;3315:118;2966:474;;;;;:::o;3446:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:60::-;3809:3;3830:5;3823:12;;3781:60;;;:::o;3847:142::-;3897:9;3930:53;3948:34;3957:24;3975:5;3957:24;:::i;:::-;3948:34;:::i;:::-;3930:53;:::i;:::-;3917:66;;3847:142;;;:::o;3995:126::-;4045:9;4078:37;4109:5;4078:37;:::i;:::-;4065:50;;3995:126;;;:::o;4127:152::-;4203:9;4236:37;4267:5;4236:37;:::i;:::-;4223:50;;4127:152;;;:::o;4285:183::-;4398:63;4455:5;4398:63;:::i;:::-;4393:3;4386:76;4285:183;;:::o;4474:274::-;4593:4;4631:2;4620:9;4616:18;4608:26;;4644:97;4738:1;4727:9;4723:17;4714:6;4644:97;:::i;:::-;4474:274;;;;:::o;4754:118::-;4841:24;4859:5;4841:24;:::i;:::-;4836:3;4829:37;4754:118;;:::o;4878:222::-;4971:4;5009:2;4998:9;4994:18;4986:26;;5022:71;5090:1;5079:9;5075:17;5066:6;5022:71;:::i;:::-;4878:222;;;;:::o;5106:619::-;5183:6;5191;5199;5248:2;5236:9;5227:7;5223:23;5219:32;5216:119;;;5254:79;;:::i;:::-;5216:119;5374:1;5399:53;5444:7;5435:6;5424:9;5420:22;5399:53;:::i;:::-;5389:63;;5345:117;5501:2;5527:53;5572:7;5563:6;5552:9;5548:22;5527:53;:::i;:::-;5517:63;;5472:118;5629:2;5655:53;5700:7;5691:6;5680:9;5676:22;5655:53;:::i;:::-;5645:63;;5600:118;5106:619;;;;;:::o;5731:329::-;5790:6;5839:2;5827:9;5818:7;5814:23;5810:32;5807:119;;;5845:79;;:::i;:::-;5807:119;5965:1;5990:53;6035:7;6026:6;6015:9;6011:22;5990:53;:::i;:::-;5980:63;;5936:117;5731:329;;;;:::o;6066:86::-;6101:7;6141:4;6134:5;6130:16;6119:27;;6066:86;;;:::o;6158:112::-;6241:22;6257:5;6241:22;:::i;:::-;6236:3;6229:35;6158:112;;:::o;6276:214::-;6365:4;6403:2;6392:9;6388:18;6380:26;;6416:67;6480:1;6469:9;6465:17;6456:6;6416:67;:::i;:::-;6276:214;;;;:::o;6496:117::-;6605:1;6602;6595:12;6619:117;6728:1;6725;6718:12;6742:117;6851:1;6848;6841:12;6882:568;6955:8;6965:6;7015:3;7008:4;7000:6;6996:17;6992:27;6982:122;;7023:79;;:::i;:::-;6982:122;7136:6;7123:20;7113:30;;7166:18;7158:6;7155:30;7152:117;;;7188:79;;:::i;:::-;7152:117;7302:4;7294:6;7290:17;7278:29;;7356:3;7348:4;7340:6;7336:17;7326:8;7322:32;7319:41;7316:128;;;7363:79;;:::i;:::-;7316:128;6882:568;;;;;:::o;7456:116::-;7526:21;7541:5;7526:21;:::i;:::-;7519:5;7516:32;7506:60;;7562:1;7559;7552:12;7506:60;7456:116;:::o;7578:133::-;7621:5;7659:6;7646:20;7637:29;;7675:30;7699:5;7675:30;:::i;:::-;7578:133;;;;:::o;7717:698::-;7809:6;7817;7825;7874:2;7862:9;7853:7;7849:23;7845:32;7842:119;;;7880:79;;:::i;:::-;7842:119;8028:1;8017:9;8013:17;8000:31;8058:18;8050:6;8047:30;8044:117;;;8080:79;;:::i;:::-;8044:117;8193:80;8265:7;8256:6;8245:9;8241:22;8193:80;:::i;:::-;8175:98;;;;7971:312;8322:2;8348:50;8390:7;8381:6;8370:9;8366:22;8348:50;:::i;:::-;8338:60;;8293:115;7717:698;;;;;:::o;8421:118::-;8508:24;8526:5;8508:24;:::i;:::-;8503:3;8496:37;8421:118;;:::o;8545:222::-;8638:4;8676:2;8665:9;8661:18;8653:26;;8689:71;8757:1;8746:9;8742:17;8733:6;8689:71;:::i;:::-;8545:222;;;;:::o;8773:323::-;8829:6;8878:2;8866:9;8857:7;8853:23;8849:32;8846:119;;;8884:79;;:::i;:::-;8846:119;9004:1;9029:50;9071:7;9062:6;9051:9;9047:22;9029:50;:::i;:::-;9019:60;;8975:114;8773:323;;;;:::o;9102:474::-;9170:6;9178;9227:2;9215:9;9206:7;9202:23;9198:32;9195:119;;;9233:79;;:::i;:::-;9195:119;9353:1;9378:53;9423:7;9414:6;9403:9;9399:22;9378:53;:::i;:::-;9368:63;;9324:117;9480:2;9506:53;9551:7;9542:6;9531:9;9527:22;9506:53;:::i;:::-;9496:63;;9451:118;9102:474;;;;;:::o;9582:180::-;9630:77;9627:1;9620:88;9727:4;9724:1;9717:15;9751:4;9748:1;9741:15;9768:281;9851:27;9873:4;9851:27;:::i;:::-;9843:6;9839:40;9981:6;9969:10;9966:22;9945:18;9933:10;9930:34;9927:62;9924:88;;;9992:18;;:::i;:::-;9924:88;10032:10;10028:2;10021:22;9811:238;9768:281;;:::o;10055:129::-;10089:6;10116:20;;:::i;:::-;10106:30;;10145:33;10173:4;10165:6;10145:33;:::i;:::-;10055:129;;;:::o;10190:311::-;10267:4;10357:18;10349:6;10346:30;10343:56;;;10379:18;;:::i;:::-;10343:56;10429:4;10421:6;10417:17;10409:25;;10489:4;10483;10479:15;10471:23;;10190:311;;;:::o;10524:710::-;10620:5;10645:81;10661:64;10718:6;10661:64;:::i;:::-;10645:81;:::i;:::-;10636:90;;10746:5;10775:6;10768:5;10761:21;10809:4;10802:5;10798:16;10791:23;;10862:4;10854:6;10850:17;10842:6;10838:30;10891:3;10883:6;10880:15;10877:122;;;10910:79;;:::i;:::-;10877:122;11025:6;11008:220;11042:6;11037:3;11034:15;11008:220;;;11117:3;11146:37;11179:3;11167:10;11146:37;:::i;:::-;11141:3;11134:50;11213:4;11208:3;11204:14;11197:21;;11084:144;11068:4;11063:3;11059:14;11052:21;;11008:220;;;11012:21;10626:608;;10524:710;;;;;:::o;11257:370::-;11328:5;11377:3;11370:4;11362:6;11358:17;11354:27;11344:122;;11385:79;;:::i;:::-;11344:122;11502:6;11489:20;11527:94;11617:3;11609:6;11602:4;11594:6;11590:17;11527:94;:::i;:::-;11518:103;;11334:293;11257:370;;;;:::o;11633:539::-;11717:6;11766:2;11754:9;11745:7;11741:23;11737:32;11734:119;;;11772:79;;:::i;:::-;11734:119;11920:1;11909:9;11905:17;11892:31;11950:18;11942:6;11939:30;11936:117;;;11972:79;;:::i;:::-;11936:117;12077:78;12147:7;12138:6;12127:9;12123:22;12077:78;:::i;:::-;12067:88;;11863:302;11633:539;;;;:::o;12178:474::-;12246:6;12254;12303:2;12291:9;12282:7;12278:23;12274:32;12271:119;;;12309:79;;:::i;:::-;12271:119;12429:1;12454:53;12499:7;12490:6;12479:9;12475:22;12454:53;:::i;:::-;12444:63;;12400:117;12556:2;12582:53;12627:7;12618:6;12607:9;12603:22;12582:53;:::i;:::-;12572:63;;12527:118;12178:474;;;;;:::o;12658:173::-;12798:25;12794:1;12786:6;12782:14;12775:49;12658:173;:::o;12837:366::-;12979:3;13000:67;13064:2;13059:3;13000:67;:::i;:::-;12993:74;;13076:93;13165:3;13076:93;:::i;:::-;13194:2;13189:3;13185:12;13178:19;;12837:366;;;:::o;13209:419::-;13375:4;13413:2;13402:9;13398:18;13390:26;;13462:9;13456:4;13452:20;13448:1;13437:9;13433:17;13426:47;13490:131;13616:4;13490:131;:::i;:::-;13482:139;;13209:419;;;:::o;13634:180::-;13682:77;13679:1;13672:88;13779:4;13776:1;13769:15;13803:4;13800:1;13793:15;13820:320;13864:6;13901:1;13895:4;13891:12;13881:22;;13948:1;13942:4;13938:12;13969:18;13959:81;;14025:4;14017:6;14013:17;14003:27;;13959:81;14087:2;14079:6;14076:14;14056:18;14053:38;14050:84;;14106:18;;:::i;:::-;14050:84;13871:269;13820:320;;;:::o;14146:161::-;14286:13;14282:1;14274:6;14270:14;14263:37;14146:161;:::o;14313:366::-;14455:3;14476:67;14540:2;14535:3;14476:67;:::i;:::-;14469:74;;14552:93;14641:3;14552:93;:::i;:::-;14670:2;14665:3;14661:12;14654:19;;14313:366;;;:::o;14685:419::-;14851:4;14889:2;14878:9;14874:18;14866:26;;14938:9;14932:4;14928:20;14924:1;14913:9;14909:17;14902:47;14966:131;15092:4;14966:131;:::i;:::-;14958:139;;14685:419;;;:::o;15110:158::-;15250:10;15246:1;15238:6;15234:14;15227:34;15110:158;:::o;15274:365::-;15416:3;15437:66;15501:1;15496:3;15437:66;:::i;:::-;15430:73;;15512:93;15601:3;15512:93;:::i;:::-;15630:2;15625:3;15621:12;15614:19;;15274:365;;;:::o;15645:419::-;15811:4;15849:2;15838:9;15834:18;15826:26;;15898:9;15892:4;15888:20;15884:1;15873:9;15869:17;15862:47;15926:131;16052:4;15926:131;:::i;:::-;15918:139;;15645:419;;;:::o;16070:143::-;16127:5;16158:6;16152:13;16143:22;;16174:33;16201:5;16174:33;:::i;:::-;16070:143;;;;:::o;16219:351::-;16289:6;16338:2;16326:9;16317:7;16313:23;16309:32;16306:119;;;16344:79;;:::i;:::-;16306:119;16464:1;16489:64;16545:7;16536:6;16525:9;16521:22;16489:64;:::i;:::-;16479:74;;16435:128;16219:351;;;;:::o;16576:332::-;16697:4;16735:2;16724:9;16720:18;16712:26;;16748:71;16816:1;16805:9;16801:17;16792:6;16748:71;:::i;:::-;16829:72;16897:2;16886:9;16882:18;16873:6;16829:72;:::i;:::-;16576:332;;;;;:::o;16914:137::-;16968:5;16999:6;16993:13;16984:22;;17015:30;17039:5;17015:30;:::i;:::-;16914:137;;;;:::o;17057:345::-;17124:6;17173:2;17161:9;17152:7;17148:23;17144:32;17141:119;;;17179:79;;:::i;:::-;17141:119;17299:1;17324:61;17377:7;17368:6;17357:9;17353:22;17324:61;:::i;:::-;17314:71;;17270:125;17057:345;;;;:::o;17408:182::-;17548:34;17544:1;17536:6;17532:14;17525:58;17408:182;:::o;17596:366::-;17738:3;17759:67;17823:2;17818:3;17759:67;:::i;:::-;17752:74;;17835:93;17924:3;17835:93;:::i;:::-;17953:2;17948:3;17944:12;17937:19;;17596:366;;;:::o;17968:419::-;18134:4;18172:2;18161:9;18157:18;18149:26;;18221:9;18215:4;18211:20;18207:1;18196:9;18192:17;18185:47;18249:131;18375:4;18249:131;:::i;:::-;18241:139;;17968:419;;;:::o;18393:180::-;18441:77;18438:1;18431:88;18538:4;18535:1;18528:15;18562:4;18559:1;18552:15;18579:410;18619:7;18642:20;18660:1;18642:20;:::i;:::-;18637:25;;18676:20;18694:1;18676:20;:::i;:::-;18671:25;;18731:1;18728;18724:9;18753:30;18771:11;18753:30;:::i;:::-;18742:41;;18932:1;18923:7;18919:15;18916:1;18913:22;18893:1;18886:9;18866:83;18843:139;;18962:18;;:::i;:::-;18843:139;18627:362;18579:410;;;;:::o;18995:143::-;19052:5;19083:6;19077:13;19068:22;;19099:33;19126:5;19099:33;:::i;:::-;18995:143;;;;:::o;19144:351::-;19214:6;19263:2;19251:9;19242:7;19238:23;19234:32;19231:119;;;19269:79;;:::i;:::-;19231:119;19389:1;19414:64;19470:7;19461:6;19450:9;19446:22;19414:64;:::i;:::-;19404:74;;19360:128;19144:351;;;;:::o;19501:180::-;19549:77;19546:1;19539:88;19646:4;19643:1;19636:15;19670:4;19667:1;19660:15;19687:114;19754:6;19788:5;19782:12;19772:22;;19687:114;;;:::o;19807:184::-;19906:11;19940:6;19935:3;19928:19;19980:4;19975:3;19971:14;19956:29;;19807:184;;;;:::o;19997:132::-;20064:4;20087:3;20079:11;;20117:4;20112:3;20108:14;20100:22;;19997:132;;;:::o;20135:108::-;20212:24;20230:5;20212:24;:::i;:::-;20207:3;20200:37;20135:108;;:::o;20249:179::-;20318:10;20339:46;20381:3;20373:6;20339:46;:::i;:::-;20417:4;20412:3;20408:14;20394:28;;20249:179;;;;:::o;20434:113::-;20504:4;20536;20531:3;20527:14;20519:22;;20434:113;;;:::o;20583:732::-;20702:3;20731:54;20779:5;20731:54;:::i;:::-;20801:86;20880:6;20875:3;20801:86;:::i;:::-;20794:93;;20911:56;20961:5;20911:56;:::i;:::-;20990:7;21021:1;21006:284;21031:6;21028:1;21025:13;21006:284;;;21107:6;21101:13;21134:63;21193:3;21178:13;21134:63;:::i;:::-;21127:70;;21220:60;21273:6;21220:60;:::i;:::-;21210:70;;21066:224;21053:1;21050;21046:9;21041:14;;21006:284;;;21010:14;21306:3;21299:10;;20707:608;;;20583:732;;;;:::o;21321:483::-;21492:4;21530:2;21519:9;21515:18;21507:26;;21543:71;21611:1;21600:9;21596:17;21587:6;21543:71;:::i;:::-;21661:9;21655:4;21651:20;21646:2;21635:9;21631:18;21624:48;21689:108;21792:4;21783:6;21689:108;:::i;:::-;21681:116;;21321:483;;;;;:::o;21810:311::-;21887:4;21977:18;21969:6;21966:30;21963:56;;;21999:18;;:::i;:::-;21963:56;22049:4;22041:6;22037:17;22029:25;;22109:4;22103;22099:15;22091:23;;21810:311;;;:::o;22144:732::-;22251:5;22276:81;22292:64;22349:6;22292:64;:::i;:::-;22276:81;:::i;:::-;22267:90;;22377:5;22406:6;22399:5;22392:21;22440:4;22433:5;22429:16;22422:23;;22493:4;22485:6;22481:17;22473:6;22469:30;22522:3;22514:6;22511:15;22508:122;;;22541:79;;:::i;:::-;22508:122;22656:6;22639:231;22673:6;22668:3;22665:15;22639:231;;;22748:3;22777:48;22821:3;22809:10;22777:48;:::i;:::-;22772:3;22765:61;22855:4;22850:3;22846:14;22839:21;;22715:155;22699:4;22694:3;22690:14;22683:21;;22639:231;;;22643:21;22257:619;;22144:732;;;;;:::o;22899:385::-;22981:5;23030:3;23023:4;23015:6;23011:17;23007:27;22997:122;;23038:79;;:::i;:::-;22997:122;23148:6;23142:13;23173:105;23274:3;23266:6;23259:4;23251:6;23247:17;23173:105;:::i;:::-;23164:114;;22987:297;22899:385;;;;:::o;23290:554::-;23385:6;23434:2;23422:9;23413:7;23409:23;23405:32;23402:119;;;23440:79;;:::i;:::-;23402:119;23581:1;23570:9;23566:17;23560:24;23611:18;23603:6;23600:30;23597:117;;;23633:79;;:::i;:::-;23597:117;23738:89;23819:7;23810:6;23799:9;23795:22;23738:89;:::i;:::-;23728:99;;23531:306;23290:554;;;;:::o;23850:175::-;23990:27;23986:1;23978:6;23974:14;23967:51;23850:175;:::o;24031:366::-;24173:3;24194:67;24258:2;24253:3;24194:67;:::i;:::-;24187:74;;24270:93;24359:3;24270:93;:::i;:::-;24388:2;24383:3;24379:12;24372:19;;24031:366;;;:::o;24403:419::-;24569:4;24607:2;24596:9;24592:18;24584:26;;24656:9;24650:4;24646:20;24642:1;24631:9;24627:17;24620:47;24684:131;24810:4;24684:131;:::i;:::-;24676:139;;24403:419;;;:::o;24828:332::-;24949:4;24987:2;24976:9;24972:18;24964:26;;25000:71;25068:1;25057:9;25053:17;25044:6;25000:71;:::i;:::-;25081:72;25149:2;25138:9;25134:18;25125:6;25081:72;:::i;:::-;24828:332;;;;;:::o;25166:85::-;25211:7;25240:5;25229:16;;25166:85;;;:::o;25257:158::-;25315:9;25348:61;25366:42;25375:32;25401:5;25375:32;:::i;:::-;25366:42;:::i;:::-;25348:61;:::i;:::-;25335:74;;25257:158;;;:::o;25421:147::-;25516:45;25555:5;25516:45;:::i;:::-;25511:3;25504:58;25421:147;;:::o;25574:807::-;25823:4;25861:3;25850:9;25846:19;25838:27;;25875:71;25943:1;25932:9;25928:17;25919:6;25875:71;:::i;:::-;25956:72;26024:2;26013:9;26009:18;26000:6;25956:72;:::i;:::-;26038:80;26114:2;26103:9;26099:18;26090:6;26038:80;:::i;:::-;26128;26204:2;26193:9;26189:18;26180:6;26128:80;:::i;:::-;26218:73;26286:3;26275:9;26271:19;26262:6;26218:73;:::i;:::-;26301;26369:3;26358:9;26354:19;26345:6;26301:73;:::i;:::-;25574:807;;;;;;;;;:::o;26387:663::-;26475:6;26483;26491;26540:2;26528:9;26519:7;26515:23;26511:32;26508:119;;;26546:79;;:::i;:::-;26508:119;26666:1;26691:64;26747:7;26738:6;26727:9;26723:22;26691:64;:::i;:::-;26681:74;;26637:128;26804:2;26830:64;26886:7;26877:6;26866:9;26862:22;26830:64;:::i;:::-;26820:74;;26775:129;26943:2;26969:64;27025:7;27016:6;27005:9;27001:22;26969:64;:::i;:::-;26959:74;;26914:129;26387:663;;;;;:::o;27056:233::-;27095:3;27118:24;27136:5;27118:24;:::i;:::-;27109:33;;27164:66;27157:5;27154:77;27151:103;;27234:18;;:::i;:::-;27151:103;27281:1;27274:5;27270:13;27263:20;;27056:233;;;:::o;27295:224::-;27435:34;27431:1;27423:6;27419:14;27412:58;27504:7;27499:2;27491:6;27487:15;27480:32;27295:224;:::o;27525:366::-;27667:3;27688:67;27752:2;27747:3;27688:67;:::i;:::-;27681:74;;27764:93;27853:3;27764:93;:::i;:::-;27882:2;27877:3;27873:12;27866:19;;27525:366;;;:::o;27897:419::-;28063:4;28101:2;28090:9;28086:18;28078:26;;28150:9;28144:4;28140:20;28136:1;28125:9;28121:17;28114:47;28178:131;28304:4;28178:131;:::i;:::-;28170:139;;27897:419;;;:::o;28322:225::-;28462:34;28458:1;28450:6;28446:14;28439:58;28531:8;28526:2;28518:6;28514:15;28507:33;28322:225;:::o;28553:366::-;28695:3;28716:67;28780:2;28775:3;28716:67;:::i;:::-;28709:74;;28792:93;28881:3;28792:93;:::i;:::-;28910:2;28905:3;28901:12;28894:19;;28553:366;;;:::o;28925:419::-;29091:4;29129:2;29118:9;29114:18;29106:26;;29178:9;29172:4;29168:20;29164:1;29153:9;29149:17;29142:47;29206:131;29332:4;29206:131;:::i;:::-;29198:139;;28925:419;;;:::o;29350:332::-;29471:4;29509:2;29498:9;29494:18;29486:26;;29522:71;29590:1;29579:9;29575:17;29566:6;29522:71;:::i;:::-;29603:72;29671:2;29660:9;29656:18;29647:6;29603:72;:::i;:::-;29350:332;;;;;:::o;29688:223::-;29828:34;29824:1;29816:6;29812:14;29805:58;29897:6;29892:2;29884:6;29880:15;29873:31;29688:223;:::o;29917:366::-;30059:3;30080:67;30144:2;30139:3;30080:67;:::i;:::-;30073:74;;30156:93;30245:3;30156:93;:::i;:::-;30274:2;30269:3;30265:12;30258:19;;29917:366;;;:::o;30289:419::-;30455:4;30493:2;30482:9;30478:18;30470:26;;30542:9;30536:4;30532:20;30528:1;30517:9;30513:17;30506:47;30570:131;30696:4;30570:131;:::i;:::-;30562:139;;30289:419;;;:::o;30714:221::-;30854:34;30850:1;30842:6;30838:14;30831:58;30923:4;30918:2;30910:6;30906:15;30899:29;30714:221;:::o;30941:366::-;31083:3;31104:67;31168:2;31163:3;31104:67;:::i;:::-;31097:74;;31180:93;31269:3;31180:93;:::i;:::-;31298:2;31293:3;31289:12;31282:19;;30941:366;;;:::o;31313:419::-;31479:4;31517:2;31506:9;31502:18;31494:26;;31566:9;31560:4;31556:20;31552:1;31541:9;31537:17;31530:47;31594:131;31720:4;31594:131;:::i;:::-;31586:139;;31313:419;;;:::o;31738:224::-;31878:34;31874:1;31866:6;31862:14;31855:58;31947:7;31942:2;31934:6;31930:15;31923:32;31738:224;:::o;31968:366::-;32110:3;32131:67;32195:2;32190:3;32131:67;:::i;:::-;32124:74;;32207:93;32296:3;32207:93;:::i;:::-;32325:2;32320:3;32316:12;32309:19;;31968:366;;;:::o;32340:419::-;32506:4;32544:2;32533:9;32529:18;32521:26;;32593:9;32587:4;32583:20;32579:1;32568:9;32564:17;32557:47;32621:131;32747:4;32621:131;:::i;:::-;32613:139;;32340:419;;;:::o;32765:222::-;32905:34;32901:1;32893:6;32889:14;32882:58;32974:5;32969:2;32961:6;32957:15;32950:30;32765:222;:::o;32993:366::-;33135:3;33156:67;33220:2;33215:3;33156:67;:::i;:::-;33149:74;;33232:93;33321:3;33232:93;:::i;:::-;33350:2;33345:3;33341:12;33334:19;;32993:366;;;:::o;33365:419::-;33531:4;33569:2;33558:9;33554:18;33546:26;;33618:9;33612:4;33608:20;33604:1;33593:9;33589:17;33582:47;33646:131;33772:4;33646:131;:::i;:::-;33638:139;;33365:419;;;:::o;33790:228::-;33930:34;33926:1;33918:6;33914:14;33907:58;33999:11;33994:2;33986:6;33982:15;33975:36;33790:228;:::o;34024:366::-;34166:3;34187:67;34251:2;34246:3;34187:67;:::i;:::-;34180:74;;34263:93;34352:3;34263:93;:::i;:::-;34381:2;34376:3;34372:12;34365:19;;34024:366;;;:::o;34396:419::-;34562:4;34600:2;34589:9;34585:18;34577:26;;34649:9;34643:4;34639:20;34635:1;34624:9;34620:17;34613:47;34677:131;34803:4;34677:131;:::i;:::-;34669:139;;34396:419;;;:::o;34821:224::-;34961:34;34957:1;34949:6;34945:14;34938:58;35030:7;35025:2;35017:6;35013:15;35006:32;34821:224;:::o;35051:366::-;35193:3;35214:67;35278:2;35273:3;35214:67;:::i;:::-;35207:74;;35290:93;35379:3;35290:93;:::i;:::-;35408:2;35403:3;35399:12;35392:19;;35051:366;;;:::o;35423:419::-;35589:4;35627:2;35616:9;35612:18;35604:26;;35676:9;35670:4;35666:20;35662:1;35651:9;35647:17;35640:47;35704:131;35830:4;35704:131;:::i;:::-;35696:139;;35423:419;;;:::o;35848:222::-;35988:34;35984:1;35976:6;35972:14;35965:58;36057:5;36052:2;36044:6;36040:15;36033:30;35848:222;:::o;36076:366::-;36218:3;36239:67;36303:2;36298:3;36239:67;:::i;:::-;36232:74;;36315:93;36404:3;36315:93;:::i;:::-;36433:2;36428:3;36424:12;36417:19;;36076:366;;;:::o;36448:419::-;36614:4;36652:2;36641:9;36637:18;36629:26;;36701:9;36695:4;36691:20;36687:1;36676:9;36672:17;36665:47;36729:131;36855:4;36729:131;:::i;:::-;36721:139;;36448:419;;;:::o;36873:226::-;37013:34;37009:1;37001:6;36997:14;36990:58;37082:9;37077:2;37069:6;37065:15;37058:34;36873:226;:::o;37105:366::-;37247:3;37268:67;37332:2;37327:3;37268:67;:::i;:::-;37261:74;;37344:93;37433:3;37344:93;:::i;:::-;37462:2;37457:3;37453:12;37446:19;;37105:366;;;:::o;37477:419::-;37643:4;37681:2;37670:9;37666:18;37658:26;;37730:9;37724:4;37720:20;37716:1;37705:9;37701:17;37694:47;37758:131;37884:4;37758:131;:::i;:::-;37750:139;;37477:419;;;:::o;37902:194::-;37942:4;37962:20;37980:1;37962:20;:::i;:::-;37957:25;;37996:20;38014:1;37996:20;:::i;:::-;37991:25;;38040:1;38037;38033:9;38025:17;;38064:1;38058:4;38055:11;38052:37;;;38069:18;;:::i;:::-;38052:37;37902:194;;;;:::o;38102:191::-;38142:3;38161:20;38179:1;38161:20;:::i;:::-;38156:25;;38195:20;38213:1;38195:20;:::i;:::-;38190:25;;38238:1;38235;38231:9;38224:16;;38259:3;38256:1;38253:10;38250:36;;;38266:18;;:::i;:::-;38250:36;38102:191;;;;:::o;38299:177::-;38439:29;38435:1;38427:6;38423:14;38416:53;38299:177;:::o;38482:366::-;38624:3;38645:67;38709:2;38704:3;38645:67;:::i;:::-;38638:74;;38721:93;38810:3;38721:93;:::i;:::-;38839:2;38834:3;38830:12;38823:19;;38482:366;;;:::o;38854:419::-;39020:4;39058:2;39047:9;39043:18;39035:26;;39107:9;39101:4;39097:20;39093:1;39082:9;39078:17;39071:47;39135:131;39261:4;39135:131;:::i;:::-;39127:139;;38854:419;;;:::o;39279:831::-;39542:4;39580:3;39569:9;39565:19;39557:27;;39594:71;39662:1;39651:9;39647:17;39638:6;39594:71;:::i;:::-;39675:80;39751:2;39740:9;39736:18;39727:6;39675:80;:::i;:::-;39802:9;39796:4;39792:20;39787:2;39776:9;39772:18;39765:48;39830:108;39933:4;39924:6;39830:108;:::i;:::-;39822:116;;39948:72;40016:2;40005:9;40001:18;39992:6;39948:72;:::i;:::-;40030:73;40098:3;40087:9;40083:19;40074:6;40030:73;:::i;:::-;39279:831;;;;;;;;:::o;40116:220::-;40256:34;40252:1;40244:6;40240:14;40233:58;40325:3;40320:2;40312:6;40308:15;40301:28;40116:220;:::o;40342:366::-;40484:3;40505:67;40569:2;40564:3;40505:67;:::i;:::-;40498:74;;40581:93;40670:3;40581:93;:::i;:::-;40699:2;40694:3;40690:12;40683:19;;40342:366;;;:::o;40714:419::-;40880:4;40918:2;40907:9;40903:18;40895:26;;40967:9;40961:4;40957:20;40953:1;40942:9;40938:17;40931:47;40995:131;41121:4;40995:131;:::i;:::-;40987:139;;40714:419;;;:::o;41139:180::-;41187:77;41184:1;41177:88;41284:4;41281:1;41274:15;41308:4;41305:1;41298:15;41325:185;41365:1;41382:20;41400:1;41382:20;:::i;:::-;41377:25;;41416:20;41434:1;41416:20;:::i;:::-;41411:25;;41455:1;41445:35;;41460:18;;:::i;:::-;41445:35;41502:1;41499;41495:9;41490:14;;41325:185;;;;:::o;41516:220::-;41656:34;41652:1;41644:6;41640:14;41633:58;41725:3;41720:2;41712:6;41708:15;41701:28;41516:220;:::o;41742:366::-;41884:3;41905:67;41969:2;41964:3;41905:67;:::i;:::-;41898:74;;41981:93;42070:3;41981:93;:::i;:::-;42099:2;42094:3;42090:12;42083:19;;41742:366;;;:::o;42114:419::-;42280:4;42318:2;42307:9;42303:18;42295:26;;42367:9;42361:4;42357:20;42353:1;42342:9;42338:17;42331:47;42395:131;42521:4;42395:131;:::i;:::-;42387:139;;42114:419;;;:::o

Swarm Source

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