ETH Price: $2,987.18 (-2.34%)
Gas: 1 Gwei

Token

Blood Bank (BLOOD)
 

Overview

Max Total Supply

100,000,000 BLOOD

Holders

154

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
568,842.96156705 BLOOD

Value
$0.00
0x1a4b77aa33f0fcbde2f1a6bdad2004cf938c34b0
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:
BLOOD

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT
pragma solidity 0.8.17;

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

interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); }
interface IUniswapV2Router02 {
	function getAmountsIn(uint amountOut, address[] memory path) external view returns (uint[] memory amounts);
	function swapExactTokensForTokensSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external;
	function factory() external pure returns (address);
	function addLiquidity(address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline) external returns (uint amountA, uint amountB, uint liquidity);
}

abstract contract OWNED {
	address internal _owner;
	event OwnershipTransferred(address owner);
	constructor(address contractOwner) { _owner = contractOwner; }
	modifier onlyOwner() { require(msg.sender == _owner, "Not the owner"); _; }
	// function owner() external view returns (address) { return _owner; }  // moved into addressList() function
	function renounceOwnership() external onlyOwner { _transferOwnership(address(0)); }
	function transferOwnership(address newOwner) external onlyOwner { _transferOwnership(newOwner); }
	function _transferOwnership(address _newOwner) internal {
		_owner = _newOwner; 
		emit OwnershipTransferred(_newOwner); 
	}
}

contract BLOOD is IERC20, OWNED {
	mapping(address => uint256) private _balances;
	mapping(address => mapping(address => uint256)) private _allowances;
	uint8 private constant _decimals = 9;
	uint256 private constant _totalSupply = 100_000_000 * 10**_decimals;
	string private constant _name = "Blood Bank";
	string private constant _symbol = "BLOOD";

	uint256 private _maxTx; 
	uint256 private _maxWallet;

	uint256 private _swapThreshold = _totalSupply;
	uint256 private _swapLimit = _totalSupply;

	uint8 private _taxRateBuy;
	uint8 private _taxRateSell;

	mapping(address => bool) private _excluded;
	address private _treasuryWallet = address(0x35E6b861DbE175F64dEf1FAC5E2853e5613Eb764);
	address private constant _usdc = address(0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48);
	
	address private constant _swapRouterAddress = address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); //Uniswap V2 Router
	IUniswapV2Router02 private constant _swapRouter = IUniswapV2Router02(_swapRouterAddress);
	address private _primaryLP;
	mapping(address => bool) private _isLP;
	bool private _initialLiquidityAdded;
	
	uint256 private _openAt;
	uint256 private _protected;

	bool private swapLocked;
	modifier lockSwap { swapLocked = true; _; swapLocked = false; }

	constructor() OWNED(msg.sender)  {
		_balances[address(msg.sender)] = _totalSupply;
		emit Transfer(address(0), address(msg.sender), _balances[address(msg.sender)]);

		_changeLimits(3,6); //set max TX to 0.3%, max wallet 0.6%

		_excluded[_owner] = true;
		_excluded[address(this)] = true;
		_excluded[_swapRouterAddress] = true;
		_excluded[_treasuryWallet] = true;

		_primaryLP = IUniswapV2Factory(_swapRouter.factory()).createPair(address(this), _usdc);
		_isLP[_primaryLP] = true;
	}

	function addressList() external view returns (address owner, address treasury, address usdc, address swapRouter, address primaryLP) {
		return (_owner, _treasuryWallet, _usdc, _swapRouterAddress, _primaryLP);
	}

	function totalSupply() external pure override returns (uint256) { return _totalSupply; }
	function decimals() external pure override returns (uint8) { return _decimals; }
	function symbol() external pure override returns (string memory) { return _symbol; }
	function name() external pure override returns (string memory) { return _name; }
	function balanceOf(address account) external view override returns (uint256) { return _balances[account]; }
	function allowance(address owner, address spender) external view override returns (uint256) { return _allowances[owner][spender]; }
	function approve(address spender, uint256 amount) public override returns (bool) {
		require(_balances[msg.sender] > 0,"ERC20: Zero balance");
		_approve(msg.sender, spender, amount);
		return true;
	}
	function _approve(address owner, address spender, uint256 amount ) private {
		require(owner != address(0) && spender != address(0), "ERC20: Zero address");
		_allowances[owner][spender] = amount;
		emit Approval(owner, spender, amount);
	}
	function _checkAndApproveRouter(uint256 tokenAmount) private {
		if (_allowances[address(this)][_swapRouterAddress] < tokenAmount) { 
			_approve(address(this), _swapRouterAddress, type(uint256).max);
		}
	}

	function _checkAndApproveRouterForToken(address _token, uint256 amount) internal {
		uint256 tokenAllowance;
		if (_token == address(this)) {
			tokenAllowance = _allowances[address(this)][_swapRouterAddress];
			if (amount > tokenAllowance) {
				_allowances[address(this)][_swapRouterAddress] = type(uint256).max;
			}
		} else {
			tokenAllowance = IERC20(_token).allowance(address(this), _swapRouterAddress);
			if (amount > tokenAllowance) {
				IERC20(_token).approve(_swapRouterAddress, type(uint256).max);
			}
		}
    }

	function transfer(address to, uint256 amount) public returns (bool) {
		_transfer(msg.sender, to, amount);
		return true;
	}
	function transferFrom(address from, address to, uint256 amount) public returns (bool) {
		require(_allowances[from][msg.sender] >= amount,"ERC20: amount exceeds allowance");
		_allowances[from][msg.sender] -= amount;
		_transfer(from, to, amount);
		return true;
	}
	function _transfer(address from, address to, uint256 amount) private {
		require(from != address(0) && to != address(0), "ERC20: Zero address"); 
		require(_balances[from] >= amount, "ERC20: amount exceeds balance"); 
		require(_limitCheck(from, to, amount), "Limits exceeded");
		require(block.timestamp>_openAt, "Not enabled");

		if (block.timestamp>=_openAt && block.timestamp<_protected && tx.gasprice>block.basefee) {
			uint256 _gpb = tx.gasprice - block.basefee;
			uint256 _gpm = 10 * (10**9);
			require(_gpb<_gpm,"Not enabled");
		}

		if ( !swapLocked && !_excluded[from] && _isLP[to] ) { _processTaxTokens(); }

		uint256 taxTokens = _getTaxTokens(from, to, amount);
		_balances[from] -= amount;
		_balances[address(this)] += taxTokens;
		_balances[to] += (amount - taxTokens);
		emit Transfer(from, to, amount);
	}
	function _limitCheck(address from, address to, uint256 amount) private view returns (bool) {
		bool txSize = true;
		if ( amount > _maxTx && !_excluded[from] && !_excluded[to] ) { txSize = false; }
		bool walletSize = true;
		uint256 newBalanceTo = _balances[to] + amount;
		if ( newBalanceTo > _maxWallet && !_excluded[from] && !_excluded[to] && !_isLP[to] ) { walletSize = false; } 
		return (txSize && walletSize);
	}

	function _getTaxTokens(address from, address to, uint256 amount) private view returns (uint256) {
		uint256 _taxTokensAmount;
		if ( (_isLP[from] && !_excluded[to]) ) { 
            if (block.timestamp > _openAt + 120) { _taxTokensAmount = amount * _taxRateBuy / 100; }
            else if (block.timestamp > _openAt) { _taxTokensAmount = amount * 99 / 100; } //antisnipe 99% tax for 120 seconds after trading opens
		} else if (_isLP[to] && !_excluded[from]) { 
			_taxTokensAmount = amount * _taxRateSell / 100; 
		}
		return _taxTokensAmount;
	}


	function addInitialLiquidity(uint256 val) external onlyOwner {
		require(IERC20(_usdc).balanceOf(address(this))>0, "No USDC");
		require(!_initialLiquidityAdded, "Liquidity already added");
		_addLiquidity(address(this), _balances[address(this)], IERC20(_usdc).balanceOf(address(this)), false);
		_initialLiquidityAdded = true;

		_swapThreshold = _totalSupply * 5 / 10000;
		_swapLimit = _totalSupply * 25 / 10000;

		_taxRateBuy = 10;
		_taxRateSell = 15; //anti-dump sell tax at launch

		_openAt = block.timestamp + (val * 7 / 10) + 1662;
		_protected = _openAt + 600;
	}

	function _addLiquidity(address _token, uint256 tokenAmount, uint256 usdcAmount, bool burnLpTokens) internal {
		require(IERC20(_token).balanceOf(address(this)) >= tokenAmount, "Not enough tokens");
		require(IERC20(_usdc).balanceOf(address(this)) >= usdcAmount, "Not enough USDC");
		_checkAndApproveRouterForToken(_token, tokenAmount);
		_checkAndApproveRouterForToken(_usdc, usdcAmount);
		address lpRecipient = _owner;
		if (burnLpTokens) { lpRecipient = address(0); }

		_swapRouter.addLiquidity(_usdc, _token, usdcAmount, tokenAmount, 0, 0, lpRecipient, block.timestamp);
	}

	function setPreLaunch(uint256 t1, uint256 t2) external onlyOwner {
		require(_openAt > block.timestamp, "already live");
		_openAt = block.timestamp + (t1 / t2) + 462;
		_protected = _openAt + 600;
	}

	function tax() external view returns (uint8 buyTax, uint8 sellTax) { return (_taxRateBuy, _taxRateSell); }
	function limits() external view returns (uint256 maxTransaction, uint256 maxWallet) { return (_maxTx, _maxWallet); }
	function isExcluded(address wallet) external view returns (bool) { return _excluded[wallet]; }

	function changeLimits(uint16 maxTxPermille, uint16 maxWalletPermille) external onlyOwner { _changeLimits(maxTxPermille, maxWalletPermille); }
	function _changeLimits(uint16 _maxTxPermille, uint16 _maxWalletPermille) private {
		uint256 newMaxTx = (_totalSupply * _maxTxPermille / 1000) + (10 * 10**_decimals); //add 10 tokens to avoid rounding issues
		uint256 newMaxWallet = (_totalSupply * _maxWalletPermille / 1000) + (10 * 10**_decimals); //add 10 tokens to avoid rounding issues
		require(newMaxTx >= _maxTx && newMaxWallet >= _maxWallet, "Cannot decrease limits");
		if (newMaxTx > _totalSupply) { newMaxTx = _totalSupply; }
		if (newMaxWallet > _totalSupply) { newMaxWallet = _totalSupply; }
		_maxTx = newMaxTx;
		_maxWallet = newMaxWallet;
	}

	function changeTaxWallet(address walletTreasury) external onlyOwner {
		require(!_isLP[walletTreasury] && walletTreasury != _swapRouterAddress && walletTreasury != address(this) && walletTreasury != address(0));
		_excluded[walletTreasury] = true;
		_treasuryWallet = walletTreasury;
	}	

	function changeTaxRates(uint8 newTaxRateBuy, uint8 newTaxRateSell) external onlyOwner {
		require( (newTaxRateBuy+newTaxRateSell) <= 20, "Max roundtrip is 20%" );
		_taxRateBuy = newTaxRateBuy;
		_taxRateSell = newTaxRateSell;
	}
	
	function _processTaxTokens() private lockSwap {
		uint256 tokensToSwap = _balances[address(this)];
		if (tokensToSwap >= _swapThreshold) {
			if (tokensToSwap > _swapLimit) { tokensToSwap = _swapLimit; }
			if (tokensToSwap >= 10**_decimals) {
				_swapTokens(address(this), _usdc, tokensToSwap, _treasuryWallet);
			}
		}
	}

	function _swapTokens(address inputToken, address outputToken, uint256 inputAmount, address recipient) private {		
		_checkAndApproveRouterForToken(inputToken, inputAmount);
		address[] memory path = new address[](2);
		path[0] = inputToken;
		path[1] = outputToken;
		_swapRouter.swapExactTokensForTokensSupportingFeeOnTransferTokens(
			inputAmount,
			0,
			path,
			recipient,
			block.timestamp
		);
	}

	function recoverTokens(address tokenCa) external onlyOwner {
		require(tokenCa != address(this),"Not allowed");
		uint256 tokenBalance = IERC20(tokenCa).balanceOf(address(this));
		IERC20(tokenCa).transfer(msg.sender, tokenBalance);
	}

	function manualSwap() external onlyOwner { _processTaxTokens(); }

	function setExcluded(address wallet, bool exclude) external onlyOwner { 
		string memory notAllowedError = "Not allowed";
		require(!_isLP[wallet], notAllowedError);
		require(wallet != address(this), notAllowedError);
		require(wallet != _swapRouterAddress, notAllowedError);
	 	_excluded[wallet] = exclude; 
	}

	function changeSwapThresholds(uint32 minValue, uint32 minDivider, uint32 maxValue, uint32 maxDivider) external onlyOwner {
		_swapThreshold = _totalSupply * minValue / minDivider;
		_swapLimit = _totalSupply * maxValue / maxDivider;
		require(_swapLimit > _swapThreshold);
		require(_swapLimit <= _totalSupply * 5 / 1000); // limit must be less than 0.5% supply
	}

	function burn(uint256 amount) external {
		require(_balances[msg.sender] >= amount, "Low balance");
		_balances[msg.sender] -= amount;
		_balances[address(0)] += amount;
		emit Transfer(msg.sender, address(0), amount);
	}
	function setAdditionalLP(address lpAddress, bool isLiqPool) external onlyOwner {
		string memory notAllowedError = "Not allowed";
		require(!_excluded[lpAddress], notAllowedError);
		require(lpAddress != _primaryLP, notAllowedError);
		require(lpAddress != address(this), notAllowedError);
		require(lpAddress != _swapRouterAddress, notAllowedError);
		_isLP[lpAddress] = isLiqPool;
	}
	function isLP(address ca) external view returns (bool) { return _isLP[ca]; }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"uint256","name":"val","type":"uint256"}],"name":"addInitialLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"addressList","outputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"treasury","type":"address"},{"internalType":"address","name":"usdc","type":"address"},{"internalType":"address","name":"swapRouter","type":"address"},{"internalType":"address","name":"primaryLP","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"maxTxPermille","type":"uint16"},{"internalType":"uint16","name":"maxWalletPermille","type":"uint16"}],"name":"changeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"minValue","type":"uint32"},{"internalType":"uint32","name":"minDivider","type":"uint32"},{"internalType":"uint32","name":"maxValue","type":"uint32"},{"internalType":"uint32","name":"maxDivider","type":"uint32"}],"name":"changeSwapThresholds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"newTaxRateBuy","type":"uint8"},{"internalType":"uint8","name":"newTaxRateSell","type":"uint8"}],"name":"changeTaxRates","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"walletTreasury","type":"address"}],"name":"changeTaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"ca","type":"address"}],"name":"isLP","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limits","outputs":[{"internalType":"uint256","name":"maxTransaction","type":"uint256"},{"internalType":"uint256","name":"maxWallet","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"tokenCa","type":"address"}],"name":"recoverTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"lpAddress","type":"address"},{"internalType":"bool","name":"isLiqPool","type":"bool"}],"name":"setAdditionalLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"exclude","type":"bool"}],"name":"setExcluded","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"t1","type":"uint256"},{"internalType":"uint256","name":"t2","type":"uint256"}],"name":"setPreLaunch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tax","outputs":[{"internalType":"uint8","name":"buyTax","type":"uint8"},{"internalType":"uint8","name":"sellTax","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","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"}]

