ETH Price: $3,389.00 (-0.40%)
Gas: 22 Gwei

Token

Elden Knights (KNIGHTS)
 

Overview

Max Total Supply

1,000,000,000,000,000 KNIGHTS

Holders

201

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
11,883,237,159.219443221 KNIGHTS

Value
$0.00
0xb21d0d2061125414e7ec56267240745a9a9c6fb2
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:
EldenKnights

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-09-21
*/

/**
 ______ _     _               _  __      _       _     _       
 |  ____| |   | |            | |/ /     (_)     | |   | |      
 | |__  | | __| | ___ _ __   | ' / _ __  _  __ _| |__ | |_ ___ 
 |  __| | |/ _` |/ _ \ '_ \  |  < | '_ \| |/ _` | '_ \| __/ __|
 | |____| | (_| |  __/ | | | | . \| | | | | (_| | | | | |_\__ \
 |______|_|\__,_|\___|_| |_| |_|\_\_| |_|_|\__, |_| |_|\__|___/
                                            __/ |              
                                           |___/              
Website https://www.EldenKnights.com
Telegram https://t.me/EldenKnightsOfficial
Twitter https://www.twitter.com/@Elden_Knights
*/ 

// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.11;

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

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

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

contract ERC20 is Context, IERC20 {
    using SafeMath for uint256;

    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
	
    uint256 private _totalSupply;

    string private _name;
    string private _symbol;
    uint8 private _decimals;

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

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

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

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

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

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

    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
	
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

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

    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
        _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 _transfer(address sender, address recipient, uint256 amount) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        _beforeTokenTransfer(sender, recipient, amount);
        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }
	
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");
        _beforeTokenTransfer(address(0), account, amount);
        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }
	
    function _approve(address owner, address spender, uint256 amount) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
	
    function _setupDecimals(uint8 decimals_) internal virtual {
        _decimals = decimals_;
    }
	
    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { }
}

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

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

interface IUniswapV2Router02 is IUniswapV2Router01 {
    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;
}

library SafeMath {
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        uint256 c = a + b;
        if (c < a) return (false, 0);
        return (true, c);
    }
	
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b > a) return (false, 0);
        return (true, a - b);
    }
	
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (a == 0) return (true, 0);
        uint256 c = a * b;
        if (c / a != b) return (false, 0);
        return (true, c);
    }
	
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b == 0) return (false, 0);
        return (true, a / b);
    }
	
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b == 0) return (false, 0);
        return (true, a % b);
    }
	
    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) {
        require(b <= a, "SafeMath: subtraction overflow");
        return a - b;
    }
	
    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) {
        require(b > 0, "SafeMath: division by zero");
        return a / b;
    }
	
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0, "SafeMath: modulo by zero");
        return a % b;
    }
	
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        return a - b;
    }
	
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        return a / b;
    }
	
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        return a % b;
    }
}

library SafeMathInt {
  function mul(int256 a, int256 b) internal pure returns (int256) {
    require(!(a == - 2**255 && b == -1) && !(b == - 2**255 && a == -1));
    int256 c = a * b;
    require((b == 0) || (c / b == a));
    return c;
  }

  function div(int256 a, int256 b) internal pure returns (int256) {
    require(!(a == - 2**255 && b == -1) && (b > 0));
    return a / b;
  }

  function sub(int256 a, int256 b) internal pure returns (int256) {
    require((b >= 0 && a - b <= a) || (b < 0 && a - b > a));
    return a - b;
  }

  function add(int256 a, int256 b) internal pure returns (int256) {
    int256 c = a + b;
    require((b >= 0 && c >= a) || (b < 0 && c < a));
    return c;
  }

  function toUint256Safe(int256 a) internal pure returns (uint256) {
    require(a >= 0);
    return uint256(a);
  }
}

library SafeMathUint {
  function toInt256Safe(uint256 a) internal pure returns (int256) {
    int256 b = int256(a);
    require(b >= 0);
    return b;
  }
}

