Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
11,000,000 HUCA
Holders
45
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
0 HUCAValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Huca
Compiler Version
v0.8.11+commit.d7f03943
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-07-01 */ /* Twitter link: https://x.com/hucaeth Telegram link: https://t.me/hucaeth Website link: https://www.hucaoneth.xyz/ */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.10; pragma experimental ABIEncoderV2; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require( newOwner != address(0), "Ownable: new owner is the zero address" ); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ 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); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval( address indexed owner, address indexed spender, uint256 value ); } interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * The default value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 9; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf( address account ) public view virtual override returns (uint256) { return _balances[account]; } function transfer( address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance( address owner, address spender ) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve( address spender, uint256 amount ) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require( currentAllowance >= amount, "ERC20: transfer amount exceeds allowance" ); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } return true; } function increaseAllowance( address spender, uint256 addedValue ) public virtual returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender] + addedValue ); return true; } function decreaseAllowance( address spender, uint256 subtractedValue ) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require( currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero" ); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require( senderBalance >= amount, "ERC20: transfer amount exceeds balance" ); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd( uint256 a, uint256 b ) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub( uint256 a, uint256 b ) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul( uint256 a, uint256 b ) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv( uint256 a, uint256 b ) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod( uint256 a, uint256 b ) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } interface IUniswapV2Factory { event PairCreated( address indexed token0, address indexed token1, address pair, uint256 ); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair( address tokenA, address tokenB ) external view returns (address pair); function allPairs(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); function createPair( address tokenA, address tokenB ) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Pair { event Approval( address indexed owner, address indexed spender, uint256 value ); event Transfer(address indexed from, address indexed to, uint256 value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint256); function balanceOf(address owner) external view returns (uint256); function allowance( address owner, address spender ) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom( address from, address to, uint256 value ) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint256); function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; event Mint(address indexed sender, uint256 amount0, uint256 amount1); event Burn( address indexed sender, uint256 amount0, uint256 amount1, address indexed to ); event Swap( address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint256); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint256); function price1CumulativeLast() external view returns (uint256); function kLast() external view returns (uint256); function mint(address to) external returns (uint256 liquidity); function burn( address to ) external returns (uint256 amount0, uint256 amount1); function swap( uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data ) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Router02 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns (uint256 amountA, uint256 amountB, uint256 liquidity); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } contract Huca is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; address public constant deadAddress = address(0xdead); bool private swapping; address public marketingWallet; uint256 public maxTransactionAmount; uint256 public swapTokensAtAmount; uint256 public maxWallet; bool public limitsInEffect = true; bool public tradingActive = false; bool public swapEnabled = false; uint256 public launchedAt; uint256 public launchedAtTimestamp; uint256 antiSnipingTime = 0 seconds; uint256 public buyTotalFees = 15; uint256 public buyMarketingFee = 15; uint256 public buyLiquidityFee = 0; uint256 public sellTotalFees = 15; uint256 public sellMarketingFee = 15; uint256 public sellLiquidityFee = 0; uint256 public tokensForMarketing; uint256 public tokensForLiquidity; /******************/ // exlcude from fees and max transaction amount mapping(address => bool) private _isExcludedFromFees; mapping(address => bool) public _isExcludedMaxTransactionAmount; mapping(address => bool) public isSniper; // store addresses that a automatic market maker pairs. Any transfer *to* these addresses // could be subject to a maximum transfer amount mapping(address => bool) public automatedMarketMakerPairs; event UpdateUniswapV2Router( address indexed newAddress, address indexed oldAddress ); event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event marketingWalletUpdated( address indexed newWallet, address indexed oldWallet ); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); constructor() ERC20("Huca Token", "HUCA") { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02( 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ); excludeFromMaxTransaction(address(_uniswapV2Router), true); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); excludeFromMaxTransaction(address(uniswapV2Pair), true); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); uint256 totalSupply = 11000000 * 10 ** 9; maxTransactionAmount = totalSupply / 4; // 1% from total supply maxTransactionAmountTxn maxWallet = totalSupply / 4; // 1% from total supply maxWallet swapTokensAtAmount = totalSupply.div(10000); marketingWallet = address(0xA9361a2fBCc1489A93f63Dd387DC3Ab267ceE2df); // set as marketing wallet // exclude from paying fees or having max transaction amount excludeFromFees(owner(), true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromMaxTransaction(owner(), true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(0xdead), true); /* _mint is an internal function in ERC20.sol that is only called here, and CANNOT be called ever again */ _mint(owner(), totalSupply); } receive() external payable {} function launched() internal view returns (bool) { return launchedAt != 0; } function pause() public onlyOwner { tradingActive = false; } function launch() public onlyOwner { require(launchedAt == 0, "Already launched"); launchedAt = block.number; launchedAtTimestamp = block.timestamp; tradingActive = true; swapEnabled = true; } // remove limits after token is stable function removeLimits() external onlyOwner returns (bool) { limitsInEffect = false; return true; } // change the minimum amount of tokens to sell from fees function updateSwapTokensAtAmount( uint256 newAmount ) external onlyOwner returns (bool) { swapTokensAtAmount = newAmount; return true; } function updateMaxTxnAmount(uint256 newNum) external onlyOwner { maxTransactionAmount = newNum * (10 ** 9); } function updateMaxWalletAmount(uint256 newNum) external onlyOwner { maxWallet = newNum * (10 ** 9); } function excludeFromMaxTransaction( address updAds, bool isEx ) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; } // only use to disable contract sales if absolutely necessary (emergency use only) function updateSwapEnabled(bool enabled) external onlyOwner { swapEnabled = enabled; } function updateBuyFees( uint256 _marketingFee, uint256 _liquidityFee ) external onlyOwner { buyMarketingFee = _marketingFee; buyLiquidityFee = _liquidityFee; buyTotalFees = buyMarketingFee + buyLiquidityFee; } function updateSellFees( uint256 _marketingFee, uint256 _liquidityFee ) external onlyOwner { sellMarketingFee = _marketingFee; sellLiquidityFee = _liquidityFee; sellTotalFees = sellMarketingFee + sellLiquidityFee; } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function setAutomatedMarketMakerPair( address pair, bool value ) public onlyOwner { require( pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs" ); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } function updateMarketingWallet( address newMarketingWallet ) external onlyOwner { emit marketingWalletUpdated(newMarketingWallet, marketingWallet); marketingWallet = newMarketingWallet; } function isExcludedFromFees(address account) public view returns (bool) { return _isExcludedFromFees[account]; } function addSniperInList(address _account) external onlyOwner { require( _account != address(uniswapV2Router), "We can not blacklist router" ); require(!isSniper[_account], "Sniper already exist"); isSniper[_account] = true; } function removeSniperFromList(address _account) external onlyOwner { require(isSniper[_account], "Not a sniper"); isSniper[_account] = false; } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(!isSniper[to], "Sniper detected"); require(!isSniper[from], "Sniper detected"); if (amount == 0) { super._transfer(from, to, 0); return; } if (limitsInEffect) { if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping ) { if (!tradingActive) { require( _isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active." ); } // antibot if ( block.timestamp < launchedAtTimestamp + antiSnipingTime && from != address(uniswapV2Router) ) { if (from == uniswapV2Pair) { isSniper[to] = true; } else if (to == uniswapV2Pair) { isSniper[from] = true; } } //when buy if ( automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to] ) { require( amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount." ); require( amount + balanceOf(to) <= maxWallet, "Max wallet exceeded" ); } //when sell else if ( automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from] ) { require( amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount." ); } else if (!_isExcludedMaxTransactionAmount[to]) { require( amount + balanceOf(to) <= maxWallet, "Max wallet exceeded" ); } } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if ( canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { swapping = true; swapBack(); swapping = false; } bool takeFee = !swapping; // if any account belongs to _isExcludedFromFee account then remove the fee if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; // only take fees on buys/sells, do not take on wallet transfers if (takeFee) { // on sell if (automatedMarketMakerPairs[to] && sellTotalFees > 0) { fees = amount.mul(sellTotalFees).div(100); tokensForLiquidity += (fees * sellLiquidityFee) / sellTotalFees; tokensForMarketing += (fees * sellMarketingFee) / sellTotalFees; } // on buy else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = amount.mul(buyTotalFees).div(100); tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees; tokensForMarketing += (fees * buyMarketingFee) / buyTotalFees; } if (fees > 0) { super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable deadAddress, block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing; bool success; if (contractBalance == 0 || totalTokensToSwap == 0) { return; } if (contractBalance > swapTokensAtAmount) { contractBalance = swapTokensAtAmount; } // Halve the amount of liquidity tokens uint256 liquidityTokens = (contractBalance * tokensForLiquidity) / totalTokensToSwap / 2; uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens); uint256 initialETHBalance = address(this).balance; swapTokensForEth(amountToSwapForETH); uint256 ethBalance = address(this).balance.sub(initialETHBalance); uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div( totalTokensToSwap ); uint256 ethForLiquidity = ethBalance - ethForMarketing; tokensForLiquidity = 0; tokensForMarketing = 0; if (liquidityTokens > 0 && ethForLiquidity > 0) { addLiquidity(liquidityTokens, ethForLiquidity); emit SwapAndLiquify( amountToSwapForETH, ethForLiquidity, tokensForLiquidity ); } (success, ) = address(marketingWallet).call{ value: address(this).balance }(""); } function airdrop( address[] calldata addresses, uint256[] calldata amounts ) external onlyOwner { require( addresses.length == amounts.length, "Array sizes must be equal" ); uint256 i = 0; while (i < addresses.length) { uint256 _amount = amounts[i].mul(1e9); _transfer(msg.sender, addresses[i], _amount); i += 1; } } function withdrawETH(uint256 _amount) external onlyOwner { require(address(this).balance >= _amount, "Invalid Amount"); payable(msg.sender).transfer(_amount); } function withdrawToken(IERC20 _token, uint256 _amount) external onlyOwner { require(_token.balanceOf(address(this)) >= _amount, "Invalid Amount"); _token.transfer(msg.sender, _amount); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"addSniperInList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isSniper","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAtTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"removeSniperFromList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c06040526001600a60006101000a81548160ff0219169083151502179055506000600a60016101000a81548160ff0219169083151502179055506000600a60026101000a81548160ff0219169083151502179055506000600d55600f600e55600f80556000601055600f601155600f60125560006013553480156200008457600080fd5b506040518060400160405280600a81526020017f4875636120546f6b656e000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f485543410000000000000000000000000000000000000000000000000000000081525081600390805190602001906200010992919062000a29565b5080600490805190602001906200012292919062000a29565b5050506200014562000139620004d160201b60201c565b620004d960201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d9050620001718160016200059f60201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001f1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000217919062000b43565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200027f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a5919062000b43565b6040518363ffffffff1660e01b8152600401620002c492919062000b86565b6020604051808303816000875af1158015620002e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200030a919062000b43565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200035260a05160016200059f60201b60201c565b6200036760a05160016200068960201b60201c565b60006627147114878000905060048162000382919062000c1b565b60078190555060048162000397919062000c1b565b600981905550620003b9612710826200072a60201b620027251790919060201c565b60088190555073a9361a2fbcc1489a93f63dd387dc3ab267cee2df600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000436620004286200074260201b60201c565b60016200076c60201b60201c565b620004493060016200076c60201b60201c565b6200045e61dead60016200076c60201b60201c565b62000480620004726200074260201b60201c565b60016200059f60201b60201c565b620004933060016200059f60201b60201c565b620004a861dead60016200059f60201b60201c565b620004c9620004bc6200074260201b60201c565b82620008a660201b60201c565b505062000e72565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620005af620004d160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620005d56200074260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200062e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006259062000cb4565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600081836200073a919062000c1b565b905092915050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6200077c620004d160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620007a26200074260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620007fb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007f29062000cb4565b60405180910390fd5b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516200089a919062000cf3565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000919576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009109062000d60565b60405180910390fd5b6200092d6000838362000a1f60201b60201c565b806002600082825462000941919062000d82565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000998919062000d82565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620009ff919062000df0565b60405180910390a362000a1b6000838362000a2460201b60201c565b5050565b505050565b505050565b82805462000a379062000e3c565b90600052602060002090601f01602090048101928262000a5b576000855562000aa7565b82601f1062000a7657805160ff191683800117855562000aa7565b8280016001018555821562000aa7579182015b8281111562000aa657825182559160200191906001019062000a89565b5b50905062000ab6919062000aba565b5090565b5b8082111562000ad557600081600090555060010162000abb565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000b0b8262000ade565b9050919050565b62000b1d8162000afe565b811462000b2957600080fd5b50565b60008151905062000b3d8162000b12565b92915050565b60006020828403121562000b5c5762000b5b62000ad9565b5b600062000b6c8482850162000b2c565b91505092915050565b62000b808162000afe565b82525050565b600060408201905062000b9d600083018562000b75565b62000bac602083018462000b75565b9392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000c288262000bb3565b915062000c358362000bb3565b92508262000c485762000c4762000bbd565b5b828204905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000c9c60208362000c53565b915062000ca98262000c64565b602082019050919050565b6000602082019050818103600083015262000ccf8162000c8d565b9050919050565b60008115159050919050565b62000ced8162000cd6565b82525050565b600060208201905062000d0a600083018462000ce2565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000d48601f8362000c53565b915062000d558262000d10565b602082019050919050565b6000602082019050818103600083015262000d7b8162000d39565b9050919050565b600062000d8f8262000bb3565b915062000d9c8362000bb3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000dd45762000dd362000bec565b5b828201905092915050565b62000dea8162000bb3565b82525050565b600060208201905062000e07600083018462000ddf565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000e5557607f821691505b6020821081141562000e6c5762000e6b62000e0d565b5b50919050565b60805160a05161563c62000ede6000396000818161147301528181611bf401528181612da40152612e55015260008181610ffe0152818161125001528181612d4e01528181613d1501528181613df601528181613e1d01528181613eb90152613ee0015261563c6000f3fe60806040526004361061036f5760003560e01c80637bce5a04116101c6578063c0246668116100f7578063dd7bd77511610095578063f14210a61161006f578063f14210a614610cb9578063f2fde38b14610ce2578063f637434214610d0b578063f8b45b0514610d3657610376565b8063dd7bd77514610c3a578063e2f4560514610c63578063f11a24d314610c8e57610376565b8063c8c8ebe4116100d1578063c8c8ebe414610b6a578063d257b34f14610b95578063d85ba06314610bd2578063dd62ed3e14610bfd57610376565b8063c024666814610aed578063c18bc19514610b16578063c6d2577d14610b3f57610376565b80639e281a9811610164578063aacebbe31161013e578063aacebbe314610a31578063b62496f514610a5a578063bbc0c74214610a97578063bf56b37114610ac257610376565b80639e281a981461098e578063a457c2d7146109b7578063a9059cbb146109f457610376565b806392136913116101a057806392136913146108e6578063924de9b71461091157806395d89b411461093a5780639a7a23d61461096557610376565b80637bce5a04146108795780638456cb59146108a45780638da5cb5b146108bb57610376565b806338d6f847116102a05780636a486a8e1161023e578063715018a611610218578063715018a6146107e3578063751039fc146107fa5780637571336a1461082557806375f0a8741461084e57610376565b80636a486a8e146107505780636ddd17131461077b57806370a08231146107a657610376565b80634a62bb651161027a5780634a62bb65146106965780634fbee193146106c157806366ca9b83146106fe578063672434821461072757610376565b806338d6f84714610605578063395093511461062e57806349bd5a5e1461066b57610376565b806318160ddd1161030d578063203e727e116102e7578063203e727e1461054957806323b872dd1461057257806327c8f835146105af578063313ce567146105da57610376565b806318160ddd146104c85780631a8145bb146104f35780631f3fed8f1461051e57610376565b8063095ea7b311610349578063095ea7b3146103e65780630f3a325f1461042357806310d5de53146104605780631694505e1461049d57610376565b806301339c211461037b57806302dbd8f81461039257806306fdde03146103bb57610376565b3661037657005b600080fd5b34801561038757600080fd5b50610390610d61565b005b34801561039e57600080fd5b506103b960048036038101906103b49190613fcf565b610e68565b005b3480156103c757600080fd5b506103d0610f0c565b6040516103dd91906140a8565b60405180910390f35b3480156103f257600080fd5b5061040d60048036038101906104089190614128565b610f9e565b60405161041a9190614183565b60405180910390f35b34801561042f57600080fd5b5061044a6004803603810190610445919061419e565b610fbc565b6040516104579190614183565b60405180910390f35b34801561046c57600080fd5b506104876004803603810190610482919061419e565b610fdc565b6040516104949190614183565b60405180910390f35b3480156104a957600080fd5b506104b2610ffc565b6040516104bf919061422a565b60405180910390f35b3480156104d457600080fd5b506104dd611020565b6040516104ea9190614254565b60405180910390f35b3480156104ff57600080fd5b5061050861102a565b6040516105159190614254565b60405180910390f35b34801561052a57600080fd5b50610533611030565b6040516105409190614254565b60405180910390f35b34801561055557600080fd5b50610570600480360381019061056b919061426f565b611036565b005b34801561057e57600080fd5b506105996004803603810190610594919061429c565b6110cb565b6040516105a69190614183565b60405180910390f35b3480156105bb57600080fd5b506105c46111c3565b6040516105d191906142fe565b60405180910390f35b3480156105e657600080fd5b506105ef6111c9565b6040516105fc9190614335565b60405180910390f35b34801561061157600080fd5b5061062c6004803603810190610627919061419e565b6111d2565b005b34801561063a57600080fd5b5061065560048036038101906106509190614128565b6113c5565b6040516106629190614183565b60405180910390f35b34801561067757600080fd5b50610680611471565b60405161068d91906142fe565b60405180910390f35b3480156106a257600080fd5b506106ab611495565b6040516106b89190614183565b60405180910390f35b3480156106cd57600080fd5b506106e860048036038101906106e3919061419e565b6114a8565b6040516106f59190614183565b60405180910390f35b34801561070a57600080fd5b5061072560048036038101906107209190613fcf565b6114fe565b005b34801561073357600080fd5b5061074e6004803603810190610749919061440b565b6115a2565b005b34801561075c57600080fd5b506107656116f6565b6040516107729190614254565b60405180910390f35b34801561078757600080fd5b506107906116fc565b60405161079d9190614183565b60405180910390f35b3480156107b257600080fd5b506107cd60048036038101906107c8919061419e565b61170f565b6040516107da9190614254565b60405180910390f35b3480156107ef57600080fd5b506107f8611757565b005b34801561080657600080fd5b5061080f6117df565b60405161081c9190614183565b60405180910390f35b34801561083157600080fd5b5061084c600480360381019061084791906144b8565b61187f565b005b34801561085a57600080fd5b50610863611956565b60405161087091906142fe565b60405180910390f35b34801561088557600080fd5b5061088e61197c565b60405161089b9190614254565b60405180910390f35b3480156108b057600080fd5b506108b9611982565b005b3480156108c757600080fd5b506108d0611a1b565b6040516108dd91906142fe565b60405180910390f35b3480156108f257600080fd5b506108fb611a45565b6040516109089190614254565b60405180910390f35b34801561091d57600080fd5b50610938600480360381019061093391906144f8565b611a4b565b005b34801561094657600080fd5b5061094f611ae4565b60405161095c91906140a8565b60405180910390f35b34801561097157600080fd5b5061098c600480360381019061098791906144b8565b611b76565b005b34801561099a57600080fd5b506109b560048036038101906109b09190614563565b611c8f565b005b3480156109c357600080fd5b506109de60048036038101906109d99190614128565b611e4a565b6040516109eb9190614183565b60405180910390f35b348015610a0057600080fd5b50610a1b6004803603810190610a169190614128565b611f35565b604051610a289190614183565b60405180910390f35b348015610a3d57600080fd5b50610a586004803603810190610a53919061419e565b611f53565b005b348015610a6657600080fd5b50610a816004803603810190610a7c919061419e565b61208f565b604051610a8e9190614183565b60405180910390f35b348015610aa357600080fd5b50610aac6120af565b604051610ab99190614183565b60405180910390f35b348015610ace57600080fd5b50610ad76120c2565b604051610ae49190614254565b60405180910390f35b348015610af957600080fd5b50610b146004803603810190610b0f91906144b8565b6120c8565b005b348015610b2257600080fd5b50610b3d6004803603810190610b38919061426f565b6121ed565b005b348015610b4b57600080fd5b50610b54612282565b604051610b619190614254565b60405180910390f35b348015610b7657600080fd5b50610b7f612288565b604051610b8c9190614254565b60405180910390f35b348015610ba157600080fd5b50610bbc6004803603810190610bb7919061426f565b61228e565b604051610bc99190614183565b60405180910390f35b348015610bde57600080fd5b50610be761231c565b604051610bf49190614254565b60405180910390f35b348015610c0957600080fd5b50610c246004803603810190610c1f91906145a3565b612322565b604051610c319190614254565b60405180910390f35b348015610c4657600080fd5b50610c616004803603810190610c5c919061419e565b6123a9565b005b348015610c6f57600080fd5b50610c7861250c565b604051610c859190614254565b60405180910390f35b348015610c9a57600080fd5b50610ca3612512565b604051610cb09190614254565b60405180910390f35b348015610cc557600080fd5b50610ce06004803603810190610cdb919061426f565b612518565b005b348015610cee57600080fd5b50610d096004803603810190610d04919061419e565b612621565b005b348015610d1757600080fd5b50610d20612719565b604051610d2d9190614254565b60405180910390f35b348015610d4257600080fd5b50610d4b61271f565b604051610d589190614254565b60405180910390f35b610d6961273b565b73ffffffffffffffffffffffffffffffffffffffff16610d87611a1b565b73ffffffffffffffffffffffffffffffffffffffff1614610ddd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd49061462f565b60405180910390fd5b6000600b5414610e22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e199061469b565b60405180910390fd5b43600b8190555042600c819055506001600a60016101000a81548160ff0219169083151502179055506001600a60026101000a81548160ff021916908315150217905550565b610e7061273b565b73ffffffffffffffffffffffffffffffffffffffff16610e8e611a1b565b73ffffffffffffffffffffffffffffffffffffffff1614610ee4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610edb9061462f565b60405180910390fd5b8160128190555080601381905550601354601254610f0291906146ea565b6011819055505050565b606060038054610f1b9061476f565b80601f0160208091040260200160405190810160405280929190818152602001828054610f479061476f565b8015610f945780601f10610f6957610100808354040283529160200191610f94565b820191906000526020600020905b815481529060010190602001808311610f7757829003601f168201915b5050505050905090565b6000610fb2610fab61273b565b8484612743565b6001905092915050565b60186020528060005260406000206000915054906101000a900460ff1681565b60176020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b60155481565b60145481565b61103e61273b565b73ffffffffffffffffffffffffffffffffffffffff1661105c611a1b565b73ffffffffffffffffffffffffffffffffffffffff16146110b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a99061462f565b60405180910390fd5b633b9aca00816110c291906147a1565b60078190555050565b60006110d884848461290e565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061112361273b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156111a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119a9061486d565b60405180910390fd5b6111b7856111af61273b565b858403612743565b60019150509392505050565b61dead81565b60006009905090565b6111da61273b565b73ffffffffffffffffffffffffffffffffffffffff166111f8611a1b565b73ffffffffffffffffffffffffffffffffffffffff161461124e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112459061462f565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156112dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d4906148d9565b60405180910390fd5b601860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561136a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136190614945565b60405180910390fd5b6001601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006114676113d261273b565b8484600160006113e061273b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461146291906146ea565b612743565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600a60009054906101000a900460ff1681565b6000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61150661273b565b73ffffffffffffffffffffffffffffffffffffffff16611524611a1b565b73ffffffffffffffffffffffffffffffffffffffff161461157a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115719061462f565b60405180910390fd5b81600f8190555080601081905550601054600f5461159891906146ea565b600e819055505050565b6115aa61273b565b73ffffffffffffffffffffffffffffffffffffffff166115c8611a1b565b73ffffffffffffffffffffffffffffffffffffffff161461161e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116159061462f565b60405180910390fd5b818190508484905014611666576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165d906149b1565b60405180910390fd5b60005b848490508110156116ef5760006116a6633b9aca00858585818110611691576116906149d1565b5b9050602002013561366390919063ffffffff16565b90506116da338787858181106116bf576116be6149d1565b5b90506020020160208101906116d4919061419e565b8361290e565b6001826116e791906146ea565b915050611669565b5050505050565b60115481565b600a60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61175f61273b565b73ffffffffffffffffffffffffffffffffffffffff1661177d611a1b565b73ffffffffffffffffffffffffffffffffffffffff16146117d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ca9061462f565b60405180910390fd5b6117dd6000613679565b565b60006117e961273b565b73ffffffffffffffffffffffffffffffffffffffff16611807611a1b565b73ffffffffffffffffffffffffffffffffffffffff161461185d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118549061462f565b60405180910390fd5b6000600a60006101000a81548160ff0219169083151502179055506001905090565b61188761273b565b73ffffffffffffffffffffffffffffffffffffffff166118a5611a1b565b73ffffffffffffffffffffffffffffffffffffffff16146118fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f29061462f565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f5481565b61198a61273b565b73ffffffffffffffffffffffffffffffffffffffff166119a8611a1b565b73ffffffffffffffffffffffffffffffffffffffff16146119fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f59061462f565b60405180910390fd5b6000600a60016101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60125481565b611a5361273b565b73ffffffffffffffffffffffffffffffffffffffff16611a71611a1b565b73ffffffffffffffffffffffffffffffffffffffff1614611ac7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611abe9061462f565b60405180910390fd5b80600a60026101000a81548160ff02191690831515021790555050565b606060048054611af39061476f565b80601f0160208091040260200160405190810160405280929190818152602001828054611b1f9061476f565b8015611b6c5780601f10611b4157610100808354040283529160200191611b6c565b820191906000526020600020905b815481529060010190602001808311611b4f57829003601f168201915b5050505050905090565b611b7e61273b565b73ffffffffffffffffffffffffffffffffffffffff16611b9c611a1b565b73ffffffffffffffffffffffffffffffffffffffff1614611bf2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be99061462f565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7890614a72565b60405180910390fd5b611c8b828261373f565b5050565b611c9761273b565b73ffffffffffffffffffffffffffffffffffffffff16611cb5611a1b565b73ffffffffffffffffffffffffffffffffffffffff1614611d0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d029061462f565b60405180910390fd5b808273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611d4591906142fe565b602060405180830381865afa158015611d62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d869190614aa7565b1015611dc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbe90614b20565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611e02929190614b40565b6020604051808303816000875af1158015611e21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e459190614b7e565b505050565b60008060016000611e5961273b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611f16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0d90614c1d565b60405180910390fd5b611f2a611f2161273b565b85858403612743565b600191505092915050565b6000611f49611f4261273b565b848461290e565b6001905092915050565b611f5b61273b565b73ffffffffffffffffffffffffffffffffffffffff16611f79611a1b565b73ffffffffffffffffffffffffffffffffffffffff1614611fcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc69061462f565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60196020528060005260406000206000915054906101000a900460ff1681565b600a60019054906101000a900460ff1681565b600b5481565b6120d061273b565b73ffffffffffffffffffffffffffffffffffffffff166120ee611a1b565b73ffffffffffffffffffffffffffffffffffffffff1614612144576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213b9061462f565b60405180910390fd5b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516121e19190614183565b60405180910390a25050565b6121f561273b565b73ffffffffffffffffffffffffffffffffffffffff16612213611a1b565b73ffffffffffffffffffffffffffffffffffffffff1614612269576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122609061462f565b60405180910390fd5b633b9aca008161227991906147a1565b60098190555050565b600c5481565b60075481565b600061229861273b565b73ffffffffffffffffffffffffffffffffffffffff166122b6611a1b565b73ffffffffffffffffffffffffffffffffffffffff161461230c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123039061462f565b60405180910390fd5b8160088190555060019050919050565b600e5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6123b161273b565b73ffffffffffffffffffffffffffffffffffffffff166123cf611a1b565b73ffffffffffffffffffffffffffffffffffffffff1614612425576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241c9061462f565b60405180910390fd5b601860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166124b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a890614c89565b60405180910390fd5b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60085481565b60105481565b61252061273b565b73ffffffffffffffffffffffffffffffffffffffff1661253e611a1b565b73ffffffffffffffffffffffffffffffffffffffff1614612594576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258b9061462f565b60405180910390fd5b804710156125d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ce90614b20565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561261d573d6000803e3d6000fd5b5050565b61262961273b565b73ffffffffffffffffffffffffffffffffffffffff16612647611a1b565b73ffffffffffffffffffffffffffffffffffffffff161461269d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126949061462f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561270d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270490614d1b565b60405180910390fd5b61271681613679565b50565b60135481565b60095481565b600081836127339190614d6a565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156127b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127aa90614e0d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612823576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281a90614e9f565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516129019190614254565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561297e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297590614f31565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156129ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129e590614fc3565b60405180910390fd5b601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612a7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a729061502f565b60405180910390fd5b601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612b08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aff9061502f565b60405180910390fd5b6000811415612b2257612b1d838360006137e0565b61365e565b600a60009054906101000a900460ff16156131ec57612b3f611a1b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612bad5750612b7d611a1b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612be65750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c20575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c395750600560149054906101000a900460ff16155b156131eb57600a60019054906101000a900460ff16612d3357601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612cf35750601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612d32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d299061509b565b60405180910390fd5b5b600d54600c54612d4391906146ea565b42108015612d9d57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15612f02577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612e53576001601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550612f01565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612f00576001601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b5b601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612fa55750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561304c57600754811115612fef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fe69061512d565b60405180910390fd5b600954612ffb8361170f565b8261300691906146ea565b1115613047576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161303e90615199565b60405180910390fd5b6131ea565b601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156130ef5750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561313e57600754811115613139576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131309061522b565b60405180910390fd5b6131e9565b601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166131e85760095461319b8361170f565b826131a691906146ea565b11156131e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131de90615199565b60405180910390fd5b5b5b5b5b5b60006131f73061170f565b90506000600854821015905080801561321c5750600a60029054906101000a900460ff165b80156132355750600560149054906101000a900460ff16155b801561328b5750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156132e15750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133375750601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561337b576001600560146101000a81548160ff02191690831515021790555061335f613a61565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806134315750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561343b57600090505b6000811561364e57601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561349e57506000601154115b15613538576134cb60646134bd6011548861366390919063ffffffff16565b61272590919063ffffffff16565b9050601154601354826134de91906147a1565b6134e89190614d6a565b601560008282546134f991906146ea565b925050819055506011546012548261351191906147a1565b61351b9190614d6a565b6014600082825461352c91906146ea565b9250508190555061362a565b601960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561359357506000600e54115b15613629576135c060646135b2600e548861366390919063ffffffff16565b61272590919063ffffffff16565b9050600e54601054826135d391906147a1565b6135dd9190614d6a565b601560008282546135ee91906146ea565b92505081905550600e54600f548261360691906147a1565b6136109190614d6a565b6014600082825461362191906146ea565b925050819055505b5b600081111561363f5761363e8730836137e0565b5b808561364b919061524b565b94505b6136598787876137e0565b505050505b505050565b6000818361367191906147a1565b905092915050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613850576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161384790614f31565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156138c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138b790614fc3565b60405180910390fd5b6138cb838383613c56565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613951576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613948906152f1565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546139e491906146ea565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613a489190614254565b60405180910390a3613a5b848484613c5b565b50505050565b6000613a6c3061170f565b90506000601454601554613a8091906146ea565b9050600080831480613a925750600082145b15613a9f57505050613c54565b600854831115613aaf5760085492505b600060028360155486613ac291906147a1565b613acc9190614d6a565b613ad69190614d6a565b90506000613aed8286613c6090919063ffffffff16565b90506000479050613afd82613c76565b6000613b128247613c6090919063ffffffff16565b90506000613b3d87613b2f6014548561366390919063ffffffff16565b61272590919063ffffffff16565b905060008183613b4d919061524b565b905060006015819055506000601481905550600086118015613b6f5750600081115b15613bbc57613b7e8682613eb3565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618582601554604051613bb393929190615311565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613c0290615379565b60006040518083038185875af1925050503d8060008114613c3f576040519150601f19603f3d011682016040523d82523d6000602084013e613c44565b606091505b5050809750505050505050505050505b565b505050565b505050565b60008183613c6e919061524b565b905092915050565b6000600267ffffffffffffffff811115613c9357613c9261538e565b5b604051908082528060200260200182016040528015613cc15781602001602082028036833780820191505090505b5090503081600081518110613cd957613cd86149d1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613d7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613da291906153d2565b81600181518110613db657613db56149d1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613e1b307f000000000000000000000000000000000000000000000000000000000000000084612743565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613e7d9594939291906154f8565b600060405180830381600087803b158015613e9757600080fd5b505af1158015613eab573d6000803e3d6000fd5b505050505050565b613ede307f000000000000000000000000000000000000000000000000000000000000000084612743565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401613f4596959493929190615552565b60606040518083038185885af1158015613f63573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613f8891906155b3565b5050505050565b600080fd5b600080fd5b6000819050919050565b613fac81613f99565b8114613fb757600080fd5b50565b600081359050613fc981613fa3565b92915050565b60008060408385031215613fe657613fe5613f8f565b5b6000613ff485828601613fba565b925050602061400585828601613fba565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561404957808201518184015260208101905061402e565b83811115614058576000848401525b50505050565b6000601f19601f8301169050919050565b600061407a8261400f565b614084818561401a565b935061409481856020860161402b565b61409d8161405e565b840191505092915050565b600060208201905081810360008301526140c2818461406f565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006140f5826140ca565b9050919050565b614105816140ea565b811461411057600080fd5b50565b600081359050614122816140fc565b92915050565b6000806040838503121561413f5761413e613f8f565b5b600061414d85828601614113565b925050602061415e85828601613fba565b9150509250929050565b60008115159050919050565b61417d81614168565b82525050565b60006020820190506141986000830184614174565b92915050565b6000602082840312156141b4576141b3613f8f565b5b60006141c284828501614113565b91505092915050565b6000819050919050565b60006141f06141eb6141e6846140ca565b6141cb565b6140ca565b9050919050565b6000614202826141d5565b9050919050565b6000614214826141f7565b9050919050565b61422481614209565b82525050565b600060208201905061423f600083018461421b565b92915050565b61424e81613f99565b82525050565b60006020820190506142696000830184614245565b92915050565b60006020828403121561428557614284613f8f565b5b600061429384828501613fba565b91505092915050565b6000806000606084860312156142b5576142b4613f8f565b5b60006142c386828701614113565b93505060206142d486828701614113565b92505060406142e586828701613fba565b9150509250925092565b6142f8816140ea565b82525050565b600060208201905061431360008301846142ef565b92915050565b600060ff82169050919050565b61432f81614319565b82525050565b600060208201905061434a6000830184614326565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261437557614374614350565b5b8235905067ffffffffffffffff81111561439257614391614355565b5b6020830191508360208202830111156143ae576143ad61435a565b5b9250929050565b60008083601f8401126143cb576143ca614350565b5b8235905067ffffffffffffffff8111156143e8576143e7614355565b5b6020830191508360208202830111156144045761440361435a565b5b9250929050565b6000806000806040858703121561442557614424613f8f565b5b600085013567ffffffffffffffff81111561444357614442613f94565b5b61444f8782880161435f565b9450945050602085013567ffffffffffffffff81111561447257614471613f94565b5b61447e878288016143b5565b925092505092959194509250565b61449581614168565b81146144a057600080fd5b50565b6000813590506144b28161448c565b92915050565b600080604083850312156144cf576144ce613f8f565b5b60006144dd85828601614113565b92505060206144ee858286016144a3565b9150509250929050565b60006020828403121561450e5761450d613f8f565b5b600061451c848285016144a3565b91505092915050565b6000614530826140ea565b9050919050565b61454081614525565b811461454b57600080fd5b50565b60008135905061455d81614537565b92915050565b6000806040838503121561457a57614579613f8f565b5b60006145888582860161454e565b925050602061459985828601613fba565b9150509250929050565b600080604083850312156145ba576145b9613f8f565b5b60006145c885828601614113565b92505060206145d985828601614113565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061461960208361401a565b9150614624826145e3565b602082019050919050565b600060208201905081810360008301526146488161460c565b9050919050565b7f416c7265616479206c61756e6368656400000000000000000000000000000000600082015250565b600061468560108361401a565b91506146908261464f565b602082019050919050565b600060208201905081810360008301526146b481614678565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006146f582613f99565b915061470083613f99565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614735576147346146bb565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061478757607f821691505b6020821081141561479b5761479a614740565b5b50919050565b60006147ac82613f99565b91506147b783613f99565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156147f0576147ef6146bb565b5b828202905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061485760288361401a565b9150614862826147fb565b604082019050919050565b600060208201905081810360008301526148868161484a565b9050919050565b7f57652063616e206e6f7420626c61636b6c69737420726f757465720000000000600082015250565b60006148c3601b8361401a565b91506148ce8261488d565b602082019050919050565b600060208201905081810360008301526148f2816148b6565b9050919050565b7f536e6970657220616c7265616479206578697374000000000000000000000000600082015250565b600061492f60148361401a565b915061493a826148f9565b602082019050919050565b6000602082019050818103600083015261495e81614922565b9050919050565b7f41727261792073697a6573206d75737420626520657175616c00000000000000600082015250565b600061499b60198361401a565b91506149a682614965565b602082019050919050565b600060208201905081810360008301526149ca8161498e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614a5c60398361401a565b9150614a6782614a00565b604082019050919050565b60006020820190508181036000830152614a8b81614a4f565b9050919050565b600081519050614aa181613fa3565b92915050565b600060208284031215614abd57614abc613f8f565b5b6000614acb84828501614a92565b91505092915050565b7f496e76616c696420416d6f756e74000000000000000000000000000000000000600082015250565b6000614b0a600e8361401a565b9150614b1582614ad4565b602082019050919050565b60006020820190508181036000830152614b3981614afd565b9050919050565b6000604082019050614b5560008301856142ef565b614b626020830184614245565b9392505050565b600081519050614b788161448c565b92915050565b600060208284031215614b9457614b93613f8f565b5b6000614ba284828501614b69565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614c0760258361401a565b9150614c1282614bab565b604082019050919050565b60006020820190508181036000830152614c3681614bfa565b9050919050565b7f4e6f74206120736e697065720000000000000000000000000000000000000000600082015250565b6000614c73600c8361401a565b9150614c7e82614c3d565b602082019050919050565b60006020820190508181036000830152614ca281614c66565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614d0560268361401a565b9150614d1082614ca9565b604082019050919050565b60006020820190508181036000830152614d3481614cf8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614d7582613f99565b9150614d8083613f99565b925082614d9057614d8f614d3b565b5b828204905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614df760248361401a565b9150614e0282614d9b565b604082019050919050565b60006020820190508181036000830152614e2681614dea565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614e8960228361401a565b9150614e9482614e2d565b604082019050919050565b60006020820190508181036000830152614eb881614e7c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614f1b60258361401a565b9150614f2682614ebf565b604082019050919050565b60006020820190508181036000830152614f4a81614f0e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614fad60238361401a565b9150614fb882614f51565b604082019050919050565b60006020820190508181036000830152614fdc81614fa0565b9050919050565b7f536e697065722064657465637465640000000000000000000000000000000000600082015250565b6000615019600f8361401a565b915061502482614fe3565b602082019050919050565b600060208201905081810360008301526150488161500c565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b600061508560168361401a565b91506150908261504f565b602082019050919050565b600060208201905081810360008301526150b481615078565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b600061511760358361401a565b9150615122826150bb565b604082019050919050565b600060208201905081810360008301526151468161510a565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b600061518360138361401a565b915061518e8261514d565b602082019050919050565b600060208201905081810360008301526151b281615176565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b600061521560368361401a565b9150615220826151b9565b604082019050919050565b6000602082019050818103600083015261524481615208565b9050919050565b600061525682613f99565b915061526183613f99565b925082821015615274576152736146bb565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006152db60268361401a565b91506152e68261527f565b604082019050919050565b6000602082019050818103600083015261530a816152ce565b9050919050565b60006060820190506153266000830186614245565b6153336020830185614245565b6153406040830184614245565b949350505050565b600081905092915050565b50565b6000615363600083615348565b915061536e82615353565b600082019050919050565b600061538482615356565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000815190506153cc816140fc565b92915050565b6000602082840312156153e8576153e7613f8f565b5b60006153f6848285016153bd565b91505092915050565b6000819050919050565b600061542461541f61541a846153ff565b6141cb565b613f99565b9050919050565b61543481615409565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61546f816140ea565b82525050565b60006154818383615466565b60208301905092915050565b6000602082019050919050565b60006154a58261543a565b6154af8185615445565b93506154ba83615456565b8060005b838110156154eb5781516154d28882615475565b97506154dd8361548d565b9250506001810190506154be565b5085935050505092915050565b600060a08201905061550d6000830188614245565b61551a602083018761542b565b818103604083015261552c818661549a565b905061553b60608301856142ef565b6155486080830184614245565b9695505050505050565b600060c08201905061556760008301896142ef565b6155746020830188614245565b615581604083018761542b565b61558e606083018661542b565b61559b60808301856142ef565b6155a860a0830184614245565b979650505050505050565b6000806000606084860312156155cc576155cb613f8f565b5b60006155da86828701614a92565b93505060206155eb86828701614a92565b92505060406155fc86828701614a92565b915050925092509256fea26469706673582212209ffa1159b1fc8cb1bb90c09130e9bafb2c4e6d19c1c350a9662bef5ec9de9a8864736f6c634300080b0033
Deployed Bytecode
0x60806040526004361061036f5760003560e01c80637bce5a04116101c6578063c0246668116100f7578063dd7bd77511610095578063f14210a61161006f578063f14210a614610cb9578063f2fde38b14610ce2578063f637434214610d0b578063f8b45b0514610d3657610376565b8063dd7bd77514610c3a578063e2f4560514610c63578063f11a24d314610c8e57610376565b8063c8c8ebe4116100d1578063c8c8ebe414610b6a578063d257b34f14610b95578063d85ba06314610bd2578063dd62ed3e14610bfd57610376565b8063c024666814610aed578063c18bc19514610b16578063c6d2577d14610b3f57610376565b80639e281a9811610164578063aacebbe31161013e578063aacebbe314610a31578063b62496f514610a5a578063bbc0c74214610a97578063bf56b37114610ac257610376565b80639e281a981461098e578063a457c2d7146109b7578063a9059cbb146109f457610376565b806392136913116101a057806392136913146108e6578063924de9b71461091157806395d89b411461093a5780639a7a23d61461096557610376565b80637bce5a04146108795780638456cb59146108a45780638da5cb5b146108bb57610376565b806338d6f847116102a05780636a486a8e1161023e578063715018a611610218578063715018a6146107e3578063751039fc146107fa5780637571336a1461082557806375f0a8741461084e57610376565b80636a486a8e146107505780636ddd17131461077b57806370a08231146107a657610376565b80634a62bb651161027a5780634a62bb65146106965780634fbee193146106c157806366ca9b83146106fe578063672434821461072757610376565b806338d6f84714610605578063395093511461062e57806349bd5a5e1461066b57610376565b806318160ddd1161030d578063203e727e116102e7578063203e727e1461054957806323b872dd1461057257806327c8f835146105af578063313ce567146105da57610376565b806318160ddd146104c85780631a8145bb146104f35780631f3fed8f1461051e57610376565b8063095ea7b311610349578063095ea7b3146103e65780630f3a325f1461042357806310d5de53146104605780631694505e1461049d57610376565b806301339c211461037b57806302dbd8f81461039257806306fdde03146103bb57610376565b3661037657005b600080fd5b34801561038757600080fd5b50610390610d61565b005b34801561039e57600080fd5b506103b960048036038101906103b49190613fcf565b610e68565b005b3480156103c757600080fd5b506103d0610f0c565b6040516103dd91906140a8565b60405180910390f35b3480156103f257600080fd5b5061040d60048036038101906104089190614128565b610f9e565b60405161041a9190614183565b60405180910390f35b34801561042f57600080fd5b5061044a6004803603810190610445919061419e565b610fbc565b6040516104579190614183565b60405180910390f35b34801561046c57600080fd5b506104876004803603810190610482919061419e565b610fdc565b6040516104949190614183565b60405180910390f35b3480156104a957600080fd5b506104b2610ffc565b6040516104bf919061422a565b60405180910390f35b3480156104d457600080fd5b506104dd611020565b6040516104ea9190614254565b60405180910390f35b3480156104ff57600080fd5b5061050861102a565b6040516105159190614254565b60405180910390f35b34801561052a57600080fd5b50610533611030565b6040516105409190614254565b60405180910390f35b34801561055557600080fd5b50610570600480360381019061056b919061426f565b611036565b005b34801561057e57600080fd5b506105996004803603810190610594919061429c565b6110cb565b6040516105a69190614183565b60405180910390f35b3480156105bb57600080fd5b506105c46111c3565b6040516105d191906142fe565b60405180910390f35b3480156105e657600080fd5b506105ef6111c9565b6040516105fc9190614335565b60405180910390f35b34801561061157600080fd5b5061062c6004803603810190610627919061419e565b6111d2565b005b34801561063a57600080fd5b5061065560048036038101906106509190614128565b6113c5565b6040516106629190614183565b60405180910390f35b34801561067757600080fd5b50610680611471565b60405161068d91906142fe565b60405180910390f35b3480156106a257600080fd5b506106ab611495565b6040516106b89190614183565b60405180910390f35b3480156106cd57600080fd5b506106e860048036038101906106e3919061419e565b6114a8565b6040516106f59190614183565b60405180910390f35b34801561070a57600080fd5b5061072560048036038101906107209190613fcf565b6114fe565b005b34801561073357600080fd5b5061074e6004803603810190610749919061440b565b6115a2565b005b34801561075c57600080fd5b506107656116f6565b6040516107729190614254565b60405180910390f35b34801561078757600080fd5b506107906116fc565b60405161079d9190614183565b60405180910390f35b3480156107b257600080fd5b506107cd60048036038101906107c8919061419e565b61170f565b6040516107da9190614254565b60405180910390f35b3480156107ef57600080fd5b506107f8611757565b005b34801561080657600080fd5b5061080f6117df565b60405161081c9190614183565b60405180910390f35b34801561083157600080fd5b5061084c600480360381019061084791906144b8565b61187f565b005b34801561085a57600080fd5b50610863611956565b60405161087091906142fe565b60405180910390f35b34801561088557600080fd5b5061088e61197c565b60405161089b9190614254565b60405180910390f35b3480156108b057600080fd5b506108b9611982565b005b3480156108c757600080fd5b506108d0611a1b565b6040516108dd91906142fe565b60405180910390f35b3480156108f257600080fd5b506108fb611a45565b6040516109089190614254565b60405180910390f35b34801561091d57600080fd5b50610938600480360381019061093391906144f8565b611a4b565b005b34801561094657600080fd5b5061094f611ae4565b60405161095c91906140a8565b60405180910390f35b34801561097157600080fd5b5061098c600480360381019061098791906144b8565b611b76565b005b34801561099a57600080fd5b506109b560048036038101906109b09190614563565b611c8f565b005b3480156109c357600080fd5b506109de60048036038101906109d99190614128565b611e4a565b6040516109eb9190614183565b60405180910390f35b348015610a0057600080fd5b50610a1b6004803603810190610a169190614128565b611f35565b604051610a289190614183565b60405180910390f35b348015610a3d57600080fd5b50610a586004803603810190610a53919061419e565b611f53565b005b348015610a6657600080fd5b50610a816004803603810190610a7c919061419e565b61208f565b604051610a8e9190614183565b60405180910390f35b348015610aa357600080fd5b50610aac6120af565b604051610ab99190614183565b60405180910390f35b348015610ace57600080fd5b50610ad76120c2565b604051610ae49190614254565b60405180910390f35b348015610af957600080fd5b50610b146004803603810190610b0f91906144b8565b6120c8565b005b348015610b2257600080fd5b50610b3d6004803603810190610b38919061426f565b6121ed565b005b348015610b4b57600080fd5b50610b54612282565b604051610b619190614254565b60405180910390f35b348015610b7657600080fd5b50610b7f612288565b604051610b8c9190614254565b60405180910390f35b348015610ba157600080fd5b50610bbc6004803603810190610bb7919061426f565b61228e565b604051610bc99190614183565b60405180910390f35b348015610bde57600080fd5b50610be761231c565b604051610bf49190614254565b60405180910390f35b348015610c0957600080fd5b50610c246004803603810190610c1f91906145a3565b612322565b604051610c319190614254565b60405180910390f35b348015610c4657600080fd5b50610c616004803603810190610c5c919061419e565b6123a9565b005b348015610c6f57600080fd5b50610c7861250c565b604051610c859190614254565b60405180910390f35b348015610c9a57600080fd5b50610ca3612512565b604051610cb09190614254565b60405180910390f35b348015610cc557600080fd5b50610ce06004803603810190610cdb919061426f565b612518565b005b348015610cee57600080fd5b50610d096004803603810190610d04919061419e565b612621565b005b348015610d1757600080fd5b50610d20612719565b604051610d2d9190614254565b60405180910390f35b348015610d4257600080fd5b50610d4b61271f565b604051610d589190614254565b60405180910390f35b610d6961273b565b73ffffffffffffffffffffffffffffffffffffffff16610d87611a1b565b73ffffffffffffffffffffffffffffffffffffffff1614610ddd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd49061462f565b60405180910390fd5b6000600b5414610e22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e199061469b565b60405180910390fd5b43600b8190555042600c819055506001600a60016101000a81548160ff0219169083151502179055506001600a60026101000a81548160ff021916908315150217905550565b610e7061273b565b73ffffffffffffffffffffffffffffffffffffffff16610e8e611a1b565b73ffffffffffffffffffffffffffffffffffffffff1614610ee4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610edb9061462f565b60405180910390fd5b8160128190555080601381905550601354601254610f0291906146ea565b6011819055505050565b606060038054610f1b9061476f565b80601f0160208091040260200160405190810160405280929190818152602001828054610f479061476f565b8015610f945780601f10610f6957610100808354040283529160200191610f94565b820191906000526020600020905b815481529060010190602001808311610f7757829003601f168201915b5050505050905090565b6000610fb2610fab61273b565b8484612743565b6001905092915050565b60186020528060005260406000206000915054906101000a900460ff1681565b60176020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b60155481565b60145481565b61103e61273b565b73ffffffffffffffffffffffffffffffffffffffff1661105c611a1b565b73ffffffffffffffffffffffffffffffffffffffff16146110b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a99061462f565b60405180910390fd5b633b9aca00816110c291906147a1565b60078190555050565b60006110d884848461290e565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061112361273b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156111a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119a9061486d565b60405180910390fd5b6111b7856111af61273b565b858403612743565b60019150509392505050565b61dead81565b60006009905090565b6111da61273b565b73ffffffffffffffffffffffffffffffffffffffff166111f8611a1b565b73ffffffffffffffffffffffffffffffffffffffff161461124e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112459061462f565b60405180910390fd5b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156112dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d4906148d9565b60405180910390fd5b601860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561136a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136190614945565b60405180910390fd5b6001601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006114676113d261273b565b8484600160006113e061273b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461146291906146ea565b612743565b6001905092915050565b7f00000000000000000000000063bd9ba6b1114e4e708a26cfa8f253c3960e6a9881565b600a60009054906101000a900460ff1681565b6000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61150661273b565b73ffffffffffffffffffffffffffffffffffffffff16611524611a1b565b73ffffffffffffffffffffffffffffffffffffffff161461157a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115719061462f565b60405180910390fd5b81600f8190555080601081905550601054600f5461159891906146ea565b600e819055505050565b6115aa61273b565b73ffffffffffffffffffffffffffffffffffffffff166115c8611a1b565b73ffffffffffffffffffffffffffffffffffffffff161461161e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116159061462f565b60405180910390fd5b818190508484905014611666576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165d906149b1565b60405180910390fd5b60005b848490508110156116ef5760006116a6633b9aca00858585818110611691576116906149d1565b5b9050602002013561366390919063ffffffff16565b90506116da338787858181106116bf576116be6149d1565b5b90506020020160208101906116d4919061419e565b8361290e565b6001826116e791906146ea565b915050611669565b5050505050565b60115481565b600a60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61175f61273b565b73ffffffffffffffffffffffffffffffffffffffff1661177d611a1b565b73ffffffffffffffffffffffffffffffffffffffff16146117d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ca9061462f565b60405180910390fd5b6117dd6000613679565b565b60006117e961273b565b73ffffffffffffffffffffffffffffffffffffffff16611807611a1b565b73ffffffffffffffffffffffffffffffffffffffff161461185d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118549061462f565b60405180910390fd5b6000600a60006101000a81548160ff0219169083151502179055506001905090565b61188761273b565b73ffffffffffffffffffffffffffffffffffffffff166118a5611a1b565b73ffffffffffffffffffffffffffffffffffffffff16146118fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f29061462f565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f5481565b61198a61273b565b73ffffffffffffffffffffffffffffffffffffffff166119a8611a1b565b73ffffffffffffffffffffffffffffffffffffffff16146119fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f59061462f565b60405180910390fd5b6000600a60016101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60125481565b611a5361273b565b73ffffffffffffffffffffffffffffffffffffffff16611a71611a1b565b73ffffffffffffffffffffffffffffffffffffffff1614611ac7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611abe9061462f565b60405180910390fd5b80600a60026101000a81548160ff02191690831515021790555050565b606060048054611af39061476f565b80601f0160208091040260200160405190810160405280929190818152602001828054611b1f9061476f565b8015611b6c5780601f10611b4157610100808354040283529160200191611b6c565b820191906000526020600020905b815481529060010190602001808311611b4f57829003601f168201915b5050505050905090565b611b7e61273b565b73ffffffffffffffffffffffffffffffffffffffff16611b9c611a1b565b73ffffffffffffffffffffffffffffffffffffffff1614611bf2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be99061462f565b60405180910390fd5b7f00000000000000000000000063bd9ba6b1114e4e708a26cfa8f253c3960e6a9873ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7890614a72565b60405180910390fd5b611c8b828261373f565b5050565b611c9761273b565b73ffffffffffffffffffffffffffffffffffffffff16611cb5611a1b565b73ffffffffffffffffffffffffffffffffffffffff1614611d0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d029061462f565b60405180910390fd5b808273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611d4591906142fe565b602060405180830381865afa158015611d62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d869190614aa7565b1015611dc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbe90614b20565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611e02929190614b40565b6020604051808303816000875af1158015611e21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e459190614b7e565b505050565b60008060016000611e5961273b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611f16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0d90614c1d565b60405180910390fd5b611f2a611f2161273b565b85858403612743565b600191505092915050565b6000611f49611f4261273b565b848461290e565b6001905092915050565b611f5b61273b565b73ffffffffffffffffffffffffffffffffffffffff16611f79611a1b565b73ffffffffffffffffffffffffffffffffffffffff1614611fcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc69061462f565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60196020528060005260406000206000915054906101000a900460ff1681565b600a60019054906101000a900460ff1681565b600b5481565b6120d061273b565b73ffffffffffffffffffffffffffffffffffffffff166120ee611a1b565b73ffffffffffffffffffffffffffffffffffffffff1614612144576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213b9061462f565b60405180910390fd5b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516121e19190614183565b60405180910390a25050565b6121f561273b565b73ffffffffffffffffffffffffffffffffffffffff16612213611a1b565b73ffffffffffffffffffffffffffffffffffffffff1614612269576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122609061462f565b60405180910390fd5b633b9aca008161227991906147a1565b60098190555050565b600c5481565b60075481565b600061229861273b565b73ffffffffffffffffffffffffffffffffffffffff166122b6611a1b565b73ffffffffffffffffffffffffffffffffffffffff161461230c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123039061462f565b60405180910390fd5b8160088190555060019050919050565b600e5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6123b161273b565b73ffffffffffffffffffffffffffffffffffffffff166123cf611a1b565b73ffffffffffffffffffffffffffffffffffffffff1614612425576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241c9061462f565b60405180910390fd5b601860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166124b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a890614c89565b60405180910390fd5b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60085481565b60105481565b61252061273b565b73ffffffffffffffffffffffffffffffffffffffff1661253e611a1b565b73ffffffffffffffffffffffffffffffffffffffff1614612594576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258b9061462f565b60405180910390fd5b804710156125d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ce90614b20565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561261d573d6000803e3d6000fd5b5050565b61262961273b565b73ffffffffffffffffffffffffffffffffffffffff16612647611a1b565b73ffffffffffffffffffffffffffffffffffffffff161461269d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126949061462f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561270d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270490614d1b565b60405180910390fd5b61271681613679565b50565b60135481565b60095481565b600081836127339190614d6a565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156127b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127aa90614e0d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612823576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281a90614e9f565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516129019190614254565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561297e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297590614f31565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156129ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129e590614fc3565b60405180910390fd5b601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612a7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a729061502f565b60405180910390fd5b601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612b08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aff9061502f565b60405180910390fd5b6000811415612b2257612b1d838360006137e0565b61365e565b600a60009054906101000a900460ff16156131ec57612b3f611a1b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612bad5750612b7d611a1b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612be65750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c20575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c395750600560149054906101000a900460ff16155b156131eb57600a60019054906101000a900460ff16612d3357601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612cf35750601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612d32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d299061509b565b60405180910390fd5b5b600d54600c54612d4391906146ea565b42108015612d9d57507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15612f02577f00000000000000000000000063bd9ba6b1114e4e708a26cfa8f253c3960e6a9873ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612e53576001601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550612f01565b7f00000000000000000000000063bd9ba6b1114e4e708a26cfa8f253c3960e6a9873ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612f00576001601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b5b601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612fa55750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561304c57600754811115612fef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fe69061512d565b60405180910390fd5b600954612ffb8361170f565b8261300691906146ea565b1115613047576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161303e90615199565b60405180910390fd5b6131ea565b601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156130ef5750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561313e57600754811115613139576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131309061522b565b60405180910390fd5b6131e9565b601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166131e85760095461319b8361170f565b826131a691906146ea565b11156131e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131de90615199565b60405180910390fd5b5b5b5b5b5b60006131f73061170f565b90506000600854821015905080801561321c5750600a60029054906101000a900460ff165b80156132355750600560149054906101000a900460ff16155b801561328b5750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156132e15750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133375750601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561337b576001600560146101000a81548160ff02191690831515021790555061335f613a61565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806134315750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561343b57600090505b6000811561364e57601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561349e57506000601154115b15613538576134cb60646134bd6011548861366390919063ffffffff16565b61272590919063ffffffff16565b9050601154601354826134de91906147a1565b6134e89190614d6a565b601560008282546134f991906146ea565b925050819055506011546012548261351191906147a1565b61351b9190614d6a565b6014600082825461352c91906146ea565b9250508190555061362a565b601960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561359357506000600e54115b15613629576135c060646135b2600e548861366390919063ffffffff16565b61272590919063ffffffff16565b9050600e54601054826135d391906147a1565b6135dd9190614d6a565b601560008282546135ee91906146ea565b92505081905550600e54600f548261360691906147a1565b6136109190614d6a565b6014600082825461362191906146ea565b925050819055505b5b600081111561363f5761363e8730836137e0565b5b808561364b919061524b565b94505b6136598787876137e0565b505050505b505050565b6000818361367191906147a1565b905092915050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613850576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161384790614f31565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156138c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138b790614fc3565b60405180910390fd5b6138cb838383613c56565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613951576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613948906152f1565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546139e491906146ea565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613a489190614254565b60405180910390a3613a5b848484613c5b565b50505050565b6000613a6c3061170f565b90506000601454601554613a8091906146ea565b9050600080831480613a925750600082145b15613a9f57505050613c54565b600854831115613aaf5760085492505b600060028360155486613ac291906147a1565b613acc9190614d6a565b613ad69190614d6a565b90506000613aed8286613c6090919063ffffffff16565b90506000479050613afd82613c76565b6000613b128247613c6090919063ffffffff16565b90506000613b3d87613b2f6014548561366390919063ffffffff16565b61272590919063ffffffff16565b905060008183613b4d919061524b565b905060006015819055506000601481905550600086118015613b6f5750600081115b15613bbc57613b7e8682613eb3565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618582601554604051613bb393929190615311565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613c0290615379565b60006040518083038185875af1925050503d8060008114613c3f576040519150601f19603f3d011682016040523d82523d6000602084013e613c44565b606091505b5050809750505050505050505050505b565b505050565b505050565b60008183613c6e919061524b565b905092915050565b6000600267ffffffffffffffff811115613c9357613c9261538e565b5b604051908082528060200260200182016040528015613cc15781602001602082028036833780820191505090505b5090503081600081518110613cd957613cd86149d1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613d7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613da291906153d2565b81600181518110613db657613db56149d1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613e1b307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612743565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613e7d9594939291906154f8565b600060405180830381600087803b158015613e9757600080fd5b505af1158015613eab573d6000803e3d6000fd5b505050505050565b613ede307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612743565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401613f4596959493929190615552565b60606040518083038185885af1158015613f63573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613f8891906155b3565b5050505050565b600080fd5b600080fd5b6000819050919050565b613fac81613f99565b8114613fb757600080fd5b50565b600081359050613fc981613fa3565b92915050565b60008060408385031215613fe657613fe5613f8f565b5b6000613ff485828601613fba565b925050602061400585828601613fba565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561404957808201518184015260208101905061402e565b83811115614058576000848401525b50505050565b6000601f19601f8301169050919050565b600061407a8261400f565b614084818561401a565b935061409481856020860161402b565b61409d8161405e565b840191505092915050565b600060208201905081810360008301526140c2818461406f565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006140f5826140ca565b9050919050565b614105816140ea565b811461411057600080fd5b50565b600081359050614122816140fc565b92915050565b6000806040838503121561413f5761413e613f8f565b5b600061414d85828601614113565b925050602061415e85828601613fba565b9150509250929050565b60008115159050919050565b61417d81614168565b82525050565b60006020820190506141986000830184614174565b92915050565b6000602082840312156141b4576141b3613f8f565b5b60006141c284828501614113565b91505092915050565b6000819050919050565b60006141f06141eb6141e6846140ca565b6141cb565b6140ca565b9050919050565b6000614202826141d5565b9050919050565b6000614214826141f7565b9050919050565b61422481614209565b82525050565b600060208201905061423f600083018461421b565b92915050565b61424e81613f99565b82525050565b60006020820190506142696000830184614245565b92915050565b60006020828403121561428557614284613f8f565b5b600061429384828501613fba565b91505092915050565b6000806000606084860312156142b5576142b4613f8f565b5b60006142c386828701614113565b93505060206142d486828701614113565b92505060406142e586828701613fba565b9150509250925092565b6142f8816140ea565b82525050565b600060208201905061431360008301846142ef565b92915050565b600060ff82169050919050565b61432f81614319565b82525050565b600060208201905061434a6000830184614326565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261437557614374614350565b5b8235905067ffffffffffffffff81111561439257614391614355565b5b6020830191508360208202830111156143ae576143ad61435a565b5b9250929050565b60008083601f8401126143cb576143ca614350565b5b8235905067ffffffffffffffff8111156143e8576143e7614355565b5b6020830191508360208202830111156144045761440361435a565b5b9250929050565b6000806000806040858703121561442557614424613f8f565b5b600085013567ffffffffffffffff81111561444357614442613f94565b5b61444f8782880161435f565b9450945050602085013567ffffffffffffffff81111561447257614471613f94565b5b61447e878288016143b5565b925092505092959194509250565b61449581614168565b81146144a057600080fd5b50565b6000813590506144b28161448c565b92915050565b600080604083850312156144cf576144ce613f8f565b5b60006144dd85828601614113565b92505060206144ee858286016144a3565b9150509250929050565b60006020828403121561450e5761450d613f8f565b5b600061451c848285016144a3565b91505092915050565b6000614530826140ea565b9050919050565b61454081614525565b811461454b57600080fd5b50565b60008135905061455d81614537565b92915050565b6000806040838503121561457a57614579613f8f565b5b60006145888582860161454e565b925050602061459985828601613fba565b9150509250929050565b600080604083850312156145ba576145b9613f8f565b5b60006145c885828601614113565b92505060206145d985828601614113565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061461960208361401a565b9150614624826145e3565b602082019050919050565b600060208201905081810360008301526146488161460c565b9050919050565b7f416c7265616479206c61756e6368656400000000000000000000000000000000600082015250565b600061468560108361401a565b91506146908261464f565b602082019050919050565b600060208201905081810360008301526146b481614678565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006146f582613f99565b915061470083613f99565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614735576147346146bb565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061478757607f821691505b6020821081141561479b5761479a614740565b5b50919050565b60006147ac82613f99565b91506147b783613f99565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156147f0576147ef6146bb565b5b828202905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061485760288361401a565b9150614862826147fb565b604082019050919050565b600060208201905081810360008301526148868161484a565b9050919050565b7f57652063616e206e6f7420626c61636b6c69737420726f757465720000000000600082015250565b60006148c3601b8361401a565b91506148ce8261488d565b602082019050919050565b600060208201905081810360008301526148f2816148b6565b9050919050565b7f536e6970657220616c7265616479206578697374000000000000000000000000600082015250565b600061492f60148361401a565b915061493a826148f9565b602082019050919050565b6000602082019050818103600083015261495e81614922565b9050919050565b7f41727261792073697a6573206d75737420626520657175616c00000000000000600082015250565b600061499b60198361401a565b91506149a682614965565b602082019050919050565b600060208201905081810360008301526149ca8161498e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614a5c60398361401a565b9150614a6782614a00565b604082019050919050565b60006020820190508181036000830152614a8b81614a4f565b9050919050565b600081519050614aa181613fa3565b92915050565b600060208284031215614abd57614abc613f8f565b5b6000614acb84828501614a92565b91505092915050565b7f496e76616c696420416d6f756e74000000000000000000000000000000000000600082015250565b6000614b0a600e8361401a565b9150614b1582614ad4565b602082019050919050565b60006020820190508181036000830152614b3981614afd565b9050919050565b6000604082019050614b5560008301856142ef565b614b626020830184614245565b9392505050565b600081519050614b788161448c565b92915050565b600060208284031215614b9457614b93613f8f565b5b6000614ba284828501614b69565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614c0760258361401a565b9150614c1282614bab565b604082019050919050565b60006020820190508181036000830152614c3681614bfa565b9050919050565b7f4e6f74206120736e697065720000000000000000000000000000000000000000600082015250565b6000614c73600c8361401a565b9150614c7e82614c3d565b602082019050919050565b60006020820190508181036000830152614ca281614c66565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614d0560268361401a565b9150614d1082614ca9565b604082019050919050565b60006020820190508181036000830152614d3481614cf8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614d7582613f99565b9150614d8083613f99565b925082614d9057614d8f614d3b565b5b828204905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614df760248361401a565b9150614e0282614d9b565b604082019050919050565b60006020820190508181036000830152614e2681614dea565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614e8960228361401a565b9150614e9482614e2d565b604082019050919050565b60006020820190508181036000830152614eb881614e7c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614f1b60258361401a565b9150614f2682614ebf565b604082019050919050565b60006020820190508181036000830152614f4a81614f0e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614fad60238361401a565b9150614fb882614f51565b604082019050919050565b60006020820190508181036000830152614fdc81614fa0565b9050919050565b7f536e697065722064657465637465640000000000000000000000000000000000600082015250565b6000615019600f8361401a565b915061502482614fe3565b602082019050919050565b600060208201905081810360008301526150488161500c565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b600061508560168361401a565b91506150908261504f565b602082019050919050565b600060208201905081810360008301526150b481615078565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b600061511760358361401a565b9150615122826150bb565b604082019050919050565b600060208201905081810360008301526151468161510a565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b600061518360138361401a565b915061518e8261514d565b602082019050919050565b600060208201905081810360008301526151b281615176565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b600061521560368361401a565b9150615220826151b9565b604082019050919050565b6000602082019050818103600083015261524481615208565b9050919050565b600061525682613f99565b915061526183613f99565b925082821015615274576152736146bb565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006152db60268361401a565b91506152e68261527f565b604082019050919050565b6000602082019050818103600083015261530a816152ce565b9050919050565b60006060820190506153266000830186614245565b6153336020830185614245565b6153406040830184614245565b949350505050565b600081905092915050565b50565b6000615363600083615348565b915061536e82615353565b600082019050919050565b600061538482615356565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000815190506153cc816140fc565b92915050565b6000602082840312156153e8576153e7613f8f565b5b60006153f6848285016153bd565b91505092915050565b6000819050919050565b600061542461541f61541a846153ff565b6141cb565b613f99565b9050919050565b61543481615409565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61546f816140ea565b82525050565b60006154818383615466565b60208301905092915050565b6000602082019050919050565b60006154a58261543a565b6154af8185615445565b93506154ba83615456565b8060005b838110156154eb5781516154d28882615475565b97506154dd8361548d565b9250506001810190506154be565b5085935050505092915050565b600060a08201905061550d6000830188614245565b61551a602083018761542b565b818103604083015261552c818661549a565b905061553b60608301856142ef565b6155486080830184614245565b9695505050505050565b600060c08201905061556760008301896142ef565b6155746020830188614245565b615581604083018761542b565b61558e606083018661542b565b61559b60808301856142ef565b6155a860a0830184614245565b979650505050505050565b6000806000606084860312156155cc576155cb613f8f565b5b60006155da86828701614a92565b93505060206155eb86828701614a92565b92505060406155fc86828701614a92565b915050925092509256fea26469706673582212209ffa1159b1fc8cb1bb90c09130e9bafb2c4e6d19c1c350a9662bef5ec9de9a8864736f6c634300080b0033
Deployed Bytecode Sourcemap
18730:14980:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22474:242;;;;;;;;;;;;;:::i;:::-;;24040:270;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4781:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6177:194;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19933:40;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19863:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18804:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5269:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19681:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19641;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23141:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6379:529;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18907:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5112:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25384:293;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6916:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18862:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19153:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25250:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23768:264;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32845:454;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19514:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19233:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5440:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1213:103;;;;;;;;;;;;;:::i;:::-;;22768:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23395:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18999:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19429:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22392:74;;;;;;;;;;;;;:::i;:::-;;905:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19554:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23660:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5000:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24508:306;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33498:209;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7214:475;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5591:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25018:224;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20131:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19193:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19273:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24318:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23272:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19305:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19038:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22959:174;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19390:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5854:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25685:166;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19080:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19471:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33307:183;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1471:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19597:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19120:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22474:242;1136:12;:10;:12::i;:::-;1125:23;;:7;:5;:7::i;:::-;:23;;;1117:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22542:1:::1;22528:10;;:15;22520:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;22588:12;22575:10;:25;;;;22633:15;22611:19;:37;;;;22675:4;22659:13;;:20;;;;;;;;;;;;;;;;;;22704:4;22690:11;;:18;;;;;;;;;;;;;;;;;;22474:242::o:0;24040:270::-;1136:12;:10;:12::i;:::-;1125:23;;:7;:5;:7::i;:::-;:23;;;1117:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24184:13:::1;24165:16;:32;;;;24227:13;24208:16;:32;;;;24286:16;;24267;;:35;;;;:::i;:::-;24251:13;:51;;;;24040:270:::0;;:::o;4781:100::-;4835:13;4868:5;4861:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4781:100;:::o;6177:194::-;6285:4;6302:39;6311:12;:10;:12::i;:::-;6325:7;6334:6;6302:8;:39::i;:::-;6359:4;6352:11;;6177:194;;;;:::o;19933:40::-;;;;;;;;;;;;;;;;;;;;;;:::o;19863:63::-;;;;;;;;;;;;;;;;;;;;;;:::o;18804:51::-;;;:::o;5269:108::-;5330:7;5357:12;;5350:19;;5269:108;:::o;19681:33::-;;;;:::o;19641:::-;;;;:::o;23141:123::-;1136:12;:10;:12::i;:::-;1125:23;;:7;:5;:7::i;:::-;:23;;;1117:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23248:7:::1;23238:6;:18;;;;:::i;:::-;23215:20;:41;;;;23141:123:::0;:::o;6379:529::-;6519:4;6536:36;6546:6;6554:9;6565:6;6536:9;:36::i;:::-;6585:24;6612:11;:19;6624:6;6612:19;;;;;;;;;;;;;;;:33;6632:12;:10;:12::i;:::-;6612:33;;;;;;;;;;;;;;;;6585:60;;6698:6;6678:16;:26;;6656:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;6808:57;6817:6;6825:12;:10;:12::i;:::-;6858:6;6839:16;:25;6808:8;:57::i;:::-;6896:4;6889:11;;;6379:529;;;;;:::o;18907:53::-;18953:6;18907:53;:::o;5112:92::-;5170:5;5195:1;5188:8;;5112:92;:::o;25384:293::-;1136:12;:10;:12::i;:::-;1125:23;;:7;:5;:7::i;:::-;:23;;;1117:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25499:15:::1;25479:36;;:8;:36;;;;25457:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;25590:8;:18;25599:8;25590:18;;;;;;;;;;;;;;;;;;;;;;;;;25589:19;25581:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;25665:4;25644:8;:18;25653:8;25644:18;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;25384:293:::0;:::o;6916:290::-;7029:4;7046:130;7069:12;:10;:12::i;:::-;7096:7;7155:10;7118:11;:25;7130:12;:10;:12::i;:::-;7118:25;;;;;;;;;;;;;;;:34;7144:7;7118:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;7046:8;:130::i;:::-;7194:4;7187:11;;6916:290;;;;:::o;18862:38::-;;;:::o;19153:33::-;;;;;;;;;;;;;:::o;25250:126::-;25316:4;25340:19;:28;25360:7;25340:28;;;;;;;;;;;;;;;;;;;;;;;;;25333:35;;25250:126;;;:::o;23768:264::-;1136:12;:10;:12::i;:::-;1125:23;;:7;:5;:7::i;:::-;:23;;;1117:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23910:13:::1;23892:15;:31;;;;23952:13;23934:15;:31;;;;24009:15;;23991;;:33;;;;:::i;:::-;23976:12;:48;;;;23768:264:::0;;:::o;32845:454::-;1136:12;:10;:12::i;:::-;1125:23;;:7;:5;:7::i;:::-;:23;;;1117:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;33017:7:::1;;:14;;32997:9;;:16;;:34;32975:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;33095:9;33119:173;33130:9;;:16;;33126:1;:20;33119:173;;;33163:15;33181:19;33196:3;33181:7;;33189:1;33181:10;;;;;;;:::i;:::-;;;;;;;;:14;;:19;;;;:::i;:::-;33163:37;;33215:44;33225:10;33237:9;;33247:1;33237:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;33251:7;33215:9;:44::i;:::-;33279:1;33274:6;;;;;:::i;:::-;;;33148:144;33119:173;;;32964:335;32845:454:::0;;;;:::o;19514:33::-;;;;:::o;19233:31::-;;;;;;;;;;;;;:::o;5440:143::-;5530:7;5557:9;:18;5567:7;5557:18;;;;;;;;;;;;;;;;5550:25;;5440:143;;;:::o;1213:103::-;1136:12;:10;:12::i;:::-;1125:23;;:7;:5;:7::i;:::-;:23;;;1117:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1278:30:::1;1305:1;1278:18;:30::i;:::-;1213:103::o:0;22768:121::-;22820:4;1136:12;:10;:12::i;:::-;1125:23;;:7;:5;:7::i;:::-;:23;;;1117:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22854:5:::1;22837:14;;:22;;;;;;;;;;;;;;;;;;22877:4;22870:11;;22768:121:::0;:::o;23395:169::-;1136:12;:10;:12::i;:::-;1125:23;;:7;:5;:7::i;:::-;:23;;;1117:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23552:4:::1;23510:31;:39;23542:6;23510:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;23395:169:::0;;:::o;18999:30::-;;;;;;;;;;;;;:::o;19429:35::-;;;;:::o;22392:74::-;1136:12;:10;:12::i;:::-;1125:23;;:7;:5;:7::i;:::-;:23;;;1117:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22453:5:::1;22437:13;;:21;;;;;;;;;;;;;;;;;;22392:74::o:0;905:87::-;951:7;978:6;;;;;;;;;;;971:13;;905:87;:::o;19554:36::-;;;;:::o;23660:100::-;1136:12;:10;:12::i;:::-;1125:23;;:7;:5;:7::i;:::-;:23;;;1117:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23745:7:::1;23731:11;;:21;;;;;;;;;;;;;;;;;;23660:100:::0;:::o;5000:104::-;5056:13;5089:7;5082:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5000:104;:::o;24508:306::-;1136:12;:10;:12::i;:::-;1125:23;;:7;:5;:7::i;:::-;:23;;;1117:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24654:13:::1;24646:21;;:4;:21;;;;24624:128;;;;;;;;;;;;:::i;:::-;;;;;;;;;24765:41;24794:4;24800:5;24765:28;:41::i;:::-;24508:306:::0;;:::o;33498:209::-;1136:12;:10;:12::i;:::-;1125:23;;:7;:5;:7::i;:::-;:23;;;1117:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;33626:7:::1;33591:6;:16;;;33616:4;33591:31;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:42;;33583:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;33663:6;:15;;;33679:10;33691:7;33663:36;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;33498:209:::0;;:::o;7214:475::-;7332:4;7349:24;7376:11;:25;7388:12;:10;:12::i;:::-;7376:25;;;;;;;;;;;;;;;:34;7402:7;7376:34;;;;;;;;;;;;;;;;7349:61;;7463:15;7443:16;:35;;7421:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;7579:67;7588:12;:10;:12::i;:::-;7602:7;7630:15;7611:16;:34;7579:8;:67::i;:::-;7677:4;7670:11;;;7214:475;;;;:::o;5591:200::-;5702:4;5719:42;5729:12;:10;:12::i;:::-;5743:9;5754:6;5719:9;:42::i;:::-;5779:4;5772:11;;5591:200;;;;:::o;25018:224::-;1136:12;:10;:12::i;:::-;1125:23;;:7;:5;:7::i;:::-;:23;;;1117:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25171:15:::1;;;;;;;;;;;25128:59;;25151:18;25128:59;;;;;;;;;;;;25216:18;25198:15;;:36;;;;;;;;;;;;;;;;;;25018:224:::0;:::o;20131:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;19193:33::-;;;;;;;;;;;;;:::o;19273:25::-;;;;:::o;24318:182::-;1136:12;:10;:12::i;:::-;1125:23;;:7;:5;:7::i;:::-;:23;;;1117:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24434:8:::1;24403:19;:28;24423:7;24403:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;24474:7;24458:34;;;24483:8;24458:34;;;;;;:::i;:::-;;;;;;;;24318:182:::0;;:::o;23272:115::-;1136:12;:10;:12::i;:::-;1125:23;;:7;:5;:7::i;:::-;:23;;;1117:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23371:7:::1;23361:6;:18;;;;:::i;:::-;23349:9;:30;;;;23272:115:::0;:::o;19305:34::-;;;;:::o;19038:35::-;;;;:::o;22959:174::-;23056:4;1136:12;:10;:12::i;:::-;1125:23;;:7;:5;:7::i;:::-;:23;;;1117:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23094:9:::1;23073:18;:30;;;;23121:4;23114:11;;22959:174:::0;;;:::o;19390:32::-;;;;:::o;5854:176::-;5968:7;5995:11;:18;6007:5;5995:18;;;;;;;;;;;;;;;:27;6014:7;5995:27;;;;;;;;;;;;;;;;5988:34;;5854:176;;;;:::o;25685:166::-;1136:12;:10;:12::i;:::-;1125:23;;:7;:5;:7::i;:::-;:23;;;1117:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25771:8:::1;:18;25780:8;25771:18;;;;;;;;;;;;;;;;;;;;;;;;;25763:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;25838:5;25817:8;:18;25826:8;25817:18;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;25685:166:::0;:::o;19080:33::-;;;;:::o;19471:34::-;;;;:::o;33307:183::-;1136:12;:10;:12::i;:::-;1125:23;;:7;:5;:7::i;:::-;:23;;;1117:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;33408:7:::1;33383:21;:32;;33375:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;33453:10;33445:28;;:37;33474:7;33445:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;33307:183:::0;:::o;1471:238::-;1136:12;:10;:12::i;:::-;1125:23;;:7;:5;:7::i;:::-;:23;;;1117:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1594:1:::1;1574:22;;:8;:22;;;;1552:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;1673:28;1692:8;1673:18;:28::i;:::-;1471:238:::0;:::o;19597:35::-;;;;:::o;19120:24::-;;;;:::o;12688:98::-;12746:7;12777:1;12773;:5;;;;:::i;:::-;12766:12;;12688:98;;;;:::o;263:::-;316:7;343:10;336:17;;263:98;:::o;9481:380::-;9634:1;9617:19;;:5;:19;;;;9609:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9715:1;9696:21;;:7;:21;;;;9688:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9799:6;9769:11;:18;9781:5;9769:18;;;;;;;;;;;;;;;:27;9788:7;9769:27;;;;;;;;;;;;;;;:36;;;;9837:7;9821:32;;9830:5;9821:32;;;9846:6;9821:32;;;;;;:::i;:::-;;;;;;;;9481:380;;;:::o;25859:4336::-;26007:1;25991:18;;:4;:18;;;;25983:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26084:1;26070:16;;:2;:16;;;;26062:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;26146:8;:12;26155:2;26146:12;;;;;;;;;;;;;;;;;;;;;;;;;26145:13;26137:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;26198:8;:14;26207:4;26198:14;;;;;;;;;;;;;;;;;;;;;;;;;26197:15;26189:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;26259:1;26249:6;:11;26245:93;;;26277:28;26293:4;26299:2;26303:1;26277:15;:28::i;:::-;26320:7;;26245:93;26354:14;;;;;;;;;;;26350:2138;;;26415:7;:5;:7::i;:::-;26407:15;;:4;:15;;;;:49;;;;;26449:7;:5;:7::i;:::-;26443:13;;:2;:13;;;;26407:49;:86;;;;;26491:1;26477:16;;:2;:16;;;;26407:86;:128;;;;;26528:6;26514:21;;:2;:21;;;;26407:128;:158;;;;;26557:8;;;;;;;;;;;26556:9;26407:158;26385:2092;;;26605:13;;;;;;;;;;;26600:223;;26677:19;:25;26697:4;26677:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;26706:19;:23;26726:2;26706:23;;;;;;;;;;;;;;;;;;;;;;;;;26677:52;26643:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;26600:223;26935:15;;26913:19;;:37;;;;:::i;:::-;26895:15;:55;:112;;;;;26991:15;26975:32;;:4;:32;;;;26895:112;26869:400;;;27062:13;27054:21;;:4;:21;;;27050:200;;;27119:4;27104:8;:12;27113:2;27104:12;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;27050:200;;;27163:13;27157:19;;:2;:19;;;27153:97;;;27222:4;27205:8;:14;27214:4;27205:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;27153:97;27050:200;26869:400;27341:25;:31;27367:4;27341:31;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;27398:31;:35;27430:2;27398:35;;;;;;;;;;;;;;;;;;;;;;;;;27397:36;27341:92;27315:1147;;;27520:20;;27510:6;:30;;27476:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;27728:9;;27711:13;27721:2;27711:9;:13::i;:::-;27702:6;:22;;;;:::i;:::-;:35;;27668:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;27315:1147;;;27906:25;:29;27932:2;27906:29;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;27961:31;:37;27993:4;27961:37;;;;;;;;;;;;;;;;;;;;;;;;;27960:38;27906:92;27880:582;;;28085:20;;28075:6;:30;;28041:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;27880:582;;;28242:31;:35;28274:2;28242:35;;;;;;;;;;;;;;;;;;;;;;;;;28237:225;;28362:9;;28345:13;28355:2;28345:9;:13::i;:::-;28336:6;:22;;;;:::i;:::-;:35;;28302:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;28237:225;27880:582;27315:1147;26385:2092;26350:2138;28500:28;28531:24;28549:4;28531:9;:24::i;:::-;28500:55;;28568:12;28607:18;;28583:20;:42;;28568:57;;28656:7;:35;;;;;28680:11;;;;;;;;;;;28656:35;:61;;;;;28709:8;;;;;;;;;;;28708:9;28656:61;:110;;;;;28735:25;:31;28761:4;28735:31;;;;;;;;;;;;;;;;;;;;;;;;;28734:32;28656:110;:153;;;;;28784:19;:25;28804:4;28784:25;;;;;;;;;;;;;;;;;;;;;;;;;28783:26;28656:153;:194;;;;;28827:19;:23;28847:2;28827:23;;;;;;;;;;;;;;;;;;;;;;;;;28826:24;28656:194;28638:326;;;28888:4;28877:8;;:15;;;;;;;;;;;;;;;;;;28909:10;:8;:10::i;:::-;28947:5;28936:8;;:16;;;;;;;;;;;;;;;;;;28638:326;28976:12;28992:8;;;;;;;;;;;28991:9;28976:24;;29102:19;:25;29122:4;29102:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;29131:19;:23;29151:2;29131:23;;;;;;;;;;;;;;;;;;;;;;;;;29102:52;29098:100;;;29181:5;29171:15;;29098:100;29210:12;29315:7;29311:831;;;29367:25;:29;29393:2;29367:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;29416:1;29400:13;;:17;29367:50;29363:630;;;29445:34;29475:3;29445:25;29456:13;;29445:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;29438:41;;29548:13;;29528:16;;29521:4;:23;;;;:::i;:::-;29520:41;;;;:::i;:::-;29498:18;;:63;;;;;;;:::i;:::-;;;;;;;;29630:13;;29610:16;;29603:4;:23;;;;:::i;:::-;29602:41;;;;:::i;:::-;29580:18;;:63;;;;;;;:::i;:::-;;;;;;;;29363:630;;;29705:25;:31;29731:4;29705:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;29755:1;29740:12;;:16;29705:51;29701:292;;;29784:33;29813:3;29784:24;29795:12;;29784:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;29777:40;;29885:12;;29866:15;;29859:4;:22;;;;:::i;:::-;29858:39;;;;:::i;:::-;29836:18;;:61;;;;;;;:::i;:::-;;;;;;;;29965:12;;29946:15;;29939:4;:22;;;;:::i;:::-;29938:39;;;;:::i;:::-;29916:18;;:61;;;;;;;:::i;:::-;;;;;;;;29701:292;29363:630;30020:1;30013:4;:8;30009:91;;;30042:42;30058:4;30072;30079;30042:15;:42::i;:::-;30009:91;30126:4;30116:14;;;;;:::i;:::-;;;29311:831;30154:33;30170:4;30176:2;30180:6;30154:15;:33::i;:::-;25972:4223;;;;25859:4336;;;;:::o;12582:98::-;12640:7;12671:1;12667;:5;;;;:::i;:::-;12660:12;;12582:98;;;;:::o;1869:191::-;1943:16;1962:6;;;;;;;;;;;1943:25;;1988:8;1979:6;;:17;;;;;;;;;;;;;;;;;;2043:8;2012:40;;2033:8;2012:40;;;;;;;;;;;;1932:128;1869:191;:::o;24822:188::-;24939:5;24905:25;:31;24931:4;24905:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;24996:5;24962:40;;24990:4;24962:40;;;;;;;;;;;;24822:188;;:::o;7697:770::-;7855:1;7837:20;;:6;:20;;;;7829:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;7939:1;7918:23;;:9;:23;;;;7910:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7994:47;8015:6;8023:9;8034:6;7994:20;:47::i;:::-;8054:21;8078:9;:17;8088:6;8078:17;;;;;;;;;;;;;;;;8054:41;;8145:6;8128:13;:23;;8106:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;8289:6;8273:13;:22;8253:9;:17;8263:6;8253:17;;;;;;;;;;;;;;;:42;;;;8341:6;8317:9;:20;8327:9;8317:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;8382:9;8365:35;;8374:6;8365:35;;;8393:6;8365:35;;;;;;:::i;:::-;;;;;;;;8413:46;8433:6;8441:9;8452:6;8413:19;:46::i;:::-;7818:649;7697:770;;;:::o;31325:1512::-;31364:23;31390:24;31408:4;31390:9;:24::i;:::-;31364:50;;31425:25;31474:18;;31453;;:39;;;;:::i;:::-;31425:67;;31503:12;31551:1;31532:15;:20;:46;;;;31577:1;31556:17;:22;31532:46;31528:85;;;31595:7;;;;;31528:85;31647:18;;31629:15;:36;31625:105;;;31700:18;;31682:36;;31625:105;31791:23;31904:1;31871:17;31836:18;;31818:15;:36;;;;:::i;:::-;31817:71;;;;:::i;:::-;:88;;;;:::i;:::-;31791:114;;31916:26;31945:36;31965:15;31945;:19;;:36;;;;:::i;:::-;31916:65;;31994:25;32022:21;31994:49;;32056:36;32073:18;32056:16;:36::i;:::-;32105:18;32126:44;32152:17;32126:21;:25;;:44;;;;:::i;:::-;32105:65;;32183:23;32209:81;32262:17;32209:34;32224:18;;32209:10;:14;;:34;;;;:::i;:::-;:38;;:81;;;;:::i;:::-;32183:107;;32303:23;32342:15;32329:10;:28;;;;:::i;:::-;32303:54;;32391:1;32370:18;:22;;;;32424:1;32403:18;:22;;;;32460:1;32442:15;:19;:42;;;;;32483:1;32465:15;:19;32442:42;32438:278;;;32501:46;32514:15;32531;32501:12;:46::i;:::-;32567:137;32600:18;32637:15;32671:18;;32567:137;;;;;;;;:::i;:::-;;;;;;;;32438:278;32750:15;;;;;;;;;;;32742:29;;32793:21;32742:87;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32728:101;;;;;31353:1484;;;;;;;;;31325:1512;:::o;9869:125::-;;;;:::o;10002:124::-;;;;:::o;12476:98::-;12534:7;12565:1;12561;:5;;;;:::i;:::-;12554:12;;12476:98;;;;:::o;30203:589::-;30329:21;30367:1;30353:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30329:40;;30398:4;30380;30385:1;30380:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;30424:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30414:4;30419:1;30414:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;30459:62;30476:4;30491:15;30509:11;30459:8;:62::i;:::-;30560:15;:66;;;30641:11;30667:1;30711:4;30738;30758:15;30560:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30258:534;30203:589;:::o;30800:517::-;30948:62;30965:4;30980:15;30998:11;30948:8;:62::i;:::-;31053:15;:31;;;31092:9;31125:4;31145:11;31171:1;31214;18953:6;31283:15;31053:256;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;30800:517;;:::o;88:117:1:-;197:1;194;187:12;211:117;320:1;317;310:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:474::-;758:6;766;815:2;803:9;794:7;790:23;786:32;783:119;;;821:79;;:::i;:::-;783:119;941:1;966:53;1011:7;1002:6;991:9;987:22;966:53;:::i;:::-;956:63;;912:117;1068:2;1094:53;1139:7;1130:6;1119:9;1115:22;1094:53;:::i;:::-;1084:63;;1039:118;690:474;;;;;:::o;1170:99::-;1222:6;1256:5;1250:12;1240:22;;1170:99;;;:::o;1275:169::-;1359:11;1393:6;1388:3;1381:19;1433:4;1428:3;1424:14;1409:29;;1275:169;;;;:::o;1450:307::-;1518:1;1528:113;1542:6;1539:1;1536:13;1528:113;;;1627:1;1622:3;1618:11;1612:18;1608:1;1603:3;1599:11;1592:39;1564:2;1561:1;1557:10;1552:15;;1528:113;;;1659:6;1656:1;1653:13;1650:101;;;1739:1;1730:6;1725:3;1721:16;1714:27;1650:101;1499:258;1450:307;;;:::o;1763:102::-;1804:6;1855:2;1851:7;1846:2;1839:5;1835:14;1831:28;1821:38;;1763:102;;;:::o;1871:364::-;1959:3;1987:39;2020:5;1987:39;:::i;:::-;2042:71;2106:6;2101:3;2042:71;:::i;:::-;2035:78;;2122:52;2167:6;2162:3;2155:4;2148:5;2144:16;2122:52;:::i;:::-;2199:29;2221:6;2199:29;:::i;:::-;2194:3;2190:39;2183:46;;1963:272;1871:364;;;;:::o;2241:313::-;2354:4;2392:2;2381:9;2377:18;2369:26;;2441:9;2435:4;2431:20;2427:1;2416:9;2412:17;2405:47;2469:78;2542:4;2533:6;2469:78;:::i;:::-;2461:86;;2241:313;;;;:::o;2560:126::-;2597:7;2637:42;2630:5;2626:54;2615:65;;2560:126;;;:::o;2692:96::-;2729:7;2758:24;2776:5;2758:24;:::i;:::-;2747:35;;2692:96;;;:::o;2794:122::-;2867:24;2885:5;2867:24;:::i;:::-;2860:5;2857:35;2847:63;;2906:1;2903;2896:12;2847:63;2794:122;:::o;2922:139::-;2968:5;3006:6;2993:20;2984:29;;3022:33;3049:5;3022:33;:::i;:::-;2922:139;;;;:::o;3067:474::-;3135:6;3143;3192:2;3180:9;3171:7;3167:23;3163:32;3160:119;;;3198:79;;:::i;:::-;3160:119;3318:1;3343:53;3388:7;3379:6;3368:9;3364:22;3343:53;:::i;:::-;3333:63;;3289:117;3445:2;3471:53;3516:7;3507:6;3496:9;3492:22;3471:53;:::i;:::-;3461:63;;3416:118;3067:474;;;;;:::o;3547:90::-;3581:7;3624:5;3617:13;3610:21;3599:32;;3547:90;;;:::o;3643:109::-;3724:21;3739:5;3724:21;:::i;:::-;3719:3;3712:34;3643:109;;:::o;3758:210::-;3845:4;3883:2;3872:9;3868:18;3860:26;;3896:65;3958:1;3947:9;3943:17;3934:6;3896:65;:::i;:::-;3758:210;;;;:::o;3974:329::-;4033:6;4082:2;4070:9;4061:7;4057:23;4053:32;4050:119;;;4088:79;;:::i;:::-;4050:119;4208:1;4233:53;4278:7;4269:6;4258:9;4254:22;4233:53;:::i;:::-;4223:63;;4179:117;3974:329;;;;:::o;4309:60::-;4337:3;4358:5;4351:12;;4309:60;;;:::o;4375:142::-;4425:9;4458:53;4476:34;4485:24;4503:5;4485:24;:::i;:::-;4476:34;:::i;:::-;4458:53;:::i;:::-;4445:66;;4375:142;;;:::o;4523:126::-;4573:9;4606:37;4637:5;4606:37;:::i;:::-;4593:50;;4523:126;;;:::o;4655:153::-;4732:9;4765:37;4796:5;4765:37;:::i;:::-;4752:50;;4655:153;;;:::o;4814:185::-;4928:64;4986:5;4928:64;:::i;:::-;4923:3;4916:77;4814:185;;:::o;5005:276::-;5125:4;5163:2;5152:9;5148:18;5140:26;;5176:98;5271:1;5260:9;5256:17;5247:6;5176:98;:::i;:::-;5005:276;;;;:::o;5287:118::-;5374:24;5392:5;5374:24;:::i;:::-;5369:3;5362:37;5287:118;;:::o;5411:222::-;5504:4;5542:2;5531:9;5527:18;5519:26;;5555:71;5623:1;5612:9;5608:17;5599:6;5555:71;:::i;:::-;5411:222;;;;:::o;5639:329::-;5698:6;5747:2;5735:9;5726:7;5722:23;5718:32;5715:119;;;5753:79;;:::i;:::-;5715:119;5873:1;5898:53;5943:7;5934:6;5923:9;5919:22;5898:53;:::i;:::-;5888:63;;5844:117;5639:329;;;;:::o;5974:619::-;6051:6;6059;6067;6116:2;6104:9;6095:7;6091:23;6087:32;6084:119;;;6122:79;;:::i;:::-;6084:119;6242:1;6267:53;6312:7;6303:6;6292:9;6288:22;6267:53;:::i;:::-;6257:63;;6213:117;6369:2;6395:53;6440:7;6431:6;6420:9;6416:22;6395:53;:::i;:::-;6385:63;;6340:118;6497:2;6523:53;6568:7;6559:6;6548:9;6544:22;6523:53;:::i;:::-;6513:63;;6468:118;5974:619;;;;;:::o;6599:118::-;6686:24;6704:5;6686:24;:::i;:::-;6681:3;6674:37;6599:118;;:::o;6723:222::-;6816:4;6854:2;6843:9;6839:18;6831:26;;6867:71;6935:1;6924:9;6920:17;6911:6;6867:71;:::i;:::-;6723:222;;;;:::o;6951:86::-;6986:7;7026:4;7019:5;7015:16;7004:27;;6951:86;;;:::o;7043:112::-;7126:22;7142:5;7126:22;:::i;:::-;7121:3;7114:35;7043:112;;:::o;7161:214::-;7250:4;7288:2;7277:9;7273:18;7265:26;;7301:67;7365:1;7354:9;7350:17;7341:6;7301:67;:::i;:::-;7161:214;;;;:::o;7381:117::-;7490:1;7487;7480:12;7504:117;7613:1;7610;7603:12;7627:117;7736:1;7733;7726:12;7767:568;7840:8;7850:6;7900:3;7893:4;7885:6;7881:17;7877:27;7867:122;;7908:79;;:::i;:::-;7867:122;8021:6;8008:20;7998:30;;8051:18;8043:6;8040:30;8037:117;;;8073:79;;:::i;:::-;8037:117;8187:4;8179:6;8175:17;8163:29;;8241:3;8233:4;8225:6;8221:17;8211:8;8207:32;8204:41;8201:128;;;8248:79;;:::i;:::-;8201:128;7767:568;;;;;:::o;8358:::-;8431:8;8441:6;8491:3;8484:4;8476:6;8472:17;8468:27;8458:122;;8499:79;;:::i;:::-;8458:122;8612:6;8599:20;8589:30;;8642:18;8634:6;8631:30;8628:117;;;8664:79;;:::i;:::-;8628:117;8778:4;8770:6;8766:17;8754:29;;8832:3;8824:4;8816:6;8812:17;8802:8;8798:32;8795:41;8792:128;;;8839:79;;:::i;:::-;8792:128;8358:568;;;;;:::o;8932:934::-;9054:6;9062;9070;9078;9127:2;9115:9;9106:7;9102:23;9098:32;9095:119;;;9133:79;;:::i;:::-;9095:119;9281:1;9270:9;9266:17;9253:31;9311:18;9303:6;9300:30;9297:117;;;9333:79;;:::i;:::-;9297:117;9446:80;9518:7;9509:6;9498:9;9494:22;9446:80;:::i;:::-;9428:98;;;;9224:312;9603:2;9592:9;9588:18;9575:32;9634:18;9626:6;9623:30;9620:117;;;9656:79;;:::i;:::-;9620:117;9769:80;9841:7;9832:6;9821:9;9817:22;9769:80;:::i;:::-;9751:98;;;;9546:313;8932:934;;;;;;;:::o;9872:116::-;9942:21;9957:5;9942:21;:::i;:::-;9935:5;9932:32;9922:60;;9978:1;9975;9968:12;9922:60;9872:116;:::o;9994:133::-;10037:5;10075:6;10062:20;10053:29;;10091:30;10115:5;10091:30;:::i;:::-;9994:133;;;;:::o;10133:468::-;10198:6;10206;10255:2;10243:9;10234:7;10230:23;10226:32;10223:119;;;10261:79;;:::i;:::-;10223:119;10381:1;10406:53;10451:7;10442:6;10431:9;10427:22;10406:53;:::i;:::-;10396:63;;10352:117;10508:2;10534:50;10576:7;10567:6;10556:9;10552:22;10534:50;:::i;:::-;10524:60;;10479:115;10133:468;;;;;:::o;10607:323::-;10663:6;10712:2;10700:9;10691:7;10687:23;10683:32;10680:119;;;10718:79;;:::i;:::-;10680:119;10838:1;10863:50;10905:7;10896:6;10885:9;10881:22;10863:50;:::i;:::-;10853:60;;10809:114;10607:323;;;;:::o;10936:110::-;10987:7;11016:24;11034:5;11016:24;:::i;:::-;11005:35;;10936:110;;;:::o;11052:150::-;11139:38;11171:5;11139:38;:::i;:::-;11132:5;11129:49;11119:77;;11192:1;11189;11182:12;11119:77;11052:150;:::o;11208:167::-;11268:5;11306:6;11293:20;11284:29;;11322:47;11363:5;11322:47;:::i;:::-;11208:167;;;;:::o;11381:502::-;11463:6;11471;11520:2;11508:9;11499:7;11495:23;11491:32;11488:119;;;11526:79;;:::i;:::-;11488:119;11646:1;11671:67;11730:7;11721:6;11710:9;11706:22;11671:67;:::i;:::-;11661:77;;11617:131;11787:2;11813:53;11858:7;11849:6;11838:9;11834:22;11813:53;:::i;:::-;11803:63;;11758:118;11381:502;;;;;:::o;11889:474::-;11957:6;11965;12014:2;12002:9;11993:7;11989:23;11985:32;11982:119;;;12020:79;;:::i;:::-;11982:119;12140:1;12165:53;12210:7;12201:6;12190:9;12186:22;12165:53;:::i;:::-;12155:63;;12111:117;12267:2;12293:53;12338:7;12329:6;12318:9;12314:22;12293:53;:::i;:::-;12283:63;;12238:118;11889:474;;;;;:::o;12369:182::-;12509:34;12505:1;12497:6;12493:14;12486:58;12369:182;:::o;12557:366::-;12699:3;12720:67;12784:2;12779:3;12720:67;:::i;:::-;12713:74;;12796:93;12885:3;12796:93;:::i;:::-;12914:2;12909:3;12905:12;12898:19;;12557:366;;;:::o;12929:419::-;13095:4;13133:2;13122:9;13118:18;13110:26;;13182:9;13176:4;13172:20;13168:1;13157:9;13153:17;13146:47;13210:131;13336:4;13210:131;:::i;:::-;13202:139;;12929:419;;;:::o;13354:166::-;13494:18;13490:1;13482:6;13478:14;13471:42;13354:166;:::o;13526:366::-;13668:3;13689:67;13753:2;13748:3;13689:67;:::i;:::-;13682:74;;13765:93;13854:3;13765:93;:::i;:::-;13883:2;13878:3;13874:12;13867:19;;13526:366;;;:::o;13898:419::-;14064:4;14102:2;14091:9;14087:18;14079:26;;14151:9;14145:4;14141:20;14137:1;14126:9;14122:17;14115:47;14179:131;14305:4;14179:131;:::i;:::-;14171:139;;13898:419;;;:::o;14323:180::-;14371:77;14368:1;14361:88;14468:4;14465:1;14458:15;14492:4;14489:1;14482:15;14509:305;14549:3;14568:20;14586:1;14568:20;:::i;:::-;14563:25;;14602:20;14620:1;14602:20;:::i;:::-;14597:25;;14756:1;14688:66;14684:74;14681:1;14678:81;14675:107;;;14762:18;;:::i;:::-;14675:107;14806:1;14803;14799:9;14792:16;;14509:305;;;;:::o;14820:180::-;14868:77;14865:1;14858:88;14965:4;14962:1;14955:15;14989:4;14986:1;14979:15;15006:320;15050:6;15087:1;15081:4;15077:12;15067:22;;15134:1;15128:4;15124:12;15155:18;15145:81;;15211:4;15203:6;15199:17;15189:27;;15145:81;15273:2;15265:6;15262:14;15242:18;15239:38;15236:84;;;15292:18;;:::i;:::-;15236:84;15057:269;15006:320;;;:::o;15332:348::-;15372:7;15395:20;15413:1;15395:20;:::i;:::-;15390:25;;15429:20;15447:1;15429:20;:::i;:::-;15424:25;;15617:1;15549:66;15545:74;15542:1;15539:81;15534:1;15527:9;15520:17;15516:105;15513:131;;;15624:18;;:::i;:::-;15513:131;15672:1;15669;15665:9;15654:20;;15332:348;;;;:::o;15686:227::-;15826:34;15822:1;15814:6;15810:14;15803:58;15895:10;15890:2;15882:6;15878:15;15871:35;15686:227;:::o;15919:366::-;16061:3;16082:67;16146:2;16141:3;16082:67;:::i;:::-;16075:74;;16158:93;16247:3;16158:93;:::i;:::-;16276:2;16271:3;16267:12;16260:19;;15919:366;;;:::o;16291:419::-;16457:4;16495:2;16484:9;16480:18;16472:26;;16544:9;16538:4;16534:20;16530:1;16519:9;16515:17;16508:47;16572:131;16698:4;16572:131;:::i;:::-;16564:139;;16291:419;;;:::o;16716:177::-;16856:29;16852:1;16844:6;16840:14;16833:53;16716:177;:::o;16899:366::-;17041:3;17062:67;17126:2;17121:3;17062:67;:::i;:::-;17055:74;;17138:93;17227:3;17138:93;:::i;:::-;17256:2;17251:3;17247:12;17240:19;;16899:366;;;:::o;17271:419::-;17437:4;17475:2;17464:9;17460:18;17452:26;;17524:9;17518:4;17514:20;17510:1;17499:9;17495:17;17488:47;17552:131;17678:4;17552:131;:::i;:::-;17544:139;;17271:419;;;:::o;17696:170::-;17836:22;17832:1;17824:6;17820:14;17813:46;17696:170;:::o;17872:366::-;18014:3;18035:67;18099:2;18094:3;18035:67;:::i;:::-;18028:74;;18111:93;18200:3;18111:93;:::i;:::-;18229:2;18224:3;18220:12;18213:19;;17872:366;;;:::o;18244:419::-;18410:4;18448:2;18437:9;18433:18;18425:26;;18497:9;18491:4;18487:20;18483:1;18472:9;18468:17;18461:47;18525:131;18651:4;18525:131;:::i;:::-;18517:139;;18244:419;;;:::o;18669:175::-;18809:27;18805:1;18797:6;18793:14;18786:51;18669:175;:::o;18850:366::-;18992:3;19013:67;19077:2;19072:3;19013:67;:::i;:::-;19006:74;;19089:93;19178:3;19089:93;:::i;:::-;19207:2;19202:3;19198:12;19191:19;;18850:366;;;:::o;19222:419::-;19388:4;19426:2;19415:9;19411:18;19403:26;;19475:9;19469:4;19465:20;19461:1;19450:9;19446:17;19439:47;19503:131;19629:4;19503:131;:::i;:::-;19495:139;;19222:419;;;:::o;19647:180::-;19695:77;19692:1;19685:88;19792:4;19789:1;19782:15;19816:4;19813:1;19806:15;19833:244;19973:34;19969:1;19961:6;19957:14;19950:58;20042:27;20037:2;20029:6;20025:15;20018:52;19833:244;:::o;20083:366::-;20225:3;20246:67;20310:2;20305:3;20246:67;:::i;:::-;20239:74;;20322:93;20411:3;20322:93;:::i;:::-;20440:2;20435:3;20431:12;20424:19;;20083:366;;;:::o;20455:419::-;20621:4;20659:2;20648:9;20644:18;20636:26;;20708:9;20702:4;20698:20;20694:1;20683:9;20679:17;20672:47;20736:131;20862:4;20736:131;:::i;:::-;20728:139;;20455:419;;;:::o;20880:143::-;20937:5;20968:6;20962:13;20953:22;;20984:33;21011:5;20984:33;:::i;:::-;20880:143;;;;:::o;21029:351::-;21099:6;21148:2;21136:9;21127:7;21123:23;21119:32;21116:119;;;21154:79;;:::i;:::-;21116:119;21274:1;21299:64;21355:7;21346:6;21335:9;21331:22;21299:64;:::i;:::-;21289:74;;21245:128;21029:351;;;;:::o;21386:164::-;21526:16;21522:1;21514:6;21510:14;21503:40;21386:164;:::o;21556:366::-;21698:3;21719:67;21783:2;21778:3;21719:67;:::i;:::-;21712:74;;21795:93;21884:3;21795:93;:::i;:::-;21913:2;21908:3;21904:12;21897:19;;21556:366;;;:::o;21928:419::-;22094:4;22132:2;22121:9;22117:18;22109:26;;22181:9;22175:4;22171:20;22167:1;22156:9;22152:17;22145:47;22209:131;22335:4;22209:131;:::i;:::-;22201:139;;21928:419;;;:::o;22353:332::-;22474:4;22512:2;22501:9;22497:18;22489:26;;22525:71;22593:1;22582:9;22578:17;22569:6;22525:71;:::i;:::-;22606:72;22674:2;22663:9;22659:18;22650:6;22606:72;:::i;:::-;22353:332;;;;;:::o;22691:137::-;22745:5;22776:6;22770:13;22761:22;;22792:30;22816:5;22792:30;:::i;:::-;22691:137;;;;:::o;22834:345::-;22901:6;22950:2;22938:9;22929:7;22925:23;22921:32;22918:119;;;22956:79;;:::i;:::-;22918:119;23076:1;23101:61;23154:7;23145:6;23134:9;23130:22;23101:61;:::i;:::-;23091:71;;23047:125;22834:345;;;;:::o;23185:224::-;23325:34;23321:1;23313:6;23309:14;23302:58;23394:7;23389:2;23381:6;23377:15;23370:32;23185:224;:::o;23415:366::-;23557:3;23578:67;23642:2;23637:3;23578:67;:::i;:::-;23571:74;;23654:93;23743:3;23654:93;:::i;:::-;23772:2;23767:3;23763:12;23756:19;;23415:366;;;:::o;23787:419::-;23953:4;23991:2;23980:9;23976:18;23968:26;;24040:9;24034:4;24030:20;24026:1;24015:9;24011:17;24004:47;24068:131;24194:4;24068:131;:::i;:::-;24060:139;;23787:419;;;:::o;24212:162::-;24352:14;24348:1;24340:6;24336:14;24329:38;24212:162;:::o;24380:366::-;24522:3;24543:67;24607:2;24602:3;24543:67;:::i;:::-;24536:74;;24619:93;24708:3;24619:93;:::i;:::-;24737:2;24732:3;24728:12;24721:19;;24380:366;;;:::o;24752:419::-;24918:4;24956:2;24945:9;24941:18;24933:26;;25005:9;24999:4;24995:20;24991:1;24980:9;24976:17;24969:47;25033:131;25159:4;25033:131;:::i;:::-;25025:139;;24752:419;;;:::o;25177:225::-;25317:34;25313:1;25305:6;25301:14;25294:58;25386:8;25381:2;25373:6;25369:15;25362:33;25177:225;:::o;25408:366::-;25550:3;25571:67;25635:2;25630:3;25571:67;:::i;:::-;25564:74;;25647:93;25736:3;25647:93;:::i;:::-;25765:2;25760:3;25756:12;25749:19;;25408:366;;;:::o;25780:419::-;25946:4;25984:2;25973:9;25969:18;25961:26;;26033:9;26027:4;26023:20;26019:1;26008:9;26004:17;25997:47;26061:131;26187:4;26061:131;:::i;:::-;26053:139;;25780:419;;;:::o;26205:180::-;26253:77;26250:1;26243:88;26350:4;26347:1;26340:15;26374:4;26371:1;26364:15;26391:185;26431:1;26448:20;26466:1;26448:20;:::i;:::-;26443:25;;26482:20;26500:1;26482:20;:::i;:::-;26477:25;;26521:1;26511:35;;26526:18;;:::i;:::-;26511:35;26568:1;26565;26561:9;26556:14;;26391:185;;;;:::o;26582:223::-;26722:34;26718:1;26710:6;26706:14;26699:58;26791:6;26786:2;26778:6;26774:15;26767:31;26582:223;:::o;26811:366::-;26953:3;26974:67;27038:2;27033:3;26974:67;:::i;:::-;26967:74;;27050:93;27139:3;27050:93;:::i;:::-;27168:2;27163:3;27159:12;27152:19;;26811:366;;;:::o;27183:419::-;27349:4;27387:2;27376:9;27372:18;27364:26;;27436:9;27430:4;27426:20;27422:1;27411:9;27407:17;27400:47;27464:131;27590:4;27464:131;:::i;:::-;27456:139;;27183:419;;;:::o;27608:221::-;27748:34;27744:1;27736:6;27732:14;27725:58;27817:4;27812:2;27804:6;27800:15;27793:29;27608:221;:::o;27835:366::-;27977:3;27998:67;28062:2;28057:3;27998:67;:::i;:::-;27991:74;;28074:93;28163:3;28074:93;:::i;:::-;28192:2;28187:3;28183:12;28176:19;;27835:366;;;:::o;28207:419::-;28373:4;28411:2;28400:9;28396:18;28388:26;;28460:9;28454:4;28450:20;28446:1;28435:9;28431:17;28424:47;28488:131;28614:4;28488:131;:::i;:::-;28480:139;;28207:419;;;:::o;28632:224::-;28772:34;28768:1;28760:6;28756:14;28749:58;28841:7;28836:2;28828:6;28824:15;28817:32;28632:224;:::o;28862:366::-;29004:3;29025:67;29089:2;29084:3;29025:67;:::i;:::-;29018:74;;29101:93;29190:3;29101:93;:::i;:::-;29219:2;29214:3;29210:12;29203:19;;28862:366;;;:::o;29234:419::-;29400:4;29438:2;29427:9;29423:18;29415:26;;29487:9;29481:4;29477:20;29473:1;29462:9;29458:17;29451:47;29515:131;29641:4;29515:131;:::i;:::-;29507:139;;29234:419;;;:::o;29659:222::-;29799:34;29795:1;29787:6;29783:14;29776:58;29868:5;29863:2;29855:6;29851:15;29844:30;29659:222;:::o;29887:366::-;30029:3;30050:67;30114:2;30109:3;30050:67;:::i;:::-;30043:74;;30126:93;30215:3;30126:93;:::i;:::-;30244:2;30239:3;30235:12;30228:19;;29887:366;;;:::o;30259:419::-;30425:4;30463:2;30452:9;30448:18;30440:26;;30512:9;30506:4;30502:20;30498:1;30487:9;30483:17;30476:47;30540:131;30666:4;30540:131;:::i;:::-;30532:139;;30259:419;;;:::o;30684:165::-;30824:17;30820:1;30812:6;30808:14;30801:41;30684:165;:::o;30855:366::-;30997:3;31018:67;31082:2;31077:3;31018:67;:::i;:::-;31011:74;;31094:93;31183:3;31094:93;:::i;:::-;31212:2;31207:3;31203:12;31196:19;;30855:366;;;:::o;31227:419::-;31393:4;31431:2;31420:9;31416:18;31408:26;;31480:9;31474:4;31470:20;31466:1;31455:9;31451:17;31444:47;31508:131;31634:4;31508:131;:::i;:::-;31500:139;;31227:419;;;:::o;31652:172::-;31792:24;31788:1;31780:6;31776:14;31769:48;31652:172;:::o;31830:366::-;31972:3;31993:67;32057:2;32052:3;31993:67;:::i;:::-;31986:74;;32069:93;32158:3;32069:93;:::i;:::-;32187:2;32182:3;32178:12;32171:19;;31830:366;;;:::o;32202:419::-;32368:4;32406:2;32395:9;32391:18;32383:26;;32455:9;32449:4;32445:20;32441:1;32430:9;32426:17;32419:47;32483:131;32609:4;32483:131;:::i;:::-;32475:139;;32202:419;;;:::o;32627:240::-;32767:34;32763:1;32755:6;32751:14;32744:58;32836:23;32831:2;32823:6;32819:15;32812:48;32627:240;:::o;32873:366::-;33015:3;33036:67;33100:2;33095:3;33036:67;:::i;:::-;33029:74;;33112:93;33201:3;33112:93;:::i;:::-;33230:2;33225:3;33221:12;33214:19;;32873:366;;;:::o;33245:419::-;33411:4;33449:2;33438:9;33434:18;33426:26;;33498:9;33492:4;33488:20;33484:1;33473:9;33469:17;33462:47;33526:131;33652:4;33526:131;:::i;:::-;33518:139;;33245:419;;;:::o;33670:169::-;33810:21;33806:1;33798:6;33794:14;33787:45;33670:169;:::o;33845:366::-;33987:3;34008:67;34072:2;34067:3;34008:67;:::i;:::-;34001:74;;34084:93;34173:3;34084:93;:::i;:::-;34202:2;34197:3;34193:12;34186:19;;33845:366;;;:::o;34217:419::-;34383:4;34421:2;34410:9;34406:18;34398:26;;34470:9;34464:4;34460:20;34456:1;34445:9;34441:17;34434:47;34498:131;34624:4;34498:131;:::i;:::-;34490:139;;34217:419;;;:::o;34642:241::-;34782:34;34778:1;34770:6;34766:14;34759:58;34851:24;34846:2;34838:6;34834:15;34827:49;34642:241;:::o;34889:366::-;35031:3;35052:67;35116:2;35111:3;35052:67;:::i;:::-;35045:74;;35128:93;35217:3;35128:93;:::i;:::-;35246:2;35241:3;35237:12;35230:19;;34889:366;;;:::o;35261:419::-;35427:4;35465:2;35454:9;35450:18;35442:26;;35514:9;35508:4;35504:20;35500:1;35489:9;35485:17;35478:47;35542:131;35668:4;35542:131;:::i;:::-;35534:139;;35261:419;;;:::o;35686:191::-;35726:4;35746:20;35764:1;35746:20;:::i;:::-;35741:25;;35780:20;35798:1;35780:20;:::i;:::-;35775:25;;35819:1;35816;35813:8;35810:34;;;35824:18;;:::i;:::-;35810:34;35869:1;35866;35862:9;35854:17;;35686:191;;;;:::o;35883:225::-;36023:34;36019:1;36011:6;36007:14;36000:58;36092:8;36087:2;36079:6;36075:15;36068:33;35883:225;:::o;36114:366::-;36256:3;36277:67;36341:2;36336:3;36277:67;:::i;:::-;36270:74;;36353:93;36442:3;36353:93;:::i;:::-;36471:2;36466:3;36462:12;36455:19;;36114:366;;;:::o;36486:419::-;36652:4;36690:2;36679:9;36675:18;36667:26;;36739:9;36733:4;36729:20;36725:1;36714:9;36710:17;36703:47;36767:131;36893:4;36767:131;:::i;:::-;36759:139;;36486:419;;;:::o;36911:442::-;37060:4;37098:2;37087:9;37083:18;37075:26;;37111:71;37179:1;37168:9;37164:17;37155:6;37111:71;:::i;:::-;37192:72;37260:2;37249:9;37245:18;37236:6;37192:72;:::i;:::-;37274;37342:2;37331:9;37327:18;37318:6;37274:72;:::i;:::-;36911:442;;;;;;:::o;37359:147::-;37460:11;37497:3;37482:18;;37359:147;;;;:::o;37512:114::-;;:::o;37632:398::-;37791:3;37812:83;37893:1;37888:3;37812:83;:::i;:::-;37805:90;;37904:93;37993:3;37904:93;:::i;:::-;38022:1;38017:3;38013:11;38006:18;;37632:398;;;:::o;38036:379::-;38220:3;38242:147;38385:3;38242:147;:::i;:::-;38235:154;;38406:3;38399:10;;38036:379;;;:::o;38421:180::-;38469:77;38466:1;38459:88;38566:4;38563:1;38556:15;38590:4;38587:1;38580:15;38607:143;38664:5;38695:6;38689:13;38680:22;;38711:33;38738:5;38711:33;:::i;:::-;38607:143;;;;:::o;38756:351::-;38826:6;38875:2;38863:9;38854:7;38850:23;38846:32;38843:119;;;38881:79;;:::i;:::-;38843:119;39001:1;39026:64;39082:7;39073:6;39062:9;39058:22;39026:64;:::i;:::-;39016:74;;38972:128;38756:351;;;;:::o;39113:85::-;39158:7;39187:5;39176:16;;39113:85;;;:::o;39204:158::-;39262:9;39295:61;39313:42;39322:32;39348:5;39322:32;:::i;:::-;39313:42;:::i;:::-;39295:61;:::i;:::-;39282:74;;39204:158;;;:::o;39368:147::-;39463:45;39502:5;39463:45;:::i;:::-;39458:3;39451:58;39368:147;;:::o;39521:114::-;39588:6;39622:5;39616:12;39606:22;;39521:114;;;:::o;39641:184::-;39740:11;39774:6;39769:3;39762:19;39814:4;39809:3;39805:14;39790:29;;39641:184;;;;:::o;39831:132::-;39898:4;39921:3;39913:11;;39951:4;39946:3;39942:14;39934:22;;39831:132;;;:::o;39969:108::-;40046:24;40064:5;40046:24;:::i;:::-;40041:3;40034:37;39969:108;;:::o;40083:179::-;40152:10;40173:46;40215:3;40207:6;40173:46;:::i;:::-;40251:4;40246:3;40242:14;40228:28;;40083:179;;;;:::o;40268:113::-;40338:4;40370;40365:3;40361:14;40353:22;;40268:113;;;:::o;40417:732::-;40536:3;40565:54;40613:5;40565:54;:::i;:::-;40635:86;40714:6;40709:3;40635:86;:::i;:::-;40628:93;;40745:56;40795:5;40745:56;:::i;:::-;40824:7;40855:1;40840:284;40865:6;40862:1;40859:13;40840:284;;;40941:6;40935:13;40968:63;41027:3;41012:13;40968:63;:::i;:::-;40961:70;;41054:60;41107:6;41054:60;:::i;:::-;41044:70;;40900:224;40887:1;40884;40880:9;40875:14;;40840:284;;;40844:14;41140:3;41133:10;;40541:608;;;40417:732;;;;:::o;41155:831::-;41418:4;41456:3;41445:9;41441:19;41433:27;;41470:71;41538:1;41527:9;41523:17;41514:6;41470:71;:::i;:::-;41551:80;41627:2;41616:9;41612:18;41603:6;41551:80;:::i;:::-;41678:9;41672:4;41668:20;41663:2;41652:9;41648:18;41641:48;41706:108;41809:4;41800:6;41706:108;:::i;:::-;41698:116;;41824:72;41892:2;41881:9;41877:18;41868:6;41824:72;:::i;:::-;41906:73;41974:3;41963:9;41959:19;41950:6;41906:73;:::i;:::-;41155:831;;;;;;;;:::o;41992:807::-;42241:4;42279:3;42268:9;42264:19;42256:27;;42293:71;42361:1;42350:9;42346:17;42337:6;42293:71;:::i;:::-;42374:72;42442:2;42431:9;42427:18;42418:6;42374:72;:::i;:::-;42456:80;42532:2;42521:9;42517:18;42508:6;42456:80;:::i;:::-;42546;42622:2;42611:9;42607:18;42598:6;42546:80;:::i;:::-;42636:73;42704:3;42693:9;42689:19;42680:6;42636:73;:::i;:::-;42719;42787:3;42776:9;42772:19;42763:6;42719:73;:::i;:::-;41992:807;;;;;;;;;:::o;42805:663::-;42893:6;42901;42909;42958:2;42946:9;42937:7;42933:23;42929:32;42926:119;;;42964:79;;:::i;:::-;42926:119;43084:1;43109:64;43165:7;43156:6;43145:9;43141:22;43109:64;:::i;:::-;43099:74;;43055:128;43222:2;43248:64;43304:7;43295:6;43284:9;43280:22;43248:64;:::i;:::-;43238:74;;43193:129;43361:2;43387:64;43443:7;43434:6;43423:9;43419:22;43387:64;:::i;:::-;43377:74;;43332:129;42805:663;;;;;:::o
Swarm Source
ipfs://9ffa1159b1fc8cb1bb90c09130e9bafb2c4e6d19c1c350a9662bef5ec9de9a88
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.