60806040526009600a62000014919062000920565b6305f5e10062000025919062000971565b6005556009600a62000038919062000920565b6305f5e10062000049919062000971565b6006557335e6b861dbe175f64def1fac5e2853e5613eb764600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015620000ae57600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506009600a62000101919062000920565b6305f5e10062000112919062000971565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051620001f49190620009cd565b60405180910390a36200021060036006620005a360201b60201c565b6001600860008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000427573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200044d919062000a54565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb486040518363ffffffff1660e01b81526004016200049d92919062000a97565b6020604051808303816000875af1158015620004bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004e3919062000a54565b600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000be9565b60006009600a620005b5919062000920565b600a620005c3919062000971565b6103e88461ffff166009600a620005db919062000920565b6305f5e100620005ec919062000971565b620005f8919062000971565b62000604919062000af3565b62000610919062000b2b565b905060006009600a62000624919062000920565b600a62000632919062000971565b6103e88461ffff166009600a6200064a919062000920565b6305f5e1006200065b919062000971565b62000667919062000971565b62000673919062000af3565b6200067f919062000b2b565b905060035482101580156200069657506004548110155b620006d8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006cf9062000bc7565b60405180910390fd5b6009600a620006e8919062000920565b6305f5e100620006f9919062000971565b82111562000725576009600a62000711919062000920565b6305f5e10062000722919062000971565b91505b6009600a62000735919062000920565b6305f5e10062000746919062000971565b81111562000772576009600a6200075e919062000920565b6305f5e1006200076f919062000971565b90505b816003819055508060048190555050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200081457808604811115620007ec57620007eb62000786565b5b6001851615620007fc5780820291505b80810290506200080c85620007b5565b9450620007cc565b94509492505050565b6000826200082f576001905062000902565b816200083f576000905062000902565b8160018114620008585760028114620008635762000899565b600191505062000902565b60ff84111562000878576200087762000786565b5b8360020a91508482111562000892576200089162000786565b5b5062000902565b5060208310610133831016604e8410600b8410161715620008d35782820a905083811115620008cd57620008cc62000786565b5b62000902565b620008e28484846001620007c2565b92509050818404811115620008fc57620008fb62000786565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b60006200092d8262000909565b91506200093a8362000913565b9250620009697fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200081d565b905092915050565b60006200097e8262000909565b91506200098b8362000909565b92508282026200099b8162000909565b91508282048414831517620009b557620009b462000786565b5b5092915050565b620009c78162000909565b82525050565b6000602082019050620009e46000830184620009bc565b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000a1c82620009ef565b9050919050565b62000a2e8162000a0f565b811462000a3a57600080fd5b50565b60008151905062000a4e8162000a23565b92915050565b60006020828403121562000a6d5762000a6c620009ea565b5b600062000a7d8482850162000a3d565b91505092915050565b62000a918162000a0f565b82525050565b600060408201905062000aae600083018562000a86565b62000abd602083018462000a86565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000b008262000909565b915062000b0d8362000909565b92508262000b205762000b1f62000ac4565b5b828204905092915050565b600062000b388262000909565b915062000b458362000909565b925082820190508082111562000b605762000b5f62000786565b5b92915050565b600082825260208201905092915050565b7f43616e6e6f74206465637265617365206c696d69747300000000000000000000600082015250565b600062000baf60168362000b66565b915062000bbc8262000b77565b602082019050919050565b6000602082019050818103600083015262000be28162000ba0565b9050919050565b6147858062000bf96000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c80635c07c993116100f9578063a9059cbb11610097578063cba0e99611610071578063cba0e99614610486578063dacfa52e146104b6578063dd62ed3e146104d2578063f2fde38b14610502576101a9565b8063a9059cbb14610418578063c1eb6dfd14610448578063cb7115951461046a576101a9565b80637df0f767116100d35780637df0f7671461038c578063860aefcf146103bc57806395d89b41146103db57806399c8d556146103f9576101a9565b80635c07c9931461033657806370a0823114610352578063715018a614610382576101a9565b80632606d4a01161016657806331abf8731161014057806331abf873146102d857806341a22cc2146102f457806342966c681461031057806351bc3c851461032c576101a9565b80632606d4a0146102825780632836be241461029e578063313ce567146102ba576101a9565b806306fdde03146101ae578063095ea7b3146101cc5780630a6a52b9146101fc57806316114acd1461021857806318160ddd1461023457806323b872dd14610252575b600080fd5b6101b661051e565b6040516101c391906134be565b60405180910390f35b6101e660048036038101906101e19190613579565b61055b565b6040516101f391906135d4565b60405180910390f35b6102166004803603810190610211919061361b565b6105f3565b005b610232600480360381019061022d919061365b565b610937565b005b61023c610b34565b6040516102499190613697565b60405180910390f35b61026c600480360381019061026791906136b2565b610b58565b60405161027991906135d4565b60405180910390f35b61029c60048036038101906102979190613741565b610cc2565b005b6102b860048036038101906102b3919061361b565b610e34565b005b6102c26110e3565b6040516102cf91906137c4565b60405180910390f35b6102f260048036038101906102ed91906137df565b6110ec565b005b61030e6004803603810190610309919061381f565b611202565b005b61032a6004803603810190610325919061381f565b6115a4565b005b61033461173b565b005b610350600480360381019061034b9190613886565b6117d3565b005b61036c6004803603810190610367919061365b565b61186f565b6040516103799190613697565b60405180910390f35b61038a6118b8565b005b6103a660048036038101906103a1919061365b565b611952565b6040516103b391906135d4565b60405180910390f35b6103c46119a8565b6040516103d29291906138c6565b60405180910390f35b6103e36119b9565b6040516103f091906134be565b60405180910390f35b6104016119f6565b60405161040f9291906138ef565b60405180910390f35b610432600480360381019061042d9190613579565b611a21565b60405161043f91906135d4565b60405180910390f35b610450611a38565b604051610461959493929190613927565b60405180910390f35b610484600480360381019061047f919061365b565b611ae3565b005b6104a0600480360381019061049b919061365b565b611d21565b6040516104ad91906135d4565b60405180910390f35b6104d060048036038101906104cb91906139a6565b611d77565b005b6104ec60048036038101906104e791906139e6565b611e91565b6040516104f99190613697565b60405180910390f35b61051c6004803603810190610517919061365b565b611f18565b005b60606040518060400160405280600a81526020017f426c6f6f642042616e6b00000000000000000000000000000000000000000000815250905090565b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054116105de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d590613a72565b60405180910390fd5b6105e9338484611fb2565b6001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610681576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067890613ade565b60405180910390fd5b60006040518060400160405280600b81526020017f4e6f7420616c6c6f7765640000000000000000000000000000000000000000008152509050600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615819061074b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074291906134be565b60405180910390fd5b50600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141581906107e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d791906134be565b60405180910390fd5b503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158190610853576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084a91906134be565b60405180910390fd5b50737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141581906108da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d191906134be565b60405180910390fd5b5081600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109bc90613ade565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610a33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2a90613b4a565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610a6e9190613b6a565b602060405180830381865afa158015610a8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aaf9190613b9a565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610aec929190613bc7565b6020604051808303816000875af1158015610b0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b2f9190613c05565b505050565b60006009600a610b449190613d94565b6305f5e100610b539190613ddf565b905090565b600081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610c19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1090613e6d565b60405180910390fd5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ca59190613e8d565b92505081905550610cb7848484612146565b600190509392505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4790613ade565b60405180910390fd5b8263ffffffff168463ffffffff166009600a610d6c9190613d94565b6305f5e100610d7b9190613ddf565b610d859190613ddf565b610d8f9190613ef0565b6005819055508063ffffffff168263ffffffff166009600a610db19190613d94565b6305f5e100610dc09190613ddf565b610dca9190613ddf565b610dd49190613ef0565b60068190555060055460065411610dea57600080fd5b6103e860056009600a610dfd9190613d94565b6305f5e100610e0c9190613ddf565b610e169190613ddf565b610e209190613ef0565b6006541115610e2e57600080fd5b50505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ec2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb990613ade565b60405180910390fd5b60006040518060400160405280600b81526020017f4e6f7420616c6c6f7765640000000000000000000000000000000000000000008152509050600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158190610f8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8391906134be565b60405180910390fd5b503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158190610fff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff691906134be565b60405180910390fd5b50737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158190611086576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107d91906134be565b60405180910390fd5b5081600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60006009905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461117a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117190613ade565b60405180910390fd5b42600d54116111be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b590613f6d565b60405180910390fd5b6101ce81836111cd9190613ef0565b426111d89190613f8d565b6111e29190613f8d565b600d81905550610258600d546111f89190613f8d565b600e819055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611290576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128790613ade565b60405180910390fd5b600073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016112df9190613b6a565b602060405180830381865afa1580156112fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113209190613b9a565b11611360576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113579061400d565b60405180910390fd5b600c60009054906101000a900460ff16156113b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a790614079565b60405180910390fd5b61148930600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205473a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016114419190613b6a565b602060405180830381865afa15801561145e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114829190613b9a565b60006125d2565b6001600c60006101000a81548160ff02191690831515021790555061271060056009600a6114b79190613d94565b6305f5e1006114c69190613ddf565b6114d09190613ddf565b6114da9190613ef0565b60058190555061271060196009600a6114f39190613d94565b6305f5e1006115029190613ddf565b61150c9190613ddf565b6115169190613ef0565b600681905550600a600760006101000a81548160ff021916908360ff160217905550600f600760016101000a81548160ff021916908360ff16021790555061067e600a6007836115669190613ddf565b6115709190613ef0565b4261157b9190613f8d565b6115859190613f8d565b600d81905550610258600d5461159b9190613f8d565b600e8190555050565b80600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161d906140e5565b60405180910390fd5b80600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546116759190613e8d565b9250508190555080600160008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546116cb9190613f8d565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516117309190613697565b60405180910390a350565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c090613ade565b60405180910390fd5b6117d1612874565b565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611861576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185890613ade565b60405180910390fd5b61186b8282612962565b5050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611946576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193d90613ade565b60405180910390fd5b6119506000612b13565b565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600080600354600454915091509091565b60606040518060400160405280600581526020017f424c4f4f44000000000000000000000000000000000000000000000000000000815250905090565b600080600760009054906101000a900460ff16600760019054906101000a900460ff16915091509091565b6000611a2e338484612146565b6001905092915050565b60008060008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48737a250d5630b4cf539739df2c5dacb4c659f2488d600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945094509450945094509091929394565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6890613ade565b60405180910390fd5b600b60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611c0b5750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015611c4357503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015611c7c5750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b611c8557600080fd5b6001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611e05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfc90613ade565b60405180910390fd5b60148183611e139190614105565b60ff161115611e57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4e90614186565b60405180910390fd5b81600760006101000a81548160ff021916908360ff16021790555080600760016101000a81548160ff021916908360ff1602179055505050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611fa6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9d90613ade565b60405180910390fd5b611faf81612b13565b50565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561201c5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61205b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612052906141f2565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516121399190613697565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156121b05750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b6121ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e6906141f2565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015612271576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122689061425e565b60405180910390fd5b61227c838383612b8d565b6122bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b2906142ca565b60405180910390fd5b600d5442116122ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f690614336565b60405180910390fd5b600d5442101580156123125750600e5442105b801561231d5750483a115b15612381576000483a6123309190613e8d565b905060006402540be400905080821061237e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237590614336565b60405180910390fd5b50505b600f60009054906101000a900460ff161580156123e85750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561243d5750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561244b5761244a612874565b5b6000612458848484612dcb565b905081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546124a99190613e8d565b9250508190555080600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546124ff9190613f8d565b9250508190555080826125129190613e8d565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546125609190613f8d565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516125c49190613697565b60405180910390a350505050565b828473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161260c9190613b6a565b602060405180830381865afa158015612629573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061264d9190613b9a565b101561268e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612685906143a2565b60405180910390fd5b8173a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016126dc9190613b6a565b602060405180830381865afa1580156126f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061271d9190613b9a565b101561275e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127559061440e565b60405180910390fd5b6127688484612fca565b61278673a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4883612fca565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081156127b757600090505b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663e8e3370073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4887868860008088426040518963ffffffff1660e01b8152600401612827989796959493929190614473565b6060604051808303816000875af1158015612846573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061286a91906144f1565b5050505050505050565b6001600f60006101000a81548160ff0219169083151502179055506000600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506005548110612944576006548111156128ec5760065490505b6009600a6128fa9190613d94565b8110612943576129423073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4883600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166132a9565b5b5b506000600f60006101000a81548160ff021916908315150217905550565b60006009600a6129729190613d94565b600a61297e9190613ddf565b6103e88461ffff166009600a6129949190613d94565b6305f5e1006129a39190613ddf565b6129ad9190613ddf565b6129b79190613ef0565b6129c19190613f8d565b905060006009600a6129d39190613d94565b600a6129df9190613ddf565b6103e88461ffff166009600a6129f59190613d94565b6305f5e100612a049190613ddf565b612a0e9190613ddf565b612a189190613ef0565b612a229190613f8d565b90506003548210158015612a3857506004548110155b612a77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6e90614590565b60405180910390fd5b6009600a612a859190613d94565b6305f5e100612a949190613ddf565b821115612abb576009600a612aa99190613d94565b6305f5e100612ab89190613ddf565b91505b6009600a612ac99190613d94565b6305f5e100612ad89190613ddf565b811115612aff576009600a612aed9190613d94565b6305f5e100612afc9190613ddf565b90505b816003819055508060048190555050505050565b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051612b829190613b6a565b60405180910390a150565b6000806001905060035483118015612bef5750600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612c455750600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612c4f57600090505b600060019050600084600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ca29190613f8d565b905060045481118015612cff5750600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612d555750600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612dab5750600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612db557600091505b828015612dbf5750815b93505050509392505050565b600080600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612e715750600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612ee9576078600d54612e859190613f8d565b421115612ebd576064600760009054906101000a900460ff1660ff1684612eac9190613ddf565b612eb69190613ef0565b9050612ee4565b600d54421115612ee3576064606384612ed69190613ddf565b612ee09190613ef0565b90505b5b612fbf565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612f8c5750600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612fbe576064600760019054906101000a900460ff1660ff1684612fb19190613ddf565b612fbb9190613ef0565b90505b5b809150509392505050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361315557600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905080821115613150577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6132a4565b8273ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30737a250d5630b4cf539739df2c5dacb4c659f2488d6040518363ffffffff1660e01b81526004016131a49291906145b0565b602060405180830381865afa1580156131c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131e59190613b9a565b9050808211156132a3578273ffffffffffffffffffffffffffffffffffffffff1663095ea7b3737a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161325e929190613bc7565b6020604051808303816000875af115801561327d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132a19190613c05565b505b5b505050565b6132b38483612fca565b6000600267ffffffffffffffff8111156132d0576132cf6145d9565b5b6040519080825280602002602001820160405280156132fe5781602001602082028036833780820191505090505b509050848160008151811061331657613315614608565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050838160018151811061336557613364614608565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff16635c11d7958460008486426040518663ffffffff1660e01b81526004016133f59594939291906146f5565b600060405180830381600087803b15801561340f57600080fd5b505af1158015613423573d6000803e3d6000fd5b505050505050505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561346857808201518184015260208101905061344d565b60008484015250505050565b6000601f19601f8301169050919050565b60006134908261342e565b61349a8185613439565b93506134aa81856020860161344a565b6134b381613474565b840191505092915050565b600060208201905081810360008301526134d88184613485565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613510826134e5565b9050919050565b61352081613505565b811461352b57600080fd5b50565b60008135905061353d81613517565b92915050565b6000819050919050565b61355681613543565b811461356157600080fd5b50565b6000813590506135738161354d565b92915050565b600080604083850312156135905761358f6134e0565b5b600061359e8582860161352e565b92505060206135af85828601613564565b9150509250929050565b60008115159050919050565b6135ce816135b9565b82525050565b60006020820190506135e960008301846135c5565b92915050565b6135f8816135b9565b811461360357600080fd5b50565b600081359050613615816135ef565b92915050565b60008060408385031215613632576136316134e0565b5b60006136408582860161352e565b925050602061365185828601613606565b9150509250929050565b600060208284031215613671576136706134e0565b5b600061367f8482850161352e565b91505092915050565b61369181613543565b82525050565b60006020820190506136ac6000830184613688565b92915050565b6000806000606084860312156136cb576136ca6134e0565b5b60006136d98682870161352e565b93505060206136ea8682870161352e565b92505060406136fb86828701613564565b9150509250925092565b600063ffffffff82169050919050565b61371e81613705565b811461372957600080fd5b50565b60008135905061373b81613715565b92915050565b6000806000806080858703121561375b5761375a6134e0565b5b60006137698782880161372c565b945050602061377a8782880161372c565b935050604061378b8782880161372c565b925050606061379c8782880161372c565b91505092959194509250565b600060ff82169050919050565b6137be816137a8565b82525050565b60006020820190506137d960008301846137b5565b92915050565b600080604083850312156137f6576137f56134e0565b5b600061380485828601613564565b925050602061381585828601613564565b9150509250929050565b600060208284031215613835576138346134e0565b5b600061384384828501613564565b91505092915050565b600061ffff82169050919050565b6138638161384c565b811461386e57600080fd5b50565b6000813590506138808161385a565b92915050565b6000806040838503121561389d5761389c6134e0565b5b60006138ab85828601613871565b92505060206138bc85828601613871565b9150509250929050565b60006040820190506138db6000830185613688565b6138e86020830184613688565b9392505050565b600060408201905061390460008301856137b5565b61391160208301846137b5565b9392505050565b61392181613505565b82525050565b600060a08201905061393c6000830188613918565b6139496020830187613918565b6139566040830186613918565b6139636060830185613918565b6139706080830184613918565b9695505050505050565b613983816137a8565b811461398e57600080fd5b50565b6000813590506139a08161397a565b92915050565b600080604083850312156139bd576139bc6134e0565b5b60006139cb85828601613991565b92505060206139dc85828601613991565b9150509250929050565b600080604083850312156139fd576139fc6134e0565b5b6000613a0b8582860161352e565b9250506020613a1c8582860161352e565b9150509250929050565b7f45524332303a205a65726f2062616c616e636500000000000000000000000000600082015250565b6000613a5c601383613439565b9150613a6782613a26565b602082019050919050565b60006020820190508181036000830152613a8b81613a4f565b9050919050565b7f4e6f7420746865206f776e657200000000000000000000000000000000000000600082015250565b6000613ac8600d83613439565b9150613ad382613a92565b602082019050919050565b60006020820190508181036000830152613af781613abb565b9050919050565b7f4e6f7420616c6c6f776564000000000000000000000000000000000000000000600082015250565b6000613b34600b83613439565b9150613b3f82613afe565b602082019050919050565b60006020820190508181036000830152613b6381613b27565b9050919050565b6000602082019050613b7f6000830184613918565b92915050565b600081519050613b948161354d565b92915050565b600060208284031215613bb057613baf6134e0565b5b6000613bbe84828501613b85565b91505092915050565b6000604082019050613bdc6000830185613918565b613be96020830184613688565b9392505050565b600081519050613bff816135ef565b92915050565b600060208284031215613c1b57613c1a6134e0565b5b6000613c2984828501613bf0565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115613cb857808604811115613c9457613c93613c32565b5b6001851615613ca35780820291505b8081029050613cb185613c61565b9450613c78565b94509492505050565b600082613cd15760019050613d8d565b81613cdf5760009050613d8d565b8160018114613cf55760028114613cff57613d2e565b6001915050613d8d565b60ff841115613d1157613d10613c32565b5b8360020a915084821115613d2857613d27613c32565b5b50613d8d565b5060208310610133831016604e8410600b8410161715613d635782820a905083811115613d5e57613d5d613c32565b5b613d8d565b613d708484846001613c6e565b92509050818404811115613d8757613d86613c32565b5b81810290505b9392505050565b6000613d9f82613543565b9150613daa836137a8565b9250613dd77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613cc1565b905092915050565b6000613dea82613543565b9150613df583613543565b9250828202613e0381613543565b91508282048414831517613e1a57613e19613c32565b5b5092915050565b7f45524332303a20616d6f756e74206578636565647320616c6c6f77616e636500600082015250565b6000613e57601f83613439565b9150613e6282613e21565b602082019050919050565b60006020820190508181036000830152613e8681613e4a565b9050919050565b6000613e9882613543565b9150613ea383613543565b9250828203905081811115613ebb57613eba613c32565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613efb82613543565b9150613f0683613543565b925082613f1657613f15613ec1565b5b828204905092915050565b7f616c7265616479206c6976650000000000000000000000000000000000000000600082015250565b6000613f57600c83613439565b9150613f6282613f21565b602082019050919050565b60006020820190508181036000830152613f8681613f4a565b9050919050565b6000613f9882613543565b9150613fa383613543565b9250828201905080821115613fbb57613fba613c32565b5b92915050565b7f4e6f205553444300000000000000000000000000000000000000000000000000600082015250565b6000613ff7600783613439565b915061400282613fc1565b602082019050919050565b6000602082019050818103600083015261402681613fea565b9050919050565b7f4c697175696469747920616c7265616479206164646564000000000000000000600082015250565b6000614063601783613439565b915061406e8261402d565b602082019050919050565b6000602082019050818103600083015261409281614056565b9050919050565b7f4c6f772062616c616e6365000000000000000000000000000000000000000000600082015250565b60006140cf600b83613439565b91506140da82614099565b602082019050919050565b600060208201905081810360008301526140fe816140c2565b9050919050565b6000614110826137a8565b915061411b836137a8565b9250828201905060ff81111561413457614133613c32565b5b92915050565b7f4d617820726f756e647472697020697320323025000000000000000000000000600082015250565b6000614170601483613439565b915061417b8261413a565b602082019050919050565b6000602082019050818103600083015261419f81614163565b9050919050565b7f45524332303a205a65726f206164647265737300000000000000000000000000600082015250565b60006141dc601383613439565b91506141e7826141a6565b602082019050919050565b6000602082019050818103600083015261420b816141cf565b9050919050565b7f45524332303a20616d6f756e7420657863656564732062616c616e6365000000600082015250565b6000614248601d83613439565b915061425382614212565b602082019050919050565b600060208201905081810360008301526142778161423b565b9050919050565b7f4c696d6974732065786365656465640000000000000000000000000000000000600082015250565b60006142b4600f83613439565b91506142bf8261427e565b602082019050919050565b600060208201905081810360008301526142e3816142a7565b9050919050565b7f4e6f7420656e61626c6564000000000000000000000000000000000000000000600082015250565b6000614320600b83613439565b915061432b826142ea565b602082019050919050565b6000602082019050818103600083015261434f81614313565b9050919050565b7f4e6f7420656e6f75676820746f6b656e73000000000000000000000000000000600082015250565b600061438c601183613439565b915061439782614356565b602082019050919050565b600060208201905081810360008301526143bb8161437f565b9050919050565b7f4e6f7420656e6f75676820555344430000000000000000000000000000000000600082015250565b60006143f8600f83613439565b9150614403826143c2565b602082019050919050565b60006020820190508181036000830152614427816143eb565b9050919050565b6000819050919050565b6000819050919050565b600061445d6144586144538461442e565b614438565b613543565b9050919050565b61446d81614442565b82525050565b600061010082019050614489600083018b613918565b614496602083018a613918565b6144a36040830189613688565b6144b06060830188613688565b6144bd6080830187614464565b6144ca60a0830186614464565b6144d760c0830185613918565b6144e460e0830184613688565b9998505050505050505050565b60008060006060848603121561450a576145096134e0565b5b600061451886828701613b85565b935050602061452986828701613b85565b925050604061453a86828701613b85565b9150509250925092565b7f43616e6e6f74206465637265617365206c696d69747300000000000000000000600082015250565b600061457a601683613439565b915061458582614544565b602082019050919050565b600060208201905081810360008301526145a98161456d565b9050919050565b60006040820190506145c56000830185613918565b6145d26020830184613918565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61466c81613505565b82525050565b600061467e8383614663565b60208301905092915050565b6000602082019050919050565b60006146a282614637565b6146ac8185614642565b93506146b783614653565b8060005b838110156146e85781516146cf8882614672565b97506146da8361468a565b9250506001810190506146bb565b5085935050505092915050565b600060a08201905061470a6000830188613688565b6147176020830187614464565b81810360408301526147298186614697565b90506147386060830185613918565b6147456080830184613688565b969550505050505056fea26469706673582212209a5794437b3b87ac9783196b83f215062cf882d851de51a9de2c8ce3ec3b1c1e64736f6c63430008110033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101a95760003560e01c80635c07c993116100f9578063a9059cbb11610097578063cba0e99611610071578063cba0e99614610486578063dacfa52e146104b6578063dd62ed3e146104d2578063f2fde38b14610502576101a9565b8063a9059cbb14610418578063c1eb6dfd14610448578063cb7115951461046a576101a9565b80637df0f767116100d35780637df0f7671461038c578063860aefcf146103bc57806395d89b41146103db57806399c8d556146103f9576101a9565b80635c07c9931461033657806370a0823114610352578063715018a614610382576101a9565b80632606d4a01161016657806331abf8731161014057806331abf873146102d857806341a22cc2146102f457806342966c681461031057806351bc3c851461032c576101a9565b80632606d4a0146102825780632836be241461029e578063313ce567146102ba576101a9565b806306fdde03146101ae578063095ea7b3146101cc5780630a6a52b9146101fc57806316114acd1461021857806318160ddd1461023457806323b872dd14610252575b600080fd5b6101b661051e565b6040516101c391906134be565b60405180910390f35b6101e660048036038101906101e19190613579565b61055b565b6040516101f391906135d4565b60405180910390f35b6102166004803603810190610211919061361b565b6105f3565b005b610232600480360381019061022d919061365b565b610937565b005b61023c610b34565b6040516102499190613697565b60405180910390f35b61026c600480360381019061026791906136b2565b610b58565b60405161027991906135d4565b60405180910390f35b61029c60048036038101906102979190613741565b610cc2565b005b6102b860048036038101906102b3919061361b565b610e34565b005b6102c26110e3565b6040516102cf91906137c4565b60405180910390f35b6102f260048036038101906102ed91906137df565b6110ec565b005b61030e6004803603810190610309919061381f565b611202565b005b61032a6004803603810190610325919061381f565b6115a4565b005b61033461173b565b005b610350600480360381019061034b9190613886565b6117d3565b005b61036c6004803603810190610367919061365b565b61186f565b6040516103799190613697565b60405180910390f35b61038a6118b8565b005b6103a660048036038101906103a1919061365b565b611952565b6040516103b391906135d4565b60405180910390f35b6103c46119a8565b6040516103d29291906138c6565b60405180910390f35b6103e36119b9565b6040516103f091906134be565b60405180910390f35b6104016119f6565b60405161040f9291906138ef565b60405180910390f35b610432600480360381019061042d9190613579565b611a21565b60405161043f91906135d4565b60405180910390f35b610450611a38565b604051610461959493929190613927565b60405180910390f35b610484600480360381019061047f919061365b565b611ae3565b005b6104a0600480360381019061049b919061365b565b611d21565b6040516104ad91906135d4565b60405180910390f35b6104d060048036038101906104cb91906139a6565b611d77565b005b6104ec60048036038101906104e791906139e6565b611e91565b6040516104f99190613697565b60405180910390f35b61051c6004803603810190610517919061365b565b611f18565b005b60606040518060400160405280600a81526020017f426c6f6f642042616e6b00000000000000000000000000000000000000000000815250905090565b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054116105de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d590613a72565b60405180910390fd5b6105e9338484611fb2565b6001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610681576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067890613ade565b60405180910390fd5b60006040518060400160405280600b81526020017f4e6f7420616c6c6f7765640000000000000000000000000000000000000000008152509050600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615819061074b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074291906134be565b60405180910390fd5b50600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141581906107e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d791906134be565b60405180910390fd5b503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158190610853576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084a91906134be565b60405180910390fd5b50737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141581906108da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d191906134be565b60405180910390fd5b5081600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109bc90613ade565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610a33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2a90613b4a565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610a6e9190613b6a565b602060405180830381865afa158015610a8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aaf9190613b9a565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610aec929190613bc7565b6020604051808303816000875af1158015610b0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b2f9190613c05565b505050565b60006009600a610b449190613d94565b6305f5e100610b539190613ddf565b905090565b600081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610c19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1090613e6d565b60405180910390fd5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ca59190613e8d565b92505081905550610cb7848484612146565b600190509392505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4790613ade565b60405180910390fd5b8263ffffffff168463ffffffff166009600a610d6c9190613d94565b6305f5e100610d7b9190613ddf565b610d859190613ddf565b610d8f9190613ef0565b6005819055508063ffffffff168263ffffffff166009600a610db19190613d94565b6305f5e100610dc09190613ddf565b610dca9190613ddf565b610dd49190613ef0565b60068190555060055460065411610dea57600080fd5b6103e860056009600a610dfd9190613d94565b6305f5e100610e0c9190613ddf565b610e169190613ddf565b610e209190613ef0565b6006541115610e2e57600080fd5b50505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ec2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb990613ade565b60405180910390fd5b60006040518060400160405280600b81526020017f4e6f7420616c6c6f7765640000000000000000000000000000000000000000008152509050600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158190610f8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8391906134be565b60405180910390fd5b503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158190610fff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff691906134be565b60405180910390fd5b50737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158190611086576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107d91906134be565b60405180910390fd5b5081600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60006009905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461117a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117190613ade565b60405180910390fd5b42600d54116111be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b590613f6d565b60405180910390fd5b6101ce81836111cd9190613ef0565b426111d89190613f8d565b6111e29190613f8d565b600d81905550610258600d546111f89190613f8d565b600e819055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611290576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128790613ade565b60405180910390fd5b600073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016112df9190613b6a565b602060405180830381865afa1580156112fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113209190613b9a565b11611360576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113579061400d565b60405180910390fd5b600c60009054906101000a900460ff16156113b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a790614079565b60405180910390fd5b61148930600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205473a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016114419190613b6a565b602060405180830381865afa15801561145e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114829190613b9a565b60006125d2565b6001600c60006101000a81548160ff02191690831515021790555061271060056009600a6114b79190613d94565b6305f5e1006114c69190613ddf565b6114d09190613ddf565b6114da9190613ef0565b60058190555061271060196009600a6114f39190613d94565b6305f5e1006115029190613ddf565b61150c9190613ddf565b6115169190613ef0565b600681905550600a600760006101000a81548160ff021916908360ff160217905550600f600760016101000a81548160ff021916908360ff16021790555061067e600a6007836115669190613ddf565b6115709190613ef0565b4261157b9190613f8d565b6115859190613f8d565b600d81905550610258600d5461159b9190613f8d565b600e8190555050565b80600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161d906140e5565b60405180910390fd5b80600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546116759190613e8d565b9250508190555080600160008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546116cb9190613f8d565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516117309190613697565b60405180910390a350565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c090613ade565b60405180910390fd5b6117d1612874565b565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611861576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185890613ade565b60405180910390fd5b61186b8282612962565b5050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611946576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193d90613ade565b60405180910390fd5b6119506000612b13565b565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600080600354600454915091509091565b60606040518060400160405280600581526020017f424c4f4f44000000000000000000000000000000000000000000000000000000815250905090565b600080600760009054906101000a900460ff16600760019054906101000a900460ff16915091509091565b6000611a2e338484612146565b6001905092915050565b60008060008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48737a250d5630b4cf539739df2c5dacb4c659f2488d600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945094509450945094509091929394565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6890613ade565b60405180910390fd5b600b60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611c0b5750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015611c4357503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015611c7c5750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b611c8557600080fd5b6001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611e05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfc90613ade565b60405180910390fd5b60148183611e139190614105565b60ff161115611e57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4e90614186565b60405180910390fd5b81600760006101000a81548160ff021916908360ff16021790555080600760016101000a81548160ff021916908360ff1602179055505050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611fa6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9d90613ade565b60405180910390fd5b611faf81612b13565b50565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561201c5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61205b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612052906141f2565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516121399190613697565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156121b05750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b6121ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e6906141f2565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015612271576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122689061425e565b60405180910390fd5b61227c838383612b8d565b6122bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b2906142ca565b60405180910390fd5b600d5442116122ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f690614336565b60405180910390fd5b600d5442101580156123125750600e5442105b801561231d5750483a115b15612381576000483a6123309190613e8d565b905060006402540be400905080821061237e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237590614336565b60405180910390fd5b50505b600f60009054906101000a900460ff161580156123e85750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561243d5750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561244b5761244a612874565b5b6000612458848484612dcb565b905081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546124a99190613e8d565b9250508190555080600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546124ff9190613f8d565b9250508190555080826125129190613e8d565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546125609190613f8d565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516125c49190613697565b60405180910390a350505050565b828473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161260c9190613b6a565b602060405180830381865afa158015612629573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061264d9190613b9a565b101561268e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612685906143a2565b60405180910390fd5b8173a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016126dc9190613b6a565b602060405180830381865afa1580156126f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061271d9190613b9a565b101561275e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127559061440e565b60405180910390fd5b6127688484612fca565b61278673a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4883612fca565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081156127b757600090505b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663e8e3370073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4887868860008088426040518963ffffffff1660e01b8152600401612827989796959493929190614473565b6060604051808303816000875af1158015612846573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061286a91906144f1565b5050505050505050565b6001600f60006101000a81548160ff0219169083151502179055506000600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506005548110612944576006548111156128ec5760065490505b6009600a6128fa9190613d94565b8110612943576129423073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4883600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166132a9565b5b5b506000600f60006101000a81548160ff021916908315150217905550565b60006009600a6129729190613d94565b600a61297e9190613ddf565b6103e88461ffff166009600a6129949190613d94565b6305f5e1006129a39190613ddf565b6129ad9190613ddf565b6129b79190613ef0565b6129c19190613f8d565b905060006009600a6129d39190613d94565b600a6129df9190613ddf565b6103e88461ffff166009600a6129f59190613d94565b6305f5e100612a049190613ddf565b612a0e9190613ddf565b612a189190613ef0565b612a229190613f8d565b90506003548210158015612a3857506004548110155b612a77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6e90614590565b60405180910390fd5b6009600a612a859190613d94565b6305f5e100612a949190613ddf565b821115612abb576009600a612aa99190613d94565b6305f5e100612ab89190613ddf565b91505b6009600a612ac99190613d94565b6305f5e100612ad89190613ddf565b811115612aff576009600a612aed9190613d94565b6305f5e100612afc9190613ddf565b90505b816003819055508060048190555050505050565b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051612b829190613b6a565b60405180910390a150565b6000806001905060035483118015612bef5750600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612c455750600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612c4f57600090505b600060019050600084600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ca29190613f8d565b905060045481118015612cff5750600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612d555750600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612dab5750600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612db557600091505b828015612dbf5750815b93505050509392505050565b600080600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612e715750600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612ee9576078600d54612e859190613f8d565b421115612ebd576064600760009054906101000a900460ff1660ff1684612eac9190613ddf565b612eb69190613ef0565b9050612ee4565b600d54421115612ee3576064606384612ed69190613ddf565b612ee09190613ef0565b90505b5b612fbf565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612f8c5750600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612fbe576064600760019054906101000a900460ff1660ff1684612fb19190613ddf565b612fbb9190613ef0565b90505b5b809150509392505050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361315557600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905080821115613150577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6132a4565b8273ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30737a250d5630b4cf539739df2c5dacb4c659f2488d6040518363ffffffff1660e01b81526004016131a49291906145b0565b602060405180830381865afa1580156131c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131e59190613b9a565b9050808211156132a3578273ffffffffffffffffffffffffffffffffffffffff1663095ea7b3737a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161325e929190613bc7565b6020604051808303816000875af115801561327d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132a19190613c05565b505b5b505050565b6132b38483612fca565b6000600267ffffffffffffffff8111156132d0576132cf6145d9565b5b6040519080825280602002602001820160405280156132fe5781602001602082028036833780820191505090505b509050848160008151811061331657613315614608565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050838160018151811061336557613364614608565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff16635c11d7958460008486426040518663ffffffff1660e01b81526004016133f59594939291906146f5565b600060405180830381600087803b15801561340f57600080fd5b505af1158015613423573d6000803e3d6000fd5b505050505050505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561346857808201518184015260208101905061344d565b60008484015250505050565b6000601f19601f8301169050919050565b60006134908261342e565b61349a8185613439565b93506134aa81856020860161344a565b6134b381613474565b840191505092915050565b600060208201905081810360008301526134d88184613485565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613510826134e5565b9050919050565b61352081613505565b811461352b57600080fd5b50565b60008135905061353d81613517565b92915050565b6000819050919050565b61355681613543565b811461356157600080fd5b50565b6000813590506135738161354d565b92915050565b600080604083850312156135905761358f6134e0565b5b600061359e8582860161352e565b92505060206135af85828601613564565b9150509250929050565b60008115159050919050565b6135ce816135b9565b82525050565b60006020820190506135e960008301846135c5565b92915050565b6135f8816135b9565b811461360357600080fd5b50565b600081359050613615816135ef565b92915050565b60008060408385031215613632576136316134e0565b5b60006136408582860161352e565b925050602061365185828601613606565b9150509250929050565b600060208284031215613671576136706134e0565b5b600061367f8482850161352e565b91505092915050565b61369181613543565b82525050565b60006020820190506136ac6000830184613688565b92915050565b6000806000606084860312156136cb576136ca6134e0565b5b60006136d98682870161352e565b93505060206136ea8682870161352e565b92505060406136fb86828701613564565b9150509250925092565b600063ffffffff82169050919050565b61371e81613705565b811461372957600080fd5b50565b60008135905061373b81613715565b92915050565b6000806000806080858703121561375b5761375a6134e0565b5b60006137698782880161372c565b945050602061377a8782880161372c565b935050604061378b8782880161372c565b925050606061379c8782880161372c565b91505092959194509250565b600060ff82169050919050565b6137be816137a8565b82525050565b60006020820190506137d960008301846137b5565b92915050565b600080604083850312156137f6576137f56134e0565b5b600061380485828601613564565b925050602061381585828601613564565b9150509250929050565b600060208284031215613835576138346134e0565b5b600061384384828501613564565b91505092915050565b600061ffff82169050919050565b6138638161384c565b811461386e57600080fd5b50565b6000813590506138808161385a565b92915050565b6000806040838503121561389d5761389c6134e0565b5b60006138ab85828601613871565b92505060206138bc85828601613871565b9150509250929050565b60006040820190506138db6000830185613688565b6138e86020830184613688565b9392505050565b600060408201905061390460008301856137b5565b61391160208301846137b5565b9392505050565b61392181613505565b82525050565b600060a08201905061393c6000830188613918565b6139496020830187613918565b6139566040830186613918565b6139636060830185613918565b6139706080830184613918565b9695505050505050565b613983816137a8565b811461398e57600080fd5b50565b6000813590506139a08161397a565b92915050565b600080604083850312156139bd576139bc6134e0565b5b60006139cb85828601613991565b92505060206139dc85828601613991565b9150509250929050565b600080604083850312156139fd576139fc6134e0565b5b6000613a0b8582860161352e565b9250506020613a1c8582860161352e565b9150509250929050565b7f45524332303a205a65726f2062616c616e636500000000000000000000000000600082015250565b6000613a5c601383613439565b9150613a6782613a26565b602082019050919050565b60006020820190508181036000830152613a8b81613a4f565b9050919050565b7f4e6f7420746865206f776e657200000000000000000000000000000000000000600082015250565b6000613ac8600d83613439565b9150613ad382613a92565b602082019050919050565b60006020820190508181036000830152613af781613abb565b9050919050565b7f4e6f7420616c6c6f776564000000000000000000000000000000000000000000600082015250565b6000613b34600b83613439565b9150613b3f82613afe565b602082019050919050565b60006020820190508181036000830152613b6381613b27565b9050919050565b6000602082019050613b7f6000830184613918565b92915050565b600081519050613b948161354d565b92915050565b600060208284031215613bb057613baf6134e0565b5b6000613bbe84828501613b85565b91505092915050565b6000604082019050613bdc6000830185613918565b613be96020830184613688565b9392505050565b600081519050613bff816135ef565b92915050565b600060208284031215613c1b57613c1a6134e0565b5b6000613c2984828501613bf0565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115613cb857808604811115613c9457613c93613c32565b5b6001851615613ca35780820291505b8081029050613cb185613c61565b9450613c78565b94509492505050565b600082613cd15760019050613d8d565b81613cdf5760009050613d8d565b8160018114613cf55760028114613cff57613d2e565b6001915050613d8d565b60ff841115613d1157613d10613c32565b5b8360020a915084821115613d2857613d27613c32565b5b50613d8d565b5060208310610133831016604e8410600b8410161715613d635782820a905083811115613d5e57613d5d613c32565b5b613d8d565b613d708484846001613c6e565b92509050818404811115613d8757613d86613c32565b5b81810290505b9392505050565b6000613d9f82613543565b9150613daa836137a8565b9250613dd77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613cc1565b905092915050565b6000613dea82613543565b9150613df583613543565b9250828202613e0381613543565b91508282048414831517613e1a57613e19613c32565b5b5092915050565b7f45524332303a20616d6f756e74206578636565647320616c6c6f77616e636500600082015250565b6000613e57601f83613439565b9150613e6282613e21565b602082019050919050565b60006020820190508181036000830152613e8681613e4a565b9050919050565b6000613e9882613543565b9150613ea383613543565b9250828203905081811115613ebb57613eba613c32565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613efb82613543565b9150613f0683613543565b925082613f1657613f15613ec1565b5b828204905092915050565b7f616c7265616479206c6976650000000000000000000000000000000000000000600082015250565b6000613f57600c83613439565b9150613f6282613f21565b602082019050919050565b60006020820190508181036000830152613f8681613f4a565b9050919050565b6000613f9882613543565b9150613fa383613543565b9250828201905080821115613fbb57613fba613c32565b5b92915050565b7f4e6f205553444300000000000000000000000000000000000000000000000000600082015250565b6000613ff7600783613439565b915061400282613fc1565b602082019050919050565b6000602082019050818103600083015261402681613fea565b9050919050565b7f4c697175696469747920616c7265616479206164646564000000000000000000600082015250565b6000614063601783613439565b915061406e8261402d565b602082019050919050565b6000602082019050818103600083015261409281614056565b9050919050565b7f4c6f772062616c616e6365000000000000000000000000000000000000000000600082015250565b60006140cf600b83613439565b91506140da82614099565b602082019050919050565b600060208201905081810360008301526140fe816140c2565b9050919050565b6000614110826137a8565b915061411b836137a8565b9250828201905060ff81111561413457614133613c32565b5b92915050565b7f4d617820726f756e647472697020697320323025000000000000000000000000600082015250565b6000614170601483613439565b915061417b8261413a565b602082019050919050565b6000602082019050818103600083015261419f81614163565b9050919050565b7f45524332303a205a65726f206164647265737300000000000000000000000000600082015250565b60006141dc601383613439565b91506141e7826141a6565b602082019050919050565b6000602082019050818103600083015261420b816141cf565b9050919050565b7f45524332303a20616d6f756e7420657863656564732062616c616e6365000000600082015250565b6000614248601d83613439565b915061425382614212565b602082019050919050565b600060208201905081810360008301526142778161423b565b9050919050565b7f4c696d6974732065786365656465640000000000000000000000000000000000600082015250565b60006142b4600f83613439565b91506142bf8261427e565b602082019050919050565b600060208201905081810360008301526142e3816142a7565b9050919050565b7f4e6f7420656e61626c6564000000000000000000000000000000000000000000600082015250565b6000614320600b83613439565b915061432b826142ea565b602082019050919050565b6000602082019050818103600083015261434f81614313565b9050919050565b7f4e6f7420656e6f75676820746f6b656e73000000000000000000000000000000600082015250565b600061438c601183613439565b915061439782614356565b602082019050919050565b600060208201905081810360008301526143bb8161437f565b9050919050565b7f4e6f7420656e6f75676820555344430000000000000000000000000000000000600082015250565b60006143f8600f83613439565b9150614403826143c2565b602082019050919050565b60006020820190508181036000830152614427816143eb565b9050919050565b6000819050919050565b6000819050919050565b600061445d6144586144538461442e565b614438565b613543565b9050919050565b61446d81614442565b82525050565b600061010082019050614489600083018b613918565b614496602083018a613918565b6144a36040830189613688565b6144b06060830188613688565b6144bd6080830187614464565b6144ca60a0830186614464565b6144d760c0830185613918565b6144e460e0830184613688565b9998505050505050505050565b60008060006060848603121561450a576145096134e0565b5b600061451886828701613b85565b935050602061452986828701613b85565b925050604061453a86828701613b85565b9150509250925092565b7f43616e6e6f74206465637265617365206c696d69747300000000000000000000600082015250565b600061457a601683613439565b915061458582614544565b602082019050919050565b600060208201905081810360008301526145a98161456d565b9050919050565b60006040820190506145c56000830185613918565b6145d26020830184613918565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61466c81613505565b82525050565b600061467e8383614663565b60208301905092915050565b6000602082019050919050565b60006146a282614637565b6146ac8185614642565b93506146b783614653565b8060005b838110156146e85781516146cf8882614672565b97506146da8361468a565b9250506001810190506146bb565b5085935050505092915050565b600060a08201905061470a6000830188613688565b6147176020830187614464565b81810360408301526147298186614697565b90506147386060830185613918565b6147456080830184613688565b969550505050505056fea26469706673582212209a5794437b3b87ac9783196b83f215062cf882d851de51a9de2c8ce3ec3b1c1e64736f6c63430008110033