contract EldenKnights is ERC20, Ownable {
    using SafeMath for uint256;
	
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
	
    uint256[] public gameDevelopmentFee;
	uint256[] public marketingFee;
    uint256[] public liquidityFee;
		
	uint256 private gameDevelopmentFeeTotal;
	uint256 private marketingFeeTotal;
	uint256 private liquidityFeeTotal;
	
    uint256 public swapTokensAtAmount = 100000000 * (10**9);
	uint256 public maxTxAmount = 1000000000000 * (10**9);
	uint256 public maxSellPerDay = 1000000000000 * (10**9);
	
	address public gameDevelopmentFeeAddress = 0x1586aa1Fc3d67C95c2FE309fCCdBAaDB82cfB70F;
	address public marketingFeeAddress = 0x373D92Bf1A1db2e428C698d1F7835fb829D4DE03;
	
	bool private swapping;
	bool public swapEnable = true;
	
    mapping (address => bool) public isExcludedFromFees;
	mapping (address => bool) public isExcludedFromMaxTxAmount;
    mapping (address => bool) public automatedMarketMakerPairs;
	mapping (address => bool) public isExcludedFromDailySaleLimit;
	mapping (uint256 => mapping(address => uint256)) public dailyTransfers;
	mapping (address => bool) public isBlackListed;
	
    event ExcludeFromFees(address indexed account, bool isExcluded);
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
	event AddedBlackList(address _address);
    event RemovedBlackList(address _address);
	
    constructor() ERC20("Elden Knights", "KNIGHTS") {
    	IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair   = _uniswapV2Pair;
		
        _setAutomatedMarketMakerPair(_uniswapV2Pair, true);
		
        excludeFromFees(address(this), true);
		excludeFromFees(owner(), true);
		
		isExcludedFromMaxTxAmount[owner()] = true;
		
		isExcludedFromDailySaleLimit[address(this)] = true;
        isExcludedFromDailySaleLimit[owner()] = true;
		
		gameDevelopmentFee.push(300);
		gameDevelopmentFee.push(300);
		gameDevelopmentFee.push(300);
		
		liquidityFee.push(300);
		liquidityFee.push(300);
		liquidityFee.push(300);
		
		marketingFee.push(300);
		marketingFee.push(300);
		marketingFee.push(300);
		
        _mint(owner(), 1000000000000000 * (10**9));
    }
	
    receive() external payable {
  	}
	
	function setSwapTokensAtAmount(uint256 amount) external onlyOwner {
  	     require(amount <= totalSupply(), "Amount cannot be over the total supply.");
		 swapTokensAtAmount = amount;
  	}
	
	function setMaxTxAmount(uint256 amount) external onlyOwner() {
	     require(amount <= totalSupply() && amount >= 1000000 * (10**9), "amount is not correct.");
         maxTxAmount = amount;
    }
	
	function setMaxSellPerDay(uint256 amount) external onlyOwner() {
	     require(amount <= totalSupply() && amount >= 1000000 * (10**9), "amount is not correct.");
         maxSellPerDay = amount;
    }
	
	function setSwapEnable(bool _enabled) public onlyOwner {
        swapEnable = _enabled;
    }
	
	function setGameDevelopmentFee(uint256 buy, uint256 sell, uint256 p2p) external onlyOwner {
	    require(liquidityFee[0].add(marketingFee[0]).add(buy)  <= 2500 , "Max fee limit reached for 'BUY'");
		require(liquidityFee[1].add(marketingFee[1]).add(sell) <= 2500 , "Max fee limit reached for 'SELL'");
		require(liquidityFee[2].add(marketingFee[2]).add(p2p)  <= 2500 , "Max fee limit reached for 'P2P'");
		
		gameDevelopmentFee[0] = buy;
		gameDevelopmentFee[1] = sell;
		gameDevelopmentFee[2] = p2p;
	}
	
	function setMarketingFee(uint256 buy, uint256 sell, uint256 p2p) external onlyOwner {
	    require(liquidityFee[0].add(gameDevelopmentFee[0]).add(buy)  <= 2500 , "Max fee limit reached for 'BUY'");
		require(liquidityFee[1].add(gameDevelopmentFee[1]).add(sell) <= 2500 , "Max fee limit reached for 'SELL'");
		require(liquidityFee[2].add(gameDevelopmentFee[2]).add(p2p)  <= 2500 , "Max fee limit reached for 'P2P'");
		
		marketingFee[0] = buy;
		marketingFee[1] = sell;
		marketingFee[2] = p2p;
	}
	
	function setLiquidityFee(uint256 buy, uint256 sell, uint256 p2p) external onlyOwner {
	    require(gameDevelopmentFee[0].add(marketingFee[0]).add(buy)  <= 2500 , "Max fee limit reached for 'BUY'");
		require(gameDevelopmentFee[1].add(marketingFee[1]).add(sell) <= 2500 , "Max fee limit reached for 'SELL'");
		require(gameDevelopmentFee[2].add(marketingFee[2]).add(p2p)  <= 2500 , "Max fee limit reached for 'P2P'");
		
		liquidityFee[0] = buy;
		liquidityFee[1] = sell;
		liquidityFee[2] = p2p;
	}
	
    function excludeFromFees(address account, bool excluded) public onlyOwner {
        require(isExcludedFromFees[account] != excluded, "Account is already the value of 'excluded'");
        isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }
	
	function excludeFromMaxTxAmount(address account, bool excluded) public onlyOwner {
		require(isExcludedFromMaxTxAmount[account] != excluded, "APAY: Account is already the value of 'excluded'");
		isExcludedFromMaxTxAmount[account] = excluded;
	}
	
	function excludeFromDailySaleLimit(address account, bool excluded) public onlyOwner {
        require(isExcludedFromDailySaleLimit[account] != excluded, "Daily sale limit exclusion is already the value of 'excluded'");
        isExcludedFromDailySaleLimit[account] = excluded;
    }
	
    function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner {
        require(pair != uniswapV2Pair, "The Uniswap pair cannot be removed from automatedMarketMakerPairs");
        _setAutomatedMarketMakerPair(pair, value);
    }
	
    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        require(automatedMarketMakerPairs[pair] != value, "Automated market maker pair is already set to that value");
        automatedMarketMakerPairs[pair] = value;
        emit SetAutomatedMarketMakerPair(pair, value);
    }
	
	function setGameDevelopmentFeeAddress(address payable newAddress) external onlyOwner() {
       require(newAddress != address(0), "zero-address not allowed");
	   gameDevelopmentFeeAddress = newAddress;
    }
	
	function setMarketingFeeAddress(address payable newAddress) external onlyOwner() {
       require(newAddress != address(0), "zero-address not allowed");
	   marketingFeeAddress = newAddress;
    }
	
	function addToBlackList (address _wallet) public onlyOwner {
        isBlackListed[_wallet] = true;
        emit AddedBlackList(_wallet);
    }
	
    function removeFromBlackList (address _wallet) public onlyOwner {
        isBlackListed[_wallet] = false;
        emit RemovedBlackList(_wallet);
    }
	
	function _transfer(address from, address to, uint256 amount) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
		require(!isBlackListed[from], "ERC20: transfer to is blacklisted");
		require(!isBlackListed[to], "ERC20: transfer from is blacklisted");
		
        if(!isExcludedFromMaxTxAmount[from]) 
		{
		   require(amount <= maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
		}
		
		if (!isExcludedFromDailySaleLimit[from] && !automatedMarketMakerPairs[from] && automatedMarketMakerPairs[to]) 
		{
		     require(dailyTransfers[getDay()][from].add(amount) <= maxSellPerDay, "This account has exceeded max daily sell limit");
			 dailyTransfers[getDay()][from] = dailyTransfers[getDay()][from].add(amount);
		}
		
		uint256 contractTokenBalance = balanceOf(address(this));
		bool canSwap = contractTokenBalance >= swapTokensAtAmount;
		
		if (!swapping && canSwap && swapEnable && automatedMarketMakerPairs[to]) {
			swapping = true;
			
			uint256 tokenToDevelopment = gameDevelopmentFeeTotal;
			uint256 tokenToMarketing   = marketingFeeTotal;
			uint256 tokenToLiquidity   = liquidityFeeTotal;
			uint256 liquidityHalf      = tokenToLiquidity.div(2);
			
			uint256 tokenToSwap = tokenToDevelopment.add(tokenToMarketing).add(liquidityHalf);
			
            uint256 initialBalance = address(this).balance;			
			swapTokensForETH(swapTokensAtAmount);
			uint256 newBalance = address(this).balance.sub(initialBalance);
			
			uint256 marketingPart    = newBalance.mul(tokenToMarketing).div(tokenToSwap);
			uint256 liquidityPart    = newBalance.mul(liquidityHalf).div(tokenToSwap);
			uint256 developmentPart  = newBalance.sub(marketingPart).sub(liquidityPart);
			
			if(marketingPart > 0) 
			{
			    payable(marketingFeeAddress).transfer(marketingPart);
			    marketingFeeTotal = marketingFeeTotal.sub(swapTokensAtAmount.mul(tokenToMarketing).div(tokenToSwap));
			}
			
			if(liquidityPart > 0) 
			{
			    addLiquidity(liquidityHalf, liquidityPart);
			    liquidityFeeTotal = liquidityFeeTotal.sub(swapTokensAtAmount.mul(tokenToLiquidity).div(tokenToSwap));
			}
			
			if(developmentPart > 0) 
			{
			    payable(gameDevelopmentFeeAddress).transfer(developmentPart);
			    gameDevelopmentFeeTotal = gameDevelopmentFeeTotal.sub(swapTokensAtAmount.mul(tokenToDevelopment).div(tokenToSwap));
			}
			
			swapping = false;
		}
		
        bool takeFee = !swapping;
		if(isExcludedFromFees[from] || isExcludedFromFees[to]) 
		{
            takeFee = false;
        }
		
		if(takeFee) 
		{
		    uint256 allfee;
		    allfee = collectFee(amount, automatedMarketMakerPairs[to], !automatedMarketMakerPairs[from] && !automatedMarketMakerPairs[to]);
			if(allfee > 0)
			{
			   super._transfer(from, address(this), allfee);
			   amount = amount.sub(allfee);
			}
		}
        super._transfer(from, to, amount);
    }
	
	function collectFee(uint256 amount, bool sell, bool p2p) private returns (uint256) {
        uint256 totalFee;
		
        uint256 _gameDevelopmentFee = amount.mul(p2p ? gameDevelopmentFee[2] : sell ? gameDevelopmentFee[1] : gameDevelopmentFee[0]).div(10000);
		         gameDevelopmentFeeTotal = gameDevelopmentFeeTotal.add(_gameDevelopmentFee);
		
		uint256 _marketingFee = amount.mul(p2p ? marketingFee[2] : sell ? marketingFee[1] : marketingFee[0]).div(10000);
		         marketingFeeTotal = marketingFeeTotal.add(_marketingFee);
		
		uint256 _liquidityFee = amount.mul(p2p ? liquidityFee[2] : sell ? liquidityFee[1] : liquidityFee[0]).div(10000);
		         liquidityFeeTotal = liquidityFeeTotal.add(_liquidityFee);
		
		totalFee = _gameDevelopmentFee.add(_marketingFee).add(_liquidityFee);
        return totalFee;
    }
	
	function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, 
            0,
            address(this),
            block.timestamp
        );
    }
	
	function swapTokensForETH(uint256 tokenAmount) private {
        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
        );
    }

	function transferTokens(address tokenAddress, address to, uint256 amount) public onlyOwner {
        IERC20(tokenAddress).transfer(to, amount);
    }
	
	function migrateETH(address payable recipient) public onlyOwner {
        recipient.transfer(address(this).balance);
    }
	
	function getDay() internal view returns(uint256){
        return block.timestamp.div(24 hours);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"}],"name":"AddedBlackList","type":"event"},{"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":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","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":"address","name":"_address","type":"address"}],"name":"RemovedBlackList","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","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":[{"internalType":"address","name":"_wallet","type":"address"}],"name":"addToBlackList","outputs":[],"stateMutability":"nonpayable","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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"dailyTransfers","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":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromDailySaleLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"gameDevelopmentFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"gameDevelopmentFeeAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"","type":"address"}],"name":"isBlackListed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromDailySaleLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromMaxTxAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellPerDay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"recipient","type":"address"}],"name":"migrateETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"}],"name":"removeFromBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buy","type":"uint256"},{"internalType":"uint256","name":"sell","type":"uint256"},{"internalType":"uint256","name":"p2p","type":"uint256"}],"name":"setGameDevelopmentFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newAddress","type":"address"}],"name":"setGameDevelopmentFeeAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buy","type":"uint256"},{"internalType":"uint256","name":"sell","type":"uint256"},{"internalType":"uint256","name":"p2p","type":"uint256"}],"name":"setLiquidityFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buy","type":"uint256"},{"internalType":"uint256","name":"sell","type":"uint256"},{"internalType":"uint256","name":"p2p","type":"uint256"}],"name":"setMarketingFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newAddress","type":"address"}],"name":"setMarketingFeeAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxSellPerDay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapEnable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"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":"tokenAddress","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405267016345785d8a0000600e55683635c9adc5dea00000600f55683635c9adc5dea00000601055731586aa1fc3d67c95c2fe309fccdbaadb82cfb70f601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073373d92bf1a1db2e428c698d1f7835fb829d4de03601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601260156101000a81548160ff021916908315150217905550348015620000fc57600080fd5b506040518060400160405280600d81526020017f456c64656e204b6e6967687473000000000000000000000000000000000000008152506040518060400160405280600781526020017f4b4e49474854530000000000000000000000000000000000000000000000000081525081600390805190602001906200018192919062000ce2565b5080600490805190602001906200019a92919062000ce2565b506009600560006101000a81548160ff021916908360ff16021790555050506000620001cb6200079260201b60201c565b905080600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002d1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f7919062000dfc565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200035f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000385919062000dfc565b6040518363ffffffff1660e01b8152600401620003a492919062000e3f565b6020604051808303816000875af1158015620003c4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003ea919062000dfc565b905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620004818160016200079a60201b60201c565b62000494306001620008d160201b60201c565b620004b6620004a862000aa160201b60201c565b6001620008d160201b60201c565b600160146000620004cc62000aa160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601660006200058b62000aa160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600861012c9080600181540180825580915050600190039060005260206000200160009091909190915055600861012c9080600181540180825580915050600190039060005260206000200160009091909190915055600861012c9080600181540180825580915050600190039060005260206000200160009091909190915055600a61012c9080600181540180825580915050600190039060005260206000200160009091909190915055600a61012c9080600181540180825580915050600190039060005260206000200160009091909190915055600a61012c9080600181540180825580915050600190039060005260206000200160009091909190915055600961012c9080600181540180825580915050600190039060005260206000200160009091909190915055600961012c9080600181540180825580915050600190039060005260206000200160009091909190915055600961012c90806001815401808255809150506001900390600052602060002001600090919091909150556200078a6200077362000aa160201b60201c565b69d3c21bcecceda100000062000acb60201b60201c565b505062001266565b600033905090565b801515601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141562000830576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008279062000ef3565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b620008e16200079260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200090762000aa160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000960576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009579062000f65565b60405180910390fd5b801515601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415620009f6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009ed9062000ffd565b60405180910390fd5b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000a9591906200103c565b60405180910390a25050565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000b3e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b3590620010a9565b60405180910390fd5b62000b526000838362000c7a60201b60201c565b62000b6e8160025462000c7f60201b62002d031790919060201c565b60028190555062000bcc816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000c7f60201b62002d031790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000c6e9190620010e6565b60405180910390a35050565b505050565b600080828462000c90919062001132565b90508381101562000cd8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ccf90620011df565b60405180910390fd5b8091505092915050565b82805462000cf09062001230565b90600052602060002090601f01602090048101928262000d14576000855562000d60565b82601f1062000d2f57805160ff191683800117855562000d60565b8280016001018555821562000d60579182015b8281111562000d5f57825182559160200191906001019062000d42565b5b50905062000d6f919062000d73565b5090565b5b8082111562000d8e57600081600090555060010162000d74565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000dc48262000d97565b9050919050565b62000dd68162000db7565b811462000de257600080fd5b50565b60008151905062000df68162000dcb565b92915050565b60006020828403121562000e155762000e1462000d92565b5b600062000e258482850162000de5565b91505092915050565b62000e398162000db7565b82525050565b600060408201905062000e56600083018562000e2e565b62000e65602083018462000e2e565b9392505050565b600082825260208201905092915050565b7f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160008201527f6c72656164792073657420746f20746861742076616c75650000000000000000602082015250565b600062000edb60388362000e6c565b915062000ee88262000e7d565b604082019050919050565b6000602082019050818103600083015262000f0e8162000ecc565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000f4d60208362000e6c565b915062000f5a8262000f15565b602082019050919050565b6000602082019050818103600083015262000f808162000f3e565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b600062000fe5602a8362000e6c565b915062000ff28262000f87565b604082019050919050565b60006020820190508181036000830152620010188162000fd6565b9050919050565b60008115159050919050565b62001036816200101f565b82525050565b60006020820190506200105360008301846200102b565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001091601f8362000e6c565b91506200109e8262001059565b602082019050919050565b60006020820190508181036000830152620010c48162001082565b9050919050565b6000819050919050565b620010e081620010cb565b82525050565b6000602082019050620010fd6000830184620010d5565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200113f82620010cb565b91506200114c83620010cb565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562001184576200118362001103565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000620011c7601b8362000e6c565b9150620011d4826200118f565b602082019050919050565b60006020820190508181036000830152620011fa81620011b8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200124957607f821691505b6020821081141562001260576200125f62001201565b5b50919050565b615cdb80620012766000396000f3fe6080604052600436106102975760003560e01c806395d89b411161015a578063b62496f5116100c1578063e40ffe001161007a578063e40ffe0014610a7d578063e47d606014610aa6578063ea0a605f14610ae3578063ec28438a14610b0c578063f22baf6714610b35578063f2fde38b14610b725761029e565b8063b62496f514610949578063c024666814610986578063c3f3046c146109af578063d3b64ecd146109d8578063dd62ed3e14610a15578063e2f4560514610a525761029e565b8063a64b6e5f11610113578063a64b6e5f14610829578063a9059cbb14610852578063a918299c1461088f578063aa215892146108b8578063afa4f3b2146108e3578063b05558281461090c5761029e565b806395d89b41146106f557806398982ccf146107205780639a7a23d61461075d5780639d5b04d714610786578063a046bc78146107af578063a457c2d7146107ec5761029e565b80634a49ac4c116101fe578063769c2f57116101b7578063769c2f57146105e35780637cb544fb1461060e57806382fb7119146106395780638a029a9a146106765780638c0b5e221461069f5780638da5cb5b146106ca5761029e565b80634a49ac4c146104d75780634fbee19314610500578063595cc84f1461053d57806370a0823114610566578063715018a6146105a357806374da7cd8146105ba5761029e565b806323b872dd1161025057806323b872dd146103b55780632692f427146103f2578063313ce5671461041b5780633950935114610446578063417c73a71461048357806349bd5a5e146104ac5761029e565b8063053e39a3146102a357806306fdde03146102ce578063095ea7b3146102f95780630bdac902146103365780631694505e1461035f57806318160ddd1461038a5761029e565b3661029e57005b600080fd5b3480156102af57600080fd5b506102b8610b9b565b6040516102c59190614513565b60405180910390f35b3480156102da57600080fd5b506102e3610bc1565b6040516102f091906145c7565b60405180910390f35b34801561030557600080fd5b50610320600480360381019061031b9190614650565b610c53565b60405161032d91906146ab565b60405180910390f35b34801561034257600080fd5b5061035d600480360381019061035891906146c6565b610c71565b005b34801561036b57600080fd5b50610374610f53565b6040516103819190614778565b60405180910390f35b34801561039657600080fd5b5061039f610f79565b6040516103ac91906147a2565b60405180910390f35b3480156103c157600080fd5b506103dc60048036038101906103d791906147bd565b610f83565b6040516103e991906146ab565b60405180910390f35b3480156103fe57600080fd5b5061041960048036038101906104149190614810565b61105c565b005b34801561042757600080fd5b5061043061113f565b60405161043d9190614859565b60405180910390f35b34801561045257600080fd5b5061046d60048036038101906104689190614650565b611156565b60405161047a91906146ab565b60405180910390f35b34801561048f57600080fd5b506104aa60048036038101906104a59190614874565b611209565b005b3480156104b857600080fd5b506104c1611317565b6040516104ce9190614513565b60405180910390f35b3480156104e357600080fd5b506104fe60048036038101906104f99190614874565b61133d565b005b34801561050c57600080fd5b5061052760048036038101906105229190614874565b61144b565b60405161053491906146ab565b60405180910390f35b34801561054957600080fd5b50610564600480360381019061055f91906148cd565b61146b565b005b34801561057257600080fd5b5061058d60048036038101906105889190614874565b6115d5565b60405161059a91906147a2565b60405180910390f35b3480156105af57600080fd5b506105b861161d565b005b3480156105c657600080fd5b506105e160048036038101906105dc919061494b565b61175a565b005b3480156105ef57600080fd5b506105f8611820565b60405161060591906146ab565b60405180910390f35b34801561061a57600080fd5b50610623611833565b60405161063091906147a2565b60405180910390f35b34801561064557600080fd5b50610660600480360381019061065b9190614810565b611839565b60405161066d91906147a2565b60405180910390f35b34801561068257600080fd5b5061069d600480360381019061069891906148cd565b61185d565b005b3480156106ab57600080fd5b506106b46119c7565b6040516106c191906147a2565b60405180910390f35b3480156106d657600080fd5b506106df6119cd565b6040516106ec9190614513565b60405180910390f35b34801561070157600080fd5b5061070a6119f7565b60405161071791906145c7565b60405180910390f35b34801561072c57600080fd5b5061074760048036038101906107429190614978565b611a89565b60405161075491906147a2565b60405180910390f35b34801561076957600080fd5b50610784600480360381019061077f91906148cd565b611aae565b005b34801561079257600080fd5b506107ad60048036038101906107a8919061494b565b611bc9565b005b3480156107bb57600080fd5b506107d660048036038101906107d19190614810565b611cf9565b6040516107e391906147a2565b60405180910390f35b3480156107f857600080fd5b50610813600480360381019061080e9190614650565b611d1d565b60405161082091906146ab565b60405180910390f35b34801561083557600080fd5b50610850600480360381019061084b91906147bd565b611dea565b005b34801561085e57600080fd5b5061087960048036038101906108749190614650565b611eea565b60405161088691906146ab565b60405180910390f35b34801561089b57600080fd5b506108b660048036038101906108b191906146c6565b611f08565b005b3480156108c457600080fd5b506108cd6121ea565b6040516108da9190614513565b60405180910390f35b3480156108ef57600080fd5b5061090a60048036038101906109059190614810565b612210565b005b34801561091857600080fd5b50610933600480360381019061092e9190614874565b6122e0565b60405161094091906146ab565b60405180910390f35b34801561095557600080fd5b50610970600480360381019061096b9190614874565b612300565b60405161097d91906146ab565b60405180910390f35b34801561099257600080fd5b506109ad60048036038101906109a891906148cd565b612320565b005b3480156109bb57600080fd5b506109d660048036038101906109d1919061494b565b6124d8565b005b3480156109e457600080fd5b506109ff60048036038101906109fa9190614874565b612608565b604051610a0c91906146ab565b60405180910390f35b348015610a2157600080fd5b50610a3c6004803603810190610a3791906149b8565b612628565b604051610a4991906147a2565b60405180910390f35b348015610a5e57600080fd5b50610a676126af565b604051610a7491906147a2565b60405180910390f35b348015610a8957600080fd5b50610aa46004803603810190610a9f91906149f8565b6126b5565b005b348015610ab257600080fd5b50610acd6004803603810190610ac89190614874565b61274e565b604051610ada91906146ab565b60405180910390f35b348015610aef57600080fd5b50610b0a6004803603810190610b0591906146c6565b61276e565b005b348015610b1857600080fd5b50610b336004803603810190610b2e9190614810565b612a50565b005b348015610b4157600080fd5b50610b5c6004803603810190610b579190614810565b612b33565b604051610b6991906147a2565b60405180910390f35b348015610b7e57600080fd5b50610b996004803603810190610b949190614874565b612b57565b005b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060038054610bd090614a54565b80601f0160208091040260200160405190810160405280929190818152602001828054610bfc90614a54565b8015610c495780601f10610c1e57610100808354040283529160200191610c49565b820191906000526020600020905b815481529060010190602001808311610c2c57829003601f168201915b5050505050905090565b6000610c67610c60612d61565b8484612d69565b6001905092915050565b610c79612d61565b73ffffffffffffffffffffffffffffffffffffffff16610c976119cd565b73ffffffffffffffffffffffffffffffffffffffff1614610ced576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce490614ad2565b60405180910390fd5b6109c4610d5384610d456009600081548110610d0c57610d0b614af2565b5b9060005260206000200154600a600081548110610d2c57610d2b614af2565b5b9060005260206000200154612d0390919063ffffffff16565b612d0390919063ffffffff16565b1115610d94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8b90614b6d565b60405180910390fd5b6109c4610dfa83610dec6009600181548110610db357610db2614af2565b5b9060005260206000200154600a600181548110610dd357610dd2614af2565b5b9060005260206000200154612d0390919063ffffffff16565b612d0390919063ffffffff16565b1115610e3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3290614bd9565b60405180910390fd5b6109c4610ea182610e936009600281548110610e5a57610e59614af2565b5b9060005260206000200154600a600281548110610e7a57610e79614af2565b5b9060005260206000200154612d0390919063ffffffff16565b612d0390919063ffffffff16565b1115610ee2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed990614c45565b60405180910390fd5b826008600081548110610ef857610ef7614af2565b5b9060005260206000200181905550816008600181548110610f1c57610f1b614af2565b5b9060005260206000200181905550806008600281548110610f4057610f3f614af2565b5b9060005260206000200181905550505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b6000610f90848484612f34565b61105184610f9c612d61565b61104c85604051806060016040528060288152602001615c5960289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611002612d61565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139d39092919063ffffffff16565b612d69565b600190509392505050565b611064612d61565b73ffffffffffffffffffffffffffffffffffffffff166110826119cd565b73ffffffffffffffffffffffffffffffffffffffff16146110d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110cf90614ad2565b60405180910390fd5b6110e0610f79565b81111580156110f6575066038d7ea4c680008110155b611135576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112c90614cb1565b60405180910390fd5b8060108190555050565b6000600560009054906101000a900460ff16905090565b60006111ff611163612d61565b846111fa8560016000611174612d61565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d0390919063ffffffff16565b612d69565b6001905092915050565b611211612d61565b73ffffffffffffffffffffffffffffffffffffffff1661122f6119cd565b73ffffffffffffffffffffffffffffffffffffffff1614611285576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127c90614ad2565b60405180910390fd5b6001601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f42e160154868087d6bfdc0ca23d96a1c1cfa32f1b72ba9ba27b69b98a0d819dc8160405161130c9190614513565b60405180910390a150565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611345612d61565b73ffffffffffffffffffffffffffffffffffffffff166113636119cd565b73ffffffffffffffffffffffffffffffffffffffff16146113b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b090614ad2565b60405180910390fd5b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fd7e9ec6e6ecd65492dce6bf513cd6867560d49544421d0783ddf06e76c24470c816040516114409190614513565b60405180910390a150565b60136020528060005260406000206000915054906101000a900460ff1681565b611473612d61565b73ffffffffffffffffffffffffffffffffffffffff166114916119cd565b73ffffffffffffffffffffffffffffffffffffffff16146114e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114de90614ad2565b60405180910390fd5b801515601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141561157a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157190614d43565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611625612d61565b73ffffffffffffffffffffffffffffffffffffffff166116436119cd565b73ffffffffffffffffffffffffffffffffffffffff1614611699576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169090614ad2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611762612d61565b73ffffffffffffffffffffffffffffffffffffffff166117806119cd565b73ffffffffffffffffffffffffffffffffffffffff16146117d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117cd90614ad2565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561181c573d6000803e3d6000fd5b5050565b601260159054906101000a900460ff1681565b60105481565b6009818154811061184957600080fd5b906000526020600020016000915090505481565b611865612d61565b73ffffffffffffffffffffffffffffffffffffffff166118836119cd565b73ffffffffffffffffffffffffffffffffffffffff16146118d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d090614ad2565b60405180910390fd5b801515601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141561196c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196390614dd5565b60405180910390fd5b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600f5481565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611a0690614a54565b80601f0160208091040260200160405190810160405280929190818152602001828054611a3290614a54565b8015611a7f5780601f10611a5457610100808354040283529160200191611a7f565b820191906000526020600020905b815481529060010190602001808311611a6257829003601f168201915b5050505050905090565b6017602052816000526040600020602052806000526040600020600091509150505481565b611ab6612d61565b73ffffffffffffffffffffffffffffffffffffffff16611ad46119cd565b73ffffffffffffffffffffffffffffffffffffffff1614611b2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2190614ad2565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611bbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb290614e8d565b60405180910390fd5b611bc58282613a31565b5050565b611bd1612d61565b73ffffffffffffffffffffffffffffffffffffffff16611bef6119cd565b73ffffffffffffffffffffffffffffffffffffffff1614611c45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3c90614ad2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611cb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cac90614ef9565b60405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600a8181548110611d0957600080fd5b906000526020600020016000915090505481565b6000611de0611d2a612d61565b84611ddb85604051806060016040528060258152602001615c816025913960016000611d54612d61565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139d39092919063ffffffff16565b612d69565b6001905092915050565b611df2612d61565b73ffffffffffffffffffffffffffffffffffffffff16611e106119cd565b73ffffffffffffffffffffffffffffffffffffffff1614611e66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5d90614ad2565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401611ea1929190614f19565b6020604051808303816000875af1158015611ec0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ee49190614f57565b50505050565b6000611efe611ef7612d61565b8484612f34565b6001905092915050565b611f10612d61565b73ffffffffffffffffffffffffffffffffffffffff16611f2e6119cd565b73ffffffffffffffffffffffffffffffffffffffff1614611f84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7b90614ad2565b60405180910390fd5b6109c4611fea84611fdc6008600081548110611fa357611fa2614af2565b5b9060005260206000200154600a600081548110611fc357611fc2614af2565b5b9060005260206000200154612d0390919063ffffffff16565b612d0390919063ffffffff16565b111561202b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202290614b6d565b60405180910390fd5b6109c461209183612083600860018154811061204a57612049614af2565b5b9060005260206000200154600a60018154811061206a57612069614af2565b5b9060005260206000200154612d0390919063ffffffff16565b612d0390919063ffffffff16565b11156120d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c990614bd9565b60405180910390fd5b6109c46121388261212a60086002815481106120f1576120f0614af2565b5b9060005260206000200154600a60028154811061211157612110614af2565b5b9060005260206000200154612d0390919063ffffffff16565b612d0390919063ffffffff16565b1115612179576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217090614c45565b60405180910390fd5b82600960008154811061218f5761218e614af2565b5b90600052602060002001819055508160096001815481106121b3576121b2614af2565b5b90600052602060002001819055508060096002815481106121d7576121d6614af2565b5b9060005260206000200181905550505050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612218612d61565b73ffffffffffffffffffffffffffffffffffffffff166122366119cd565b73ffffffffffffffffffffffffffffffffffffffff161461228c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228390614ad2565b60405180910390fd5b612294610f79565b8111156122d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cd90614ff6565b60405180910390fd5b80600e8190555050565b60166020528060005260406000206000915054906101000a900460ff1681565b60156020528060005260406000206000915054906101000a900460ff1681565b612328612d61565b73ffffffffffffffffffffffffffffffffffffffff166123466119cd565b73ffffffffffffffffffffffffffffffffffffffff161461239c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239390614ad2565b60405180910390fd5b801515601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141561242f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242690615088565b60405180910390fd5b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516124cc91906146ab565b60405180910390a25050565b6124e0612d61565b73ffffffffffffffffffffffffffffffffffffffff166124fe6119cd565b73ffffffffffffffffffffffffffffffffffffffff1614612554576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161254b90614ad2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156125c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125bb90614ef9565b60405180910390fd5b80601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60146020528060005260406000206000915054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600e5481565b6126bd612d61565b73ffffffffffffffffffffffffffffffffffffffff166126db6119cd565b73ffffffffffffffffffffffffffffffffffffffff1614612731576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272890614ad2565b60405180910390fd5b80601260156101000a81548160ff02191690831515021790555050565b60186020528060005260406000206000915054906101000a900460ff1681565b612776612d61565b73ffffffffffffffffffffffffffffffffffffffff166127946119cd565b73ffffffffffffffffffffffffffffffffffffffff16146127ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e190614ad2565b60405180910390fd5b6109c461285084612842600960008154811061280957612808614af2565b5b9060005260206000200154600860008154811061282957612828614af2565b5b9060005260206000200154612d0390919063ffffffff16565b612d0390919063ffffffff16565b1115612891576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288890614b6d565b60405180910390fd5b6109c46128f7836128e960096001815481106128b0576128af614af2565b5b906000526020600020015460086001815481106128d0576128cf614af2565b5b9060005260206000200154612d0390919063ffffffff16565b612d0390919063ffffffff16565b1115612938576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292f90614bd9565b60405180910390fd5b6109c461299e82612990600960028154811061295757612956614af2565b5b9060005260206000200154600860028154811061297757612976614af2565b5b9060005260206000200154612d0390919063ffffffff16565b612d0390919063ffffffff16565b11156129df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129d690614c45565b60405180910390fd5b82600a6000815481106129f5576129f4614af2565b5b906000526020600020018190555081600a600181548110612a1957612a18614af2565b5b906000526020600020018190555080600a600281548110612a3d57612a3c614af2565b5b9060005260206000200181905550505050565b612a58612d61565b73ffffffffffffffffffffffffffffffffffffffff16612a766119cd565b73ffffffffffffffffffffffffffffffffffffffff1614612acc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ac390614ad2565b60405180910390fd5b612ad4610f79565b8111158015612aea575066038d7ea4c680008110155b612b29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b2090614cb1565b60405180910390fd5b80600f8190555050565b60088181548110612b4357600080fd5b906000526020600020016000915090505481565b612b5f612d61565b73ffffffffffffffffffffffffffffffffffffffff16612b7d6119cd565b73ffffffffffffffffffffffffffffffffffffffff1614612bd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bca90614ad2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612c43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c3a9061511a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000808284612d129190615169565b905083811015612d57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d4e9061520b565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612dd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dd09061529d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612e49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e409061532f565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612f2791906147a2565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612fa4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f9b906153c1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613014576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161300b90615453565b60405180910390fd5b601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156130a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613098906154e5565b60405180910390fd5b601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561312e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161312590615577565b60405180910390fd5b601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166131c557600f548111156131c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131bb90615609565b60405180910390fd5b5b601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156132695750601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156132be5750601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156134375760105461333082601760006132d6613b65565b815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d0390919063ffffffff16565b1115613371576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133689061569b565b60405180910390fd5b6133db8160176000613381613b65565b815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d0390919063ffffffff16565b601760006133e7613b65565b815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6000613442306115d5565b90506000600e548210159050601260149054906101000a900460ff161580156134685750805b80156134805750601260159054906101000a900460ff165b80156134d55750601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156137d0576001601260146101000a81548160ff0219169083151502179055506000600b5490506000600c5490506000600d5490506000613520600283613b8290919063ffffffff16565b905060006135498261353b8688612d0390919063ffffffff16565b612d0390919063ffffffff16565b9050600047905061355b600e54613bda565b60006135708247613e1d90919063ffffffff16565b905060006135998461358b8985613e7690919063ffffffff16565b613b8290919063ffffffff16565b905060006135c2856135b48886613e7690919063ffffffff16565b613b8290919063ffffffff16565b905060006135eb826135dd8587613e1d90919063ffffffff16565b613e1d90919063ffffffff16565b905060008311156136a157601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f1935050505015801561365e573d6000803e3d6000fd5b5061369a6136898761367b8c600e54613e7690919063ffffffff16565b613b8290919063ffffffff16565b600c54613e1d90919063ffffffff16565b600c819055505b60008211156136f6576136b48783613ef1565b6136ef6136de876136d08b600e54613e7690919063ffffffff16565b613b8290919063ffffffff16565b600d54613e1d90919063ffffffff16565b600d819055505b60008111156137aa57601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613767573d6000803e3d6000fd5b506137a3613792876137848d600e54613e7690919063ffffffff16565b613b8290919063ffffffff16565b600b54613e1d90919063ffffffff16565b600b819055505b6000601260146101000a81548160ff021916908315150217905550505050505050505050505b6000601260149054906101000a900460ff16159050601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806138865750601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561389057600090505b80156139c057600061399285601560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16601560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561398d5750601560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b613fcf565b905060008111156139be576139a8873083614238565b6139bb8186613e1d90919063ffffffff16565b94505b505b6139cb868686614238565b505050505050565b6000838311158290613a1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a1291906145c7565b60405180910390fd5b508284613a2891906156bb565b90509392505050565b801515601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415613ac4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613abb90615761565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000613b7d6201518042613b8290919063ffffffff16565b905090565b6000808211613bc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613bbd906157cd565b60405180910390fd5b8183613bd2919061581c565b905092915050565b6000600267ffffffffffffffff811115613bf757613bf661584d565b5b604051908082528060200260200182016040528015613c255781602001602082028036833780820191505090505b5090503081600081518110613c3d57613c3c614af2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613ce4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d089190615891565b81600181518110613d1c57613d1b614af2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613d8330600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612d69565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613de79594939291906159b7565b600060405180830381600087803b158015613e0157600080fd5b505af1158015613e15573d6000803e3d6000fd5b505050505050565b600082821115613e62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e5990615a5d565b60405180910390fd5b8183613e6e91906156bb565b905092915050565b600080831415613e895760009050613eeb565b60008284613e979190615a7d565b9050828482613ea6919061581c565b14613ee6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613edd90615b49565b60405180910390fd5b809150505b92915050565b613f1e30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612d69565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008030426040518863ffffffff1660e01b8152600401613f8596959493929190615b69565b60606040518083038185885af1158015613fa3573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613fc89190615bdf565b5050505050565b600080600061407061271061406286614032578761400c576008600081548110613ffc57613ffb614af2565b5b906000526020600020015461402d565b600860018154811061402157614020614af2565b5b90600052602060002001545b614053565b600860028154811061404757614046614af2565b5b90600052602060002001545b89613e7690919063ffffffff16565b613b8290919063ffffffff16565b905061408781600b54612d0390919063ffffffff16565b600b81905550600061412b61271061411d876140ed57886140c75760096000815481106140b7576140b6614af2565b5b90600052602060002001546140e8565b60096001815481106140dc576140db614af2565b5b90600052602060002001545b61410e565b600960028154811061410257614101614af2565b5b90600052602060002001545b8a613e7690919063ffffffff16565b613b8290919063ffffffff16565b905061414281600c54612d0390919063ffffffff16565b600c8190555060006141e66127106141d8886141a8578961418257600a60008154811061417257614171614af2565b5b90600052602060002001546141a3565b600a60018154811061419757614196614af2565b5b90600052602060002001545b6141c9565b600a6002815481106141bd576141bc614af2565b5b90600052602060002001545b8b613e7690919063ffffffff16565b613b8290919063ffffffff16565b90506141fd81600d54612d0390919063ffffffff16565b600d819055506142288161421a8486612d0390919063ffffffff16565b612d0390919063ffffffff16565b9350839450505050509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156142a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161429f906153c1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415614318576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161430f90615453565b60405180910390fd5b6143238383836144cd565b61438e81604051806060016040528060268152602001615c33602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139d39092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614421816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d0390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516144c091906147a2565b60405180910390a3505050565b505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006144fd826144d2565b9050919050565b61450d816144f2565b82525050565b60006020820190506145286000830184614504565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561456857808201518184015260208101905061454d565b83811115614577576000848401525b50505050565b6000601f19601f8301169050919050565b60006145998261452e565b6145a38185614539565b93506145b381856020860161454a565b6145bc8161457d565b840191505092915050565b600060208201905081810360008301526145e1818461458e565b905092915050565b600080fd5b6145f7816144f2565b811461460257600080fd5b50565b600081359050614614816145ee565b92915050565b6000819050919050565b61462d8161461a565b811461463857600080fd5b50565b60008135905061464a81614624565b92915050565b60008060408385031215614667576146666145e9565b5b600061467585828601614605565b92505060206146868582860161463b565b9150509250929050565b60008115159050919050565b6146a581614690565b82525050565b60006020820190506146c0600083018461469c565b92915050565b6000806000606084860312156146df576146de6145e9565b5b60006146ed8682870161463b565b93505060206146fe8682870161463b565b925050604061470f8682870161463b565b9150509250925092565b6000819050919050565b600061473e614739614734846144d2565b614719565b6144d2565b9050919050565b600061475082614723565b9050919050565b600061476282614745565b9050919050565b61477281614757565b82525050565b600060208201905061478d6000830184614769565b92915050565b61479c8161461a565b82525050565b60006020820190506147b76000830184614793565b92915050565b6000806000606084860312156147d6576147d56145e9565b5b60006147e486828701614605565b93505060206147f586828701614605565b92505060406148068682870161463b565b9150509250925092565b600060208284031215614826576148256145e9565b5b60006148348482850161463b565b91505092915050565b600060ff82169050919050565b6148538161483d565b82525050565b600060208201905061486e600083018461484a565b92915050565b60006020828403121561488a576148896145e9565b5b600061489884828501614605565b91505092915050565b6148aa81614690565b81146148b557600080fd5b50565b6000813590506148c7816148a1565b92915050565b600080604083850312156148e4576148e36145e9565b5b60006148f285828601614605565b9250506020614903858286016148b8565b9150509250929050565b6000614918826144d2565b9050919050565b6149288161490d565b811461493357600080fd5b50565b6000813590506149458161491f565b92915050565b600060208284031215614961576149606145e9565b5b600061496f84828501614936565b91505092915050565b6000806040838503121561498f5761498e6145e9565b5b600061499d8582860161463b565b92505060206149ae85828601614605565b9150509250929050565b600080604083850312156149cf576149ce6145e9565b5b60006149dd85828601614605565b92505060206149ee85828601614605565b9150509250929050565b600060208284031215614a0e57614a0d6145e9565b5b6000614a1c848285016148b8565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614a6c57607f821691505b60208210811415614a8057614a7f614a25565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614abc602083614539565b9150614ac782614a86565b602082019050919050565b60006020820190508181036000830152614aeb81614aaf565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4d617820666565206c696d6974207265616368656420666f7220274255592700600082015250565b6000614b57601f83614539565b9150614b6282614b21565b602082019050919050565b60006020820190508181036000830152614b8681614b4a565b9050919050565b7f4d617820666565206c696d6974207265616368656420666f72202753454c4c27600082015250565b6000614bc3602083614539565b9150614bce82614b8d565b602082019050919050565b60006020820190508181036000830152614bf281614bb6565b9050919050565b7f4d617820666565206c696d6974207265616368656420666f7220275032502700600082015250565b6000614c2f601f83614539565b9150614c3a82614bf9565b602082019050919050565b60006020820190508181036000830152614c5e81614c22565b9050919050565b7f616d6f756e74206973206e6f7420636f72726563742e00000000000000000000600082015250565b6000614c9b601683614539565b9150614ca682614c65565b602082019050919050565b60006020820190508181036000830152614cca81614c8e565b9050919050565b7f415041593a204163636f756e7420697320616c7265616479207468652076616c60008201527f7565206f6620276578636c756465642700000000000000000000000000000000602082015250565b6000614d2d603083614539565b9150614d3882614cd1565b604082019050919050565b60006020820190508181036000830152614d5c81614d20565b9050919050565b7f4461696c792073616c65206c696d6974206578636c7573696f6e20697320616c60008201527f7265616479207468652076616c7565206f6620276578636c7564656427000000602082015250565b6000614dbf603d83614539565b9150614dca82614d63565b604082019050919050565b60006020820190508181036000830152614dee81614db2565b9050919050565b7f54686520556e697377617020706169722063616e6e6f742062652072656d6f7660008201527f65642066726f6d206175746f6d617465644d61726b65744d616b65725061697260208201527f7300000000000000000000000000000000000000000000000000000000000000604082015250565b6000614e77604183614539565b9150614e8282614df5565b606082019050919050565b60006020820190508181036000830152614ea681614e6a565b9050919050565b7f7a65726f2d61646472657373206e6f7420616c6c6f7765640000000000000000600082015250565b6000614ee3601883614539565b9150614eee82614ead565b602082019050919050565b60006020820190508181036000830152614f1281614ed6565b9050919050565b6000604082019050614f2e6000830185614504565b614f3b6020830184614793565b9392505050565b600081519050614f51816148a1565b92915050565b600060208284031215614f6d57614f6c6145e9565b5b6000614f7b84828501614f42565b91505092915050565b7f416d6f756e742063616e6e6f74206265206f7665722074686520746f74616c2060008201527f737570706c792e00000000000000000000000000000000000000000000000000602082015250565b6000614fe0602783614539565b9150614feb82614f84565b604082019050919050565b6000602082019050818103600083015261500f81614fd3565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b6000615072602a83614539565b915061507d82615016565b604082019050919050565b600060208201905081810360008301526150a181615065565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000615104602683614539565b915061510f826150a8565b604082019050919050565b60006020820190508181036000830152615133816150f7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006151748261461a565b915061517f8361461a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156151b4576151b361513a565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006151f5601b83614539565b9150615200826151bf565b602082019050919050565b60006020820190508181036000830152615224816151e8565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000615287602483614539565b91506152928261522b565b604082019050919050565b600060208201905081810360008301526152b68161527a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000615319602283614539565b9150615324826152bd565b604082019050919050565b600060208201905081810360008301526153488161530c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006153ab602583614539565b91506153b68261534f565b604082019050919050565b600060208201905081810360008301526153da8161539e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061543d602383614539565b9150615448826153e1565b604082019050919050565b6000602082019050818103600083015261546c81615430565b9050919050565b7f45524332303a207472616e7366657220746f20697320626c61636b6c6973746560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b60006154cf602183614539565b91506154da82615473565b604082019050919050565b600060208201905081810360008301526154fe816154c2565b9050919050565b7f45524332303a207472616e736665722066726f6d20697320626c61636b6c697360008201527f7465640000000000000000000000000000000000000000000000000000000000602082015250565b6000615561602383614539565b915061556c82615505565b604082019050919050565b6000602082019050818103600083015261559081615554565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b60006155f3602883614539565b91506155fe82615597565b604082019050919050565b60006020820190508181036000830152615622816155e6565b9050919050565b7f54686973206163636f756e7420686173206578636565646564206d617820646160008201527f696c792073656c6c206c696d6974000000000000000000000000000000000000602082015250565b6000615685602e83614539565b915061569082615629565b604082019050919050565b600060208201905081810360008301526156b481615678565b9050919050565b60006156c68261461a565b91506156d18361461a565b9250828210156156e4576156e361513a565b5b828203905092915050565b7f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160008201527f6c72656164792073657420746f20746861742076616c75650000000000000000602082015250565b600061574b603883614539565b9150615756826156ef565b604082019050919050565b6000602082019050818103600083015261577a8161573e565b9050919050565b7f536166654d6174683a206469766973696f6e206279207a65726f000000000000600082015250565b60006157b7601a83614539565b91506157c282615781565b602082019050919050565b600060208201905081810360008301526157e6816157aa565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006158278261461a565b91506158328361461a565b925082615842576158416157ed565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061588b816145ee565b92915050565b6000602082840312156158a7576158a66145e9565b5b60006158b58482850161587c565b91505092915050565b6000819050919050565b60006158e36158de6158d9846158be565b614719565b61461a565b9050919050565b6158f3816158c8565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61592e816144f2565b82525050565b60006159408383615925565b60208301905092915050565b6000602082019050919050565b6000615964826158f9565b61596e8185615904565b935061597983615915565b8060005b838110156159aa5781516159918882615934565b975061599c8361594c565b92505060018101905061597d565b5085935050505092915050565b600060a0820190506159cc6000830188614793565b6159d960208301876158ea565b81810360408301526159eb8186615959565b90506159fa6060830185614504565b615a076080830184614793565b9695505050505050565b7f536166654d6174683a207375627472616374696f6e206f766572666c6f770000600082015250565b6000615a47601e83614539565b9150615a5282615a11565b602082019050919050565b60006020820190508181036000830152615a7681615a3a565b9050919050565b6000615a888261461a565b9150615a938361461a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615615acc57615acb61513a565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000615b33602183614539565b9150615b3e82615ad7565b604082019050919050565b60006020820190508181036000830152615b6281615b26565b9050919050565b600060c082019050615b7e6000830189614504565b615b8b6020830188614793565b615b9860408301876158ea565b615ba560608301866158ea565b615bb26080830185614504565b615bbf60a0830184614793565b979650505050505050565b600081519050615bd981614624565b92915050565b600080600060608486031215615bf857615bf76145e9565b5b6000615c0686828701615bca565b9350506020615c1786828701615bca565b9250506040615c2886828701615bca565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122032e2130beaf6b0dea4f58aff1318a7f22501d1c2e63426a35acbc500cd2291c564736f6c634300080b0033

Deployed Bytecode

0x6080604052600436106102975760003560e01c806395d89b411161015a578063b62496f5116100c1578063e40ffe001161007a578063e40ffe0014610a7d578063e47d606014610aa6578063ea0a605f14610ae3578063ec28438a14610b0c578063f22baf6714610b35578063f2fde38b14610b725761029e565b8063b62496f514610949578063c024666814610986578063c3f3046c146109af578063d3b64ecd146109d8578063dd62ed3e14610a15578063e2f4560514610a525761029e565b8063a64b6e5f11610113578063a64b6e5f14610829578063a9059cbb14610852578063a918299c1461088f578063aa215892146108b8578063afa4f3b2146108e3578063b05558281461090c5761029e565b806395d89b41146106f557806398982ccf146107205780639a7a23d61461075d5780639d5b04d714610786578063a046bc78146107af578063a457c2d7146107ec5761029e565b80634a49ac4c116101fe578063769c2f57116101b7578063769c2f57146105e35780637cb544fb1461060e57806382fb7119146106395780638a029a9a146106765780638c0b5e221461069f5780638da5cb5b146106ca5761029e565b80634a49ac4c146104d75780634fbee19314610500578063595cc84f1461053d57806370a0823114610566578063715018a6146105a357806374da7cd8146105ba5761029e565b806323b872dd1161025057806323b872dd146103b55780632692f427146103f2578063313ce5671461041b5780633950935114610446578063417c73a71461048357806349bd5a5e146104ac5761029e565b8063053e39a3146102a357806306fdde03146102ce578063095ea7b3146102f95780630bdac902146103365780631694505e1461035f57806318160ddd1461038a5761029e565b3661029e57005b600080fd5b3480156102af57600080fd5b506102b8610b9b565b6040516102c59190614513565b60405180910390f35b3480156102da57600080fd5b506102e3610bc1565b6040516102f091906145c7565b60405180910390f35b34801561030557600080fd5b50610320600480360381019061031b9190614650565b610c53565b60405161032d91906146ab565b60405180910390f35b34801561034257600080fd5b5061035d600480360381019061035891906146c6565b610c71565b005b34801561036b57600080fd5b50610374610f53565b6040516103819190614778565b60405180910390f35b34801561039657600080fd5b5061039f610f79565b6040516103ac91906147a2565b60405180910390f35b3480156103c157600080fd5b506103dc60048036038101906103d791906147bd565b610f83565b6040516103e991906146ab565b60405180910390f35b3480156103fe57600080fd5b5061041960048036038101906104149190614810565b61105c565b005b34801561042757600080fd5b5061043061113f565b60405161043d9190614859565b60405180910390f35b34801561045257600080fd5b5061046d60048036038101906104689190614650565b611156565b60405161047a91906146ab565b60405180910390f35b34801561048f57600080fd5b506104aa60048036038101906104a59190614874565b611209565b005b3480156104b857600080fd5b506104c1611317565b6040516104ce9190614513565b60405180910390f35b3480156104e357600080fd5b506104fe60048036038101906104f99190614874565b61133d565b005b34801561050c57600080fd5b5061052760048036038101906105229190614874565b61144b565b60405161053491906146ab565b60405180910390f35b34801561054957600080fd5b50610564600480360381019061055f91906148cd565b61146b565b005b34801561057257600080fd5b5061058d60048036038101906105889190614874565b6115d5565b60405161059a91906147a2565b60405180910390f35b3480156105af57600080fd5b506105b861161d565b005b3480156105c657600080fd5b506105e160048036038101906105dc919061494b565b61175a565b005b3480156105ef57600080fd5b506105f8611820565b60405161060591906146ab565b60405180910390f35b34801561061a57600080fd5b50610623611833565b60405161063091906147a2565b60405180910390f35b34801561064557600080fd5b50610660600480360381019061065b9190614810565b611839565b60405161066d91906147a2565b60405180910390f35b34801561068257600080fd5b5061069d600480360381019061069891906148cd565b61185d565b005b3480156106ab57600080fd5b506106b46119c7565b6040516106c191906147a2565b60405180910390f35b3480156106d657600080fd5b506106df6119cd565b6040516106ec9190614513565b60405180910390f35b34801561070157600080fd5b5061070a6119f7565b60405161071791906145c7565b60405180910390f35b34801561072c57600080fd5b5061074760048036038101906107429190614978565b611a89565b60405161075491906147a2565b60405180910390f35b34801561076957600080fd5b50610784600480360381019061077f91906148cd565b611aae565b005b34801561079257600080fd5b506107ad60048036038101906107a8919061494b565b611bc9565b005b3480156107bb57600080fd5b506107d660048036038101906107d19190614810565b611cf9565b6040516107e391906147a2565b60405180910390f35b3480156107f857600080fd5b50610813600480360381019061080e9190614650565b611d1d565b60405161082091906146ab565b60405180910390f35b34801561083557600080fd5b50610850600480360381019061084b91906147bd565b611dea565b005b34801561085e57600080fd5b5061087960048036038101906108749190614650565b611eea565b60405161088691906146ab565b60405180910390f35b34801561089b57600080fd5b506108b660048036038101906108b191906146c6565b611f08565b005b3480156108c457600080fd5b506108cd6121ea565b6040516108da9190614513565b60405180910390f35b3480156108ef57600080fd5b5061090a60048036038101906109059190614810565b612210565b005b34801561091857600080fd5b50610933600480360381019061092e9190614874565b6122e0565b60405161094091906146ab565b60405180910390f35b34801561095557600080fd5b50610970600480360381019061096b9190614874565b612300565b60405161097d91906146ab565b60405180910390f35b34801561099257600080fd5b506109ad60048036038101906109a891906148cd565b612320565b005b3480156109bb57600080fd5b506109d660048036038101906109d1919061494b565b6124d8565b005b3480156109e457600080fd5b506109ff60048036038101906109fa9190614874565b612608565b604051610a0c91906146ab565b60405180910390f35b348015610a2157600080fd5b50610a3c6004803603810190610a3791906149b8565b612628565b604051610a4991906147a2565b60405180910390f35b348015610a5e57600080fd5b50610a676126af565b604051610a7491906147a2565b60405180910390f35b348015610a8957600080fd5b50610aa46004803603810190610a9f91906149f8565b6126b5565b005b348015610ab257600080fd5b50610acd6004803603810190610ac89190614874565b61274e565b604051610ada91906146ab565b60405180910390f35b348015610aef57600080fd5b50610b0a6004803603810190610b0591906146c6565b61276e565b005b348015610b1857600080fd5b50610b336004803603810190610b2e9190614810565b612a50565b005b348015610b4157600080fd5b50610b5c6004803603810190610b579190614810565b612b33565b604051610b6991906147a2565b60405180910390f35b348015610b7e57600080fd5b50610b996004803603810190610b949190614874565b612b57565b005b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060038054610bd090614a54565b80601f0160208091040260200160405190810160405280929190818152602001828054610bfc90614a54565b8015610c495780601f10610c1e57610100808354040283529160200191610c49565b820191906000526020600020905b815481529060010190602001808311610c2c57829003601f168201915b5050505050905090565b6000610c67610c60612d61565b8484612d69565b6001905092915050565b610c79612d61565b73ffffffffffffffffffffffffffffffffffffffff16610c976119cd565b73ffffffffffffffffffffffffffffffffffffffff1614610ced576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce490614ad2565b60405180910390fd5b6109c4610d5384610d456009600081548110610d0c57610d0b614af2565b5b9060005260206000200154600a600081548110610d2c57610d2b614af2565b5b9060005260206000200154612d0390919063ffffffff16565b612d0390919063ffffffff16565b1115610d94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8b90614b6d565b60405180910390fd5b6109c4610dfa83610dec6009600181548110610db357610db2614af2565b5b9060005260206000200154600a600181548110610dd357610dd2614af2565b5b9060005260206000200154612d0390919063ffffffff16565b612d0390919063ffffffff16565b1115610e3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3290614bd9565b60405180910390fd5b6109c4610ea182610e936009600281548110610e5a57610e59614af2565b5b9060005260206000200154600a600281548110610e7a57610e79614af2565b5b9060005260206000200154612d0390919063ffffffff16565b612d0390919063ffffffff16565b1115610ee2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed990614c45565b60405180910390fd5b826008600081548110610ef857610ef7614af2565b5b9060005260206000200181905550816008600181548110610f1c57610f1b614af2565b5b9060005260206000200181905550806008600281548110610f4057610f3f614af2565b5b9060005260206000200181905550505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b6000610f90848484612f34565b61105184610f9c612d61565b61104c85604051806060016040528060288152602001615c5960289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611002612d61565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139d39092919063ffffffff16565b612d69565b600190509392505050565b611064612d61565b73ffffffffffffffffffffffffffffffffffffffff166110826119cd565b73ffffffffffffffffffffffffffffffffffffffff16146110d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110cf90614ad2565b60405180910390fd5b6110e0610f79565b81111580156110f6575066038d7ea4c680008110155b611135576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112c90614cb1565b60405180910390fd5b8060108190555050565b6000600560009054906101000a900460ff16905090565b60006111ff611163612d61565b846111fa8560016000611174612d61565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d0390919063ffffffff16565b612d69565b6001905092915050565b611211612d61565b73ffffffffffffffffffffffffffffffffffffffff1661122f6119cd565b73ffffffffffffffffffffffffffffffffffffffff1614611285576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127c90614ad2565b60405180910390fd5b6001601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f42e160154868087d6bfdc0ca23d96a1c1cfa32f1b72ba9ba27b69b98a0d819dc8160405161130c9190614513565b60405180910390a150565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611345612d61565b73ffffffffffffffffffffffffffffffffffffffff166113636119cd565b73ffffffffffffffffffffffffffffffffffffffff16146113b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b090614ad2565b60405180910390fd5b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fd7e9ec6e6ecd65492dce6bf513cd6867560d49544421d0783ddf06e76c24470c816040516114409190614513565b60405180910390a150565b60136020528060005260406000206000915054906101000a900460ff1681565b611473612d61565b73ffffffffffffffffffffffffffffffffffffffff166114916119cd565b73ffffffffffffffffffffffffffffffffffffffff16146114e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114de90614ad2565b60405180910390fd5b801515601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141561157a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157190614d43565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611625612d61565b73ffffffffffffffffffffffffffffffffffffffff166116436119cd565b73ffffffffffffffffffffffffffffffffffffffff1614611699576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169090614ad2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611762612d61565b73ffffffffffffffffffffffffffffffffffffffff166117806119cd565b73ffffffffffffffffffffffffffffffffffffffff16146117d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117cd90614ad2565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561181c573d6000803e3d6000fd5b5050565b601260159054906101000a900460ff1681565b60105481565b6009818154811061184957600080fd5b906000526020600020016000915090505481565b611865612d61565b73ffffffffffffffffffffffffffffffffffffffff166118836119cd565b73ffffffffffffffffffffffffffffffffffffffff16146118d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d090614ad2565b60405180910390fd5b801515601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141561196c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196390614dd5565b60405180910390fd5b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600f5481565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611a0690614a54565b80601f0160208091040260200160405190810160405280929190818152602001828054611a3290614a54565b8015611a7f5780601f10611a5457610100808354040283529160200191611a7f565b820191906000526020600020905b815481529060010190602001808311611a6257829003601f168201915b5050505050905090565b6017602052816000526040600020602052806000526040600020600091509150505481565b611ab6612d61565b73ffffffffffffffffffffffffffffffffffffffff16611ad46119cd565b73ffffffffffffffffffffffffffffffffffffffff1614611b2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2190614ad2565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611bbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb290614e8d565b60405180910390fd5b611bc58282613a31565b5050565b611bd1612d61565b73ffffffffffffffffffffffffffffffffffffffff16611bef6119cd565b73ffffffffffffffffffffffffffffffffffffffff1614611c45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3c90614ad2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611cb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cac90614ef9565b60405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600a8181548110611d0957600080fd5b906000526020600020016000915090505481565b6000611de0611d2a612d61565b84611ddb85604051806060016040528060258152602001615c816025913960016000611d54612d61565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139d39092919063ffffffff16565b612d69565b6001905092915050565b611df2612d61565b73ffffffffffffffffffffffffffffffffffffffff16611e106119cd565b73ffffffffffffffffffffffffffffffffffffffff1614611e66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5d90614ad2565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401611ea1929190614f19565b6020604051808303816000875af1158015611ec0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ee49190614f57565b50505050565b6000611efe611ef7612d61565b8484612f34565b6001905092915050565b611f10612d61565b73ffffffffffffffffffffffffffffffffffffffff16611f2e6119cd565b73ffffffffffffffffffffffffffffffffffffffff1614611f84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7b90614ad2565b60405180910390fd5b6109c4611fea84611fdc6008600081548110611fa357611fa2614af2565b5b9060005260206000200154600a600081548110611fc357611fc2614af2565b5b9060005260206000200154612d0390919063ffffffff16565b612d0390919063ffffffff16565b111561202b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202290614b6d565b60405180910390fd5b6109c461209183612083600860018154811061204a57612049614af2565b5b9060005260206000200154600a60018154811061206a57612069614af2565b5b9060005260206000200154612d0390919063ffffffff16565b612d0390919063ffffffff16565b11156120d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c990614bd9565b60405180910390fd5b6109c46121388261212a60086002815481106120f1576120f0614af2565b5b9060005260206000200154600a60028154811061211157612110614af2565b5b9060005260206000200154612d0390919063ffffffff16565b612d0390919063ffffffff16565b1115612179576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217090614c45565b60405180910390fd5b82600960008154811061218f5761218e614af2565b5b90600052602060002001819055508160096001815481106121b3576121b2614af2565b5b90600052602060002001819055508060096002815481106121d7576121d6614af2565b5b9060005260206000200181905550505050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612218612d61565b73ffffffffffffffffffffffffffffffffffffffff166122366119cd565b73ffffffffffffffffffffffffffffffffffffffff161461228c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228390614ad2565b60405180910390fd5b612294610f79565b8111156122d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cd90614ff6565b60405180910390fd5b80600e8190555050565b60166020528060005260406000206000915054906101000a900460ff1681565b60156020528060005260406000206000915054906101000a900460ff1681565b612328612d61565b73ffffffffffffffffffffffffffffffffffffffff166123466119cd565b73ffffffffffffffffffffffffffffffffffffffff161461239c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239390614ad2565b60405180910390fd5b801515601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141561242f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242690615088565b60405180910390fd5b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516124cc91906146ab565b60405180910390a25050565b6124e0612d61565b73ffffffffffffffffffffffffffffffffffffffff166124fe6119cd565b73ffffffffffffffffffffffffffffffffffffffff1614612554576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161254b90614ad2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156125c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125bb90614ef9565b60405180910390fd5b80601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60146020528060005260406000206000915054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600e5481565b6126bd612d61565b73ffffffffffffffffffffffffffffffffffffffff166126db6119cd565b73ffffffffffffffffffffffffffffffffffffffff1614612731576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272890614ad2565b60405180910390fd5b80601260156101000a81548160ff02191690831515021790555050565b60186020528060005260406000206000915054906101000a900460ff1681565b612776612d61565b73ffffffffffffffffffffffffffffffffffffffff166127946119cd565b73ffffffffffffffffffffffffffffffffffffffff16146127ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e190614ad2565b60405180910390fd5b6109c461285084612842600960008154811061280957612808614af2565b5b9060005260206000200154600860008154811061282957612828614af2565b5b9060005260206000200154612d0390919063ffffffff16565b612d0390919063ffffffff16565b1115612891576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288890614b6d565b60405180910390fd5b6109c46128f7836128e960096001815481106128b0576128af614af2565b5b906000526020600020015460086001815481106128d0576128cf614af2565b5b9060005260206000200154612d0390919063ffffffff16565b612d0390919063ffffffff16565b1115612938576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292f90614bd9565b60405180910390fd5b6109c461299e82612990600960028154811061295757612956614af2565b5b9060005260206000200154600860028154811061297757612976614af2565b5b9060005260206000200154612d0390919063ffffffff16565b612d0390919063ffffffff16565b11156129df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129d690614c45565b60405180910390fd5b82600a6000815481106129f5576129f4614af2565b5b906000526020600020018190555081600a600181548110612a1957612a18614af2565b5b906000526020600020018190555080600a600281548110612a3d57612a3c614af2565b5b9060005260206000200181905550505050565b612a58612d61565b73ffffffffffffffffffffffffffffffffffffffff16612a766119cd565b73ffffffffffffffffffffffffffffffffffffffff1614612acc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ac390614ad2565b60405180910390fd5b612ad4610f79565b8111158015612aea575066038d7ea4c680008110155b612b29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b2090614cb1565b60405180910390fd5b80600f8190555050565b60088181548110612b4357600080fd5b906000526020600020016000915090505481565b612b5f612d61565b73ffffffffffffffffffffffffffffffffffffffff16612b7d6119cd565b73ffffffffffffffffffffffffffffffffffffffff1614612bd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bca90614ad2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612c43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c3a9061511a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000808284612d129190615169565b905083811015612d57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d4e9061520b565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612dd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dd09061529d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612e49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e409061532f565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612f2791906147a2565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612fa4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f9b906153c1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613014576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161300b90615453565b60405180910390fd5b601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156130a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613098906154e5565b60405180910390fd5b601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561312e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161312590615577565b60405180910390fd5b601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166131c557600f548111156131c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131bb90615609565b60405180910390fd5b5b601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156132695750601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156132be5750601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156134375760105461333082601760006132d6613b65565b815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d0390919063ffffffff16565b1115613371576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133689061569b565b60405180910390fd5b6133db8160176000613381613b65565b815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d0390919063ffffffff16565b601760006133e7613b65565b815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6000613442306115d5565b90506000600e548210159050601260149054906101000a900460ff161580156134685750805b80156134805750601260159054906101000a900460ff165b80156134d55750601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156137d0576001601260146101000a81548160ff0219169083151502179055506000600b5490506000600c5490506000600d5490506000613520600283613b8290919063ffffffff16565b905060006135498261353b8688612d0390919063ffffffff16565b612d0390919063ffffffff16565b9050600047905061355b600e54613bda565b60006135708247613e1d90919063ffffffff16565b905060006135998461358b8985613e7690919063ffffffff16565b613b8290919063ffffffff16565b905060006135c2856135b48886613e7690919063ffffffff16565b613b8290919063ffffffff16565b905060006135eb826135dd8587613e1d90919063ffffffff16565b613e1d90919063ffffffff16565b905060008311156136a157601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f1935050505015801561365e573d6000803e3d6000fd5b5061369a6136898761367b8c600e54613e7690919063ffffffff16565b613b8290919063ffffffff16565b600c54613e1d90919063ffffffff16565b600c819055505b60008211156136f6576136b48783613ef1565b6136ef6136de876136d08b600e54613e7690919063ffffffff16565b613b8290919063ffffffff16565b600d54613e1d90919063ffffffff16565b600d819055505b60008111156137aa57601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613767573d6000803e3d6000fd5b506137a3613792876137848d600e54613e7690919063ffffffff16565b613b8290919063ffffffff16565b600b54613e1d90919063ffffffff16565b600b819055505b6000601260146101000a81548160ff021916908315150217905550505050505050505050505b6000601260149054906101000a900460ff16159050601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806138865750601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561389057600090505b80156139c057600061399285601560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16601560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561398d5750601560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b613fcf565b905060008111156139be576139a8873083614238565b6139bb8186613e1d90919063ffffffff16565b94505b505b6139cb868686614238565b505050505050565b6000838311158290613a1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a1291906145c7565b60405180910390fd5b508284613a2891906156bb565b90509392505050565b801515601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415613ac4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613abb90615761565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000613b7d6201518042613b8290919063ffffffff16565b905090565b6000808211613bc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613bbd906157cd565b60405180910390fd5b8183613bd2919061581c565b905092915050565b6000600267ffffffffffffffff811115613bf757613bf661584d565b5b604051908082528060200260200182016040528015613c255781602001602082028036833780820191505090505b5090503081600081518110613c3d57613c3c614af2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613ce4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d089190615891565b81600181518110613d1c57613d1b614af2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613d8330600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612d69565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613de79594939291906159b7565b600060405180830381600087803b158015613e0157600080fd5b505af1158015613e15573d6000803e3d6000fd5b505050505050565b600082821115613e62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e5990615a5d565b60405180910390fd5b8183613e6e91906156bb565b905092915050565b600080831415613e895760009050613eeb565b60008284613e979190615a7d565b9050828482613ea6919061581c565b14613ee6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613edd90615b49565b60405180910390fd5b809150505b92915050565b613f1e30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612d69565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008030426040518863ffffffff1660e01b8152600401613f8596959493929190615b69565b60606040518083038185885af1158015613fa3573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613fc89190615bdf565b5050505050565b600080600061407061271061406286614032578761400c576008600081548110613ffc57613ffb614af2565b5b906000526020600020015461402d565b600860018154811061402157614020614af2565b5b90600052602060002001545b614053565b600860028154811061404757614046614af2565b5b90600052602060002001545b89613e7690919063ffffffff16565b613b8290919063ffffffff16565b905061408781600b54612d0390919063ffffffff16565b600b81905550600061412b61271061411d876140ed57886140c75760096000815481106140b7576140b6614af2565b5b90600052602060002001546140e8565b60096001815481106140dc576140db614af2565b5b90600052602060002001545b61410e565b600960028154811061410257614101614af2565b5b90600052602060002001545b8a613e7690919063ffffffff16565b613b8290919063ffffffff16565b905061414281600c54612d0390919063ffffffff16565b600c8190555060006141e66127106141d8886141a8578961418257600a60008154811061417257614171614af2565b5b90600052602060002001546141a3565b600a60018154811061419757614196614af2565b5b90600052602060002001545b6141c9565b600a6002815481106141bd576141bc614af2565b5b90600052602060002001545b8b613e7690919063ffffffff16565b613b8290919063ffffffff16565b90506141fd81600d54612d0390919063ffffffff16565b600d819055506142288161421a8486612d0390919063ffffffff16565b612d0390919063ffffffff16565b9350839450505050509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156142a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161429f906153c1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415614318576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161430f90615453565b60405180910390fd5b6143238383836144cd565b61438e81604051806060016040528060268152602001615c33602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139d39092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614421816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d0390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516144c091906147a2565b60405180910390a3505050565b505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006144fd826144d2565b9050919050565b61450d816144f2565b82525050565b60006020820190506145286000830184614504565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561456857808201518184015260208101905061454d565b83811115614577576000848401525b50505050565b6000601f19601f8301169050919050565b60006145998261452e565b6145a38185614539565b93506145b381856020860161454a565b6145bc8161457d565b840191505092915050565b600060208201905081810360008301526145e1818461458e565b905092915050565b600080fd5b6145f7816144f2565b811461460257600080fd5b50565b600081359050614614816145ee565b92915050565b6000819050919050565b61462d8161461a565b811461463857600080fd5b50565b60008135905061464a81614624565b92915050565b60008060408385031215614667576146666145e9565b5b600061467585828601614605565b92505060206146868582860161463b565b9150509250929050565b60008115159050919050565b6146a581614690565b82525050565b60006020820190506146c0600083018461469c565b92915050565b6000806000606084860312156146df576146de6145e9565b5b60006146ed8682870161463b565b93505060206146fe8682870161463b565b925050604061470f8682870161463b565b9150509250925092565b6000819050919050565b600061473e614739614734846144d2565b614719565b6144d2565b9050919050565b600061475082614723565b9050919050565b600061476282614745565b9050919050565b61477281614757565b82525050565b600060208201905061478d6000830184614769565b92915050565b61479c8161461a565b82525050565b60006020820190506147b76000830184614793565b92915050565b6000806000606084860312156147d6576147d56145e9565b5b60006147e486828701614605565b93505060206147f586828701614605565b92505060406148068682870161463b565b9150509250925092565b600060208284031215614826576148256145e9565b5b60006148348482850161463b565b91505092915050565b600060ff82169050919050565b6148538161483d565b82525050565b600060208201905061486e600083018461484a565b92915050565b60006020828403121561488a576148896145e9565b5b600061489884828501614605565b91505092915050565b6148aa81614690565b81146148b557600080fd5b50565b6000813590506148c7816148a1565b92915050565b600080604083850312156148e4576148e36145e9565b5b60006148f285828601614605565b9250506020614903858286016148b8565b9150509250929050565b6000614918826144d2565b9050919050565b6149288161490d565b811461493357600080fd5b50565b6000813590506149458161491f565b92915050565b600060208284031215614961576149606145e9565b5b600061496f84828501614936565b91505092915050565b6000806040838503121561498f5761498e6145e9565b5b600061499d8582860161463b565b92505060206149ae85828601614605565b9150509250929050565b600080604083850312156149cf576149ce6145e9565b5b60006149dd85828601614605565b92505060206149ee85828601614605565b9150509250929050565b600060208284031215614a0e57614a0d6145e9565b5b6000614a1c848285016148b8565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614a6c57607f821691505b60208210811415614a8057614a7f614a25565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614abc602083614539565b9150614ac782614a86565b602082019050919050565b60006020820190508181036000830152614aeb81614aaf565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4d617820666565206c696d6974207265616368656420666f7220274255592700600082015250565b6000614b57601f83614539565b9150614b6282614b21565b602082019050919050565b60006020820190508181036000830152614b8681614b4a565b9050919050565b7f4d617820666565206c696d6974207265616368656420666f72202753454c4c27600082015250565b6000614bc3602083614539565b9150614bce82614b8d565b602082019050919050565b60006020820190508181036000830152614bf281614bb6565b9050919050565b7f4d617820666565206c696d6974207265616368656420666f7220275032502700600082015250565b6000614c2f601f83614539565b9150614c3a82614bf9565b602082019050919050565b60006020820190508181036000830152614c5e81614c22565b9050919050565b7f616d6f756e74206973206e6f7420636f72726563742e00000000000000000000600082015250565b6000614c9b601683614539565b9150614ca682614c65565b602082019050919050565b60006020820190508181036000830152614cca81614c8e565b9050919050565b7f415041593a204163636f756e7420697320616c7265616479207468652076616c60008201527f7565206f6620276578636c756465642700000000000000000000000000000000602082015250565b6000614d2d603083614539565b9150614d3882614cd1565b604082019050919050565b60006020820190508181036000830152614d5c81614d20565b9050919050565b7f4461696c792073616c65206c696d6974206578636c7573696f6e20697320616c60008201527f7265616479207468652076616c7565206f6620276578636c7564656427000000602082015250565b6000614dbf603d83614539565b9150614dca82614d63565b604082019050919050565b60006020820190508181036000830152614dee81614db2565b9050919050565b7f54686520556e697377617020706169722063616e6e6f742062652072656d6f7660008201527f65642066726f6d206175746f6d617465644d61726b65744d616b65725061697260208201527f7300000000000000000000000000000000000000000000000000000000000000604082015250565b6000614e77604183614539565b9150614e8282614df5565b606082019050919050565b60006020820190508181036000830152614ea681614e6a565b9050919050565b7f7a65726f2d61646472657373206e6f7420616c6c6f7765640000000000000000600082015250565b6000614ee3601883614539565b9150614eee82614ead565b602082019050919050565b60006020820190508181036000830152614f1281614ed6565b9050919050565b6000604082019050614f2e6000830185614504565b614f3b6020830184614793565b9392505050565b600081519050614f51816148a1565b92915050565b600060208284031215614f6d57614f6c6145e9565b5b6000614f7b84828501614f42565b91505092915050565b7f416d6f756e742063616e6e6f74206265206f7665722074686520746f74616c2060008201527f737570706c792e00000000000000000000000000000000000000000000000000602082015250565b6000614fe0602783614539565b9150614feb82614f84565b604082019050919050565b6000602082019050818103600083015261500f81614fd3565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b6000615072602a83614539565b915061507d82615016565b604082019050919050565b600060208201905081810360008301526150a181615065565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000615104602683614539565b915061510f826150a8565b604082019050919050565b60006020820190508181036000830152615133816150f7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006151748261461a565b915061517f8361461a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156151b4576151b361513a565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006151f5601b83614539565b9150615200826151bf565b602082019050919050565b60006020820190508181036000830152615224816151e8565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000615287602483614539565b91506152928261522b565b604082019050919050565b600060208201905081810360008301526152b68161527a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000615319602283614539565b9150615324826152bd565b604082019050919050565b600060208201905081810360008301526153488161530c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006153ab602583614539565b91506153b68261534f565b604082019050919050565b600060208201905081810360008301526153da8161539e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061543d602383614539565b9150615448826153e1565b604082019050919050565b6000602082019050818103600083015261546c81615430565b9050919050565b7f45524332303a207472616e7366657220746f20697320626c61636b6c6973746560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b60006154cf602183614539565b91506154da82615473565b604082019050919050565b600060208201905081810360008301526154fe816154c2565b9050919050565b7f45524332303a207472616e736665722066726f6d20697320626c61636b6c697360008201527f7465640000000000000000000000000000000000000000000000000000000000602082015250565b6000615561602383614539565b915061556c82615505565b604082019050919050565b6000602082019050818103600083015261559081615554565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b60006155f3602883614539565b91506155fe82615597565b604082019050919050565b60006020820190508181036000830152615622816155e6565b9050919050565b7f54686973206163636f756e7420686173206578636565646564206d617820646160008201527f696c792073656c6c206c696d6974000000000000000000000000000000000000602082015250565b6000615685602e83614539565b915061569082615629565b604082019050919050565b600060208201905081810360008301526156b481615678565b9050919050565b60006156c68261461a565b91506156d18361461a565b9250828210156156e4576156e361513a565b5b828203905092915050565b7f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160008201527f6c72656164792073657420746f20746861742076616c75650000000000000000602082015250565b600061574b603883614539565b9150615756826156ef565b604082019050919050565b6000602082019050818103600083015261577a8161573e565b9050919050565b7f536166654d6174683a206469766973696f6e206279207a65726f000000000000600082015250565b60006157b7601a83614539565b91506157c282615781565b602082019050919050565b600060208201905081810360008301526157e6816157aa565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006158278261461a565b91506158328361461a565b925082615842576158416157ed565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061588b816145ee565b92915050565b6000602082840312156158a7576158a66145e9565b5b60006158b58482850161587c565b91505092915050565b6000819050919050565b60006158e36158de6158d9846158be565b614719565b61461a565b9050919050565b6158f3816158c8565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61592e816144f2565b82525050565b60006159408383615925565b60208301905092915050565b6000602082019050919050565b6000615964826158f9565b61596e8185615904565b935061597983615915565b8060005b838110156159aa5781516159918882615934565b975061599c8361594c565b92505060018101905061597d565b5085935050505092915050565b600060a0820190506159cc6000830188614793565b6159d960208301876158ea565b81810360408301526159eb8186615959565b90506159fa6060830185614504565b615a076080830184614793565b9695505050505050565b7f536166654d6174683a207375627472616374696f6e206f766572666c6f770000600082015250565b6000615a47601e83614539565b9150615a5282615a11565b602082019050919050565b60006020820190508181036000830152615a7681615a3a565b9050919050565b6000615a888261461a565b9150615a938361461a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615615acc57615acb61513a565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000615b33602183614539565b9150615b3e82615ad7565b604082019050919050565b60006020820190508181036000830152615b6281615b26565b9050919050565b600060c082019050615b7e6000830189614504565b615b8b6020830188614793565b615b9860408301876158ea565b615ba560608301866158ea565b615bb26080830185614504565b615bbf60a0830184614793565b979650505050505050565b600081519050615bd981614624565b92915050565b600080600060608486031215615bf857615bf76145e9565b5b6000615c0686828701615bca565b9350506020615c1786828701615bca565b9250506040615c2886828701615bca565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122032e2130beaf6b0dea4f58aff1318a7f22501d1c2e63426a35acbc500cd2291c564736f6c634300080b0033