Deployed Bytecode Sourcemap

2259:11562:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4530:80;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4857:205;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13347:392;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12107:239;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4269:88;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6204:270;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12744:369;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12421:318;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4360:80;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9510:204;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8323:589;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13118:226;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12351:65;;;:::i;:::-;;10046:141;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4613:107;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1939:83;;;:::i;:::-;;13742:76;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9828:116;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;4443:84;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9719:106;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;6074:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4051:213;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;10811:290;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9947:94;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11107:233;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4723:131;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2025:97;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4530:80;4578:13;4602:5;;;;;;;;;;;;;;;;;4595:12;;4530:80;:::o;4857:205::-;4932:4;4975:1;4951:9;:21;4961:10;4951:21;;;;;;;;;;;;;;;;:25;4943:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;5004:37;5013:10;5025:7;5034:6;5004:8;:37::i;:::-;5053:4;5046:11;;4857:205;;;;:::o;13347:392::-;1795:6;;;;;;;;;;1781:20;;:10;:20;;;1773:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;13431:29:::1;:45;;;;;;;;;;;;;;;;::::0;::::1;;13490:9;:20;13500:9;13490:20;;;;;;;;;;;;;;;;;;;;;;;;;13489:21;13512:15;13481:47;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;13554:10;;;;;;;;;;;13541:23;;:9;:23;;;;13566:15;13533:49;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;13616:4;13595:26;;:9;:26;;;;13623:15;13587:52;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3117:42;13652:31;;:9;:31;;;;13685:15;13644:57;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;13725:9;13706:5;:16;13712:9;13706:16;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;13426:313;13347:392:::0;;:::o;12107:239::-;1795:6;;;;;;;;;;1781:20;;:10;:20;;;1773:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;12198:4:::1;12179:24;;:7;:24;;::::0;12171:47:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;12223:20;12253:7;12246:25;;;12280:4;12246:40;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12223:63;;12298:7;12291:24;;;12316:10;12328:12;12291:50;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12166:180;12107:239:::0;:::o;4269:88::-;4324:7;2450:1;2509:2;:13;;;;:::i;:::-;2495:11;:27;;;;:::i;:::-;4335:19;;4269:88;:::o;6204:270::-;6284:4;6336:6;6303:11;:17;6315:4;6303:17;;;;;;;;;;;;;;;:29;6321:10;6303:29;;;;;;;;;;;;;;;;:39;;6295:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;6415:6;6382:11;:17;6394:4;6382:17;;;;;;;;;;;;;;;:29;6400:10;6382:29;;;;;;;;;;;;;;;;:39;;;;;;;:::i;:::-;;;;;;;;6426:27;6436:4;6442:2;6446:6;6426:9;:27::i;:::-;6465:4;6458:11;;6204:270;;;;;:::o;12744:369::-;1795:6;;;;;;;;;;1781:20;;:10;:20;;;1773:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;12913:10:::1;12887:36;;12902:8;12887:23;;2450:1;2509:2;:13;;;;:::i;:::-;2495:11;:27;;;;:::i;:::-;12887:23;;;;:::i;:::-;:36;;;;:::i;:::-;12870:14;:53;;;;12967:10;12941:36;;12956:8;12941:23;;2450:1;2509:2;:13;;;;:::i;:::-;2495:11;:27;;;;:::i;:::-;12941:23;;;;:::i;:::-;:36;;;;:::i;:::-;12928:10;:49;;;;13003:14;;12990:10;;:27;12982:36;;;::::0;::::1;;13064:4;13060:1;2450;2509:2;:13;;;;:::i;:::-;2495:11;:27;;;;:::i;:::-;13045:16;;;;:::i;:::-;:23;;;;:::i;:::-;13031:10;;:37;;13023:46;;;::::0;::::1;;12744:369:::0;;;;:::o;12421:318::-;1795:6;;;;;;;;;;1781:20;;:10;:20;;;1773:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;12497:29:::1;:45;;;;;;;;;;;;;;;;::::0;::::1;;12556:5;:13;12562:6;12556:13;;;;;;;;;;;;;;;;;;;;;;;;;12555:14;12571:15;12547:40;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;12618:4;12600:23;;:6;:23;;;;12625:15;12592:49;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3117:42;12654:28;;:6;:28;;;;12684:15;12646:54;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;12726:7;12706:9;:17;12716:6;12706:17;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;12491:248;12421:318:::0;;:::o;4360:80::-;4412:5;2450:1;4421:16;;4360:80;:::o;9510:204::-;1795:6;;;;;;;;;;1781:20;;:10;:20;;;1773:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;9598:15:::1;9588:7;;:25;9580:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;9675:3;9669:2;9664;:7;;;;:::i;:::-;9645:15;:27;;;;:::i;:::-;:33;;;;:::i;:::-;9635:7;:43;;;;9706:3;9696:7;;:13;;;;:::i;:::-;9683:10;:26;;;;9510:204:::0;;:::o;8323:589::-;1795:6;;;;;;;;;;1781:20;;:10;:20;;;1773:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;8436:1:::1;3013:42;8397:23;;;8429:4;8397:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:40;8389:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8463:22;;;;;;;;;;;8462:23;8454:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;8518:101;8540:4;8547:9;:24;8565:4;8547:24;;;;;;;;;;;;;;;;3013:42;8573:23;;;8605:4;8573:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8613:5;8518:13;:101::i;:::-;8649:4;8624:22;;:29;;;;;;;;;;;;;;;;;;8696:5;8692:1;2450;2509:2;:13;;;;:::i;:::-;2495:11;:27;;;;:::i;:::-;8677:16;;;;:::i;:::-;:24;;;;:::i;:::-;8660:14;:41;;;;8739:5;8734:2;2450:1;2509:2;:13;;;;:::i;:::-;2495:11;:27;;;;:::i;:::-;8719:17;;;;:::i;:::-;:25;;;;:::i;:::-;8706:10;:38;;;;8765:2;8751:11;;:16;;;;;;;;;;;;;;;;;;8787:2;8772:12;;:17;;;;;;;;;;;;;;;;;;8872:4;8866:2;8862:1;8856:3;:7;;;;:::i;:::-;:12;;;;:::i;:::-;8837:15;:32;;;;:::i;:::-;:39;;;;:::i;:::-;8827:7;:49;;;;8904:3;8894:7;;:13;;;;:::i;:::-;8881:10;:26;;;;8323:589:::0;:::o;13118:226::-;13195:6;13170:9;:21;13180:10;13170:21;;;;;;;;;;;;;;;;:31;;13162:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;13247:6;13222:9;:21;13232:10;13222:21;;;;;;;;;;;;;;;;:31;;;;;;;:::i;:::-;;;;;;;;13283:6;13258:9;:21;13276:1;13258:21;;;;;;;;;;;;;;;;:31;;;;;;;:::i;:::-;;;;;;;;13328:1;13299:40;;13308:10;13299:40;;;13332:6;13299:40;;;;;;:::i;:::-;;;;;;;;13118:226;:::o;12351:65::-;1795:6;;;;;;;;;;1781:20;;:10;:20;;;1773:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;12394:19:::1;:17;:19::i;:::-;12351:65::o:0;10046:141::-;1795:6;;;;;;;;;;1781:20;;:10;:20;;;1773:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;10137:47:::1;10151:13;10166:17;10137:13;:47::i;:::-;10046:141:::0;;:::o;4613:107::-;4681:7;4699:9;:18;4709:7;4699:18;;;;;;;;;;;;;;;;4692:25;;4613:107;;;:::o;1939:83::-;1795:6;;;;;;;;;;1781:20;;:10;:20;;;1773:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1989:30:::1;2016:1;1989:18;:30::i;:::-;1939:83::o:0;13742:76::-;13791:4;13806:5;:9;13812:2;13806:9;;;;;;;;;;;;;;;;;;;;;;;;;13799:16;;13742:76;;;:::o;9828:116::-;9869:22;9893:17;9922:6;;9930:10;;9914:27;;;;9828:116;;:::o;4443:84::-;4493:13;4517:7;;;;;;;;;;;;;;;;;4510:14;;4443:84;:::o;9719:106::-;9757:12;9771:13;9796:11;;;;;;;;;;;9809:12;;;;;;;;;;;9788:34;;;;9719:106;;:::o;6074:127::-;6136:4;6147:33;6157:10;6169:2;6173:6;6147:9;:33::i;:::-;6192:4;6185:11;;6074:127;;;;:::o;4051:213::-;4097:13;4112:16;4130:12;4144:18;4164:17;4196:6;;;;;;;;;;;4204:15;;;;;;;;;;;3013:42;3117;4248:10;;;;;;;;;;;4188:71;;;;;;;;;;4051:213;;;;;:::o;10811:290::-;1795:6;;;;;;;;;;1781:20;;:10;:20;;;1773:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;10893:5:::1;:21;10899:14;10893:21;;;;;;;;;;;;;;;;;;;;;;;;;10892:22;:62;;;;;3117:42;10918:36;;:14;:36;;;;10892:62;:97;;;;;10984:4;10958:31;;:14;:31;;;;10892:97;:129;;;;;11019:1;10993:28;;:14;:28;;;;10892:129;10884:138;;;::::0;::::1;;11055:4;11027:9;:25;11037:14;11027:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;11082:14;11064:15;;:32;;;;;;;;;;;;;;;;;;10811:290:::0;:::o;9947:94::-;10006:4;10021:9;:17;10031:6;10021:17;;;;;;;;;;;;;;;;;;;;;;;;;10014:24;;9947:94;;;:::o;11107:233::-;1795:6;;;;;;;;;;1781:20;;:10;:20;;;1773:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;11241:2:::1;11222:14;11208:13;:28;;;;:::i;:::-;11207:36;;;;11198:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;11288:13;11274:11;;:27;;;;;;;;;;;;;;;;;;11321:14;11306:12;;:29;;;;;;;;;;;;;;;;;;11107:233:::0;;:::o;4723:131::-;4806:7;4824:11;:18;4836:5;4824:18;;;;;;;;;;;;;;;:27;4843:7;4824:27;;;;;;;;;;;;;;;;4817:34;;4723:131;;;;:::o;2025:97::-;1795:6;;;;;;;;;;1781:20;;:10;:20;;;1773:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2091:28:::1;2110:8;2091:18;:28::i;:::-;2025:97:::0;:::o;5065:244::-;5170:1;5153:19;;:5;:19;;;;:44;;;;;5195:1;5176:21;;:7;:21;;;;5153:44;5145:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;5256:6;5226:11;:18;5238:5;5226:18;;;;;;;;;;;;;;;:27;5245:7;5226:27;;;;;;;;;;;;;;;:36;;;;5288:7;5272:32;;5281:5;5272:32;;;5297:6;5272:32;;;;;;:::i;:::-;;;;;;;;5065:244;;;:::o;6477:847::-;6575:1;6559:18;;:4;:18;;;;:38;;;;;6595:1;6581:16;;:2;:16;;;;6559:38;6551:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;6654:6;6635:9;:15;6645:4;6635:15;;;;;;;;;;;;;;;;:25;;6627:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6708:29;6720:4;6726:2;6730:6;6708:11;:29::i;:::-;6700:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;6786:7;;6770:15;:23;6762:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;6837:7;;6820:15;:24;;:54;;;;;6864:10;;6848:15;:26;6820:54;:83;;;;;6890:13;6878:11;:25;6820:83;6816:214;;;6911:12;6940:13;6926:11;:27;;;;:::i;:::-;6911:42;;6959:12;6974;6959:27;;7005:4;7000;:9;6992:32;;;;;;;;;;;;:::i;:::-;;;;;;;;;6905:125;;6816:214;7042:10;;;;;;;;;;;7041:11;:31;;;;;7057:9;:15;7067:4;7057:15;;;;;;;;;;;;;;;;;;;;;;;;;7056:16;7041:31;:44;;;;;7076:5;:9;7082:2;7076:9;;;;;;;;;;;;;;;;;;;;;;;;;7041:44;7036:76;;;7090:19;:17;:19::i;:::-;7036:76;7118:17;7138:31;7152:4;7158:2;7162:6;7138:13;:31::i;:::-;7118:51;;7193:6;7174:9;:15;7184:4;7174:15;;;;;;;;;;;;;;;;:25;;;;;;;:::i;:::-;;;;;;;;7232:9;7204;:24;7222:4;7204:24;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;7273:9;7264:6;:18;;;;:::i;:::-;7246:9;:13;7256:2;7246:13;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;7308:2;7293:26;;7302:4;7293:26;;;7312:6;7293:26;;;;;;:::i;:::-;;;;;;;;6546:778;6477:847;;;:::o;8917:588::-;9081:11;9045:6;9038:24;;;9071:4;9038:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:54;;9030:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;9169:10;3013:42;9127:23;;;9159:4;9127:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:52;;9119:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;9204:51;9235:6;9243:11;9204:30;:51::i;:::-;9260:49;3013:42;9298:10;9260:30;:49::i;:::-;9314:19;9336:6;;;;;;;;;;;9314:28;;9351:12;9347:47;;;9389:1;9367:24;;9347:47;3117:42;9400:24;;;3013:42;9432:6;9440:10;9452:11;9465:1;9468;9471:11;9484:15;9400:100;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;9025:480;8917:588;;;;:::o;11346:333::-;3509:4;3496:10;;:17;;;;;;;;;;;;;;;;;;11397:20:::1;11420:9;:24;11438:4;11420:24;;;;;;;;;;;;;;;;11397:47;;11469:14;;11453:12;:30;11449:226;;11510:10;;11495:12;:25;11491:61;;;11539:10;;11524:25;;11491:61;2450:1;11577:2;:13;;;;:::i;:::-;11561:12;:29;11557:113;;11599:64;11619:4;3013:42;11633:12;11647:15;;;;;;;;;;;11599:11;:64::i;:::-;11557:113;11449:226;11392:287;3531:5:::0;3518:10;;:18;;;;;;;;;;;;;;;;;;11346:333::o;10190:616::-;10276:16;2450:1;10342:2;:13;;;;:::i;:::-;10337:2;:18;;;;:::i;:::-;10328:4;10311:14;10296:29;;2450:1;2509:2;:13;;;;:::i;:::-;2495:11;:27;;;;:::i;:::-;10296:29;;;;:::i;:::-;:36;;;;:::i;:::-;10295:61;;;;:::i;:::-;10276:80;;10402:20;2450:1;10476:2;:13;;;;:::i;:::-;10471:2;:18;;;;:::i;:::-;10462:4;10441:18;10426:33;;2450:1;2509:2;:13;;;;:::i;:::-;2495:11;:27;;;;:::i;:::-;10426:33;;;;:::i;:::-;:40;;;;:::i;:::-;10425:65;;;;:::i;:::-;10402:88;;10556:6;;10544:8;:18;;:48;;;;;10582:10;;10566:12;:26;;10544:48;10536:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;2450:1;2509:2;:13;;;;:::i;:::-;2495:11;:27;;;;:::i;:::-;10628:8;:23;10624:57;;;2450:1;2509:2;:13;;;;:::i;:::-;2495:11;:27;;;;:::i;:::-;10655:23;;10624:57;2450:1;2509:2;:13;;;;:::i;:::-;2495:11;:27;;;;:::i;:::-;10689:12;:27;10685:65;;;2450:1;2509:2;:13;;;;:::i;:::-;2495:11;:27;;;;:::i;:::-;10720;;10685:65;10763:8;10754:6;:17;;;;10789:12;10776:10;:25;;;;10271:535;;10190:616;;:::o;2125:127::-;2195:9;2186:6;;:18;;;;;;;;;;;;;;;;;;2215:31;2236:9;2215:31;;;;;;:::i;:::-;;;;;;;;2125:127;:::o;7327:427::-;7412:4;7423:11;7437:4;7423:18;;7460:6;;7451;:15;:35;;;;;7471:9;:15;7481:4;7471:15;;;;;;;;;;;;;;;;;;;;;;;;;7470:16;7451:35;:53;;;;;7491:9;:13;7501:2;7491:13;;;;;;;;;;;;;;;;;;;;;;;;;7490:14;7451:53;7446:80;;;7518:5;7509:14;;7446:80;7530:15;7548:4;7530:22;;7557:20;7596:6;7580:9;:13;7590:2;7580:13;;;;;;;;;;;;;;;;:22;;;;:::i;:::-;7557:45;;7627:10;;7612:12;:25;:45;;;;;7642:9;:15;7652:4;7642:15;;;;;;;;;;;;;;;;;;;;;;;;;7641:16;7612:45;:63;;;;;7662:9;:13;7672:2;7662:13;;;;;;;;;;;;;;;;;;;;;;;;;7661:14;7612:63;:77;;;;;7680:5;:9;7686:2;7680:9;;;;;;;;;;;;;;;;;;;;;;;;;7679:10;7612:77;7607:108;;;7707:5;7694:18;;7607:108;7728:6;:20;;;;;7738:10;7728:20;7720:29;;;;;7327:427;;;;;:::o;7759:557::-;7846:7;7860:24;7895:5;:11;7901:4;7895:11;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;;;7911:9;:13;7921:2;7911:13;;;;;;;;;;;;;;;;;;;;;;;;;7910:14;7895:29;7889:395;;;7976:3;7966:7;;:13;;;;:::i;:::-;7948:15;:31;7944:178;;;8025:3;8011:11;;;;;;;;;;;8002:20;;:6;:20;;;;:::i;:::-;:26;;;;:::i;:::-;7983:45;;7944:178;;;8072:7;;8054:15;:25;8050:72;;;8116:3;8111:2;8102:6;:11;;;;:::i;:::-;:17;;;;:::i;:::-;8083:36;;8050:72;7944:178;7889:395;;;8193:5;:9;8199:2;8193:9;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;;;8207:9;:15;8217:4;8207:15;;;;;;;;;;;;;;;;;;;;;;;;;8206:16;8193:29;8189:95;;;8274:3;8259:12;;;;;;;;;;;8250:21;;:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;8231:46;;8189:95;7889:395;8295:16;8288:23;;;7759:557;;;;;:::o;5528:541::-;5614:22;5663:4;5645:23;;:6;:23;;;5641:421;;5693:11;:26;5713:4;5693:26;;;;;;;;;;;;;;;:46;3117:42;5693:46;;;;;;;;;;;;;;;;5676:63;;5758:14;5749:6;:23;5745:109;;;5830:17;5781:11;:26;5801:4;5781:26;;;;;;;;;;;;;;;:46;3117:42;5781:46;;;;;;;;;;;;;;;:66;;;;5745:109;5641:421;;;5895:6;5888:24;;;5921:4;3117:42;5888:59;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5871:76;;5966:14;5957:6;:23;5953:104;;;5996:6;5989:22;;;3117:42;6032:17;5989:61;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5953:104;5641:421;5609:460;5528:541;;:::o;11684:418::-;11801:55;11832:10;11844:11;11801:30;:55::i;:::-;11861:21;11899:1;11885:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11861:40;;11916:10;11906:4;11911:1;11906:7;;;;;;;;:::i;:::-;;;;;;;:20;;;;;;;;;;;11941:11;11931:4;11936:1;11931:7;;;;;;;;:::i;:::-;;;;;;;:21;;;;;;;;;;;3117:42;11957:65;;;12028:11;12045:1;12052:4;12062:9;12077:15;11957:140;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11794:308;11684:418;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:116::-;3516:21;3531:5;3516:21;:::i;:::-;3509:5;3506:32;3496:60;;3552:1;3549;3542:12;3496:60;3446:116;:::o;3568:133::-;3611:5;3649:6;3636:20;3627:29;;3665:30;3689:5;3665:30;:::i;:::-;3568:133;;;;:::o;3707:468::-;3772:6;3780;3829:2;3817:9;3808:7;3804:23;3800:32;3797:119;;;3835:79;;:::i;:::-;3797:119;3955:1;3980:53;4025:7;4016:6;4005:9;4001:22;3980:53;:::i;:::-;3970:63;;3926:117;4082:2;4108:50;4150:7;4141:6;4130:9;4126:22;4108:50;:::i;:::-;4098:60;;4053:115;3707:468;;;;;:::o;4181:329::-;4240:6;4289:2;4277:9;4268:7;4264:23;4260:32;4257:119;;;4295:79;;:::i;:::-;4257:119;4415:1;4440:53;4485:7;4476:6;4465:9;4461:22;4440:53;:::i;:::-;4430:63;;4386:117;4181:329;;;;:::o;4516:118::-;4603:24;4621:5;4603:24;:::i;:::-;4598:3;4591:37;4516:118;;:::o;4640:222::-;4733:4;4771:2;4760:9;4756:18;4748:26;;4784:71;4852:1;4841:9;4837:17;4828:6;4784:71;:::i;:::-;4640:222;;;;:::o;4868:619::-;4945:6;4953;4961;5010:2;4998:9;4989:7;4985:23;4981:32;4978:119;;;5016:79;;:::i;:::-;4978:119;5136:1;5161:53;5206:7;5197:6;5186:9;5182:22;5161:53;:::i;:::-;5151:63;;5107:117;5263:2;5289:53;5334:7;5325:6;5314:9;5310:22;5289:53;:::i;:::-;5279:63;;5234:118;5391:2;5417:53;5462:7;5453:6;5442:9;5438:22;5417:53;:::i;:::-;5407:63;;5362:118;4868:619;;;;;:::o;5493:93::-;5529:7;5569:10;5562:5;5558:22;5547:33;;5493:93;;;:::o;5592:120::-;5664:23;5681:5;5664:23;:::i;:::-;5657:5;5654:34;5644:62;;5702:1;5699;5692:12;5644:62;5592:120;:::o;5718:137::-;5763:5;5801:6;5788:20;5779:29;;5817:32;5843:5;5817:32;:::i;:::-;5718:137;;;;:::o;5861:757::-;5943:6;5951;5959;5967;6016:3;6004:9;5995:7;5991:23;5987:33;5984:120;;;6023:79;;:::i;:::-;5984:120;6143:1;6168:52;6212:7;6203:6;6192:9;6188:22;6168:52;:::i;:::-;6158:62;;6114:116;6269:2;6295:52;6339:7;6330:6;6319:9;6315:22;6295:52;:::i;:::-;6285:62;;6240:117;6396:2;6422:52;6466:7;6457:6;6446:9;6442:22;6422:52;:::i;:::-;6412:62;;6367:117;6523:2;6549:52;6593:7;6584:6;6573:9;6569:22;6549:52;:::i;:::-;6539:62;;6494:117;5861:757;;;;;;;:::o;6624:86::-;6659:7;6699:4;6692:5;6688:16;6677:27;;6624:86;;;:::o;6716:112::-;6799:22;6815:5;6799:22;:::i;:::-;6794:3;6787:35;6716:112;;:::o;6834:214::-;6923:4;6961:2;6950:9;6946:18;6938:26;;6974:67;7038:1;7027:9;7023:17;7014:6;6974:67;:::i;:::-;6834:214;;;;:::o;7054:474::-;7122:6;7130;7179:2;7167:9;7158:7;7154:23;7150:32;7147:119;;;7185:79;;:::i;:::-;7147:119;7305:1;7330:53;7375:7;7366:6;7355:9;7351:22;7330:53;:::i;:::-;7320:63;;7276:117;7432:2;7458:53;7503:7;7494:6;7483:9;7479:22;7458:53;:::i;:::-;7448:63;;7403:118;7054:474;;;;;:::o;7534:329::-;7593:6;7642:2;7630:9;7621:7;7617:23;7613:32;7610:119;;;7648:79;;:::i;:::-;7610:119;7768:1;7793:53;7838:7;7829:6;7818:9;7814:22;7793:53;:::i;:::-;7783:63;;7739:117;7534:329;;;;:::o;7869:89::-;7905:7;7945:6;7938:5;7934:18;7923:29;;7869:89;;;:::o;7964:120::-;8036:23;8053:5;8036:23;:::i;:::-;8029:5;8026:34;8016:62;;8074:1;8071;8064:12;8016:62;7964:120;:::o;8090:137::-;8135:5;8173:6;8160:20;8151:29;;8189:32;8215:5;8189:32;:::i;:::-;8090:137;;;;:::o;8233:470::-;8299:6;8307;8356:2;8344:9;8335:7;8331:23;8327:32;8324:119;;;8362:79;;:::i;:::-;8324:119;8482:1;8507:52;8551:7;8542:6;8531:9;8527:22;8507:52;:::i;:::-;8497:62;;8453:116;8608:2;8634:52;8678:7;8669:6;8658:9;8654:22;8634:52;:::i;:::-;8624:62;;8579:117;8233:470;;;;;:::o;8709:332::-;8830:4;8868:2;8857:9;8853:18;8845:26;;8881:71;8949:1;8938:9;8934:17;8925:6;8881:71;:::i;:::-;8962:72;9030:2;9019:9;9015:18;9006:6;8962:72;:::i;:::-;8709:332;;;;;:::o;9047:316::-;9160:4;9198:2;9187:9;9183:18;9175:26;;9211:67;9275:1;9264:9;9260:17;9251:6;9211:67;:::i;:::-;9288:68;9352:2;9341:9;9337:18;9328:6;9288:68;:::i;:::-;9047:316;;;;;:::o;9369:118::-;9456:24;9474:5;9456:24;:::i;:::-;9451:3;9444:37;9369:118;;:::o;9493:664::-;9698:4;9736:3;9725:9;9721:19;9713:27;;9750:71;9818:1;9807:9;9803:17;9794:6;9750:71;:::i;:::-;9831:72;9899:2;9888:9;9884:18;9875:6;9831:72;:::i;:::-;9913;9981:2;9970:9;9966:18;9957:6;9913:72;:::i;:::-;9995;10063:2;10052:9;10048:18;10039:6;9995:72;:::i;:::-;10077:73;10145:3;10134:9;10130:19;10121:6;10077:73;:::i;:::-;9493:664;;;;;;;;:::o;10163:118::-;10234:22;10250:5;10234:22;:::i;:::-;10227:5;10224:33;10214:61;;10271:1;10268;10261:12;10214:61;10163:118;:::o;10287:135::-;10331:5;10369:6;10356:20;10347:29;;10385:31;10410:5;10385:31;:::i;:::-;10287:135;;;;:::o;10428:466::-;10492:6;10500;10549:2;10537:9;10528:7;10524:23;10520:32;10517:119;;;10555:79;;:::i;:::-;10517:119;10675:1;10700:51;10743:7;10734:6;10723:9;10719:22;10700:51;:::i;:::-;10690:61;;10646:115;10800:2;10826:51;10869:7;10860:6;10849:9;10845:22;10826:51;:::i;:::-;10816:61;;10771:116;10428:466;;;;;:::o;10900:474::-;10968:6;10976;11025:2;11013:9;11004:7;11000:23;10996:32;10993:119;;;11031:79;;:::i;:::-;10993:119;11151:1;11176:53;11221:7;11212:6;11201:9;11197:22;11176:53;:::i;:::-;11166:63;;11122:117;11278:2;11304:53;11349:7;11340:6;11329:9;11325:22;11304:53;:::i;:::-;11294:63;;11249:118;10900:474;;;;;:::o;11380:169::-;11520:21;11516:1;11508:6;11504:14;11497:45;11380:169;:::o;11555:366::-;11697:3;11718:67;11782:2;11777:3;11718:67;:::i;:::-;11711:74;;11794:93;11883:3;11794:93;:::i;:::-;11912:2;11907:3;11903:12;11896:19;;11555:366;;;:::o;11927:419::-;12093:4;12131:2;12120:9;12116:18;12108:26;;12180:9;12174:4;12170:20;12166:1;12155:9;12151:17;12144:47;12208:131;12334:4;12208:131;:::i;:::-;12200:139;;11927:419;;;:::o;12352:163::-;12492:15;12488:1;12480:6;12476:14;12469:39;12352:163;:::o;12521:366::-;12663:3;12684:67;12748:2;12743:3;12684:67;:::i;:::-;12677:74;;12760:93;12849:3;12760:93;:::i;:::-;12878:2;12873:3;12869:12;12862:19;;12521:366;;;:::o;12893:419::-;13059:4;13097:2;13086:9;13082:18;13074:26;;13146:9;13140:4;13136:20;13132:1;13121:9;13117:17;13110:47;13174:131;13300:4;13174:131;:::i;:::-;13166:139;;12893:419;;;:::o;13318:161::-;13458:13;13454:1;13446:6;13442:14;13435:37;13318:161;:::o;13485:366::-;13627:3;13648:67;13712:2;13707:3;13648:67;:::i;:::-;13641:74;;13724:93;13813:3;13724:93;:::i;:::-;13842:2;13837:3;13833:12;13826:19;;13485:366;;;:::o;13857:419::-;14023:4;14061:2;14050:9;14046:18;14038:26;;14110:9;14104:4;14100:20;14096:1;14085:9;14081:17;14074:47;14138:131;14264:4;14138:131;:::i;:::-;14130:139;;13857:419;;;:::o;14282:222::-;14375:4;14413:2;14402:9;14398:18;14390:26;;14426:71;14494:1;14483:9;14479:17;14470:6;14426:71;:::i;:::-;14282:222;;;;:::o;14510:143::-;14567:5;14598:6;14592:13;14583:22;;14614:33;14641:5;14614:33;:::i;:::-;14510:143;;;;:::o;14659:351::-;14729:6;14778:2;14766:9;14757:7;14753:23;14749:32;14746:119;;;14784:79;;:::i;:::-;14746:119;14904:1;14929:64;14985:7;14976:6;14965:9;14961:22;14929:64;:::i;:::-;14919:74;;14875:128;14659:351;;;;:::o;15016:332::-;15137:4;15175:2;15164:9;15160:18;15152:26;;15188:71;15256:1;15245:9;15241:17;15232:6;15188:71;:::i;:::-;15269:72;15337:2;15326:9;15322:18;15313:6;15269:72;:::i;:::-;15016:332;;;;;:::o;15354:137::-;15408:5;15439:6;15433:13;15424:22;;15455:30;15479:5;15455:30;:::i;:::-;15354:137;;;;:::o;15497:345::-;15564:6;15613:2;15601:9;15592:7;15588:23;15584:32;15581:119;;;15619:79;;:::i;:::-;15581:119;15739:1;15764:61;15817:7;15808:6;15797:9;15793:22;15764:61;:::i;:::-;15754:71;;15710:125;15497:345;;;;:::o;15848:180::-;15896:77;15893:1;15886:88;15993:4;15990:1;15983:15;16017:4;16014:1;16007:15;16034:102;16076:8;16123:5;16120:1;16116:13;16095:34;;16034:102;;;:::o;16142:848::-;16203:5;16210:4;16234:6;16225:15;;16258:5;16249:14;;16272:712;16293:1;16283:8;16280:15;16272:712;;;16388:4;16383:3;16379:14;16373:4;16370:24;16367:50;;;16397:18;;:::i;:::-;16367:50;16447:1;16437:8;16433:16;16430:451;;;16862:4;16855:5;16851:16;16842:25;;16430:451;16912:4;16906;16902:15;16894:23;;16942:32;16965:8;16942:32;:::i;:::-;16930:44;;16272:712;;;16142:848;;;;;;;:::o;16996:1073::-;17050:5;17241:8;17231:40;;17262:1;17253:10;;17264:5;;17231:40;17290:4;17280:36;;17307:1;17298:10;;17309:5;;17280:36;17376:4;17424:1;17419:27;;;;17460:1;17455:191;;;;17369:277;;17419:27;17437:1;17428:10;;17439:5;;;17455:191;17500:3;17490:8;17487:17;17484:43;;;17507:18;;:::i;:::-;17484:43;17556:8;17553:1;17549:16;17540:25;;17591:3;17584:5;17581:14;17578:40;;;17598:18;;:::i;:::-;17578:40;17631:5;;;17369:277;;17755:2;17745:8;17742:16;17736:3;17730:4;17727:13;17723:36;17705:2;17695:8;17692:16;17687:2;17681:4;17678:12;17674:35;17658:111;17655:246;;;17811:8;17805:4;17801:19;17792:28;;17846:3;17839:5;17836:14;17833:40;;;17853:18;;:::i;:::-;17833:40;17886:5;;17655:246;17926:42;17964:3;17954:8;17948:4;17945:1;17926:42;:::i;:::-;17911:57;;;;18000:4;17995:3;17991:14;17984:5;17981:25;17978:51;;;18009:18;;:::i;:::-;17978:51;18058:4;18051:5;18047:16;18038:25;;16996:1073;;;;;;:::o;18075:281::-;18133:5;18157:23;18175:4;18157:23;:::i;:::-;18149:31;;18201:25;18217:8;18201:25;:::i;:::-;18189:37;;18245:104;18282:66;18272:8;18266:4;18245:104;:::i;:::-;18236:113;;18075:281;;;;:::o;18362:410::-;18402:7;18425:20;18443:1;18425:20;:::i;:::-;18420:25;;18459:20;18477:1;18459:20;:::i;:::-;18454:25;;18514:1;18511;18507:9;18536:30;18554:11;18536:30;:::i;:::-;18525:41;;18715:1;18706:7;18702:15;18699:1;18696:22;18676:1;18669:9;18649:83;18626:139;;18745:18;;:::i;:::-;18626:139;18410:362;18362:410;;;;:::o;18778:181::-;18918:33;18914:1;18906:6;18902:14;18895:57;18778:181;:::o;18965:366::-;19107:3;19128:67;19192:2;19187:3;19128:67;:::i;:::-;19121:74;;19204:93;19293:3;19204:93;:::i;:::-;19322:2;19317:3;19313:12;19306:19;;18965:366;;;:::o;19337:419::-;19503:4;19541:2;19530:9;19526:18;19518:26;;19590:9;19584:4;19580:20;19576:1;19565:9;19561:17;19554:47;19618:131;19744:4;19618:131;:::i;:::-;19610:139;;19337:419;;;:::o;19762:194::-;19802:4;19822:20;19840:1;19822:20;:::i;:::-;19817:25;;19856:20;19874:1;19856:20;:::i;:::-;19851:25;;19900:1;19897;19893:9;19885:17;;19924:1;19918:4;19915:11;19912:37;;;19929:18;;:::i;:::-;19912:37;19762:194;;;;:::o;19962:180::-;20010:77;20007:1;20000:88;20107:4;20104:1;20097:15;20131:4;20128:1;20121:15;20148:185;20188:1;20205:20;20223:1;20205:20;:::i;:::-;20200:25;;20239:20;20257:1;20239:20;:::i;:::-;20234:25;;20278:1;20268:35;;20283:18;;:::i;:::-;20268:35;20325:1;20322;20318:9;20313:14;;20148:185;;;;:::o;20339:162::-;20479:14;20475:1;20467:6;20463:14;20456:38;20339:162;:::o;20507:366::-;20649:3;20670:67;20734:2;20729:3;20670:67;:::i;:::-;20663:74;;20746:93;20835:3;20746:93;:::i;:::-;20864:2;20859:3;20855:12;20848:19;;20507:366;;;:::o;20879:419::-;21045:4;21083:2;21072:9;21068:18;21060:26;;21132:9;21126:4;21122:20;21118:1;21107:9;21103:17;21096:47;21160:131;21286:4;21160:131;:::i;:::-;21152:139;;20879:419;;;:::o;21304:191::-;21344:3;21363:20;21381:1;21363:20;:::i;:::-;21358:25;;21397:20;21415:1;21397:20;:::i;:::-;21392:25;;21440:1;21437;21433:9;21426:16;;21461:3;21458:1;21455:10;21452:36;;;21468:18;;:::i;:::-;21452:36;21304:191;;;;:::o;21501:157::-;21641:9;21637:1;21629:6;21625:14;21618:33;21501:157;:::o;21664:365::-;21806:3;21827:66;21891:1;21886:3;21827:66;:::i;:::-;21820:73;;21902:93;21991:3;21902:93;:::i;:::-;22020:2;22015:3;22011:12;22004:19;;21664:365;;;:::o;22035:419::-;22201:4;22239:2;22228:9;22224:18;22216:26;;22288:9;22282:4;22278:20;22274:1;22263:9;22259:17;22252:47;22316:131;22442:4;22316:131;:::i;:::-;22308:139;;22035:419;;;:::o;22460:173::-;22600:25;22596:1;22588:6;22584:14;22577:49;22460:173;:::o;22639:366::-;22781:3;22802:67;22866:2;22861:3;22802:67;:::i;:::-;22795:74;;22878:93;22967:3;22878:93;:::i;:::-;22996:2;22991:3;22987:12;22980:19;;22639:366;;;:::o;23011:419::-;23177:4;23215:2;23204:9;23200:18;23192:26;;23264:9;23258:4;23254:20;23250:1;23239:9;23235:17;23228:47;23292:131;23418:4;23292:131;:::i;:::-;23284:139;;23011:419;;;:::o;23436:161::-;23576:13;23572:1;23564:6;23560:14;23553:37;23436:161;:::o;23603:366::-;23745:3;23766:67;23830:2;23825:3;23766:67;:::i;:::-;23759:74;;23842:93;23931:3;23842:93;:::i;:::-;23960:2;23955:3;23951:12;23944:19;;23603:366;;;:::o;23975:419::-;24141:4;24179:2;24168:9;24164:18;24156:26;;24228:9;24222:4;24218:20;24214:1;24203:9;24199:17;24192:47;24256:131;24382:4;24256:131;:::i;:::-;24248:139;;23975:419;;;:::o;24400:188::-;24438:3;24457:18;24473:1;24457:18;:::i;:::-;24452:23;;24489:18;24505:1;24489:18;:::i;:::-;24484:23;;24530:1;24527;24523:9;24516:16;;24553:4;24548:3;24545:13;24542:39;;;24561:18;;:::i;:::-;24542:39;24400:188;;;;:::o;24594:170::-;24734:22;24730:1;24722:6;24718:14;24711:46;24594:170;:::o;24770:366::-;24912:3;24933:67;24997:2;24992:3;24933:67;:::i;:::-;24926:74;;25009:93;25098:3;25009:93;:::i;:::-;25127:2;25122:3;25118:12;25111:19;;24770:366;;;:::o;25142:419::-;25308:4;25346:2;25335:9;25331:18;25323:26;;25395:9;25389:4;25385:20;25381:1;25370:9;25366:17;25359:47;25423:131;25549:4;25423:131;:::i;:::-;25415:139;;25142:419;;;:::o;25567:169::-;25707:21;25703:1;25695:6;25691:14;25684:45;25567:169;:::o;25742:366::-;25884:3;25905:67;25969:2;25964:3;25905:67;:::i;:::-;25898:74;;25981:93;26070:3;25981:93;:::i;:::-;26099:2;26094:3;26090:12;26083:19;;25742:366;;;:::o;26114:419::-;26280:4;26318:2;26307:9;26303:18;26295:26;;26367:9;26361:4;26357:20;26353:1;26342:9;26338:17;26331:47;26395:131;26521:4;26395:131;:::i;:::-;26387:139;;26114:419;;;:::o;26539:179::-;26679:31;26675:1;26667:6;26663:14;26656:55;26539:179;:::o;26724:366::-;26866:3;26887:67;26951:2;26946:3;26887:67;:::i;:::-;26880:74;;26963:93;27052:3;26963:93;:::i;:::-;27081:2;27076:3;27072:12;27065:19;;26724:366;;;:::o;27096:419::-;27262:4;27300:2;27289:9;27285:18;27277:26;;27349:9;27343:4;27339:20;27335:1;27324:9;27320:17;27313:47;27377:131;27503:4;27377:131;:::i;:::-;27369:139;;27096:419;;;:::o;27521:165::-;27661:17;27657:1;27649:6;27645:14;27638:41;27521:165;:::o;27692:366::-;27834:3;27855:67;27919:2;27914:3;27855:67;:::i;:::-;27848:74;;27931:93;28020:3;27931:93;:::i;:::-;28049:2;28044:3;28040:12;28033:19;;27692:366;;;:::o;28064:419::-;28230:4;28268:2;28257:9;28253:18;28245:26;;28317:9;28311:4;28307:20;28303:1;28292:9;28288:17;28281:47;28345:131;28471:4;28345:131;:::i;:::-;28337:139;;28064:419;;;:::o;28489:161::-;28629:13;28625:1;28617:6;28613:14;28606:37;28489:161;:::o;28656:366::-;28798:3;28819:67;28883:2;28878:3;28819:67;:::i;:::-;28812:74;;28895:93;28984:3;28895:93;:::i;:::-;29013:2;29008:3;29004:12;28997:19;;28656:366;;;:::o;29028:419::-;29194:4;29232:2;29221:9;29217:18;29209:26;;29281:9;29275:4;29271:20;29267:1;29256:9;29252:17;29245:47;29309:131;29435:4;29309:131;:::i;:::-;29301:139;;29028:419;;;:::o;29453:167::-;29593:19;29589:1;29581:6;29577:14;29570:43;29453:167;:::o;29626:366::-;29768:3;29789:67;29853:2;29848:3;29789:67;:::i;:::-;29782:74;;29865:93;29954:3;29865:93;:::i;:::-;29983:2;29978:3;29974:12;29967:19;;29626:366;;;:::o;29998:419::-;30164:4;30202:2;30191:9;30187:18;30179:26;;30251:9;30245:4;30241:20;30237:1;30226:9;30222:17;30215:47;30279:131;30405:4;30279:131;:::i;:::-;30271:139;;29998:419;;;:::o;30423:165::-;30563:17;30559:1;30551:6;30547:14;30540:41;30423:165;:::o;30594:366::-;30736:3;30757:67;30821:2;30816:3;30757:67;:::i;:::-;30750:74;;30833:93;30922:3;30833:93;:::i;:::-;30951:2;30946:3;30942:12;30935:19;;30594:366;;;:::o;30966:419::-;31132:4;31170:2;31159:9;31155:18;31147:26;;31219:9;31213:4;31209:20;31205:1;31194:9;31190:17;31183:47;31247:131;31373:4;31247:131;:::i;:::-;31239:139;;30966:419;;;:::o;31391:85::-;31436:7;31465:5;31454:16;;31391:85;;;:::o;31482:60::-;31510:3;31531:5;31524:12;;31482:60;;;:::o;31548:158::-;31606:9;31639:61;31657:42;31666:32;31692:5;31666:32;:::i;:::-;31657:42;:::i;:::-;31639:61;:::i;:::-;31626:74;;31548:158;;;:::o;31712:147::-;31807:45;31846:5;31807:45;:::i;:::-;31802:3;31795:58;31712:147;;:::o;31865:1029::-;32170:4;32208:3;32197:9;32193:19;32185:27;;32222:71;32290:1;32279:9;32275:17;32266:6;32222:71;:::i;:::-;32303:72;32371:2;32360:9;32356:18;32347:6;32303:72;:::i;:::-;32385;32453:2;32442:9;32438:18;32429:6;32385:72;:::i;:::-;32467;32535:2;32524:9;32520:18;32511:6;32467:72;:::i;:::-;32549:81;32625:3;32614:9;32610:19;32601:6;32549:81;:::i;:::-;32640;32716:3;32705:9;32701:19;32692:6;32640:81;:::i;:::-;32731:73;32799:3;32788:9;32784:19;32775:6;32731:73;:::i;:::-;32814;32882:3;32871:9;32867:19;32858:6;32814:73;:::i;:::-;31865:1029;;;;;;;;;;;:::o;32900:663::-;32988:6;32996;33004;33053:2;33041:9;33032:7;33028:23;33024:32;33021:119;;;33059:79;;:::i;:::-;33021:119;33179:1;33204:64;33260:7;33251:6;33240:9;33236:22;33204:64;:::i;:::-;33194:74;;33150:128;33317:2;33343:64;33399:7;33390:6;33379:9;33375:22;33343:64;:::i;:::-;33333:74;;33288:129;33456:2;33482:64;33538:7;33529:6;33518:9;33514:22;33482:64;:::i;:::-;33472:74;;33427:129;32900:663;;;;;:::o;33569:172::-;33709:24;33705:1;33697:6;33693:14;33686:48;33569:172;:::o;33747:366::-;33889:3;33910:67;33974:2;33969:3;33910:67;:::i;:::-;33903:74;;33986:93;34075:3;33986:93;:::i;:::-;34104:2;34099:3;34095:12;34088:19;;33747:366;;;:::o;34119:419::-;34285:4;34323:2;34312:9;34308:18;34300:26;;34372:9;34366:4;34362:20;34358:1;34347:9;34343:17;34336:47;34400:131;34526:4;34400:131;:::i;:::-;34392:139;;34119:419;;;:::o;34544:332::-;34665:4;34703:2;34692:9;34688:18;34680:26;;34716:71;34784:1;34773:9;34769:17;34760:6;34716:71;:::i;:::-;34797:72;34865:2;34854:9;34850:18;34841:6;34797:72;:::i;:::-;34544:332;;;;;:::o;34882:180::-;34930:77;34927:1;34920:88;35027:4;35024:1;35017:15;35051:4;35048:1;35041:15;35068:180;35116:77;35113:1;35106:88;35213:4;35210:1;35203:15;35237:4;35234:1;35227:15;35254:114;35321:6;35355:5;35349:12;35339:22;;35254:114;;;:::o;35374:184::-;35473:11;35507:6;35502:3;35495:19;35547:4;35542:3;35538:14;35523:29;;35374:184;;;;:::o;35564:132::-;35631:4;35654:3;35646:11;;35684:4;35679:3;35675:14;35667:22;;35564:132;;;:::o;35702:108::-;35779:24;35797:5;35779:24;:::i;:::-;35774:3;35767:37;35702:108;;:::o;35816:179::-;35885:10;35906:46;35948:3;35940:6;35906:46;:::i;:::-;35984:4;35979:3;35975:14;35961:28;;35816:179;;;;:::o;36001:113::-;36071:4;36103;36098:3;36094:14;36086:22;;36001:113;;;:::o;36150:732::-;36269:3;36298:54;36346:5;36298:54;:::i;:::-;36368:86;36447:6;36442:3;36368:86;:::i;:::-;36361:93;;36478:56;36528:5;36478:56;:::i;:::-;36557:7;36588:1;36573:284;36598:6;36595:1;36592:13;36573:284;;;36674:6;36668:13;36701:63;36760:3;36745:13;36701:63;:::i;:::-;36694:70;;36787:60;36840:6;36787:60;:::i;:::-;36777:70;;36633:224;36620:1;36617;36613:9;36608:14;;36573:284;;;36577:14;36873:3;36866:10;;36274:608;;;36150:732;;;;:::o;36888:831::-;37151:4;37189:3;37178:9;37174:19;37166:27;;37203:71;37271:1;37260:9;37256:17;37247:6;37203:71;:::i;:::-;37284:80;37360:2;37349:9;37345:18;37336:6;37284:80;:::i;:::-;37411:9;37405:4;37401:20;37396:2;37385:9;37381:18;37374:48;37439:108;37542:4;37533:6;37439:108;:::i;:::-;37431:116;;37557:72;37625:2;37614:9;37610:18;37601:6;37557:72;:::i;:::-;37639:73;37707:3;37696:9;37692:19;37683:6;37639:73;:::i;:::-;36888:831;;;;;;;;:::o

Swarm Source

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