Deployed Bytecode Sourcemap

10787:12049:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11456:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3150:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4045:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14020:512;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10870:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3451:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4222:321;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13710:203;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3352:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4551:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17398:146;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10918:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17553:154;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11606:51;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15857:248;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3567:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1564:148;;;;;;;;;;;;;:::i;:::-;;22600:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11567:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11306:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10995:29;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16111:285;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11250:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1341:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3249:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11853:70;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16405:250;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16976:211;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11031:29;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4777:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22443:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3702:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14538:506;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11367:85;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13307:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11788:61;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11726:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15565:286;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17193:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11661:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3886:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11191:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13919:95;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11927:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15050:506;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13505:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10956:35;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1721:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11456:79;;;;;;;;;;;;;:::o;3150:91::-;3195:13;3228:5;3221:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3150:91;:::o;4045:169::-;4128:4;4145:39;4154:12;:10;:12::i;:::-;4168:7;4177:6;4145:8;:39::i;:::-;4202:4;4195:11;;4045:169;;;;:::o;14020:512::-;1487:12;:10;:12::i;:::-;1476:23;;:7;:5;:7::i;:::-;:23;;;1468:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14176:4:::1;14126:45;14167:3;14126:36;14146:12;14159:1;14146:15;;;;;;;;:::i;:::-;;;;;;;;;;14126:12;14139:1;14126:15;;;;;;;;:::i;:::-;;;;;;;;;;:19;;:36;;;;:::i;:::-;:40;;:45;;;;:::i;:::-;:54;;14118:99;;;;;;;;;;;;:::i;:::-;;;;;;;;;14280:4;14230:46;14271:4;14230:36;14250:12;14263:1;14250:15;;;;;;;;:::i;:::-;;;;;;;;;;14230:12;14243:1;14230:15;;;;;;;;:::i;:::-;;;;;;;;;;:19;;:36;;;;:::i;:::-;:40;;:46;;;;:::i;:::-;:54;;14222:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;14385:4;14335:45;14376:3;14335:36;14355:12;14368:1;14355:15;;;;;;;;:::i;:::-;;;;;;;;;;14335:12;14348:1;14335:15;;;;;;;;:::i;:::-;;;;;;;;;;:19;;:36;;;;:::i;:::-;:40;;:45;;;;:::i;:::-;:54;;14327:99;;;;;;;;;;;;:::i;:::-;;;;;;;;;14459:3;14435:18;14454:1;14435:21;;;;;;;;:::i;:::-;;;;;;;;;:27;;;;14491:4;14467:18;14486:1;14467:21;;;;;;;;:::i;:::-;;;;;;;;;:28;;;;14524:3;14500:18;14519:1;14500:21;;;;;;;;:::i;:::-;;;;;;;;;:27;;;;14020:512:::0;;;:::o;10870:41::-;;;;;;;;;;;;;:::o;3451:108::-;3512:7;3539:12;;3532:19;;3451:108;:::o;4222:321::-;4328:4;4345:36;4355:6;4363:9;4374:6;4345:9;:36::i;:::-;4392:121;4401:6;4409:12;:10;:12::i;:::-;4423:89;4461:6;4423:89;;;;;;;;;;;;;;;;;:11;:19;4435:6;4423:19;;;;;;;;;;;;;;;:33;4443:12;:10;:12::i;:::-;4423:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;4392:8;:121::i;:::-;4531:4;4524:11;;4222:321;;;;;:::o;13710:203::-;1487:12;:10;:12::i;:::-;1476:23;;:7;:5;:7::i;:::-;:23;;;1468:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13800:13:::1;:11;:13::i;:::-;13790:6;:23;;:54;;;;;13827:17;13817:6;:27;;13790:54;13782:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;13899:6;13883:13;:22;;;;13710:203:::0;:::o;3352:91::-;3401:5;3426:9;;;;;;;;;;;3419:16;;3352:91;:::o;4551:218::-;4639:4;4656:83;4665:12;:10;:12::i;:::-;4679:7;4688:50;4727:10;4688:11;:25;4700:12;:10;:12::i;:::-;4688:25;;;;;;;;;;;;;;;:34;4714:7;4688:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;4656:8;:83::i;:::-;4757:4;4750:11;;4551:218;;;;:::o;17398:146::-;1487:12;:10;:12::i;:::-;1476:23;;:7;:5;:7::i;:::-;:23;;;1468:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17493:4:::1;17468:13;:22;17482:7;17468:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;17513:23;17528:7;17513:23;;;;;;:::i;:::-;;;;;;;;17398:146:::0;:::o;10918:28::-;;;;;;;;;;;;;:::o;17553:154::-;1487:12;:10;:12::i;:::-;1476:23;;:7;:5;:7::i;:::-;:23;;;1468:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17653:5:::1;17628:13;:22;17642:7;17628:22;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;17674:25;17691:7;17674:25;;;;;;:::i;:::-;;;;;;;;17553:154:::0;:::o;11606:51::-;;;;;;;;;;;;;;;;;;;;;;:::o;15857:248::-;1487:12;:10;:12::i;:::-;1476:23;;:7;:5;:7::i;:::-;:23;;;1468:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15989:8:::1;15951:46;;:25;:34;15977:7;15951:34;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;15943:107;;;;;;;;;;;;:::i;:::-;;;;;;;;;16092:8;16055:25;:34;16081:7;16055:34;;;;;;;;;;;;;;;;:45;;;;;;;;;;;;;;;;;;15857:248:::0;;:::o;3567:127::-;3641:7;3668:9;:18;3678:7;3668:18;;;;;;;;;;;;;;;;3661:25;;3567:127;;;:::o;1564:148::-;1487:12;:10;:12::i;:::-;1476:23;;:7;:5;:7::i;:::-;:23;;;1468:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1671:1:::1;1634:40;;1655:6;;;;;;;;;;;1634:40;;;;;;;;;;;;1702:1;1685:6;;:19;;;;;;;;;;;;;;;;;;1564:148::o:0;22600:124::-;1487:12;:10;:12::i;:::-;1476:23;;:7;:5;:7::i;:::-;:23;;;1468:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22675:9:::1;:18;;:41;22694:21;22675:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;22600:124:::0;:::o;11567:29::-;;;;;;;;;;;;;:::o;11306:54::-;;;;:::o;10995:29::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;16111:285::-;1487:12;:10;:12::i;:::-;1476:23;;:7;:5;:7::i;:::-;:23;;;1468:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16255:8:::1;16214:49;;:28;:37;16243:7;16214:37;;;;;;;;;;;;;;;;;;;;;;;;;:49;;;;16206:123;;;;;;;;;;;;:::i;:::-;;;;;;;;;16380:8;16340:28;:37;16369:7;16340:37;;;;;;;;;;;;;;;;:48;;;;;;;;;;;;;;;;;;16111:285:::0;;:::o;11250:52::-;;;;:::o;1341:87::-;1387:7;1414:6;;;;;;;;;;;1407:13;;1341:87;:::o;3249:95::-;3296:13;3329:7;3322:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3249:95;:::o;11853:70::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;16405:250::-;1487:12;:10;:12::i;:::-;1476:23;;:7;:5;:7::i;:::-;:23;;;1468:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16512:13:::1;;;;;;;;;;;16504:21;;:4;:21;;;;16496:99;;;;;;;;;;;;:::i;:::-;;;;;;;;;16606:41;16635:4;16641:5;16606:28;:41::i;:::-;16405:250:::0;;:::o;16976:211::-;1487:12;:10;:12::i;:::-;1476:23;;:7;:5;:7::i;:::-;:23;;;1468:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17103:1:::1;17081:24;;:10;:24;;;;17073:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;17169:10;17141:25;;:38;;;;;;;;;;;;;;;;;;16976:211:::0;:::o;11031:29::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4777:269::-;4870:4;4887:129;4896:12;:10;:12::i;:::-;4910:7;4919:96;4958:15;4919:96;;;;;;;;;;;;;;;;;:11;:25;4931:12;:10;:12::i;:::-;4919:25;;;;;;;;;;;;;;;:34;4945:7;4919:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;4887:8;:129::i;:::-;5034:4;5027:11;;4777:269;;;;:::o;22443:151::-;1487:12;:10;:12::i;:::-;1476:23;;:7;:5;:7::i;:::-;:23;;;1468:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22552:12:::1;22545:29;;;22575:2;22579:6;22545:41;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22443:151:::0;;;:::o;3702:175::-;3788:4;3805:42;3815:12;:10;:12::i;:::-;3829:9;3840:6;3805:9;:42::i;:::-;3865:4;3858:11;;3702:175;;;;:::o;14538:506::-;1487:12;:10;:12::i;:::-;1476:23;;:7;:5;:7::i;:::-;:23;;;1468:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14694:4:::1;14638:51;14685:3;14638:42;14658:18;14677:1;14658:21;;;;;;;;:::i;:::-;;;;;;;;;;14638:12;14651:1;14638:15;;;;;;;;:::i;:::-;;;;;;;;;;:19;;:42;;;;:::i;:::-;:46;;:51;;;;:::i;:::-;:60;;14630:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;14804:4;14748:52;14795:4;14748:42;14768:18;14787:1;14768:21;;;;;;;;:::i;:::-;;;;;;;;;;14748:12;14761:1;14748:15;;;;;;;;:::i;:::-;;;;;;;;;;:19;;:42;;;;:::i;:::-;:46;;:52;;;;:::i;:::-;:60;;14740:106;;;;;;;;;;;;:::i;:::-;;;;;;;;;14915:4;14859:51;14906:3;14859:42;14879:18;14898:1;14879:21;;;;;;;;:::i;:::-;;;;;;;;;;14859:12;14872:1;14859:15;;;;;;;;:::i;:::-;;;;;;;;;;:19;;:42;;;;:::i;:::-;:46;;:51;;;;:::i;:::-;:60;;14851:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;14983:3;14965:12;14978:1;14965:15;;;;;;;;:::i;:::-;;;;;;;;;:21;;;;15009:4;14991:12;15004:1;14991:15;;;;;;;;:::i;:::-;;;;;;;;;:22;;;;15036:3;15018:12;15031:1;15018:15;;;;;;;;:::i;:::-;;;;;;;;;:21;;;;14538:506:::0;;;:::o;11367:85::-;;;;;;;;;;;;;:::o;13307:192::-;1487:12;:10;:12::i;:::-;1476:23;;:7;:5;:7::i;:::-;:23;;;1468:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13402:13:::1;:11;:13::i;:::-;13392:6;:23;;13384:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;13486:6;13465:18;:27;;;;13307:192:::0;:::o;11788:61::-;;;;;;;;;;;;;;;;;;;;;;:::o;11726:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;15565:286::-;1487:12;:10;:12::i;:::-;1476:23;;:7;:5;:7::i;:::-;:23;;;1468:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15689:8:::1;15658:39;;:18;:27;15677:7;15658:27;;;;;;;;;;;;;;;;;;;;;;;;;:39;;;;15650:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;15785:8;15755:18;:27;15774:7;15755:27;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;15825:7;15809:34;;;15834:8;15809:34;;;;;;:::i;:::-;;;;;;;;15565:286:::0;;:::o;17193:199::-;1487:12;:10;:12::i;:::-;1476:23;;:7;:5;:7::i;:::-;:23;;;1468:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17314:1:::1;17292:24;;:10;:24;;;;17284:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;17374:10;17352:19;;:32;;;;;;;;;;;;;;;;;;17193:199:::0;:::o;11661:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;3886:151::-;3975:7;4002:11;:18;4014:5;4002:18;;;;;;;;;;;;;;;:27;4021:7;4002:27;;;;;;;;;;;;;;;;3995:34;;3886:151;;;;:::o;11191:55::-;;;;:::o;13919:95::-;1487:12;:10;:12::i;:::-;1476:23;;:7;:5;:7::i;:::-;:23;;;1468:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13998:8:::1;13985:10;;:21;;;;;;;;;;;;;;;;;;13919:95:::0;:::o;11927:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;15050:506::-;1487:12;:10;:12::i;:::-;1476:23;;:7;:5;:7::i;:::-;:23;;;1468:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15206:4:::1;15150:51;15197:3;15150:42;15176:12;15189:1;15176:15;;;;;;;;:::i;:::-;;;;;;;;;;15150:18;15169:1;15150:21;;;;;;;;:::i;:::-;;;;;;;;;;:25;;:42;;;;:::i;:::-;:46;;:51;;;;:::i;:::-;:60;;15142:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;15316:4;15260:52;15307:4;15260:42;15286:12;15299:1;15286:15;;;;;;;;:::i;:::-;;;;;;;;;;15260:18;15279:1;15260:21;;;;;;;;:::i;:::-;;;;;;;;;;:25;;:42;;;;:::i;:::-;:46;;:52;;;;:::i;:::-;:60;;15252:106;;;;;;;;;;;;:::i;:::-;;;;;;;;;15427:4;15371:51;15418:3;15371:42;15397:12;15410:1;15397:15;;;;;;;;:::i;:::-;;;;;;;;;;15371:18;15390:1;15371:21;;;;;;;;:::i;:::-;;;;;;;;;;:25;;:42;;;;:::i;:::-;:46;;:51;;;;:::i;:::-;:60;;15363:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;15495:3;15477:12;15490:1;15477:15;;;;;;;;:::i;:::-;;;;;;;;;:21;;;;15521:4;15503:12;15516:1;15503:15;;;;;;;;:::i;:::-;;;;;;;;;:22;;;;15548:3;15530:12;15543:1;15530:15;;;;;;;;:::i;:::-;;;;;;;;;:21;;;;15050:506:::0;;;:::o;13505:199::-;1487:12;:10;:12::i;:::-;1476:23;;:7;:5;:7::i;:::-;:23;;;1468:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13593:13:::1;:11;:13::i;:::-;13583:6;:23;;:54;;;;;13620:17;13610:6;:27;;13583:54;13575:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;13690:6;13676:11;:20;;;;13505:199:::0;:::o;10956:35::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1721:244::-;1487:12;:10;:12::i;:::-;1476:23;;:7;:5;:7::i;:::-;:23;;;1468:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1830:1:::1;1810:22;;:8;:22;;;;1802:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;1920:8;1891:38;;1912:6;;;;;;;;;;;1891:38;;;;;;;;;;;;1949:8;1940:6;;:17;;;;;;;;;;;;;;;;;;1721:244:::0;:::o;8342:179::-;8400:7;8420:9;8436:1;8432;:5;;;;:::i;:::-;8420:17;;8461:1;8456;:6;;8448:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;8512:1;8505:8;;;8342:179;;;;:::o;764:115::-;817:15;860:10;845:26;;764:115;:::o;5981:344::-;6100:1;6083:19;;:5;:19;;;;6075:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6181:1;6162:21;;:7;:21;;;;6154:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6263:6;6233:11;:18;6245:5;6233:18;;;;;;;;;;;;;;;:27;6252:7;6233:27;;;;;;;;;;;;;;;:36;;;;6301:7;6285:32;;6294:5;6285:32;;;6310:6;6285:32;;;;;;:::i;:::-;;;;;;;;5981:344;;;:::o;17713:3026::-;17827:1;17811:18;;:4;:18;;;;17803:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17904:1;17890:16;;:2;:16;;;;17882:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;17960:13;:19;17974:4;17960:19;;;;;;;;;;;;;;;;;;;;;;;;;17959:20;17951:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;18031:13;:17;18045:2;18031:17;;;;;;;;;;;;;;;;;;;;;;;;;18030:18;18022:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;18107:25;:31;18133:4;18107:31;;;;;;;;;;;;;;;;;;;;;;;;;18103:129;;18170:11;;18160:6;:21;;18152:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;18103:129;18245:28;:34;18274:4;18245:34;;;;;;;;;;;;;;;;;;;;;;;;;18244:35;:71;;;;;18284:25;:31;18310:4;18284:31;;;;;;;;;;;;;;;;;;;;;;;;;18283:32;18244:71;:104;;;;;18319:25;:29;18345:2;18319:29;;;;;;;;;;;;;;;;;;;;;;;;;18244:104;18240:330;;;18418:13;;18372:42;18407:6;18372:14;:24;18387:8;:6;:8::i;:::-;18372:24;;;;;;;;;;;:30;18397:4;18372:30;;;;;;;;;;;;;;;;:34;;:42;;;;:::i;:::-;:59;;18364:118;;;;;;;;;;;;:::i;:::-;;;;;;;;;18522:42;18557:6;18522:14;:24;18537:8;:6;:8::i;:::-;18522:24;;;;;;;;;;;:30;18547:4;18522:30;;;;;;;;;;;;;;;;:34;;:42;;;;:::i;:::-;18489:14;:24;18504:8;:6;:8::i;:::-;18489:24;;;;;;;;;;;:30;18514:4;18489:30;;;;;;;;;;;;;;;:75;;;;18240:330;18578:28;18609:24;18627:4;18609:9;:24::i;:::-;18578:55;;18638:12;18677:18;;18653:20;:42;;18638:57;;18709:8;;;;;;;;;;;18708:9;:20;;;;;18721:7;18708:20;:34;;;;;18732:10;;;;;;;;;;;18708:34;:67;;;;;18746:25;:29;18772:2;18746:29;;;;;;;;;;;;;;;;;;;;;;;;;18708:67;18704:1532;;;18794:4;18783:8;;:15;;;;;;;;;;;;;;;;;;18809:26;18838:23;;18809:52;;18867:24;18896:17;;18867:46;;18919:24;18948:17;;18919:46;;18971:21;19000:23;19021:1;19000:16;:20;;:23;;;;:::i;:::-;18971:52;;19034:19;19056:59;19101:13;19056:40;19079:16;19056:18;:22;;:40;;;;:::i;:::-;:44;;:59;;;;:::i;:::-;19034:81;;19135:22;19160:21;19135:46;;19190:36;19207:18;;19190:16;:36::i;:::-;19232:18;19253:41;19279:14;19253:21;:25;;:41;;;;:::i;:::-;19232:62;;19305:21;19332:49;19369:11;19332:32;19347:16;19332:10;:14;;:32;;;;:::i;:::-;:36;;:49;;;;:::i;:::-;19305:76;;19387:21;19414:46;19448:11;19414:29;19429:13;19414:10;:14;;:29;;;;:::i;:::-;:33;;:46;;;;:::i;:::-;19387:73;;19466:23;19493:48;19527:13;19493:29;19508:13;19493:10;:14;;:29;;;;:::i;:::-;:33;;:48;;;;:::i;:::-;19466:75;;19571:1;19555:13;:17;19552:206;;;19597:19;;;;;;;;;;;19589:37;;:52;19627:13;19589:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19671:80;19693:57;19738:11;19693:40;19716:16;19693:18;;:22;;:40;;;;:::i;:::-;:44;;:57;;;;:::i;:::-;19671:17;;:21;;:80;;;;:::i;:::-;19651:17;:100;;;;19552:206;19787:1;19771:13;:17;19768:196;;;19805:42;19818:13;19833;19805:12;:42::i;:::-;19877:80;19899:57;19944:11;19899:40;19922:16;19899:18;;:22;;:40;;;;:::i;:::-;:44;;:57;;;;:::i;:::-;19877:17;;:21;;:80;;;;:::i;:::-;19857:17;:100;;;;19768:196;19995:1;19977:15;:19;19974:230;;;20021:25;;;;;;;;;;;20013:43;;:60;20057:15;20013:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20109:88;20137:59;20184:11;20137:42;20160:18;20137;;:22;;:42;;;;:::i;:::-;:46;;:59;;;;:::i;:::-;20109:23;;:27;;:88;;;;:::i;:::-;20083:23;:114;;;;19974:230;20225:5;20214:8;;:16;;;;;;;;;;;;;;;;;;18777:1459;;;;;;;;;;18704:1532;20250:12;20266:8;;;;;;;;;;;20265:9;20250:24;;20282:18;:24;20301:4;20282:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;20310:18;:22;20329:2;20310:22;;;;;;;;;;;;;;;;;;;;;;;;;20282:50;20279:101;;;20363:5;20353:15;;20279:101;20391:7;20388:300;;;20413:14;20445:117;20456:6;20464:25;:29;20490:2;20464:29;;;;;;;;;;;;;;;;;;;;;;;;;20496:25;:31;20522:4;20496:31;;;;;;;;;;;;;;;;;;;;;;;;;20495:32;:66;;;;;20532:25;:29;20558:2;20532:29;;;;;;;;;;;;;;;;;;;;;;;;;20531:30;20495:66;20445:10;:117::i;:::-;20436:126;;20580:1;20571:6;:10;20568:115;;;20596:44;20612:4;20626;20633:6;20596:15;:44::i;:::-;20658:18;20669:6;20658;:10;;:18;;;;:::i;:::-;20649:27;;20568:115;20404:284;20388:300;20698:33;20714:4;20720:2;20724:6;20698:15;:33::i;:::-;17792:2947;;;17713:3026;;;:::o;9248:166::-;9334:7;9367:1;9362;:6;;9370:12;9354:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;9405:1;9401;:5;;;;:::i;:::-;9394:12;;9248:166;;;;;:::o;16664:306::-;16790:5;16755:40;;:25;:31;16781:4;16755:31;;;;;;;;;;;;;;;;;;;;;;;;;:40;;;;16747:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;16901:5;16867:25;:31;16893:4;16867:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;16956:5;16922:40;;16950:4;16922:40;;;;;;;;;;;;16664:306;;:::o;22730:103::-;22770:7;22796:29;22816:8;22796:15;:19;;:29;;;;:::i;:::-;22789:36;;22730:103;:::o;8926:153::-;8984:7;9016:1;9012;:5;9004:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;9070:1;9066;:5;;;;:::i;:::-;9059:12;;8926:153;;;;:::o;21963:475::-;22029:21;22067:1;22053:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22029:40;;22098:4;22080;22085:1;22080:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;22124:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22114:4;22119:1;22114:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;22161:62;22178:4;22193:15;;;;;;;;;;;22211:11;22161:8;:62::i;:::-;22234:15;;;;;;;;;;;:66;;;22315:11;22341:1;22357:4;22384;22404:15;22234:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22018:420;21963:475;:::o;8530:158::-;8588:7;8621:1;8616;:6;;8608:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;8679:1;8675;:5;;;;:::i;:::-;8668:12;;8530:158;;;;:::o;8697:220::-;8755:7;8784:1;8779;:6;8775:20;;;8794:1;8787:8;;;;8775:20;8806:9;8822:1;8818;:5;;;;:::i;:::-;8806:17;;8851:1;8846;8842;:5;;;;:::i;:::-;:10;8834:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;8908:1;8901:8;;;8697:220;;;;;:::o;21590:367::-;21671:62;21688:4;21703:15;;;;;;;;;;;21721:11;21671:8;:62::i;:::-;21744:15;;;;;;;;;;;:31;;;21783:9;21816:4;21836:11;21862:1;21879;21903:4;21923:15;21744:205;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;21590:367;;:::o;20745:839::-;20819:7;20839:16;20870:27;20900:105;20999:5;20900:94;20911:3;:82;;20941:4;:52;;20972:18;20991:1;20972:21;;;;;;;;:::i;:::-;;;;;;;;;;20941:52;;;20948:18;20967:1;20948:21;;;;;;;;:::i;:::-;;;;;;;;;;20941:52;20911:82;;;20917:18;20936:1;20917:21;;;;;;;;:::i;:::-;;;;;;;;;;20911:82;20900:6;:10;;:94;;;;:::i;:::-;:98;;:105;;;;:::i;:::-;20870:135;;21045:48;21073:19;21045:23;;:27;;:48;;;;:::i;:::-;21019:23;:74;;;;21102:21;21126:87;21207:5;21126:76;21137:3;:64;;21161:4;:40;;21186:12;21199:1;21186:15;;;;;;;;:::i;:::-;;;;;;;;;;21161:40;;;21168:12;21181:1;21168:15;;;;;;;;:::i;:::-;;;;;;;;;;21161:40;21137:64;;;21143:12;21156:1;21143:15;;;;;;;;:::i;:::-;;;;;;;;;;21137:64;21126:6;:10;;:76;;;;:::i;:::-;:80;;:87;;;;:::i;:::-;21102:111;;21247:36;21269:13;21247:17;;:21;;:36;;;;:::i;:::-;21227:17;:56;;;;21292:21;21316:87;21397:5;21316:76;21327:3;:64;;21351:4;:40;;21376:12;21389:1;21376:15;;;;;;;;:::i;:::-;;;;;;;;;;21351:40;;;21358:12;21371:1;21358:15;;;;;;;;:::i;:::-;;;;;;;;;;21351:40;21327:64;;;21333:12;21346:1;21333:15;;;;;;;;:::i;:::-;;;;;;;;;;21327:64;21316:6;:10;;:76;;;;:::i;:::-;:80;;:87;;;;:::i;:::-;21292:111;;21437:36;21459:13;21437:17;;:21;;:36;;;;:::i;:::-;21417:17;:56;;;;21493:57;21536:13;21493:38;21517:13;21493:19;:23;;:38;;;;:::i;:::-;:42;;:57;;;;:::i;:::-;21482:68;;21568:8;21561:15;;;;;;20745:839;;;;;:::o;5054:535::-;5178:1;5160:20;;:6;:20;;;;5152:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5262:1;5241:23;;:9;:23;;;;5233:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5315:47;5336:6;5344:9;5355:6;5315:20;:47::i;:::-;5393:71;5415:6;5393:71;;;;;;;;;;;;;;;;;:9;:17;5403:6;5393:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;5373:9;:17;5383:6;5373:17;;;;;;;;;;;;;;;:91;;;;5498:32;5523:6;5498:9;:20;5508:9;5498:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;5475:9;:20;5485:9;5475:20;;;;;;;;;;;;;;;:55;;;;5563:9;5546:35;;5555:6;5546:35;;;5574:6;5546:35;;;;;;:::i;:::-;;;;;;;;5054:535;;;:::o;6441:92::-;;;;:::o;7:126:1:-;44:7;84:42;77:5;73:54;62:65;;7:126;;;:::o;139:96::-;176:7;205:24;223:5;205:24;:::i;:::-;194:35;;139:96;;;:::o;241:118::-;328:24;346:5;328:24;:::i;:::-;323:3;316:37;241:118;;:::o;365:222::-;458:4;496:2;485:9;481:18;473:26;;509:71;577:1;566:9;562:17;553:6;509:71;:::i;:::-;365:222;;;;:::o;593:99::-;645:6;679:5;673:12;663:22;;593:99;;;:::o;698:169::-;782:11;816:6;811:3;804:19;856:4;851:3;847:14;832:29;;698:169;;;;:::o;873:307::-;941:1;951:113;965:6;962:1;959:13;951:113;;;1050:1;1045:3;1041:11;1035:18;1031:1;1026:3;1022:11;1015:39;987:2;984:1;980:10;975:15;;951:113;;;1082:6;1079:1;1076:13;1073:101;;;1162:1;1153:6;1148:3;1144:16;1137:27;1073:101;922:258;873:307;;;:::o;1186:102::-;1227:6;1278:2;1274:7;1269:2;1262:5;1258:14;1254:28;1244:38;;1186:102;;;:::o;1294:364::-;1382:3;1410:39;1443:5;1410:39;:::i;:::-;1465:71;1529:6;1524:3;1465:71;:::i;:::-;1458:78;;1545:52;1590:6;1585:3;1578:4;1571:5;1567:16;1545:52;:::i;:::-;1622:29;1644:6;1622:29;:::i;:::-;1617:3;1613:39;1606:46;;1386:272;1294:364;;;;:::o;1664:313::-;1777:4;1815:2;1804:9;1800:18;1792:26;;1864:9;1858:4;1854:20;1850:1;1839:9;1835:17;1828:47;1892:78;1965:4;1956:6;1892:78;:::i;:::-;1884:86;;1664:313;;;;:::o;2064:117::-;2173:1;2170;2163:12;2310:122;2383:24;2401:5;2383:24;:::i;:::-;2376:5;2373:35;2363:63;;2422:1;2419;2412:12;2363:63;2310:122;:::o;2438:139::-;2484:5;2522:6;2509:20;2500:29;;2538:33;2565:5;2538:33;:::i;:::-;2438:139;;;;:::o;2583:77::-;2620:7;2649:5;2638:16;;2583:77;;;:::o;2666:122::-;2739:24;2757:5;2739:24;:::i;:::-;2732:5;2729:35;2719:63;;2778:1;2775;2768:12;2719:63;2666:122;:::o;2794:139::-;2840:5;2878:6;2865:20;2856:29;;2894:33;2921:5;2894:33;:::i;:::-;2794:139;;;;:::o;2939:474::-;3007:6;3015;3064:2;3052:9;3043:7;3039:23;3035:32;3032:119;;;3070:79;;:::i;:::-;3032:119;3190:1;3215:53;3260:7;3251:6;3240:9;3236:22;3215:53;:::i;:::-;3205:63;;3161:117;3317:2;3343:53;3388:7;3379:6;3368:9;3364:22;3343:53;:::i;:::-;3333:63;;3288:118;2939:474;;;;;:::o;3419:90::-;3453:7;3496:5;3489:13;3482:21;3471:32;;3419:90;;;:::o;3515:109::-;3596:21;3611:5;3596:21;:::i;:::-;3591:3;3584:34;3515:109;;:::o;3630:210::-;3717:4;3755:2;3744:9;3740:18;3732:26;;3768:65;3830:1;3819:9;3815:17;3806:6;3768:65;:::i;:::-;3630:210;;;;:::o;3846:619::-;3923:6;3931;3939;3988:2;3976:9;3967:7;3963:23;3959:32;3956:119;;;3994:79;;:::i;:::-;3956:119;4114:1;4139:53;4184:7;4175:6;4164:9;4160:22;4139:53;:::i;:::-;4129:63;;4085:117;4241:2;4267:53;4312:7;4303:6;4292:9;4288:22;4267:53;:::i;:::-;4257:63;;4212:118;4369:2;4395:53;4440:7;4431:6;4420:9;4416:22;4395:53;:::i;:::-;4385:63;;4340:118;3846:619;;;;;:::o;4471:60::-;4499:3;4520:5;4513:12;;4471:60;;;:::o;4537:142::-;4587:9;4620:53;4638:34;4647:24;4665:5;4647:24;:::i;:::-;4638:34;:::i;:::-;4620:53;:::i;:::-;4607:66;;4537:142;;;:::o;4685:126::-;4735:9;4768:37;4799:5;4768:37;:::i;:::-;4755:50;;4685:126;;;:::o;4817:152::-;4893:9;4926:37;4957:5;4926:37;:::i;:::-;4913:50;;4817:152;;;:::o;4975:183::-;5088:63;5145:5;5088:63;:::i;:::-;5083:3;5076:76;4975:183;;:::o;5164:274::-;5283:4;5321:2;5310:9;5306:18;5298:26;;5334:97;5428:1;5417:9;5413:17;5404:6;5334:97;:::i;:::-;5164:274;;;;:::o;5444:118::-;5531:24;5549:5;5531:24;:::i;:::-;5526:3;5519:37;5444:118;;:::o;5568:222::-;5661:4;5699:2;5688:9;5684:18;5676:26;;5712:71;5780:1;5769:9;5765:17;5756:6;5712:71;:::i;:::-;5568:222;;;;:::o;5796:619::-;5873:6;5881;5889;5938:2;5926:9;5917:7;5913:23;5909:32;5906:119;;;5944:79;;:::i;:::-;5906:119;6064:1;6089:53;6134:7;6125:6;6114:9;6110:22;6089:53;:::i;:::-;6079:63;;6035:117;6191:2;6217:53;6262:7;6253:6;6242:9;6238:22;6217:53;:::i;:::-;6207:63;;6162:118;6319:2;6345:53;6390:7;6381:6;6370:9;6366:22;6345:53;:::i;:::-;6335:63;;6290:118;5796:619;;;;;:::o;6421:329::-;6480:6;6529:2;6517:9;6508:7;6504:23;6500:32;6497:119;;;6535:79;;:::i;:::-;6497:119;6655:1;6680:53;6725:7;6716:6;6705:9;6701:22;6680:53;:::i;:::-;6670:63;;6626:117;6421:329;;;;:::o;6756:86::-;6791:7;6831:4;6824:5;6820:16;6809:27;;6756:86;;;:::o;6848:112::-;6931:22;6947:5;6931:22;:::i;:::-;6926:3;6919:35;6848:112;;:::o;6966:214::-;7055:4;7093:2;7082:9;7078:18;7070:26;;7106:67;7170:1;7159:9;7155:17;7146:6;7106:67;:::i;:::-;6966:214;;;;:::o;7186:329::-;7245:6;7294:2;7282:9;7273:7;7269:23;7265:32;7262:119;;;7300:79;;:::i;:::-;7262:119;7420:1;7445:53;7490:7;7481:6;7470:9;7466:22;7445:53;:::i;:::-;7435:63;;7391:117;7186:329;;;;:::o;7521:116::-;7591:21;7606:5;7591:21;:::i;:::-;7584:5;7581:32;7571:60;;7627:1;7624;7617:12;7571:60;7521:116;:::o;7643:133::-;7686:5;7724:6;7711:20;7702:29;;7740:30;7764:5;7740:30;:::i;:::-;7643:133;;;;:::o;7782:468::-;7847:6;7855;7904:2;7892:9;7883:7;7879:23;7875:32;7872:119;;;7910:79;;:::i;:::-;7872:119;8030:1;8055:53;8100:7;8091:6;8080:9;8076:22;8055:53;:::i;:::-;8045:63;;8001:117;8157:2;8183:50;8225:7;8216:6;8205:9;8201:22;8183:50;:::i;:::-;8173:60;;8128:115;7782:468;;;;;:::o;8256:104::-;8301:7;8330:24;8348:5;8330:24;:::i;:::-;8319:35;;8256:104;;;:::o;8366:138::-;8447:32;8473:5;8447:32;:::i;:::-;8440:5;8437:43;8427:71;;8494:1;8491;8484:12;8427:71;8366:138;:::o;8510:155::-;8564:5;8602:6;8589:20;8580:29;;8618:41;8653:5;8618:41;:::i;:::-;8510:155;;;;:::o;8671:345::-;8738:6;8787:2;8775:9;8766:7;8762:23;8758:32;8755:119;;;8793:79;;:::i;:::-;8755:119;8913:1;8938:61;8991:7;8982:6;8971:9;8967:22;8938:61;:::i;:::-;8928:71;;8884:125;8671:345;;;;:::o;9022:474::-;9090:6;9098;9147:2;9135:9;9126:7;9122:23;9118:32;9115:119;;;9153:79;;:::i;:::-;9115:119;9273:1;9298:53;9343:7;9334:6;9323:9;9319:22;9298:53;:::i;:::-;9288:63;;9244:117;9400:2;9426:53;9471:7;9462:6;9451:9;9447:22;9426:53;:::i;:::-;9416:63;;9371:118;9022:474;;;;;:::o;9502:::-;9570:6;9578;9627:2;9615:9;9606:7;9602:23;9598:32;9595:119;;;9633:79;;:::i;:::-;9595:119;9753:1;9778:53;9823:7;9814:6;9803:9;9799:22;9778:53;:::i;:::-;9768:63;;9724:117;9880:2;9906:53;9951:7;9942:6;9931:9;9927:22;9906:53;:::i;:::-;9896:63;;9851:118;9502:474;;;;;:::o;9982:323::-;10038:6;10087:2;10075:9;10066:7;10062:23;10058:32;10055:119;;;10093:79;;:::i;:::-;10055:119;10213:1;10238:50;10280:7;10271:6;10260:9;10256:22;10238:50;:::i;:::-;10228:60;;10184:114;9982:323;;;;:::o;10311:180::-;10359:77;10356:1;10349:88;10456:4;10453:1;10446:15;10480:4;10477:1;10470:15;10497:320;10541:6;10578:1;10572:4;10568:12;10558:22;;10625:1;10619:4;10615:12;10646:18;10636:81;;10702:4;10694:6;10690:17;10680:27;;10636:81;10764:2;10756:6;10753:14;10733:18;10730:38;10727:84;;;10783:18;;:::i;:::-;10727:84;10548:269;10497:320;;;:::o;10823:182::-;10963:34;10959:1;10951:6;10947:14;10940:58;10823:182;:::o;11011:366::-;11153:3;11174:67;11238:2;11233:3;11174:67;:::i;:::-;11167:74;;11250:93;11339:3;11250:93;:::i;:::-;11368:2;11363:3;11359:12;11352:19;;11011:366;;;:::o;11383:419::-;11549:4;11587:2;11576:9;11572:18;11564:26;;11636:9;11630:4;11626:20;11622:1;11611:9;11607:17;11600:47;11664:131;11790:4;11664:131;:::i;:::-;11656:139;;11383:419;;;:::o;11808:180::-;11856:77;11853:1;11846:88;11953:4;11950:1;11943:15;11977:4;11974:1;11967:15;11994:181;12134:33;12130:1;12122:6;12118:14;12111:57;11994:181;:::o;12181:366::-;12323:3;12344:67;12408:2;12403:3;12344:67;:::i;:::-;12337:74;;12420:93;12509:3;12420:93;:::i;:::-;12538:2;12533:3;12529:12;12522:19;;12181:366;;;:::o;12553:419::-;12719:4;12757:2;12746:9;12742:18;12734:26;;12806:9;12800:4;12796:20;12792:1;12781:9;12777:17;12770:47;12834:131;12960:4;12834:131;:::i;:::-;12826:139;;12553:419;;;:::o;12978:182::-;13118:34;13114:1;13106:6;13102:14;13095:58;12978:182;:::o;13166:366::-;13308:3;13329:67;13393:2;13388:3;13329:67;:::i;:::-;13322:74;;13405:93;13494:3;13405:93;:::i;:::-;13523:2;13518:3;13514:12;13507:19;;13166:366;;;:::o;13538:419::-;13704:4;13742:2;13731:9;13727:18;13719:26;;13791:9;13785:4;13781:20;13777:1;13766:9;13762:17;13755:47;13819:131;13945:4;13819:131;:::i;:::-;13811:139;;13538:419;;;:::o;13963:181::-;14103:33;14099:1;14091:6;14087:14;14080:57;13963:181;:::o;14150:366::-;14292:3;14313:67;14377:2;14372:3;14313:67;:::i;:::-;14306:74;;14389:93;14478:3;14389:93;:::i;:::-;14507:2;14502:3;14498:12;14491:19;;14150:366;;;:::o;14522:419::-;14688:4;14726:2;14715:9;14711:18;14703:26;;14775:9;14769:4;14765:20;14761:1;14750:9;14746:17;14739:47;14803:131;14929:4;14803:131;:::i;:::-;14795:139;;14522:419;;;:::o;14947:172::-;15087:24;15083:1;15075:6;15071:14;15064:48;14947:172;:::o;15125:366::-;15267:3;15288:67;15352:2;15347:3;15288:67;:::i;:::-;15281:74;;15364:93;15453:3;15364:93;:::i;:::-;15482:2;15477:3;15473:12;15466:19;;15125:366;;;:::o;15497:419::-;15663:4;15701:2;15690:9;15686:18;15678:26;;15750:9;15744:4;15740:20;15736:1;15725:9;15721:17;15714:47;15778:131;15904:4;15778:131;:::i;:::-;15770:139;;15497:419;;;:::o;15922:235::-;16062:34;16058:1;16050:6;16046:14;16039:58;16131:18;16126:2;16118:6;16114:15;16107:43;15922:235;:::o;16163:366::-;16305:3;16326:67;16390:2;16385:3;16326:67;:::i;:::-;16319:74;;16402:93;16491:3;16402:93;:::i;:::-;16520:2;16515:3;16511:12;16504:19;;16163:366;;;:::o;16535:419::-;16701:4;16739:2;16728:9;16724:18;16716:26;;16788:9;16782:4;16778:20;16774:1;16763:9;16759:17;16752:47;16816:131;16942:4;16816:131;:::i;:::-;16808:139;;16535:419;;;:::o;16960:248::-;17100:34;17096:1;17088:6;17084:14;17077:58;17169:31;17164:2;17156:6;17152:15;17145:56;16960:248;:::o;17214:366::-;17356:3;17377:67;17441:2;17436:3;17377:67;:::i;:::-;17370:74;;17453:93;17542:3;17453:93;:::i;:::-;17571:2;17566:3;17562:12;17555:19;;17214:366;;;:::o;17586:419::-;17752:4;17790:2;17779:9;17775:18;17767:26;;17839:9;17833:4;17829:20;17825:1;17814:9;17810:17;17803:47;17867:131;17993:4;17867:131;:::i;:::-;17859:139;;17586:419;;;:::o;18011:289::-;18151:34;18147:1;18139:6;18135:14;18128:58;18220:34;18215:2;18207:6;18203:15;18196:59;18289:3;18284:2;18276:6;18272:15;18265:28;18011:289;:::o;18306:366::-;18448:3;18469:67;18533:2;18528:3;18469:67;:::i;:::-;18462:74;;18545:93;18634:3;18545:93;:::i;:::-;18663:2;18658:3;18654:12;18647:19;;18306:366;;;:::o;18678:419::-;18844:4;18882:2;18871:9;18867:18;18859:26;;18931:9;18925:4;18921:20;18917:1;18906:9;18902:17;18895:47;18959:131;19085:4;18959:131;:::i;:::-;18951:139;;18678:419;;;:::o;19103:174::-;19243:26;19239:1;19231:6;19227:14;19220:50;19103:174;:::o;19283:366::-;19425:3;19446:67;19510:2;19505:3;19446:67;:::i;:::-;19439:74;;19522:93;19611:3;19522:93;:::i;:::-;19640:2;19635:3;19631:12;19624:19;;19283:366;;;:::o;19655:419::-;19821:4;19859:2;19848:9;19844:18;19836:26;;19908:9;19902:4;19898:20;19894:1;19883:9;19879:17;19872:47;19936:131;20062:4;19936:131;:::i;:::-;19928:139;;19655:419;;;:::o;20080:332::-;20201:4;20239:2;20228:9;20224:18;20216:26;;20252:71;20320:1;20309:9;20305:17;20296:6;20252:71;:::i;:::-;20333:72;20401:2;20390:9;20386:18;20377:6;20333:72;:::i;:::-;20080:332;;;;;:::o;20418:137::-;20472:5;20503:6;20497:13;20488:22;;20519:30;20543:5;20519:30;:::i;:::-;20418:137;;;;:::o;20561:345::-;20628:6;20677:2;20665:9;20656:7;20652:23;20648:32;20645:119;;;20683:79;;:::i;:::-;20645:119;20803:1;20828:61;20881:7;20872:6;20861:9;20857:22;20828:61;:::i;:::-;20818:71;;20774:125;20561:345;;;;:::o;20912:226::-;21052:34;21048:1;21040:6;21036:14;21029:58;21121:9;21116:2;21108:6;21104:15;21097:34;20912:226;:::o;21144:366::-;21286:3;21307:67;21371:2;21366:3;21307:67;:::i;:::-;21300:74;;21383:93;21472:3;21383:93;:::i;:::-;21501:2;21496:3;21492:12;21485:19;;21144:366;;;:::o;21516:419::-;21682:4;21720:2;21709:9;21705:18;21697:26;;21769:9;21763:4;21759:20;21755:1;21744:9;21740:17;21733:47;21797:131;21923:4;21797:131;:::i;:::-;21789:139;;21516:419;;;:::o;21941:229::-;22081:34;22077:1;22069:6;22065:14;22058:58;22150:12;22145:2;22137:6;22133:15;22126:37;21941:229;:::o;22176:366::-;22318:3;22339:67;22403:2;22398:3;22339:67;:::i;:::-;22332:74;;22415:93;22504:3;22415:93;:::i;:::-;22533:2;22528:3;22524:12;22517:19;;22176:366;;;:::o;22548:419::-;22714:4;22752:2;22741:9;22737:18;22729:26;;22801:9;22795:4;22791:20;22787:1;22776:9;22772:17;22765:47;22829:131;22955:4;22829:131;:::i;:::-;22821:139;;22548:419;;;:::o;22973:225::-;23113:34;23109:1;23101:6;23097:14;23090:58;23182:8;23177:2;23169:6;23165:15;23158:33;22973:225;:::o;23204:366::-;23346:3;23367:67;23431:2;23426:3;23367:67;:::i;:::-;23360:74;;23443:93;23532:3;23443:93;:::i;:::-;23561:2;23556:3;23552:12;23545:19;;23204:366;;;:::o;23576:419::-;23742:4;23780:2;23769:9;23765:18;23757:26;;23829:9;23823:4;23819:20;23815:1;23804:9;23800:17;23793:47;23857:131;23983:4;23857:131;:::i;:::-;23849:139;;23576:419;;;:::o;24001:180::-;24049:77;24046:1;24039:88;24146:4;24143:1;24136:15;24170:4;24167:1;24160:15;24187:305;24227:3;24246:20;24264:1;24246:20;:::i;:::-;24241:25;;24280:20;24298:1;24280:20;:::i;:::-;24275:25;;24434:1;24366:66;24362:74;24359:1;24356:81;24353:107;;;24440:18;;:::i;:::-;24353:107;24484:1;24481;24477:9;24470:16;;24187:305;;;;:::o;24498:177::-;24638:29;24634:1;24626:6;24622:14;24615:53;24498:177;:::o;24681:366::-;24823:3;24844:67;24908:2;24903:3;24844:67;:::i;:::-;24837:74;;24920:93;25009:3;24920:93;:::i;:::-;25038:2;25033:3;25029:12;25022:19;;24681:366;;;:::o;25053:419::-;25219:4;25257:2;25246:9;25242:18;25234:26;;25306:9;25300:4;25296:20;25292:1;25281:9;25277:17;25270:47;25334:131;25460:4;25334:131;:::i;:::-;25326:139;;25053:419;;;:::o;25478:223::-;25618:34;25614:1;25606:6;25602:14;25595:58;25687:6;25682:2;25674:6;25670:15;25663:31;25478:223;:::o;25707:366::-;25849:3;25870:67;25934:2;25929:3;25870:67;:::i;:::-;25863:74;;25946:93;26035:3;25946:93;:::i;:::-;26064:2;26059:3;26055:12;26048:19;;25707:366;;;:::o;26079:419::-;26245:4;26283:2;26272:9;26268:18;26260:26;;26332:9;26326:4;26322:20;26318:1;26307:9;26303:17;26296:47;26360:131;26486:4;26360:131;:::i;:::-;26352:139;;26079:419;;;:::o;26504:221::-;26644:34;26640:1;26632:6;26628:14;26621:58;26713:4;26708:2;26700:6;26696:15;26689:29;26504:221;:::o;26731:366::-;26873:3;26894:67;26958:2;26953:3;26894:67;:::i;:::-;26887:74;;26970:93;27059:3;26970:93;:::i;:::-;27088:2;27083:3;27079:12;27072:19;;26731:366;;;:::o;27103:419::-;27269:4;27307:2;27296:9;27292:18;27284:26;;27356:9;27350:4;27346:20;27342:1;27331:9;27327:17;27320:47;27384:131;27510:4;27384:131;:::i;:::-;27376:139;;27103:419;;;:::o;27528:224::-;27668:34;27664:1;27656:6;27652:14;27645:58;27737:7;27732:2;27724:6;27720:15;27713:32;27528:224;:::o;27758:366::-;27900:3;27921:67;27985:2;27980:3;27921:67;:::i;:::-;27914:74;;27997:93;28086:3;27997:93;:::i;:::-;28115:2;28110:3;28106:12;28099:19;;27758:366;;;:::o;28130:419::-;28296:4;28334:2;28323:9;28319:18;28311:26;;28383:9;28377:4;28373:20;28369:1;28358:9;28354:17;28347:47;28411:131;28537:4;28411:131;:::i;:::-;28403:139;;28130:419;;;:::o;28555:222::-;28695:34;28691:1;28683:6;28679:14;28672:58;28764:5;28759:2;28751:6;28747:15;28740:30;28555:222;:::o;28783:366::-;28925:3;28946:67;29010:2;29005:3;28946:67;:::i;:::-;28939:74;;29022:93;29111:3;29022:93;:::i;:::-;29140:2;29135:3;29131:12;29124:19;;28783:366;;;:::o;29155:419::-;29321:4;29359:2;29348:9;29344:18;29336:26;;29408:9;29402:4;29398:20;29394:1;29383:9;29379:17;29372:47;29436:131;29562:4;29436:131;:::i;:::-;29428:139;;29155:419;;;:::o;29580:220::-;29720:34;29716:1;29708:6;29704:14;29697:58;29789:3;29784:2;29776:6;29772:15;29765:28;29580:220;:::o;29806:366::-;29948:3;29969:67;30033:2;30028:3;29969:67;:::i;:::-;29962:74;;30045:93;30134:3;30045:93;:::i;:::-;30163:2;30158:3;30154:12;30147:19;;29806:366;;;:::o;30178:419::-;30344:4;30382:2;30371:9;30367:18;30359:26;;30431:9;30425:4;30421:20;30417:1;30406:9;30402:17;30395:47;30459:131;30585:4;30459:131;:::i;:::-;30451:139;;30178:419;;;:::o;30603:222::-;30743:34;30739:1;30731:6;30727:14;30720:58;30812:5;30807:2;30799:6;30795:15;30788:30;30603:222;:::o;30831:366::-;30973:3;30994:67;31058:2;31053:3;30994:67;:::i;:::-;30987:74;;31070:93;31159:3;31070:93;:::i;:::-;31188:2;31183:3;31179:12;31172:19;;30831:366;;;:::o;31203:419::-;31369:4;31407:2;31396:9;31392:18;31384:26;;31456:9;31450:4;31446:20;31442:1;31431:9;31427:17;31420:47;31484:131;31610:4;31484:131;:::i;:::-;31476:139;;31203:419;;;:::o;31628:227::-;31768:34;31764:1;31756:6;31752:14;31745:58;31837:10;31832:2;31824:6;31820:15;31813:35;31628:227;:::o;31861:366::-;32003:3;32024:67;32088:2;32083:3;32024:67;:::i;:::-;32017:74;;32100:93;32189:3;32100:93;:::i;:::-;32218:2;32213:3;32209:12;32202:19;;31861:366;;;:::o;32233:419::-;32399:4;32437:2;32426:9;32422:18;32414:26;;32486:9;32480:4;32476:20;32472:1;32461:9;32457:17;32450:47;32514:131;32640:4;32514:131;:::i;:::-;32506:139;;32233:419;;;:::o;32658:233::-;32798:34;32794:1;32786:6;32782:14;32775:58;32867:16;32862:2;32854:6;32850:15;32843:41;32658:233;:::o;32897:366::-;33039:3;33060:67;33124:2;33119:3;33060:67;:::i;:::-;33053:74;;33136:93;33225:3;33136:93;:::i;:::-;33254:2;33249:3;33245:12;33238:19;;32897:366;;;:::o;33269:419::-;33435:4;33473:2;33462:9;33458:18;33450:26;;33522:9;33516:4;33512:20;33508:1;33497:9;33493:17;33486:47;33550:131;33676:4;33550:131;:::i;:::-;33542:139;;33269:419;;;:::o;33694:191::-;33734:4;33754:20;33772:1;33754:20;:::i;:::-;33749:25;;33788:20;33806:1;33788:20;:::i;:::-;33783:25;;33827:1;33824;33821:8;33818:34;;;33832:18;;:::i;:::-;33818:34;33877:1;33874;33870:9;33862:17;;33694:191;;;;:::o;33891:243::-;34031:34;34027:1;34019:6;34015:14;34008:58;34100:26;34095:2;34087:6;34083:15;34076:51;33891:243;:::o;34140:366::-;34282:3;34303:67;34367:2;34362:3;34303:67;:::i;:::-;34296:74;;34379:93;34468:3;34379:93;:::i;:::-;34497:2;34492:3;34488:12;34481:19;;34140:366;;;:::o;34512:419::-;34678:4;34716:2;34705:9;34701:18;34693:26;;34765:9;34759:4;34755:20;34751:1;34740:9;34736:17;34729:47;34793:131;34919:4;34793:131;:::i;:::-;34785:139;;34512:419;;;:::o;34937:176::-;35077:28;35073:1;35065:6;35061:14;35054:52;34937:176;:::o;35119:366::-;35261:3;35282:67;35346:2;35341:3;35282:67;:::i;:::-;35275:74;;35358:93;35447:3;35358:93;:::i;:::-;35476:2;35471:3;35467:12;35460:19;;35119:366;;;:::o;35491:419::-;35657:4;35695:2;35684:9;35680:18;35672:26;;35744:9;35738:4;35734:20;35730:1;35719:9;35715:17;35708:47;35772:131;35898:4;35772:131;:::i;:::-;35764:139;;35491:419;;;:::o;35916:180::-;35964:77;35961:1;35954:88;36061:4;36058:1;36051:15;36085:4;36082:1;36075:15;36102:185;36142:1;36159:20;36177:1;36159:20;:::i;:::-;36154:25;;36193:20;36211:1;36193:20;:::i;:::-;36188:25;;36232:1;36222:35;;36237:18;;:::i;:::-;36222:35;36279:1;36276;36272:9;36267:14;;36102:185;;;;:::o;36293:180::-;36341:77;36338:1;36331:88;36438:4;36435:1;36428:15;36462:4;36459:1;36452:15;36479:143;36536:5;36567:6;36561:13;36552:22;;36583:33;36610:5;36583:33;:::i;:::-;36479:143;;;;:::o;36628:351::-;36698:6;36747:2;36735:9;36726:7;36722:23;36718:32;36715:119;;;36753:79;;:::i;:::-;36715:119;36873:1;36898:64;36954:7;36945:6;36934:9;36930:22;36898:64;:::i;:::-;36888:74;;36844:128;36628:351;;;;:::o;36985:85::-;37030:7;37059:5;37048:16;;36985:85;;;:::o;37076:158::-;37134:9;37167:61;37185:42;37194:32;37220:5;37194:32;:::i;:::-;37185:42;:::i;:::-;37167:61;:::i;:::-;37154:74;;37076:158;;;:::o;37240:147::-;37335:45;37374:5;37335:45;:::i;:::-;37330:3;37323:58;37240:147;;:::o;37393:114::-;37460:6;37494:5;37488:12;37478:22;;37393:114;;;:::o;37513:184::-;37612:11;37646:6;37641:3;37634:19;37686:4;37681:3;37677:14;37662:29;;37513:184;;;;:::o;37703:132::-;37770:4;37793:3;37785:11;;37823:4;37818:3;37814:14;37806:22;;37703:132;;;:::o;37841:108::-;37918:24;37936:5;37918:24;:::i;:::-;37913:3;37906:37;37841:108;;:::o;37955:179::-;38024:10;38045:46;38087:3;38079:6;38045:46;:::i;:::-;38123:4;38118:3;38114:14;38100:28;;37955:179;;;;:::o;38140:113::-;38210:4;38242;38237:3;38233:14;38225:22;;38140:113;;;:::o;38289:732::-;38408:3;38437:54;38485:5;38437:54;:::i;:::-;38507:86;38586:6;38581:3;38507:86;:::i;:::-;38500:93;;38617:56;38667:5;38617:56;:::i;:::-;38696:7;38727:1;38712:284;38737:6;38734:1;38731:13;38712:284;;;38813:6;38807:13;38840:63;38899:3;38884:13;38840:63;:::i;:::-;38833:70;;38926:60;38979:6;38926:60;:::i;:::-;38916:70;;38772:224;38759:1;38756;38752:9;38747:14;;38712:284;;;38716:14;39012:3;39005:10;;38413:608;;;38289:732;;;;:::o;39027:831::-;39290:4;39328:3;39317:9;39313:19;39305:27;;39342:71;39410:1;39399:9;39395:17;39386:6;39342:71;:::i;:::-;39423:80;39499:2;39488:9;39484:18;39475:6;39423:80;:::i;:::-;39550:9;39544:4;39540:20;39535:2;39524:9;39520:18;39513:48;39578:108;39681:4;39672:6;39578:108;:::i;:::-;39570:116;;39696:72;39764:2;39753:9;39749:18;39740:6;39696:72;:::i;:::-;39778:73;39846:3;39835:9;39831:19;39822:6;39778:73;:::i;:::-;39027:831;;;;;;;;:::o;39864:180::-;40004:32;40000:1;39992:6;39988:14;39981:56;39864:180;:::o;40050:366::-;40192:3;40213:67;40277:2;40272:3;40213:67;:::i;:::-;40206:74;;40289:93;40378:3;40289:93;:::i;:::-;40407:2;40402:3;40398:12;40391:19;;40050:366;;;:::o;40422:419::-;40588:4;40626:2;40615:9;40611:18;40603:26;;40675:9;40669:4;40665:20;40661:1;40650:9;40646:17;40639:47;40703:131;40829:4;40703:131;:::i;:::-;40695:139;;40422:419;;;:::o;40847:348::-;40887:7;40910:20;40928:1;40910:20;:::i;:::-;40905:25;;40944:20;40962:1;40944:20;:::i;:::-;40939:25;;41132:1;41064:66;41060:74;41057:1;41054:81;41049:1;41042:9;41035:17;41031:105;41028:131;;;41139:18;;:::i;:::-;41028:131;41187:1;41184;41180:9;41169:20;;40847:348;;;;:::o;41201:220::-;41341:34;41337:1;41329:6;41325:14;41318:58;41410:3;41405:2;41397:6;41393:15;41386:28;41201:220;:::o;41427:366::-;41569:3;41590:67;41654:2;41649:3;41590:67;:::i;:::-;41583:74;;41666:93;41755:3;41666:93;:::i;:::-;41784:2;41779:3;41775:12;41768:19;;41427:366;;;:::o;41799:419::-;41965:4;42003:2;41992:9;41988:18;41980:26;;42052:9;42046:4;42042:20;42038:1;42027:9;42023:17;42016:47;42080:131;42206:4;42080:131;:::i;:::-;42072:139;;41799:419;;;:::o;42224:807::-;42473:4;42511:3;42500:9;42496:19;42488:27;;42525:71;42593:1;42582:9;42578:17;42569:6;42525:71;:::i;:::-;42606:72;42674:2;42663:9;42659:18;42650:6;42606:72;:::i;:::-;42688:80;42764:2;42753:9;42749:18;42740:6;42688:80;:::i;:::-;42778;42854:2;42843:9;42839:18;42830:6;42778:80;:::i;:::-;42868:73;42936:3;42925:9;42921:19;42912:6;42868:73;:::i;:::-;42951;43019:3;43008:9;43004:19;42995:6;42951:73;:::i;:::-;42224:807;;;;;;;;;:::o;43037:143::-;43094:5;43125:6;43119:13;43110:22;;43141:33;43168:5;43141:33;:::i;:::-;43037:143;;;;:::o;43186:663::-;43274:6;43282;43290;43339:2;43327:9;43318:7;43314:23;43310:32;43307:119;;;43345:79;;:::i;:::-;43307:119;43465:1;43490:64;43546:7;43537:6;43526:9;43522:22;43490:64;:::i;:::-;43480:74;;43436:128;43603:2;43629:64;43685:7;43676:6;43665:9;43661:22;43629:64;:::i;:::-;43619:74;;43574:129;43742:2;43768:64;43824:7;43815:6;43804:9;43800:22;43768:64;:::i;:::-;43758:74;;43713:129;43186:663;;;;;:::o

Swarm Source

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