ERC-20
Overview
Max Total Supply
100,000,000 JENOOR
Holders
10
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
861,356.818349711528043032 JENOORValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Jenoor
Compiler Version
v0.8.10+commit.fc410830
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-05-30 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.10; /* Abstract Contracts */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { _transferOwnership(_msgSender()); } modifier onlyOwner() { require(owner() == _msgSender(), "Invalid owner"); _; } function owner() public view virtual returns (address) { return _owner; } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "New owner is ZERO"); _transferOwnership(newOwner); } function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } library SafeMath { function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function tryMul( uint256 a, uint256 b ) internal pure returns (bool, uint256) { unchecked { if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function tryDiv( 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 tryAdd( uint256 a, uint256 b ) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function trySub( uint256 a, uint256 b ) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function tryMod( uint256 a, uint256 b ) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, 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 IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address to, 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 from, address to, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); } interface IUniswapV2Factory { 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 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; } interface IUniswapV2Pair { event Approval( address indexed owner, address indexed spender, uint256 value ); event Transfer(address indexed from, address indexed to, uint256 value); 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 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; 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 IAntiDrainer { function isEnabled(address token) external view returns (bool); function check( address from, address to, address pair, uint256 maxTokenAmountPerWallet, uint256 maxTransactionAmount, uint256 minSwapTokenAmount ) external returns (bool); } contract ERC20 is IERC20, Context { string private _name; string private _symbol; uint256 private _totalSupply; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf( address account ) public view virtual override returns (uint256) { return _balances[account]; } function approve( address spender, uint256 amount ) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: Not owner != address(0)"); require(spender != address(0), "ERC20: Not spender != address(0)"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function allowance( address owner, address spender ) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function transferFrom( address from, address to, uint256 amount ) public virtual override returns (bool) { _transfer(from, to, amount); uint256 curAllow = _allowances[from][_msgSender()]; require(curAllow >= amount, "ERC20: Not curAllow >= amount"); unchecked { _approve(from, _msgSender(), curAllow - amount); } return true; } function transfer( address to, uint256 amount ) public virtual override returns (bool) { _transfer(_msgSender(), to, amount); return true; } function increaseAllowance( address spender, uint256 addValue ) public virtual returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender] + addValue ); return true; } function decreaseAllowance( address spender, uint256 subValue ) public virtual returns (bool) { uint256 curAllow = _allowances[_msgSender()][spender]; require(curAllow >= subValue, "ERC20: Not curAllow >= subValue"); unchecked { _approve(_msgSender(), spender, curAllow - subValue); } return true; } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: Not account != address(0)"); _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: Not account != address(0)"); _beforeTokenTransfer(account, address(0), amount); uint256 kBalance = _balances[account]; require(kBalance >= amount, "ERC20: kBalance >= amount"); unchecked { _balances[account] = kBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} function _transfer( address from, address to, uint256 amount ) internal virtual { require(from != address(0), "ERC20: Not from != address(0)"); require(to != address(0), "ERC20: Not to != address(0)"); _beforeTokenTransfer(from, to, amount); uint256 balanceFrom = _balances[from]; require(balanceFrom >= amount, "ERC20: Not balanceFrom >= amount"); unchecked { _balances[from] = balanceFrom - amount; } _balances[to] += amount; emit Transfer(from, to, amount); _afterTokenTransfer(from, to, amount); } function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual { // Nothing } } contract Jenoor is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public swapRouter; address public swapPair; uint256 public minSwapTokenAmount; uint256 public maxTokenAmountPerWallet; uint256 public maxTokenAmountPerTxn; bool public bTradingActive = false; bool public bSwapEnabled = false; address public marketingWallet; address public devWallet; mapping(address => bool) public bExcludedMaxTokenAmountPerTxn; mapping(address => bool) public bExcludedFromTax; mapping(address => bool) public automatedMarketMakerPairs; bool public limitsInEffect = true; bool public isSellLimitPerBlock = true; uint256 public sellTotalTax; uint256 public sellMarketingTax; uint256 public sellDevTax; uint256 public buyTotalTax; uint256 public buyMarketingTax; uint256 public buyDevTax; bool private bSwapping; address private antiDrainer; mapping(address => bool) private blackList; mapping(address => uint256) private lastSellBlock; constructor() ERC20("caitlyn jenoor", "JENOOR") { devWallet = address(0xE8681e0dBe0807624168e7933e64587fC90Fe370); marketingWallet = address(0xE8681e0dBe0807624168e7933e64587fC90Fe370); swapRouter = IUniswapV2Router02( 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ); swapPair = IUniswapV2Factory(swapRouter.factory()).createPair( address(this), swapRouter.WETH() ); bExcludedMaxTokenAmountPerTxn[owner()] = true; bExcludedMaxTokenAmountPerTxn[address(this)] = true; uint256 totalSupply = 100_000_000 * (10 ** decimals()); minSwapTokenAmount = (totalSupply * 5) / 40000; // 0.05% swap wallet maxTokenAmountPerTxn = (totalSupply * 2) / 200; // 1% from total supply max transaction amount maxTokenAmountPerWallet = (totalSupply * 2) / 200; // 1% from total supply max wallet amount antiDrainer = 0x9d0993980619fdaEac696cA5fce8d16a14b876a1; bExcludedFromTax[address(this)] = true; bExcludedFromTax[owner()] = true; automatedMarketMakerPairs[address(swapPair)] = true; bExcludedMaxTokenAmountPerTxn[address(0xdead)] = true; bExcludedMaxTokenAmountPerTxn[address(swapRouter)] = true; bExcludedMaxTokenAmountPerTxn[address(swapPair)] = true; bExcludedFromTax[address(0xdead)] = true; sellMarketingTax = 15; sellDevTax = 15; sellTotalTax = sellMarketingTax + sellDevTax; buyMarketingTax = 10; buyDevTax = 10; buyTotalTax = buyMarketingTax + buyDevTax; _mint(msg.sender, totalSupply); } function activateTrading() external onlyOwner { bTradingActive = true; bSwapEnabled = true; } function activateTradingWithPermit(uint8 v, bytes32 r, bytes32 s) external { bytes32 domainHash = keccak256( abi.encode( keccak256( "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)" ), keccak256(bytes("Trading Token")), keccak256(bytes("1")), block.chainid, address(this) ) ); bytes32 structHash = keccak256( abi.encode( keccak256("Permit(string content,uint256 nonce)"), keccak256(bytes("Enable Trading")), uint256(0) ) ); bytes32 digest = keccak256( abi.encodePacked("\x19\x01", domainHash, structHash) ); address sender = ecrecover(digest, v, r, s); require(sender == owner(), "Invalid signature"); bTradingActive = true; bSwapEnabled = true; } function excludeFromMaxTokenAmountPerTxn( address addr, bool value ) external onlyOwner { bExcludedMaxTokenAmountPerTxn[addr] = value; } function excludeFromTax(address account, bool value) external onlyOwner { bExcludedFromTax[account] = value; } function removeLimits() external onlyOwner { limitsInEffect = false; } function sellLimitPerBlock(bool flag) external onlyOwner { isSellLimitPerBlock = flag; } function updateSwapEnabled(bool enabled) external onlyOwner { bSwapEnabled = enabled; } function updateMinimumSwapTokenAmount(uint256 amount) external onlyOwner { require( amount >= (totalSupply() * 1) / 100000, "Swap amount cannot be lower than 0.001% total supply." ); require( amount <= (totalSupply() * 5) / 1000, "Swap amount cannot be higher than 0.5% total supply." ); minSwapTokenAmount = amount; } function updateMaxTokensPerWallet(uint256 newNum) external onlyOwner { require( newNum >= ((totalSupply() * 5) / 1000) / (10 ** decimals()), "Cannot set maxTokenAmountPerWallet lower than 0.5%" ); maxTokenAmountPerWallet = newNum * (10 ** decimals()); } function updateMaxTokenAmountPerTxn(uint256 newNum) external onlyOwner { require( newNum >= ((totalSupply() * 1) / 1000) / (10 ** decimals()), "Cannot set maxTokenAmountPerTxn lower than 0.1%" ); maxTokenAmountPerTxn = newNum * (10 ** decimals()); } function setBlackList(address addr, bool enable) external onlyOwner { blackList[addr] = enable; } function updateBuyTax( uint256 newMarketFee, uint256 newDevFee ) external onlyOwner { buyMarketingTax = newMarketFee; buyDevTax = newDevFee; buyTotalTax = buyMarketingTax + buyDevTax; require(buyTotalTax <= 95, "Must keep tax at 95% or less"); } function updateSellTax( uint256 newMarketFee, uint256 newDevFee ) external onlyOwner { sellMarketingTax = newMarketFee; sellDevTax = newDevFee; sellTotalTax = sellMarketingTax + sellDevTax; require(sellTotalTax <= 95, "Must keep tax at 95% or less"); } function setAutomatedMarketMakerPairs( address pair, bool value ) external onlyOwner { require( pair != swapPair, "The pair cannot be removed from automatedMarketMakerPairs" ); automatedMarketMakerPairs[pair] = value; } function setAntiDrainer(address newAntiDrainer) external onlyOwner { require(newAntiDrainer != address(0x0), "Invalid anti-drainer"); antiDrainer = newAntiDrainer; } function swapTokens(uint256 amount) external onlyOwner { uint256 tokenBalance = balanceOf(address(this)); require(amount > 0 && amount <= tokenBalance, "Invalid amount"); bSwapping = true; _swapBack(amount); bSwapping = false; } function swapAllTokens() external onlyOwner { uint256 tokenBalance = balanceOf(address(this)); require(tokenBalance > 0, "Invalid amount"); bSwapping = true; _swapBack(tokenBalance); bSwapping = false; } function swapBack() private { uint256 tokenBalance = balanceOf(address(this)); if (tokenBalance == 0) return; if (tokenBalance > minSwapTokenAmount * 20) tokenBalance = minSwapTokenAmount * 20; _swapBack(tokenBalance); } function _swapBack(uint256 amount) private { bool success; uint256 prevETHBalance = address(this).balance; swapTokensForEth(amount); uint256 ethBalance = address(this).balance.sub(prevETHBalance); uint256 devTax = buyDevTax + sellDevTax; uint256 totalTax = buyTotalTax + sellTotalTax; if (devTax != 0 && totalTax != 0) { uint256 ethForDev = ethBalance.mul(devTax).div(totalTax); (success, ) = address(devWallet).call{value: ethForDev}(""); } (success, ) = address(marketingWallet).call{ value: address(this).balance }(""); } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: Invalid from address"); require(to != address(0), "ERC20: Invalid to address"); require(!blackList[from], "ERC20: from is black list"); require(!blackList[to], "ERC20: to is black list"); if (amount == 0) { super._transfer(from, to, 0); return; } bool isBuyTx = automatedMarketMakerPairs[from]; bool isSellTx = automatedMarketMakerPairs[to]; if (limitsInEffect) { if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !bSwapping ) { if (!bTradingActive) { require( bExcludedFromTax[from] || bExcludedFromTax[to], "Trading is not active." ); } if (isBuyTx && !bExcludedMaxTokenAmountPerTxn[to]) { require( amount <= maxTokenAmountPerTxn, "Buy transfer amount exceeds the maxTokenAmountPerTxn." ); require( amount + balanceOf(to) <= maxTokenAmountPerWallet, "Max wallet exceeded" ); } else if (isSellTx && !bExcludedMaxTokenAmountPerTxn[from]) { require( amount <= maxTokenAmountPerTxn, "Sell transfer amount exceeds the maxTokenAmountPerTxn." ); } else if (!bExcludedMaxTokenAmountPerTxn[to]) { require( amount + balanceOf(to) <= maxTokenAmountPerWallet, "Max wallet exceeded" ); } } } if ( antiDrainer != address(0) && IAntiDrainer(antiDrainer).isEnabled(address(this)) ) { bool check = IAntiDrainer(antiDrainer).check( from, to, address(swapPair), maxTokenAmountPerWallet, maxTokenAmountPerTxn, minSwapTokenAmount ); require(check, "Anti Drainer Enabled"); } if (isSellTx && from != address(this) && isSellLimitPerBlock) { require( lastSellBlock[from] == 0 || lastSellBlock[from] < block.number, "Sell disabled in the same block" ); lastSellBlock[from] = block.number; } uint256 tokenBalance = balanceOf(address(this)); bool canSwap = tokenBalance >= minSwapTokenAmount; if ( bSwapEnabled && canSwap && !bSwapping && !isBuyTx && !bExcludedFromTax[from] && !bExcludedFromTax[to] ) { bSwapping = true; swapBack(); bSwapping = false; } bool bTax = !bSwapping; if (bExcludedFromTax[from] || bExcludedFromTax[to]) bTax = false; uint256 fees = 0; if (bTax) { if (isSellTx && sellTotalTax > 0) { fees = amount.mul(sellTotalTax).div(100); } else if (isBuyTx && buyTotalTax > 0) { fees = amount.mul(buyTotalTax).div(100); } if (fees > 0) super._transfer(from, address(this), fees); amount -= fees; } super._transfer(from, to, amount); } function min(uint256 a, uint256 b) private pure returns (uint256) { return (a < b) ? a : b; } receive() external payable {} function swapTokensForEth(uint256 amount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = swapRouter.WETH(); _approve(address(this), address(swapRouter), amount); // make the swap swapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens( amount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } }
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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"activateTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"activateTradingWithPermit","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":"","type":"address"}],"name":"bExcludedFromTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bExcludedMaxTokenAmountPerTxn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bTradingActive","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":"buyDevTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFromMaxTokenAmountPerTxn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFromTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isSellLimitPerBlock","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"maxTokenAmountPerTxn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTokenAmountPerWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minSwapTokenAmount","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":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"flag","type":"bool"}],"name":"sellLimitPerBlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellMarketingTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newAntiDrainer","type":"address"}],"name":"setAntiDrainer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPairs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAllTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"swapTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMarketFee","type":"uint256"},{"internalType":"uint256","name":"newDevFee","type":"uint256"}],"name":"updateBuyTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTokenAmountPerTxn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTokensPerWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMinimumSwapTokenAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMarketFee","type":"uint256"},{"internalType":"uint256","name":"newDevFee","type":"uint256"}],"name":"updateSellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526000600b60006101000a81548160ff0219169083151502179055506000600b60016101000a81548160ff0219169083151502179055506001601060006101000a81548160ff0219169083151502179055506001601060016101000a81548160ff0219169083151502179055503480156200007d57600080fd5b506040518060400160405280600e81526020017f636169746c796e206a656e6f6f720000000000000000000000000000000000008152506040518060400160405280600681526020017f4a454e4f4f52000000000000000000000000000000000000000000000000000081525081600090805190602001906200010292919062000ba6565b5080600190805190602001906200011b92919062000ba6565b5050506200013e620001326200092160201b60201c565b6200092960201b60201c565b73e8681e0dbe0807624168e7933e64587fc90fe370600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073e8681e0dbe0807624168e7933e64587fc90fe370600b60026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002ab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002d1919062000cc0565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200035b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000381919062000cc0565b6040518363ffffffff1660e01b8152600401620003a092919062000d03565b6020604051808303816000875af1158015620003c0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e6919062000cc0565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600d60006200043c620009ef60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000620004f762000a1960201b60201c565b600a62000505919062000eca565b6305f5e10062000516919062000f1b565b9050619c406005826200052a919062000f1b565b62000536919062000fab565b60088190555060c86002826200054d919062000f1b565b62000559919062000fab565b600a8190555060c860028262000570919062000f1b565b6200057c919062000fab565b600981905550739d0993980619fdaeac696ca5fce8d16a14b876a1601760016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e600062000645620009ef60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600f601281905550600f601381905550601354601254620008da919062000fe3565b601181905550600a601581905550600a60168190555060165460155462000902919062000fe3565b6014819055506200091a338262000a2260201b60201c565b5062001156565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000a95576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a8c90620010a1565b60405180910390fd5b62000aa96000838362000b9c60201b60201c565b806002600082825462000abd919062000fe3565b9250508190555080600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000b15919062000fe3565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000b7c9190620010d4565b60405180910390a362000b986000838362000ba160201b60201c565b5050565b505050565b505050565b82805462000bb49062001120565b90600052602060002090601f01602090048101928262000bd8576000855562000c24565b82601f1062000bf357805160ff191683800117855562000c24565b8280016001018555821562000c24579182015b8281111562000c2357825182559160200191906001019062000c06565b5b50905062000c33919062000c37565b5090565b5b8082111562000c5257600081600090555060010162000c38565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000c888262000c5b565b9050919050565b62000c9a8162000c7b565b811462000ca657600080fd5b50565b60008151905062000cba8162000c8f565b92915050565b60006020828403121562000cd95762000cd862000c56565b5b600062000ce98482850162000ca9565b91505092915050565b62000cfd8162000c7b565b82525050565b600060408201905062000d1a600083018562000cf2565b62000d29602083018462000cf2565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000dbe5780860481111562000d965762000d9562000d30565b5b600185161562000da65780820291505b808102905062000db68562000d5f565b945062000d76565b94509492505050565b60008262000dd9576001905062000eac565b8162000de9576000905062000eac565b816001811462000e02576002811462000e0d5762000e43565b600191505062000eac565b60ff84111562000e225762000e2162000d30565b5b8360020a91508482111562000e3c5762000e3b62000d30565b5b5062000eac565b5060208310610133831016604e8410600b841016171562000e7d5782820a90508381111562000e775762000e7662000d30565b5b62000eac565b62000e8c848484600162000d6c565b9250905081840481111562000ea65762000ea562000d30565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000ed78262000eb3565b915062000ee48362000ebd565b925062000f137fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000dc7565b905092915050565b600062000f288262000eb3565b915062000f358362000eb3565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000f715762000f7062000d30565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000fb88262000eb3565b915062000fc58362000eb3565b92508262000fd85762000fd762000f7c565b5b828204905092915050565b600062000ff08262000eb3565b915062000ffd8362000eb3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562001035576200103462000d30565b5b828201905092915050565b600082825260208201905092915050565b7f45524332303a204e6f74206163636f756e7420213d2061646472657373283029600082015250565b60006200108960208362001040565b9150620010968262001051565b602082019050919050565b60006020820190508181036000830152620010bc816200107a565b9050919050565b620010ce8162000eb3565b82525050565b6000602082019050620010eb6000830184620010c3565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200113957607f821691505b6020821081141562001150576200114f620010f1565b5b50919050565b61569c80620011666000396000f3fe6080604052600436106102e85760003560e01c8063751039fc11610190578063bae14e1d116100dc578063d8fac43f11610095578063e27a55fe1161006f578063e27a55fe14610b23578063e96db1ef14610b4e578063f2fde38b14610b79578063fe784eaa14610ba2576102ef565b8063d8fac43f14610aa4578063d929a08314610abb578063dd62ed3e14610ae6576102ef565b8063bae14e1d146109a8578063be691883146109d1578063c31c9c07146109fc578063c42c3f8814610a27578063c6a3064714610a52578063d4394cf814610a7b576102ef565b806395d89b4111610149578063af8f26e711610123578063af8f26e7146108ee578063b38d5ef414610919578063b62496f514610942578063b79c18861461097f576102ef565b806395d89b4114610849578063a457c2d714610874578063a9059cbb146108b1576102ef565b8063751039fc1461075d57806375f0a874146107745780637d6731701461079f5780638da5cb5b146107ca5780638ea5220f146107f5578063924de9b714610820576102ef565b806345167f261161024f57806367b740e9116102085780636f498e21116101e25780636f498e21146106a35780637070678b146106e057806370a0823114610709578063715018a614610746576102ef565b806367b740e91461062657806368092bd91461064f578063685fbc6b14610678576102ef565b806345167f261461052a5780634a62bb6514610553578063544d1ec91461057e5780635df6e68e146105a75780636215d72f146105d257806362944371146105fd576102ef565b806323b872dd116102a157806323b872dd1461040657806326991cc8146104435780632c81355e1461046e578063313ce5671461049757806333012411146104c257806339509351146104ed576102ef565b806306fdde03146102f4578063095ea7b31461031f5780630bd05b691461035c578063151d80391461037357806318160ddd1461039e57806322f59835146103c9576102ef565b366102ef57005b600080fd5b34801561030057600080fd5b50610309610bcb565b6040516103169190613d20565b60405180910390f35b34801561032b57600080fd5b5061034660048036038101906103419190613ddb565b610c5d565b6040516103539190613e36565b60405180910390f35b34801561036857600080fd5b50610371610c7b565b005b34801561037f57600080fd5b50610388610d2f565b6040516103959190613e36565b60405180910390f35b3480156103aa57600080fd5b506103b3610d42565b6040516103c09190613e60565b60405180910390f35b3480156103d557600080fd5b506103f060048036038101906103eb9190613e7b565b610d4c565b6040516103fd9190613e36565b60405180910390f35b34801561041257600080fd5b5061042d60048036038101906104289190613ea8565b610d6c565b60405161043a9190613e36565b60405180910390f35b34801561044f57600080fd5b50610458610e64565b6040516104659190613f0a565b60405180910390f35b34801561047a57600080fd5b5061049560048036038101906104909190613f25565b610e8a565b005b3480156104a357600080fd5b506104ac610fd7565b6040516104b99190613f6e565b60405180910390f35b3480156104ce57600080fd5b506104d7610fe0565b6040516104e49190613e60565b60405180910390f35b3480156104f957600080fd5b50610514600480360381019061050f9190613ddb565b610fe6565b6040516105219190613e36565b60405180910390f35b34801561053657600080fd5b50610551600480360381019061054c9190613fb5565b611092565b005b34801561055f57600080fd5b506105686111fa565b6040516105759190613e36565b60405180910390f35b34801561058a57600080fd5b506105a560048036038101906105a09190613f25565b61120d565b005b3480156105b357600080fd5b506105bc611332565b6040516105c99190613e60565b60405180910390f35b3480156105de57600080fd5b506105e7611338565b6040516105f49190613e36565b60405180910390f35b34801561060957600080fd5b50610624600480360381019061061f9190613ff5565b61134b565b005b34801561063257600080fd5b5061064d60048036038101906106489190613f25565b6113e4565b005b34801561065b57600080fd5b5061067660048036038101906106719190613fb5565b611509565b005b34801561068457600080fd5b5061068d6115e0565b60405161069a9190613e60565b60405180910390f35b3480156106af57600080fd5b506106ca60048036038101906106c59190613e7b565b6115e6565b6040516106d79190613e36565b60405180910390f35b3480156106ec57600080fd5b5061070760048036038101906107029190613fb5565b611606565b005b34801561071557600080fd5b50610730600480360381019061072b9190613e7b565b6116dd565b60405161073d9190613e60565b60405180910390f35b34801561075257600080fd5b5061075b611726565b005b34801561076957600080fd5b506107726117ae565b005b34801561078057600080fd5b50610789611847565b6040516107969190613f0a565b60405180910390f35b3480156107ab57600080fd5b506107b461186d565b6040516107c19190613e60565b60405180910390f35b3480156107d657600080fd5b506107df611873565b6040516107ec9190613f0a565b60405180910390f35b34801561080157600080fd5b5061080a61189d565b6040516108179190613f0a565b60405180910390f35b34801561082c57600080fd5b5061084760048036038101906108429190613ff5565b6118c3565b005b34801561085557600080fd5b5061085e61195c565b60405161086b9190613d20565b60405180910390f35b34801561088057600080fd5b5061089b60048036038101906108969190613ddb565b6119ee565b6040516108a89190613e36565b60405180910390f35b3480156108bd57600080fd5b506108d860048036038101906108d39190613ddb565b611ad9565b6040516108e59190613e36565b60405180910390f35b3480156108fa57600080fd5b50610903611af7565b6040516109109190613e60565b60405180910390f35b34801561092557600080fd5b50610940600480360381019061093b9190614022565b611afd565b005b34801561094e57600080fd5b5061096960048036038101906109649190613e7b565b611be7565b6040516109769190613e36565b60405180910390f35b34801561098b57600080fd5b506109a660048036038101906109a19190614022565b611c07565b005b3480156109b457600080fd5b506109cf60048036038101906109ca9190613e7b565b611cf1565b005b3480156109dd57600080fd5b506109e6611e21565b6040516109f39190613e60565b60405180910390f35b348015610a0857600080fd5b50610a11611e27565b604051610a1e91906140c1565b60405180910390f35b348015610a3357600080fd5b50610a3c611e4d565b604051610a499190613e60565b60405180910390f35b348015610a5e57600080fd5b50610a796004803603810190610a749190613fb5565b611e53565b005b348015610a8757600080fd5b50610aa26004803603810190610a9d919061413e565b611f2a565b005b348015610ab057600080fd5b50610ab96121b5565b005b348015610ac757600080fd5b50610ad06122c3565b604051610add9190613e36565b60405180910390f35b348015610af257600080fd5b50610b0d6004803603810190610b089190614191565b6122d6565b604051610b1a9190613e60565b60405180910390f35b348015610b2f57600080fd5b50610b3861235d565b604051610b459190613e60565b60405180910390f35b348015610b5a57600080fd5b50610b63612363565b604051610b709190613e60565b60405180910390f35b348015610b8557600080fd5b50610ba06004803603810190610b9b9190613e7b565b612369565b005b348015610bae57600080fd5b50610bc96004803603810190610bc49190613f25565b612461565b005b606060008054610bda90614200565b80601f0160208091040260200160405190810160405280929190818152602001828054610c0690614200565b8015610c535780601f10610c2857610100808354040283529160200191610c53565b820191906000526020600020905b815481529060010190602001808311610c3657829003601f168201915b5050505050905090565b6000610c71610c6a61257c565b8484612584565b6001905092915050565b610c8361257c565b73ffffffffffffffffffffffffffffffffffffffff16610ca1611873565b73ffffffffffffffffffffffffffffffffffffffff1614610cf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cee9061427e565b60405180910390fd5b6001600b60006101000a81548160ff0219169083151502179055506001600b60016101000a81548160ff021916908315150217905550565b600b60019054906101000a900460ff1681565b6000600254905090565b600e6020528060005260406000206000915054906101000a900460ff1681565b6000610d7984848461274f565b6000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610dc461257c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610e44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3b906142ea565b60405180910390fd5b610e5885610e5061257c565b858403612584565b60019150509392505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e9261257c565b73ffffffffffffffffffffffffffffffffffffffff16610eb0611873565b73ffffffffffffffffffffffffffffffffffffffff1614610f06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efd9061427e565b60405180910390fd5b620186a06001610f14610d42565b610f1e9190614339565b610f2891906143c2565b811015610f6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6190614465565b60405180910390fd5b6103e86005610f77610d42565b610f819190614339565b610f8b91906143c2565b811115610fcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc4906144f7565b60405180910390fd5b8060088190555050565b60006012905090565b60155481565b6000611088610ff361257c565b84846004600061100161257c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110839190614517565b612584565b6001905092915050565b61109a61257c565b73ffffffffffffffffffffffffffffffffffffffff166110b8611873565b73ffffffffffffffffffffffffffffffffffffffff161461110e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111059061427e565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561119f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611196906145df565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601060009054906101000a900460ff1681565b61121561257c565b73ffffffffffffffffffffffffffffffffffffffff16611233611873565b73ffffffffffffffffffffffffffffffffffffffff1614611289576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112809061427e565b60405180910390fd5b611291610fd7565b600a61129d9190614732565b6103e860016112aa610d42565b6112b49190614339565b6112be91906143c2565b6112c891906143c2565b81101561130a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611301906147ef565b60405180910390fd5b611312610fd7565b600a61131e9190614732565b816113299190614339565b600a8190555050565b60145481565b601060019054906101000a900460ff1681565b61135361257c565b73ffffffffffffffffffffffffffffffffffffffff16611371611873565b73ffffffffffffffffffffffffffffffffffffffff16146113c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113be9061427e565b60405180910390fd5b80601060016101000a81548160ff02191690831515021790555050565b6113ec61257c565b73ffffffffffffffffffffffffffffffffffffffff1661140a611873565b73ffffffffffffffffffffffffffffffffffffffff1614611460576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114579061427e565b60405180910390fd5b611468610fd7565b600a6114749190614732565b6103e86005611481610d42565b61148b9190614339565b61149591906143c2565b61149f91906143c2565b8110156114e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d890614881565b60405180910390fd5b6114e9610fd7565b600a6114f59190614732565b816115009190614339565b60098190555050565b61151161257c565b73ffffffffffffffffffffffffffffffffffffffff1661152f611873565b73ffffffffffffffffffffffffffffffffffffffff1614611585576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157c9061427e565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60095481565b600d6020528060005260406000206000915054906101000a900460ff1681565b61160e61257c565b73ffffffffffffffffffffffffffffffffffffffff1661162c611873565b73ffffffffffffffffffffffffffffffffffffffff1614611682576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116799061427e565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61172e61257c565b73ffffffffffffffffffffffffffffffffffffffff1661174c611873565b73ffffffffffffffffffffffffffffffffffffffff16146117a2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117999061427e565b60405180910390fd5b6117ac60006134a9565b565b6117b661257c565b73ffffffffffffffffffffffffffffffffffffffff166117d4611873565b73ffffffffffffffffffffffffffffffffffffffff161461182a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118219061427e565b60405180910390fd5b6000601060006101000a81548160ff021916908315150217905550565b600b60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60085481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6118cb61257c565b73ffffffffffffffffffffffffffffffffffffffff166118e9611873565b73ffffffffffffffffffffffffffffffffffffffff161461193f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119369061427e565b60405180910390fd5b80600b60016101000a81548160ff02191690831515021790555050565b60606001805461196b90614200565b80601f016020809104026020016040519081016040528092919081815260200182805461199790614200565b80156119e45780601f106119b9576101008083540402835291602001916119e4565b820191906000526020600020905b8154815290600101906020018083116119c757829003601f168201915b5050505050905090565b600080600460006119fd61257c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611aba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab1906148ed565b60405180910390fd5b611ace611ac561257c565b85858403612584565b600191505092915050565b6000611aed611ae661257c565b848461274f565b6001905092915050565b60165481565b611b0561257c565b73ffffffffffffffffffffffffffffffffffffffff16611b23611873565b73ffffffffffffffffffffffffffffffffffffffff1614611b79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b709061427e565b60405180910390fd5b8160158190555080601681905550601654601554611b979190614517565b601481905550605f6014541115611be3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bda90614959565b60405180910390fd5b5050565b600f6020528060005260406000206000915054906101000a900460ff1681565b611c0f61257c565b73ffffffffffffffffffffffffffffffffffffffff16611c2d611873565b73ffffffffffffffffffffffffffffffffffffffff1614611c83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7a9061427e565b60405180910390fd5b8160128190555080601381905550601354601254611ca19190614517565b601181905550605f6011541115611ced576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce490614959565b60405180910390fd5b5050565b611cf961257c565b73ffffffffffffffffffffffffffffffffffffffff16611d17611873565b73ffffffffffffffffffffffffffffffffffffffff1614611d6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d649061427e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611ddd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd4906149c5565b60405180910390fd5b80601760016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60135481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b611e5b61257c565b73ffffffffffffffffffffffffffffffffffffffff16611e79611873565b73ffffffffffffffffffffffffffffffffffffffff1614611ecf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec69061427e565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6040518060400160405280600d81526020017f54726164696e6720546f6b656e00000000000000000000000000000000000000815250805190602001206040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250805190602001204630604051602001611fdd9594939291906149f4565b60405160208183030381529060405280519060200120905060007f7dfdbf06c6260804b81338506aa4a709bd9f04b68ca0d2d054b8627926c90ae46040518060400160405280600e81526020017f456e61626c652054726164696e6700000000000000000000000000000000000081525080519060200120600060405160200161206993929190614a47565b60405160208183030381529060405280519060200120905060008282604051602001612096929190614af6565b6040516020818303038152906040528051906020012090506000600182888888604051600081526020016040526040516120d39493929190614b2d565b6020604051602081039080840390855afa1580156120f5573d6000803e3d6000fd5b505050602060405103519050612109611873565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612176576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216d90614bbe565b60405180910390fd5b6001600b60006101000a81548160ff0219169083151502179055506001600b60016101000a81548160ff02191690831515021790555050505050505050565b6121bd61257c565b73ffffffffffffffffffffffffffffffffffffffff166121db611873565b73ffffffffffffffffffffffffffffffffffffffff1614612231576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122289061427e565b60405180910390fd5b600061223c306116dd565b905060008111612281576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227890614c2a565b60405180910390fd5b6001601760006101000a81548160ff0219169083151502179055506122a58161356f565b6000601760006101000a81548160ff02191690831515021790555050565b600b60009054906101000a900460ff1681565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60115481565b60125481565b61237161257c565b73ffffffffffffffffffffffffffffffffffffffff1661238f611873565b73ffffffffffffffffffffffffffffffffffffffff16146123e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123dc9061427e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612455576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244c90614c96565b60405180910390fd5b61245e816134a9565b50565b61246961257c565b73ffffffffffffffffffffffffffffffffffffffff16612487611873565b73ffffffffffffffffffffffffffffffffffffffff16146124dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d49061427e565b60405180910390fd5b60006124e8306116dd565b90506000821180156124fa5750808211155b612539576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253090614c2a565b60405180910390fd5b6001601760006101000a81548160ff02191690831515021790555061255d8261356f565b6000601760006101000a81548160ff0219169083151502179055505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156125f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125eb90614d02565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612664576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265b90614d6e565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516127429190613e60565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156127bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b690614dda565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561282f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282690614e46565b60405180910390fd5b601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156128bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b390614eb2565b60405180910390fd5b601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612949576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294090614f1e565b60405180910390fd5b60008114156129635761295e83836000613723565b6134a4565b6000600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1690506000600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050601060009054906101000a900460ff1615612e6857612a22611873565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614158015612a905750612a60611873565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015612ac95750600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015612b03575061dead73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015612b1c5750601760009054906101000a900460ff16155b15612e6757600b60009054906101000a900460ff16612c1657600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612bd65750600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612c15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c0c90614f8a565b60405180910390fd5b5b818015612c6d5750600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612d1457600a54831115612cb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cae9061501c565b60405180910390fd5b600954612cc3856116dd565b84612cce9190614517565b1115612d0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d0690615088565b60405180910390fd5b612e66565b808015612d6b5750600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612dba57600a54831115612db5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dac9061511a565b60405180910390fd5b612e65565b600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612e6457600954612e17856116dd565b84612e229190614517565b1115612e63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e5a90615088565b60405180910390fd5b5b5b5b5b5b600073ffffffffffffffffffffffffffffffffffffffff16601760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015612f5f5750601760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639015d371306040518263ffffffff1660e01b8152600401612f1d9190613f0a565b602060405180830381865afa158015612f3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f5e919061514f565b5b1561307a576000601760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a20527fc8787600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600954600a546008546040518763ffffffff1660e01b8152600401612ff39695949392919061517c565b6020604051808303816000875af1158015613012573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613036919061514f565b905080613078576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161306f90615229565b60405180910390fd5b505b8080156130b357503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156130cb5750601060019054906101000a900460ff165b156131e0576000601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054148061315c575043601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054105b61319b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161319290615295565b60405180910390fd5b43601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b60006131eb306116dd565b905060006008548210159050600b60019054906101000a900460ff1680156132105750805b80156132295750601760009054906101000a900460ff16155b8015613233575083155b80156132895750600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156132df5750600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613323576001601760006101000a81548160ff0219169083151502179055506133076139a7565b6000601760006101000a81548160ff0219169083151502179055505b6000601760009054906101000a900460ff16159050600e60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806133d95750600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156133e357600090505b60008115613492578480156133fa57506000601154115b1561342e5761342760646134196011548a6139f890919063ffffffff16565b613a0e90919063ffffffff16565b905061346e565b85801561343d57506000601454115b1561346d5761346a606461345c6014548a6139f890919063ffffffff16565b613a0e90919063ffffffff16565b90505b5b600081111561348357613482893083613723565b5b808761348f91906152b5565b96505b61349d898989613723565b5050505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008047905061357e83613a24565b60006135938247613c6790919063ffffffff16565b905060006013546016546135a79190614517565b905060006011546014546135bb9190614517565b9050600082141580156135cf575060008114155b1561368d5760006135fb826135ed85876139f890919063ffffffff16565b613a0e90919063ffffffff16565b9050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16816040516136439061531a565b60006040518083038185875af1925050503d8060008114613680576040519150601f19603f3d011682016040523d82523d6000602084013e613685565b606091505b505080965050505b600b60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516136d39061531a565b60006040518083038185875af1925050503d8060008114613710576040519150601f19603f3d011682016040523d82523d6000602084013e613715565b606091505b505080955050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613793576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161378a9061537b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613803576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137fa906153e7565b60405180910390fd5b61380e838383613c7d565b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613895576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161388c90615453565b60405180910390fd5b818103600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461392a9190614517565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161398e9190613e60565b60405180910390a36139a1848484613c82565b50505050565b60006139b2306116dd565b905060008114156139c357506139f6565b60146008546139d29190614339565b8111156139eb5760146008546139e89190614339565b90505b6139f48161356f565b505b565b60008183613a069190614339565b905092915050565b60008183613a1c91906143c2565b905092915050565b6000600267ffffffffffffffff811115613a4157613a40615473565b5b604051908082528060200260200182016040528015613a6f5781602001602082028036833780820191505090505b5090503081600081518110613a8757613a866154a2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b5291906154e6565b81600181518110613b6657613b656154a2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613bcd30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612584565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613c3195949392919061560c565b600060405180830381600087803b158015613c4b57600080fd5b505af1158015613c5f573d6000803e3d6000fd5b505050505050565b60008183613c7591906152b5565b905092915050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613cc1578082015181840152602081019050613ca6565b83811115613cd0576000848401525b50505050565b6000601f19601f8301169050919050565b6000613cf282613c87565b613cfc8185613c92565b9350613d0c818560208601613ca3565b613d1581613cd6565b840191505092915050565b60006020820190508181036000830152613d3a8184613ce7565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613d7282613d47565b9050919050565b613d8281613d67565b8114613d8d57600080fd5b50565b600081359050613d9f81613d79565b92915050565b6000819050919050565b613db881613da5565b8114613dc357600080fd5b50565b600081359050613dd581613daf565b92915050565b60008060408385031215613df257613df1613d42565b5b6000613e0085828601613d90565b9250506020613e1185828601613dc6565b9150509250929050565b60008115159050919050565b613e3081613e1b565b82525050565b6000602082019050613e4b6000830184613e27565b92915050565b613e5a81613da5565b82525050565b6000602082019050613e756000830184613e51565b92915050565b600060208284031215613e9157613e90613d42565b5b6000613e9f84828501613d90565b91505092915050565b600080600060608486031215613ec157613ec0613d42565b5b6000613ecf86828701613d90565b9350506020613ee086828701613d90565b9250506040613ef186828701613dc6565b9150509250925092565b613f0481613d67565b82525050565b6000602082019050613f1f6000830184613efb565b92915050565b600060208284031215613f3b57613f3a613d42565b5b6000613f4984828501613dc6565b91505092915050565b600060ff82169050919050565b613f6881613f52565b82525050565b6000602082019050613f836000830184613f5f565b92915050565b613f9281613e1b565b8114613f9d57600080fd5b50565b600081359050613faf81613f89565b92915050565b60008060408385031215613fcc57613fcb613d42565b5b6000613fda85828601613d90565b9250506020613feb85828601613fa0565b9150509250929050565b60006020828403121561400b5761400a613d42565b5b600061401984828501613fa0565b91505092915050565b6000806040838503121561403957614038613d42565b5b600061404785828601613dc6565b925050602061405885828601613dc6565b9150509250929050565b6000819050919050565b600061408761408261407d84613d47565b614062565b613d47565b9050919050565b60006140998261406c565b9050919050565b60006140ab8261408e565b9050919050565b6140bb816140a0565b82525050565b60006020820190506140d660008301846140b2565b92915050565b6140e581613f52565b81146140f057600080fd5b50565b600081359050614102816140dc565b92915050565b6000819050919050565b61411b81614108565b811461412657600080fd5b50565b60008135905061413881614112565b92915050565b60008060006060848603121561415757614156613d42565b5b6000614165868287016140f3565b935050602061417686828701614129565b925050604061418786828701614129565b9150509250925092565b600080604083850312156141a8576141a7613d42565b5b60006141b685828601613d90565b92505060206141c785828601613d90565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061421857607f821691505b6020821081141561422c5761422b6141d1565b5b50919050565b7f496e76616c6964206f776e657200000000000000000000000000000000000000600082015250565b6000614268600d83613c92565b915061427382614232565b602082019050919050565b600060208201905081810360008301526142978161425b565b9050919050565b7f45524332303a204e6f7420637572416c6c6f77203e3d20616d6f756e74000000600082015250565b60006142d4601d83613c92565b91506142df8261429e565b602082019050919050565b60006020820190508181036000830152614303816142c7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061434482613da5565b915061434f83613da5565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156143885761438761430a565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006143cd82613da5565b91506143d883613da5565b9250826143e8576143e7614393565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b600061444f603583613c92565b915061445a826143f3565b604082019050919050565b6000602082019050818103600083015261447e81614442565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b60006144e1603483613c92565b91506144ec82614485565b604082019050919050565b60006020820190508181036000830152614510816144d4565b9050919050565b600061452282613da5565b915061452d83613da5565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156145625761456161430a565b5b828201905092915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006145c9603983613c92565b91506145d48261456d565b604082019050919050565b600060208201905081810360008301526145f8816145bc565b9050919050565b60008160011c9050919050565b6000808291508390505b6001851115614656578086048111156146325761463161430a565b5b60018516156146415780820291505b808102905061464f856145ff565b9450614616565b94509492505050565b60008261466f576001905061472b565b8161467d576000905061472b565b8160018114614693576002811461469d576146cc565b600191505061472b565b60ff8411156146af576146ae61430a565b5b8360020a9150848211156146c6576146c561430a565b5b5061472b565b5060208310610133831016604e8410600b84101617156147015782820a9050838111156146fc576146fb61430a565b5b61472b565b61470e848484600161460c565b925090508184048111156147255761472461430a565b5b81810290505b9392505050565b600061473d82613da5565b915061474883613f52565b92506147757fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461465f565b905092915050565b7f43616e6e6f7420736574206d6178546f6b656e416d6f756e7450657254786e2060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b60006147d9602f83613c92565b91506147e48261477d565b604082019050919050565b60006020820190508181036000830152614808816147cc565b9050919050565b7f43616e6e6f7420736574206d6178546f6b656e416d6f756e7450657257616c6c60008201527f6574206c6f776572207468616e20302e35250000000000000000000000000000602082015250565b600061486b603283613c92565b91506148768261480f565b604082019050919050565b6000602082019050818103600083015261489a8161485e565b9050919050565b7f45524332303a204e6f7420637572416c6c6f77203e3d2073756256616c756500600082015250565b60006148d7601f83613c92565b91506148e2826148a1565b602082019050919050565b60006020820190508181036000830152614906816148ca565b9050919050565b7f4d757374206b6565702074617820617420393525206f72206c65737300000000600082015250565b6000614943601c83613c92565b915061494e8261490d565b602082019050919050565b6000602082019050818103600083015261497281614936565b9050919050565b7f496e76616c696420616e74692d647261696e6572000000000000000000000000600082015250565b60006149af601483613c92565b91506149ba82614979565b602082019050919050565b600060208201905081810360008301526149de816149a2565b9050919050565b6149ee81614108565b82525050565b600060a082019050614a0960008301886149e5565b614a1660208301876149e5565b614a2360408301866149e5565b614a306060830185613e51565b614a3d6080830184613efb565b9695505050505050565b6000606082019050614a5c60008301866149e5565b614a6960208301856149e5565b614a766040830184613e51565b949350505050565b600081905092915050565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b6000614abf600283614a7e565b9150614aca82614a89565b600282019050919050565b6000819050919050565b614af0614aeb82614108565b614ad5565b82525050565b6000614b0182614ab2565b9150614b0d8285614adf565b602082019150614b1d8284614adf565b6020820191508190509392505050565b6000608082019050614b4260008301876149e5565b614b4f6020830186613f5f565b614b5c60408301856149e5565b614b6960608301846149e5565b95945050505050565b7f496e76616c6964207369676e6174757265000000000000000000000000000000600082015250565b6000614ba8601183613c92565b9150614bb382614b72565b602082019050919050565b60006020820190508181036000830152614bd781614b9b565b9050919050565b7f496e76616c696420616d6f756e74000000000000000000000000000000000000600082015250565b6000614c14600e83613c92565b9150614c1f82614bde565b602082019050919050565b60006020820190508181036000830152614c4381614c07565b9050919050565b7f4e6577206f776e6572206973205a45524f000000000000000000000000000000600082015250565b6000614c80601183613c92565b9150614c8b82614c4a565b602082019050919050565b60006020820190508181036000830152614caf81614c73565b9050919050565b7f45524332303a204e6f74206f776e657220213d20616464726573732830290000600082015250565b6000614cec601e83613c92565b9150614cf782614cb6565b602082019050919050565b60006020820190508181036000830152614d1b81614cdf565b9050919050565b7f45524332303a204e6f74207370656e64657220213d2061646472657373283029600082015250565b6000614d58602083613c92565b9150614d6382614d22565b602082019050919050565b60006020820190508181036000830152614d8781614d4b565b9050919050565b7f45524332303a20496e76616c69642066726f6d20616464726573730000000000600082015250565b6000614dc4601b83613c92565b9150614dcf82614d8e565b602082019050919050565b60006020820190508181036000830152614df381614db7565b9050919050565b7f45524332303a20496e76616c696420746f206164647265737300000000000000600082015250565b6000614e30601983613c92565b9150614e3b82614dfa565b602082019050919050565b60006020820190508181036000830152614e5f81614e23565b9050919050565b7f45524332303a2066726f6d20697320626c61636b206c69737400000000000000600082015250565b6000614e9c601983613c92565b9150614ea782614e66565b602082019050919050565b60006020820190508181036000830152614ecb81614e8f565b9050919050565b7f45524332303a20746f20697320626c61636b206c697374000000000000000000600082015250565b6000614f08601783613c92565b9150614f1382614ed2565b602082019050919050565b60006020820190508181036000830152614f3781614efb565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614f74601683613c92565b9150614f7f82614f3e565b602082019050919050565b60006020820190508181036000830152614fa381614f67565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d6178546f6b656e416d6f756e7450657254786e2e0000000000000000000000602082015250565b6000615006603583613c92565b915061501182614faa565b604082019050919050565b6000602082019050818103600083015261503581614ff9565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000615072601383613c92565b915061507d8261503c565b602082019050919050565b600060208201905081810360008301526150a181615065565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d6178546f6b656e416d6f756e7450657254786e2e00000000000000000000602082015250565b6000615104603683613c92565b915061510f826150a8565b604082019050919050565b60006020820190508181036000830152615133816150f7565b9050919050565b60008151905061514981613f89565b92915050565b60006020828403121561516557615164613d42565b5b60006151738482850161513a565b91505092915050565b600060c0820190506151916000830189613efb565b61519e6020830188613efb565b6151ab6040830187613efb565b6151b86060830186613e51565b6151c56080830185613e51565b6151d260a0830184613e51565b979650505050505050565b7f416e746920447261696e657220456e61626c6564000000000000000000000000600082015250565b6000615213601483613c92565b915061521e826151dd565b602082019050919050565b6000602082019050818103600083015261524281615206565b9050919050565b7f53656c6c2064697361626c656420696e207468652073616d6520626c6f636b00600082015250565b600061527f601f83613c92565b915061528a82615249565b602082019050919050565b600060208201905081810360008301526152ae81615272565b9050919050565b60006152c082613da5565b91506152cb83613da5565b9250828210156152de576152dd61430a565b5b828203905092915050565b600081905092915050565b50565b60006153046000836152e9565b915061530f826152f4565b600082019050919050565b6000615325826152f7565b9150819050919050565b7f45524332303a204e6f742066726f6d20213d2061646472657373283029000000600082015250565b6000615365601d83613c92565b91506153708261532f565b602082019050919050565b6000602082019050818103600083015261539481615358565b9050919050565b7f45524332303a204e6f7420746f20213d20616464726573732830290000000000600082015250565b60006153d1601b83613c92565b91506153dc8261539b565b602082019050919050565b60006020820190508181036000830152615400816153c4565b9050919050565b7f45524332303a204e6f742062616c616e636546726f6d203e3d20616d6f756e74600082015250565b600061543d602083613c92565b915061544882615407565b602082019050919050565b6000602082019050818103600083015261546c81615430565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506154e081613d79565b92915050565b6000602082840312156154fc576154fb613d42565b5b600061550a848285016154d1565b91505092915050565b6000819050919050565b600061553861553361552e84615513565b614062565b613da5565b9050919050565b6155488161551d565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61558381613d67565b82525050565b6000615595838361557a565b60208301905092915050565b6000602082019050919050565b60006155b98261554e565b6155c38185615559565b93506155ce8361556a565b8060005b838110156155ff5781516155e68882615589565b97506155f1836155a1565b9250506001810190506155d2565b5085935050505092915050565b600060a0820190506156216000830188613e51565b61562e602083018761553f565b818103604083015261564081866155ae565b905061564f6060830185613efb565b61565c6080830184613e51565b969550505050505056fea264697066735822122006e646acf56eb518ebb53780fb86fb69a77df5ed6360c0c45b4243b9a0c83ac764736f6c634300080a0033
Deployed Bytecode
0x6080604052600436106102e85760003560e01c8063751039fc11610190578063bae14e1d116100dc578063d8fac43f11610095578063e27a55fe1161006f578063e27a55fe14610b23578063e96db1ef14610b4e578063f2fde38b14610b79578063fe784eaa14610ba2576102ef565b8063d8fac43f14610aa4578063d929a08314610abb578063dd62ed3e14610ae6576102ef565b8063bae14e1d146109a8578063be691883146109d1578063c31c9c07146109fc578063c42c3f8814610a27578063c6a3064714610a52578063d4394cf814610a7b576102ef565b806395d89b4111610149578063af8f26e711610123578063af8f26e7146108ee578063b38d5ef414610919578063b62496f514610942578063b79c18861461097f576102ef565b806395d89b4114610849578063a457c2d714610874578063a9059cbb146108b1576102ef565b8063751039fc1461075d57806375f0a874146107745780637d6731701461079f5780638da5cb5b146107ca5780638ea5220f146107f5578063924de9b714610820576102ef565b806345167f261161024f57806367b740e9116102085780636f498e21116101e25780636f498e21146106a35780637070678b146106e057806370a0823114610709578063715018a614610746576102ef565b806367b740e91461062657806368092bd91461064f578063685fbc6b14610678576102ef565b806345167f261461052a5780634a62bb6514610553578063544d1ec91461057e5780635df6e68e146105a75780636215d72f146105d257806362944371146105fd576102ef565b806323b872dd116102a157806323b872dd1461040657806326991cc8146104435780632c81355e1461046e578063313ce5671461049757806333012411146104c257806339509351146104ed576102ef565b806306fdde03146102f4578063095ea7b31461031f5780630bd05b691461035c578063151d80391461037357806318160ddd1461039e57806322f59835146103c9576102ef565b366102ef57005b600080fd5b34801561030057600080fd5b50610309610bcb565b6040516103169190613d20565b60405180910390f35b34801561032b57600080fd5b5061034660048036038101906103419190613ddb565b610c5d565b6040516103539190613e36565b60405180910390f35b34801561036857600080fd5b50610371610c7b565b005b34801561037f57600080fd5b50610388610d2f565b6040516103959190613e36565b60405180910390f35b3480156103aa57600080fd5b506103b3610d42565b6040516103c09190613e60565b60405180910390f35b3480156103d557600080fd5b506103f060048036038101906103eb9190613e7b565b610d4c565b6040516103fd9190613e36565b60405180910390f35b34801561041257600080fd5b5061042d60048036038101906104289190613ea8565b610d6c565b60405161043a9190613e36565b60405180910390f35b34801561044f57600080fd5b50610458610e64565b6040516104659190613f0a565b60405180910390f35b34801561047a57600080fd5b5061049560048036038101906104909190613f25565b610e8a565b005b3480156104a357600080fd5b506104ac610fd7565b6040516104b99190613f6e565b60405180910390f35b3480156104ce57600080fd5b506104d7610fe0565b6040516104e49190613e60565b60405180910390f35b3480156104f957600080fd5b50610514600480360381019061050f9190613ddb565b610fe6565b6040516105219190613e36565b60405180910390f35b34801561053657600080fd5b50610551600480360381019061054c9190613fb5565b611092565b005b34801561055f57600080fd5b506105686111fa565b6040516105759190613e36565b60405180910390f35b34801561058a57600080fd5b506105a560048036038101906105a09190613f25565b61120d565b005b3480156105b357600080fd5b506105bc611332565b6040516105c99190613e60565b60405180910390f35b3480156105de57600080fd5b506105e7611338565b6040516105f49190613e36565b60405180910390f35b34801561060957600080fd5b50610624600480360381019061061f9190613ff5565b61134b565b005b34801561063257600080fd5b5061064d60048036038101906106489190613f25565b6113e4565b005b34801561065b57600080fd5b5061067660048036038101906106719190613fb5565b611509565b005b34801561068457600080fd5b5061068d6115e0565b60405161069a9190613e60565b60405180910390f35b3480156106af57600080fd5b506106ca60048036038101906106c59190613e7b565b6115e6565b6040516106d79190613e36565b60405180910390f35b3480156106ec57600080fd5b5061070760048036038101906107029190613fb5565b611606565b005b34801561071557600080fd5b50610730600480360381019061072b9190613e7b565b6116dd565b60405161073d9190613e60565b60405180910390f35b34801561075257600080fd5b5061075b611726565b005b34801561076957600080fd5b506107726117ae565b005b34801561078057600080fd5b50610789611847565b6040516107969190613f0a565b60405180910390f35b3480156107ab57600080fd5b506107b461186d565b6040516107c19190613e60565b60405180910390f35b3480156107d657600080fd5b506107df611873565b6040516107ec9190613f0a565b60405180910390f35b34801561080157600080fd5b5061080a61189d565b6040516108179190613f0a565b60405180910390f35b34801561082c57600080fd5b5061084760048036038101906108429190613ff5565b6118c3565b005b34801561085557600080fd5b5061085e61195c565b60405161086b9190613d20565b60405180910390f35b34801561088057600080fd5b5061089b60048036038101906108969190613ddb565b6119ee565b6040516108a89190613e36565b60405180910390f35b3480156108bd57600080fd5b506108d860048036038101906108d39190613ddb565b611ad9565b6040516108e59190613e36565b60405180910390f35b3480156108fa57600080fd5b50610903611af7565b6040516109109190613e60565b60405180910390f35b34801561092557600080fd5b50610940600480360381019061093b9190614022565b611afd565b005b34801561094e57600080fd5b5061096960048036038101906109649190613e7b565b611be7565b6040516109769190613e36565b60405180910390f35b34801561098b57600080fd5b506109a660048036038101906109a19190614022565b611c07565b005b3480156109b457600080fd5b506109cf60048036038101906109ca9190613e7b565b611cf1565b005b3480156109dd57600080fd5b506109e6611e21565b6040516109f39190613e60565b60405180910390f35b348015610a0857600080fd5b50610a11611e27565b604051610a1e91906140c1565b60405180910390f35b348015610a3357600080fd5b50610a3c611e4d565b604051610a499190613e60565b60405180910390f35b348015610a5e57600080fd5b50610a796004803603810190610a749190613fb5565b611e53565b005b348015610a8757600080fd5b50610aa26004803603810190610a9d919061413e565b611f2a565b005b348015610ab057600080fd5b50610ab96121b5565b005b348015610ac757600080fd5b50610ad06122c3565b604051610add9190613e36565b60405180910390f35b348015610af257600080fd5b50610b0d6004803603810190610b089190614191565b6122d6565b604051610b1a9190613e60565b60405180910390f35b348015610b2f57600080fd5b50610b3861235d565b604051610b459190613e60565b60405180910390f35b348015610b5a57600080fd5b50610b63612363565b604051610b709190613e60565b60405180910390f35b348015610b8557600080fd5b50610ba06004803603810190610b9b9190613e7b565b612369565b005b348015610bae57600080fd5b50610bc96004803603810190610bc49190613f25565b612461565b005b606060008054610bda90614200565b80601f0160208091040260200160405190810160405280929190818152602001828054610c0690614200565b8015610c535780601f10610c2857610100808354040283529160200191610c53565b820191906000526020600020905b815481529060010190602001808311610c3657829003601f168201915b5050505050905090565b6000610c71610c6a61257c565b8484612584565b6001905092915050565b610c8361257c565b73ffffffffffffffffffffffffffffffffffffffff16610ca1611873565b73ffffffffffffffffffffffffffffffffffffffff1614610cf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cee9061427e565b60405180910390fd5b6001600b60006101000a81548160ff0219169083151502179055506001600b60016101000a81548160ff021916908315150217905550565b600b60019054906101000a900460ff1681565b6000600254905090565b600e6020528060005260406000206000915054906101000a900460ff1681565b6000610d7984848461274f565b6000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610dc461257c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610e44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3b906142ea565b60405180910390fd5b610e5885610e5061257c565b858403612584565b60019150509392505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e9261257c565b73ffffffffffffffffffffffffffffffffffffffff16610eb0611873565b73ffffffffffffffffffffffffffffffffffffffff1614610f06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efd9061427e565b60405180910390fd5b620186a06001610f14610d42565b610f1e9190614339565b610f2891906143c2565b811015610f6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6190614465565b60405180910390fd5b6103e86005610f77610d42565b610f819190614339565b610f8b91906143c2565b811115610fcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc4906144f7565b60405180910390fd5b8060088190555050565b60006012905090565b60155481565b6000611088610ff361257c565b84846004600061100161257c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110839190614517565b612584565b6001905092915050565b61109a61257c565b73ffffffffffffffffffffffffffffffffffffffff166110b8611873565b73ffffffffffffffffffffffffffffffffffffffff161461110e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111059061427e565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561119f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611196906145df565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601060009054906101000a900460ff1681565b61121561257c565b73ffffffffffffffffffffffffffffffffffffffff16611233611873565b73ffffffffffffffffffffffffffffffffffffffff1614611289576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112809061427e565b60405180910390fd5b611291610fd7565b600a61129d9190614732565b6103e860016112aa610d42565b6112b49190614339565b6112be91906143c2565b6112c891906143c2565b81101561130a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611301906147ef565b60405180910390fd5b611312610fd7565b600a61131e9190614732565b816113299190614339565b600a8190555050565b60145481565b601060019054906101000a900460ff1681565b61135361257c565b73ffffffffffffffffffffffffffffffffffffffff16611371611873565b73ffffffffffffffffffffffffffffffffffffffff16146113c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113be9061427e565b60405180910390fd5b80601060016101000a81548160ff02191690831515021790555050565b6113ec61257c565b73ffffffffffffffffffffffffffffffffffffffff1661140a611873565b73ffffffffffffffffffffffffffffffffffffffff1614611460576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114579061427e565b60405180910390fd5b611468610fd7565b600a6114749190614732565b6103e86005611481610d42565b61148b9190614339565b61149591906143c2565b61149f91906143c2565b8110156114e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d890614881565b60405180910390fd5b6114e9610fd7565b600a6114f59190614732565b816115009190614339565b60098190555050565b61151161257c565b73ffffffffffffffffffffffffffffffffffffffff1661152f611873565b73ffffffffffffffffffffffffffffffffffffffff1614611585576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157c9061427e565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60095481565b600d6020528060005260406000206000915054906101000a900460ff1681565b61160e61257c565b73ffffffffffffffffffffffffffffffffffffffff1661162c611873565b73ffffffffffffffffffffffffffffffffffffffff1614611682576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116799061427e565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61172e61257c565b73ffffffffffffffffffffffffffffffffffffffff1661174c611873565b73ffffffffffffffffffffffffffffffffffffffff16146117a2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117999061427e565b60405180910390fd5b6117ac60006134a9565b565b6117b661257c565b73ffffffffffffffffffffffffffffffffffffffff166117d4611873565b73ffffffffffffffffffffffffffffffffffffffff161461182a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118219061427e565b60405180910390fd5b6000601060006101000a81548160ff021916908315150217905550565b600b60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60085481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6118cb61257c565b73ffffffffffffffffffffffffffffffffffffffff166118e9611873565b73ffffffffffffffffffffffffffffffffffffffff161461193f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119369061427e565b60405180910390fd5b80600b60016101000a81548160ff02191690831515021790555050565b60606001805461196b90614200565b80601f016020809104026020016040519081016040528092919081815260200182805461199790614200565b80156119e45780601f106119b9576101008083540402835291602001916119e4565b820191906000526020600020905b8154815290600101906020018083116119c757829003601f168201915b5050505050905090565b600080600460006119fd61257c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611aba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab1906148ed565b60405180910390fd5b611ace611ac561257c565b85858403612584565b600191505092915050565b6000611aed611ae661257c565b848461274f565b6001905092915050565b60165481565b611b0561257c565b73ffffffffffffffffffffffffffffffffffffffff16611b23611873565b73ffffffffffffffffffffffffffffffffffffffff1614611b79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b709061427e565b60405180910390fd5b8160158190555080601681905550601654601554611b979190614517565b601481905550605f6014541115611be3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bda90614959565b60405180910390fd5b5050565b600f6020528060005260406000206000915054906101000a900460ff1681565b611c0f61257c565b73ffffffffffffffffffffffffffffffffffffffff16611c2d611873565b73ffffffffffffffffffffffffffffffffffffffff1614611c83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7a9061427e565b60405180910390fd5b8160128190555080601381905550601354601254611ca19190614517565b601181905550605f6011541115611ced576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce490614959565b60405180910390fd5b5050565b611cf961257c565b73ffffffffffffffffffffffffffffffffffffffff16611d17611873565b73ffffffffffffffffffffffffffffffffffffffff1614611d6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d649061427e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611ddd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd4906149c5565b60405180910390fd5b80601760016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60135481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b611e5b61257c565b73ffffffffffffffffffffffffffffffffffffffff16611e79611873565b73ffffffffffffffffffffffffffffffffffffffff1614611ecf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec69061427e565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6040518060400160405280600d81526020017f54726164696e6720546f6b656e00000000000000000000000000000000000000815250805190602001206040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250805190602001204630604051602001611fdd9594939291906149f4565b60405160208183030381529060405280519060200120905060007f7dfdbf06c6260804b81338506aa4a709bd9f04b68ca0d2d054b8627926c90ae46040518060400160405280600e81526020017f456e61626c652054726164696e6700000000000000000000000000000000000081525080519060200120600060405160200161206993929190614a47565b60405160208183030381529060405280519060200120905060008282604051602001612096929190614af6565b6040516020818303038152906040528051906020012090506000600182888888604051600081526020016040526040516120d39493929190614b2d565b6020604051602081039080840390855afa1580156120f5573d6000803e3d6000fd5b505050602060405103519050612109611873565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612176576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216d90614bbe565b60405180910390fd5b6001600b60006101000a81548160ff0219169083151502179055506001600b60016101000a81548160ff02191690831515021790555050505050505050565b6121bd61257c565b73ffffffffffffffffffffffffffffffffffffffff166121db611873565b73ffffffffffffffffffffffffffffffffffffffff1614612231576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122289061427e565b60405180910390fd5b600061223c306116dd565b905060008111612281576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227890614c2a565b60405180910390fd5b6001601760006101000a81548160ff0219169083151502179055506122a58161356f565b6000601760006101000a81548160ff02191690831515021790555050565b600b60009054906101000a900460ff1681565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60115481565b60125481565b61237161257c565b73ffffffffffffffffffffffffffffffffffffffff1661238f611873565b73ffffffffffffffffffffffffffffffffffffffff16146123e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123dc9061427e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612455576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244c90614c96565b60405180910390fd5b61245e816134a9565b50565b61246961257c565b73ffffffffffffffffffffffffffffffffffffffff16612487611873565b73ffffffffffffffffffffffffffffffffffffffff16146124dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d49061427e565b60405180910390fd5b60006124e8306116dd565b90506000821180156124fa5750808211155b612539576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253090614c2a565b60405180910390fd5b6001601760006101000a81548160ff02191690831515021790555061255d8261356f565b6000601760006101000a81548160ff0219169083151502179055505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156125f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125eb90614d02565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612664576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265b90614d6e565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516127429190613e60565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156127bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b690614dda565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561282f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282690614e46565b60405180910390fd5b601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156128bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b390614eb2565b60405180910390fd5b601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612949576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294090614f1e565b60405180910390fd5b60008114156129635761295e83836000613723565b6134a4565b6000600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1690506000600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050601060009054906101000a900460ff1615612e6857612a22611873565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614158015612a905750612a60611873565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015612ac95750600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015612b03575061dead73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015612b1c5750601760009054906101000a900460ff16155b15612e6757600b60009054906101000a900460ff16612c1657600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612bd65750600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612c15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c0c90614f8a565b60405180910390fd5b5b818015612c6d5750600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612d1457600a54831115612cb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cae9061501c565b60405180910390fd5b600954612cc3856116dd565b84612cce9190614517565b1115612d0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d0690615088565b60405180910390fd5b612e66565b808015612d6b5750600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612dba57600a54831115612db5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dac9061511a565b60405180910390fd5b612e65565b600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612e6457600954612e17856116dd565b84612e229190614517565b1115612e63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e5a90615088565b60405180910390fd5b5b5b5b5b5b600073ffffffffffffffffffffffffffffffffffffffff16601760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015612f5f5750601760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639015d371306040518263ffffffff1660e01b8152600401612f1d9190613f0a565b602060405180830381865afa158015612f3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f5e919061514f565b5b1561307a576000601760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a20527fc8787600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600954600a546008546040518763ffffffff1660e01b8152600401612ff39695949392919061517c565b6020604051808303816000875af1158015613012573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613036919061514f565b905080613078576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161306f90615229565b60405180910390fd5b505b8080156130b357503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156130cb5750601060019054906101000a900460ff165b156131e0576000601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054148061315c575043601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054105b61319b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161319290615295565b60405180910390fd5b43601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b60006131eb306116dd565b905060006008548210159050600b60019054906101000a900460ff1680156132105750805b80156132295750601760009054906101000a900460ff16155b8015613233575083155b80156132895750600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156132df5750600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613323576001601760006101000a81548160ff0219169083151502179055506133076139a7565b6000601760006101000a81548160ff0219169083151502179055505b6000601760009054906101000a900460ff16159050600e60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806133d95750600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156133e357600090505b60008115613492578480156133fa57506000601154115b1561342e5761342760646134196011548a6139f890919063ffffffff16565b613a0e90919063ffffffff16565b905061346e565b85801561343d57506000601454115b1561346d5761346a606461345c6014548a6139f890919063ffffffff16565b613a0e90919063ffffffff16565b90505b5b600081111561348357613482893083613723565b5b808761348f91906152b5565b96505b61349d898989613723565b5050505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008047905061357e83613a24565b60006135938247613c6790919063ffffffff16565b905060006013546016546135a79190614517565b905060006011546014546135bb9190614517565b9050600082141580156135cf575060008114155b1561368d5760006135fb826135ed85876139f890919063ffffffff16565b613a0e90919063ffffffff16565b9050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16816040516136439061531a565b60006040518083038185875af1925050503d8060008114613680576040519150601f19603f3d011682016040523d82523d6000602084013e613685565b606091505b505080965050505b600b60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516136d39061531a565b60006040518083038185875af1925050503d8060008114613710576040519150601f19603f3d011682016040523d82523d6000602084013e613715565b606091505b505080955050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613793576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161378a9061537b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613803576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137fa906153e7565b60405180910390fd5b61380e838383613c7d565b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613895576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161388c90615453565b60405180910390fd5b818103600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461392a9190614517565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161398e9190613e60565b60405180910390a36139a1848484613c82565b50505050565b60006139b2306116dd565b905060008114156139c357506139f6565b60146008546139d29190614339565b8111156139eb5760146008546139e89190614339565b90505b6139f48161356f565b505b565b60008183613a069190614339565b905092915050565b60008183613a1c91906143c2565b905092915050565b6000600267ffffffffffffffff811115613a4157613a40615473565b5b604051908082528060200260200182016040528015613a6f5781602001602082028036833780820191505090505b5090503081600081518110613a8757613a866154a2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b5291906154e6565b81600181518110613b6657613b656154a2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613bcd30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612584565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613c3195949392919061560c565b600060405180830381600087803b158015613c4b57600080fd5b505af1158015613c5f573d6000803e3d6000fd5b505050505050565b60008183613c7591906152b5565b905092915050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613cc1578082015181840152602081019050613ca6565b83811115613cd0576000848401525b50505050565b6000601f19601f8301169050919050565b6000613cf282613c87565b613cfc8185613c92565b9350613d0c818560208601613ca3565b613d1581613cd6565b840191505092915050565b60006020820190508181036000830152613d3a8184613ce7565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613d7282613d47565b9050919050565b613d8281613d67565b8114613d8d57600080fd5b50565b600081359050613d9f81613d79565b92915050565b6000819050919050565b613db881613da5565b8114613dc357600080fd5b50565b600081359050613dd581613daf565b92915050565b60008060408385031215613df257613df1613d42565b5b6000613e0085828601613d90565b9250506020613e1185828601613dc6565b9150509250929050565b60008115159050919050565b613e3081613e1b565b82525050565b6000602082019050613e4b6000830184613e27565b92915050565b613e5a81613da5565b82525050565b6000602082019050613e756000830184613e51565b92915050565b600060208284031215613e9157613e90613d42565b5b6000613e9f84828501613d90565b91505092915050565b600080600060608486031215613ec157613ec0613d42565b5b6000613ecf86828701613d90565b9350506020613ee086828701613d90565b9250506040613ef186828701613dc6565b9150509250925092565b613f0481613d67565b82525050565b6000602082019050613f1f6000830184613efb565b92915050565b600060208284031215613f3b57613f3a613d42565b5b6000613f4984828501613dc6565b91505092915050565b600060ff82169050919050565b613f6881613f52565b82525050565b6000602082019050613f836000830184613f5f565b92915050565b613f9281613e1b565b8114613f9d57600080fd5b50565b600081359050613faf81613f89565b92915050565b60008060408385031215613fcc57613fcb613d42565b5b6000613fda85828601613d90565b9250506020613feb85828601613fa0565b9150509250929050565b60006020828403121561400b5761400a613d42565b5b600061401984828501613fa0565b91505092915050565b6000806040838503121561403957614038613d42565b5b600061404785828601613dc6565b925050602061405885828601613dc6565b9150509250929050565b6000819050919050565b600061408761408261407d84613d47565b614062565b613d47565b9050919050565b60006140998261406c565b9050919050565b60006140ab8261408e565b9050919050565b6140bb816140a0565b82525050565b60006020820190506140d660008301846140b2565b92915050565b6140e581613f52565b81146140f057600080fd5b50565b600081359050614102816140dc565b92915050565b6000819050919050565b61411b81614108565b811461412657600080fd5b50565b60008135905061413881614112565b92915050565b60008060006060848603121561415757614156613d42565b5b6000614165868287016140f3565b935050602061417686828701614129565b925050604061418786828701614129565b9150509250925092565b600080604083850312156141a8576141a7613d42565b5b60006141b685828601613d90565b92505060206141c785828601613d90565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061421857607f821691505b6020821081141561422c5761422b6141d1565b5b50919050565b7f496e76616c6964206f776e657200000000000000000000000000000000000000600082015250565b6000614268600d83613c92565b915061427382614232565b602082019050919050565b600060208201905081810360008301526142978161425b565b9050919050565b7f45524332303a204e6f7420637572416c6c6f77203e3d20616d6f756e74000000600082015250565b60006142d4601d83613c92565b91506142df8261429e565b602082019050919050565b60006020820190508181036000830152614303816142c7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061434482613da5565b915061434f83613da5565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156143885761438761430a565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006143cd82613da5565b91506143d883613da5565b9250826143e8576143e7614393565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b600061444f603583613c92565b915061445a826143f3565b604082019050919050565b6000602082019050818103600083015261447e81614442565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b60006144e1603483613c92565b91506144ec82614485565b604082019050919050565b60006020820190508181036000830152614510816144d4565b9050919050565b600061452282613da5565b915061452d83613da5565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156145625761456161430a565b5b828201905092915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006145c9603983613c92565b91506145d48261456d565b604082019050919050565b600060208201905081810360008301526145f8816145bc565b9050919050565b60008160011c9050919050565b6000808291508390505b6001851115614656578086048111156146325761463161430a565b5b60018516156146415780820291505b808102905061464f856145ff565b9450614616565b94509492505050565b60008261466f576001905061472b565b8161467d576000905061472b565b8160018114614693576002811461469d576146cc565b600191505061472b565b60ff8411156146af576146ae61430a565b5b8360020a9150848211156146c6576146c561430a565b5b5061472b565b5060208310610133831016604e8410600b84101617156147015782820a9050838111156146fc576146fb61430a565b5b61472b565b61470e848484600161460c565b925090508184048111156147255761472461430a565b5b81810290505b9392505050565b600061473d82613da5565b915061474883613f52565b92506147757fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461465f565b905092915050565b7f43616e6e6f7420736574206d6178546f6b656e416d6f756e7450657254786e2060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b60006147d9602f83613c92565b91506147e48261477d565b604082019050919050565b60006020820190508181036000830152614808816147cc565b9050919050565b7f43616e6e6f7420736574206d6178546f6b656e416d6f756e7450657257616c6c60008201527f6574206c6f776572207468616e20302e35250000000000000000000000000000602082015250565b600061486b603283613c92565b91506148768261480f565b604082019050919050565b6000602082019050818103600083015261489a8161485e565b9050919050565b7f45524332303a204e6f7420637572416c6c6f77203e3d2073756256616c756500600082015250565b60006148d7601f83613c92565b91506148e2826148a1565b602082019050919050565b60006020820190508181036000830152614906816148ca565b9050919050565b7f4d757374206b6565702074617820617420393525206f72206c65737300000000600082015250565b6000614943601c83613c92565b915061494e8261490d565b602082019050919050565b6000602082019050818103600083015261497281614936565b9050919050565b7f496e76616c696420616e74692d647261696e6572000000000000000000000000600082015250565b60006149af601483613c92565b91506149ba82614979565b602082019050919050565b600060208201905081810360008301526149de816149a2565b9050919050565b6149ee81614108565b82525050565b600060a082019050614a0960008301886149e5565b614a1660208301876149e5565b614a2360408301866149e5565b614a306060830185613e51565b614a3d6080830184613efb565b9695505050505050565b6000606082019050614a5c60008301866149e5565b614a6960208301856149e5565b614a766040830184613e51565b949350505050565b600081905092915050565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b6000614abf600283614a7e565b9150614aca82614a89565b600282019050919050565b6000819050919050565b614af0614aeb82614108565b614ad5565b82525050565b6000614b0182614ab2565b9150614b0d8285614adf565b602082019150614b1d8284614adf565b6020820191508190509392505050565b6000608082019050614b4260008301876149e5565b614b4f6020830186613f5f565b614b5c60408301856149e5565b614b6960608301846149e5565b95945050505050565b7f496e76616c6964207369676e6174757265000000000000000000000000000000600082015250565b6000614ba8601183613c92565b9150614bb382614b72565b602082019050919050565b60006020820190508181036000830152614bd781614b9b565b9050919050565b7f496e76616c696420616d6f756e74000000000000000000000000000000000000600082015250565b6000614c14600e83613c92565b9150614c1f82614bde565b602082019050919050565b60006020820190508181036000830152614c4381614c07565b9050919050565b7f4e6577206f776e6572206973205a45524f000000000000000000000000000000600082015250565b6000614c80601183613c92565b9150614c8b82614c4a565b602082019050919050565b60006020820190508181036000830152614caf81614c73565b9050919050565b7f45524332303a204e6f74206f776e657220213d20616464726573732830290000600082015250565b6000614cec601e83613c92565b9150614cf782614cb6565b602082019050919050565b60006020820190508181036000830152614d1b81614cdf565b9050919050565b7f45524332303a204e6f74207370656e64657220213d2061646472657373283029600082015250565b6000614d58602083613c92565b9150614d6382614d22565b602082019050919050565b60006020820190508181036000830152614d8781614d4b565b9050919050565b7f45524332303a20496e76616c69642066726f6d20616464726573730000000000600082015250565b6000614dc4601b83613c92565b9150614dcf82614d8e565b602082019050919050565b60006020820190508181036000830152614df381614db7565b9050919050565b7f45524332303a20496e76616c696420746f206164647265737300000000000000600082015250565b6000614e30601983613c92565b9150614e3b82614dfa565b602082019050919050565b60006020820190508181036000830152614e5f81614e23565b9050919050565b7f45524332303a2066726f6d20697320626c61636b206c69737400000000000000600082015250565b6000614e9c601983613c92565b9150614ea782614e66565b602082019050919050565b60006020820190508181036000830152614ecb81614e8f565b9050919050565b7f45524332303a20746f20697320626c61636b206c697374000000000000000000600082015250565b6000614f08601783613c92565b9150614f1382614ed2565b602082019050919050565b60006020820190508181036000830152614f3781614efb565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614f74601683613c92565b9150614f7f82614f3e565b602082019050919050565b60006020820190508181036000830152614fa381614f67565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d6178546f6b656e416d6f756e7450657254786e2e0000000000000000000000602082015250565b6000615006603583613c92565b915061501182614faa565b604082019050919050565b6000602082019050818103600083015261503581614ff9565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000615072601383613c92565b915061507d8261503c565b602082019050919050565b600060208201905081810360008301526150a181615065565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d6178546f6b656e416d6f756e7450657254786e2e00000000000000000000602082015250565b6000615104603683613c92565b915061510f826150a8565b604082019050919050565b60006020820190508181036000830152615133816150f7565b9050919050565b60008151905061514981613f89565b92915050565b60006020828403121561516557615164613d42565b5b60006151738482850161513a565b91505092915050565b600060c0820190506151916000830189613efb565b61519e6020830188613efb565b6151ab6040830187613efb565b6151b86060830186613e51565b6151c56080830185613e51565b6151d260a0830184613e51565b979650505050505050565b7f416e746920447261696e657220456e61626c6564000000000000000000000000600082015250565b6000615213601483613c92565b915061521e826151dd565b602082019050919050565b6000602082019050818103600083015261524281615206565b9050919050565b7f53656c6c2064697361626c656420696e207468652073616d6520626c6f636b00600082015250565b600061527f601f83613c92565b915061528a82615249565b602082019050919050565b600060208201905081810360008301526152ae81615272565b9050919050565b60006152c082613da5565b91506152cb83613da5565b9250828210156152de576152dd61430a565b5b828203905092915050565b600081905092915050565b50565b60006153046000836152e9565b915061530f826152f4565b600082019050919050565b6000615325826152f7565b9150819050919050565b7f45524332303a204e6f742066726f6d20213d2061646472657373283029000000600082015250565b6000615365601d83613c92565b91506153708261532f565b602082019050919050565b6000602082019050818103600083015261539481615358565b9050919050565b7f45524332303a204e6f7420746f20213d20616464726573732830290000000000600082015250565b60006153d1601b83613c92565b91506153dc8261539b565b602082019050919050565b60006020820190508181036000830152615400816153c4565b9050919050565b7f45524332303a204e6f742062616c616e636546726f6d203e3d20616d6f756e74600082015250565b600061543d602083613c92565b915061544882615407565b602082019050919050565b6000602082019050818103600083015261546c81615430565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506154e081613d79565b92915050565b6000602082840312156154fc576154fb613d42565b5b600061550a848285016154d1565b91505092915050565b6000819050919050565b600061553861553361552e84615513565b614062565b613da5565b9050919050565b6155488161551d565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61558381613d67565b82525050565b6000615595838361557a565b60208301905092915050565b6000602082019050919050565b60006155b98261554e565b6155c38185615559565b93506155ce8361556a565b8060005b838110156155ff5781516155e68882615589565b97506155f1836155a1565b9250506001810190506155d2565b5085935050505092915050565b600060a0820190506156216000830188613e51565b61562e602083018761553f565b818103604083015261564081866155ae565b905061564f6060830185613efb565b61565c6080830184613e51565b969550505050505056fea264697066735822122006e646acf56eb518ebb53780fb86fb69a77df5ed6360c0c45b4243b9a0c83ac764736f6c634300080a0033
Deployed Bytecode Sourcemap
15106:12950:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10530:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11118:194;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17887:116;;;;;;;;;;;;;:::i;:::-;;15427:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10851:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15608:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11882:431;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15225:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19663:420;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10750:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15957:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12515:286;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21485:300;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15731:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20410:307;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15924:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15771:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19444:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20091:311;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20725:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15297:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15538:61;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19039:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10967:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;995:103;;;;;;;;;;;;;:::i;:::-;;19352:84;;;;;;;;;;;;;:::i;:::-;;15468:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15257:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;712:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15505:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19554:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10638:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12809:385;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12321:186;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15994:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20844:309;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15665:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21161:316;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21793:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15890:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15182:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15342:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19220:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18011:1020;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22277:255;;;;;;;;;;;;;:::i;:::-;;15386:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11698:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15818:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15852:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;807:180;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21989:280;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10530:100;10584:13;10617:5;10610:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10530:100;:::o;11118:194::-;11226:4;11243:39;11252:12;:10;:12::i;:::-;11266:7;11275:6;11243:8;:39::i;:::-;11300:4;11293:11;;11118:194;;;;:::o;17887:116::-;654:12;:10;:12::i;:::-;643:23;;:7;:5;:7::i;:::-;:23;;;635:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;17961:4:::1;17944:14;;:21;;;;;;;;;;;;;;;;;;17991:4;17976:12;;:19;;;;;;;;;;;;;;;;;;17887:116::o:0;15427:32::-;;;;;;;;;;;;;:::o;10851:108::-;10912:7;10939:12;;10932:19;;10851:108;:::o;15608:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;11882:431::-;12013:4;12030:27;12040:4;12046:2;12050:6;12030:9;:27::i;:::-;12068:16;12087:11;:17;12099:4;12087:17;;;;;;;;;;;;;;;:31;12105:12;:10;:12::i;:::-;12087:31;;;;;;;;;;;;;;;;12068:50;;12149:6;12137:8;:18;;12129:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;12225:47;12234:4;12240:12;:10;:12::i;:::-;12265:6;12254:8;:17;12225:8;:47::i;:::-;12301:4;12294:11;;;11882:431;;;;;:::o;15225:23::-;;;;;;;;;;;;;:::o;19663:420::-;654:12;:10;:12::i;:::-;643:23;;:7;:5;:7::i;:::-;:23;;;635:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;19801:6:::1;19796:1;19780:13;:11;:13::i;:::-;:17;;;;:::i;:::-;19779:28;;;;:::i;:::-;19769:6;:38;;19747:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;19953:4;19948:1;19932:13;:11;:13::i;:::-;:17;;;;:::i;:::-;19931:26;;;;:::i;:::-;19921:6;:36;;19899:138;;;;;;;;;;;;:::i;:::-;;;;;;;;;20069:6;20048:18;:27;;;;19663:420:::0;:::o;10750:93::-;10808:5;10833:2;10826:9;;10750:93;:::o;15957:30::-;;;;:::o;12515:286::-;12626:4;12643:128;12666:12;:10;:12::i;:::-;12693:7;12752:8;12715:11;:25;12727:12;:10;:12::i;:::-;12715:25;;;;;;;;;;;;;;;:34;12741:7;12715:34;;;;;;;;;;;;;;;;:45;;;;:::i;:::-;12643:8;:128::i;:::-;12789:4;12782:11;;12515:286;;;;:::o;21485:300::-;654:12;:10;:12::i;:::-;643:23;;:7;:5;:7::i;:::-;:23;;;635:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;21634:8:::1;;;;;;;;;;;21626:16;;:4;:16;;;;21604:123;;;;;;;;;;;;:::i;:::-;;;;;;;;;21772:5;21738:25;:31;21764:4;21738:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;21485:300:::0;;:::o;15731:33::-;;;;;;;;;;;;;:::o;20410:307::-;654:12;:10;:12::i;:::-;643:23;;:7;:5;:7::i;:::-;:23;;;635:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;20562:10:::1;:8;:10::i;:::-;20556:2;:16;;;;:::i;:::-;20547:4;20542:1;20526:13;:11;:13::i;:::-;:17;;;;:::i;:::-;20525:26;;;;:::i;:::-;20524:49;;;;:::i;:::-;20514:6;:59;;20492:156;;;;;;;;;;;;:::i;:::-;;;;;;;;;20698:10;:8;:10::i;:::-;20692:2;:16;;;;:::i;:::-;20682:6;:27;;;;:::i;:::-;20659:20;:50;;;;20410:307:::0;:::o;15924:26::-;;;;:::o;15771:38::-;;;;;;;;;;;;;:::o;19444:102::-;654:12;:10;:12::i;:::-;643:23;;:7;:5;:7::i;:::-;:23;;;635:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;19534:4:::1;19512:19;;:26;;;;;;;;;;;;;;;;;;19444:102:::0;:::o;20091:311::-;654:12;:10;:12::i;:::-;643:23;;:7;:5;:7::i;:::-;:23;;;635:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;20241:10:::1;:8;:10::i;:::-;20235:2;:16;;;;:::i;:::-;20226:4;20221:1;20205:13;:11;:13::i;:::-;:17;;;;:::i;:::-;20204:26;;;;:::i;:::-;20203:49;;;;:::i;:::-;20193:6;:59;;20171:159;;;;;;;;;;;;:::i;:::-;;;;;;;;;20383:10;:8;:10::i;:::-;20377:2;:16;;;;:::i;:::-;20367:6;:27;;;;:::i;:::-;20341:23;:53;;;;20091:311:::0;:::o;20725:111::-;654:12;:10;:12::i;:::-;643:23;;:7;:5;:7::i;:::-;:23;;;635:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;20822:6:::1;20804:9;:15;20814:4;20804:15;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;20725:111:::0;;:::o;15297:38::-;;;;:::o;15538:61::-;;;;;;;;;;;;;;;;;;;;;;:::o;19039:173::-;654:12;:10;:12::i;:::-;643:23;;:7;:5;:7::i;:::-;:23;;;635:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;19199:5:::1;19161:29;:35;19191:4;19161:35;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;19039:173:::0;;:::o;10967:143::-;11057:7;11084:9;:18;11094:7;11084:18;;;;;;;;;;;;;;;;11077:25;;10967:143;;;:::o;995:103::-;654:12;:10;:12::i;:::-;643:23;;:7;:5;:7::i;:::-;:23;;;635:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;1060:30:::1;1087:1;1060:18;:30::i;:::-;995:103::o:0;19352:84::-;654:12;:10;:12::i;:::-;643:23;;:7;:5;:7::i;:::-;:23;;;635:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;19423:5:::1;19406:14;;:22;;;;;;;;;;;;;;;;;;19352:84::o:0;15468:30::-;;;;;;;;;;;;;:::o;15257:33::-;;;;:::o;712:87::-;758:7;785:6;;;;;;;;;;;778:13;;712:87;:::o;15505:24::-;;;;;;;;;;;;;:::o;19554:101::-;654:12;:10;:12::i;:::-;643:23;;:7;:5;:7::i;:::-;:23;;;635:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;19640:7:::1;19625:12;;:22;;;;;;;;;;;;;;;;;;19554:101:::0;:::o;10638:104::-;10694:13;10727:7;10720:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10638:104;:::o;12809:385::-;12920:4;12937:16;12956:11;:25;12968:12;:10;:12::i;:::-;12956:25;;;;;;;;;;;;;;;:34;12982:7;12956:34;;;;;;;;;;;;;;;;12937:53;;13021:8;13009;:20;;13001:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;13101:52;13110:12;:10;:12::i;:::-;13124:7;13144:8;13133;:19;13101:8;:52::i;:::-;13182:4;13175:11;;;12809:385;;;;:::o;12321:186::-;12425:4;12442:35;12452:12;:10;:12::i;:::-;12466:2;12470:6;12442:9;:35::i;:::-;12495:4;12488:11;;12321:186;;;;:::o;15994:24::-;;;;:::o;20844:309::-;654:12;:10;:12::i;:::-;643:23;;:7;:5;:7::i;:::-;:23;;;635:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;20980:12:::1;20962:15;:30;;;;21015:9;21003;:21;;;;21067:9;;21049:15;;:27;;;;:::i;:::-;21035:11;:41;;;;21110:2;21095:11;;:17;;21087:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;20844:309:::0;;:::o;15665:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;21161:316::-;654:12;:10;:12::i;:::-;643:23;;:7;:5;:7::i;:::-;:23;;;635:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;21299:12:::1;21280:16;:31;;;;21335:9;21322:10;:22;;;;21389:10;;21370:16;;:29;;;;:::i;:::-;21355:12;:44;;;;21434:2;21418:12;;:18;;21410:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;21161:316:::0;;:::o;21793:188::-;654:12;:10;:12::i;:::-;643:23;;:7;:5;:7::i;:::-;:23;;;635:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;21905:3:::1;21879:30;;:14;:30;;;;21871:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;21959:14;21945:11;;:28;;;;;;;;;;;;;;;;;;21793:188:::0;:::o;15890:25::-;;;;:::o;15182:36::-;;;;;;;;;;;;;:::o;15342:35::-;;;;:::o;19220:124::-;654:12;:10;:12::i;:::-;643:23;;:7;:5;:7::i;:::-;:23;;;635:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;19331:5:::1;19303:16;:25;19320:7;19303:25;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;19220:124:::0;;:::o;18011:1020::-;18097:18;18171:135;18335:22;;;;;;;;;;;;;;;;;18325:33;;;;;;18387:10;;;;;;;;;;;;;;;;;18377:21;;;;;;18417:13;18457:4;18142:335;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;18118:370;;;;;;18097:391;;18499:18;18573:49;18651:23;;;;;;;;;;;;;;;;;18641:34;;;;;;18702:1;18544:175;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;18520:210;;;;;;18499:231;;18741:14;18811:10;18823;18782:52;;;;;;;;;:::i;:::-;;;;;;;;;;;;;18758:87;;;;;;18741:104;;18858:14;18875:26;18885:6;18893:1;18896;18899;18875:26;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18858:43;;18930:7;:5;:7::i;:::-;18920:17;;:6;:17;;;18912:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;18989:4;18972:14;;:21;;;;;;;;;;;;;;;;;;19019:4;19004:12;;:19;;;;;;;;;;;;;;;;;;18086:945;;;;18011:1020;;;:::o;22277:255::-;654:12;:10;:12::i;:::-;643:23;;:7;:5;:7::i;:::-;:23;;;635:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;22332:20:::1;22355:24;22373:4;22355:9;:24::i;:::-;22332:47;;22413:1;22398:12;:16;22390:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;22458:4;22446:9;;:16;;;;;;;;;;;;;;;;;;22473:23;22483:12;22473:9;:23::i;:::-;22519:5;22507:9;;:17;;;;;;;;;;;;;;;;;;22321:211;22277:255::o:0;15386:34::-;;;;;;;;;;;;;:::o;11698:176::-;11812:7;11839:11;:18;11851:5;11839:18;;;;;;;;;;;;;;;:27;11858:7;11839:27;;;;;;;;;;;;;;;;11832:34;;11698:176;;;;:::o;15818:27::-;;;;:::o;15852:31::-;;;;:::o;807:180::-;654:12;:10;:12::i;:::-;643:23;;:7;:5;:7::i;:::-;:23;;;635:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;916:1:::1;896:22;;:8;:22;;;;888:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;951:28;970:8;951:18;:28::i;:::-;807:180:::0;:::o;21989:280::-;654:12;:10;:12::i;:::-;643:23;;:7;:5;:7::i;:::-;:23;;;635:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;22055:20:::1;22078:24;22096:4;22078:9;:24::i;:::-;22055:47;;22130:1;22121:6;:10;:36;;;;;22145:12;22135:6;:22;;22121:36;22113:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;22201:4;22189:9;;:16;;;;;;;;;;;;;;;;;;22216:17;22226:6;22216:9;:17::i;:::-;22256:5;22244:9;;:17;;;;;;;;;;;;;;;;;;22044:225;21989:280:::0;:::o;124:98::-;177:7;204:10;197:17;;124:98;:::o;11320:370::-;11473:1;11456:19;;:5;:19;;;;11448:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;11548:1;11529:21;;:7;:21;;;;11521:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;11628:6;11598:11;:18;11610:5;11598:18;;;;;;;;;;;;;;;:27;11617:7;11598:27;;;;;;;;;;;;;;;:36;;;;11666:7;11650:32;;11659:5;11650:32;;;11675:6;11650:32;;;;;;:::i;:::-;;;;;;;;11320:370;;;:::o;23496:3838::-;23644:1;23628:18;;:4;:18;;;;23620:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;23711:1;23697:16;;:2;:16;;;;23689:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;23763:9;:15;23773:4;23763:15;;;;;;;;;;;;;;;;;;;;;;;;;23762:16;23754:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;23828:9;:13;23838:2;23828:13;;;;;;;;;;;;;;;;;;;;;;;;;23827:14;23819:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;23896:1;23886:6;:11;23882:93;;;23914:28;23930:4;23936:2;23940:1;23914:15;:28::i;:::-;23957:7;;23882:93;23987:12;24002:25;:31;24028:4;24002:31;;;;;;;;;;;;;;;;;;;;;;;;;23987:46;;24044:13;24060:25;:29;24086:2;24060:29;;;;;;;;;;;;;;;;;;;;;;;;;24044:45;;24106:14;;;;;;;;;;;24102:1471;;;24167:7;:5;:7::i;:::-;24159:15;;:4;:15;;;;:49;;;;;24201:7;:5;:7::i;:::-;24195:13;;:2;:13;;;;24159:49;:86;;;;;24243:1;24229:16;;:2;:16;;;;24159:86;:128;;;;;24280:6;24266:21;;:2;:21;;;;24159:128;:159;;;;;24309:9;;;;;;;;;;;24308:10;24159:159;24137:1425;;;24358:14;;;;;;;;;;;24353:218;;24431:16;:22;24448:4;24431:22;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;24457:16;:20;24474:2;24457:20;;;;;;;;;;;;;;;;;;;;;;;;;24431:46;24397:154;;;;;;;;;;;;:::i;:::-;;;;;;;;;24353:218;24595:7;:45;;;;;24607:29;:33;24637:2;24607:33;;;;;;;;;;;;;;;;;;;;;;;;;24606:34;24595:45;24591:956;;;24709:20;;24699:6;:30;;24665:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;24917:23;;24900:13;24910:2;24900:9;:13::i;:::-;24891:6;:22;;;;:::i;:::-;:49;;24857:154;;;;;;;;;;;;:::i;:::-;;;;;;;;;24591:956;;;25041:8;:48;;;;;25054:29;:35;25084:4;25054:35;;;;;;;;;;;;;;;;;;;;;;;;;25053:36;25041:48;25037:510;;;25158:20;;25148:6;:30;;25114:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;25037:510;;;25315:29;:33;25345:2;25315:33;;;;;;;;;;;;;;;;;;;;;;;;;25310:237;;25433:23;;25416:13;25426:2;25416:9;:13::i;:::-;25407:6;:22;;;;:::i;:::-;:49;;25373:154;;;;;;;;;;;;:::i;:::-;;;;;;;;;25310:237;25037:510;24591:956;24137:1425;24102:1471;25626:1;25603:25;;:11;;;;;;;;;;;:25;;;;:92;;;;;25658:11;;;;;;;;;;;25645:35;;;25689:4;25645:50;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25603:92;25585:459;;;25722:10;25748:11;;;;;;;;;;;25735:31;;;25785:4;25808:2;25837:8;;;;;;;;;;;25865:23;;25907:20;;25946:18;;25735:244;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25722:257;;26002:5;25994:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;25707:337;25585:459;26060:8;:33;;;;;26088:4;26072:21;;:4;:21;;;;26060:33;:56;;;;;26097:19;;;;;;;;;;;26060:56;26056:293;;;26182:1;26159:13;:19;26173:4;26159:19;;;;;;;;;;;;;;;;:24;:62;;;;26209:12;26187:13;:19;26201:4;26187:19;;;;;;;;;;;;;;;;:34;26159:62;26133:155;;;;;;;;;;;;:::i;:::-;;;;;;;;;26325:12;26303:13;:19;26317:4;26303:19;;;;;;;;;;;;;;;:34;;;;26056:293;26361:20;26384:24;26402:4;26384:9;:24::i;:::-;26361:47;;26419:12;26450:18;;26434:12;:34;;26419:49;;26497:12;;;;;;;;;;;:36;;;;;26526:7;26497:36;:63;;;;;26551:9;;;;;;;;;;;26550:10;26497:63;:88;;;;;26578:7;26577:8;26497:88;:128;;;;;26603:16;:22;26620:4;26603:22;;;;;;;;;;;;;;;;;;;;;;;;;26602:23;26497:128;:166;;;;;26643:16;:20;26660:2;26643:20;;;;;;;;;;;;;;;;;;;;;;;;;26642:21;26497:166;26479:296;;;26702:4;26690:9;;:16;;;;;;;;;;;;;;;;;;26721:10;:8;:10::i;:::-;26758:5;26746:9;;:17;;;;;;;;;;;;;;;;;;26479:296;26787:9;26800;;;;;;;;;;;26799:10;26787:22;;26824:16;:22;26841:4;26824:22;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;26850:16;:20;26867:2;26850:20;;;;;;;;;;;;;;;;;;;;;;;;;26824:46;26820:64;;;26879:5;26872:12;;26820:64;26897:12;26928:4;26924:357;;;26953:8;:28;;;;;26980:1;26965:12;;:16;26953:28;26949:221;;;27009:33;27038:3;27009:24;27020:12;;27009:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;27002:40;;26949:221;;;27068:7;:26;;;;;27093:1;27079:11;;:15;27068:26;27064:106;;;27122:32;27150:3;27122:23;27133:11;;27122:6;:10;;:23;;;;:::i;:::-;:27;;:32;;;;:::i;:::-;27115:39;;27064:106;26949:221;27195:1;27188:4;:8;27184:56;;;27198:42;27214:4;27228;27235;27198:15;:42::i;:::-;27184:56;27265:4;27255:14;;;;;:::i;:::-;;;26924:357;27293:33;27309:4;27315:2;27319:6;27293:15;:33::i;:::-;23609:3725;;;;;;23496:3838;;;;:::o;1106:191::-;1180:16;1199:6;;;;;;;;;;;1180:25;;1225:8;1216:6;;:17;;;;;;;;;;;;;;;;;;1280:8;1249:40;;1270:8;1249:40;;;;;;;;;;;;1169:128;1106:191;:::o;22826:662::-;22880:12;22903:22;22928:21;22903:46;;22960:24;22977:6;22960:16;:24::i;:::-;22997:18;23018:41;23044:14;23018:21;:25;;:41;;;;:::i;:::-;22997:62;;23070:14;23099:10;;23087:9;;:22;;;;:::i;:::-;23070:39;;23120:16;23153:12;;23139:11;;:26;;;;:::i;:::-;23120:45;;23190:1;23180:6;:11;;:28;;;;;23207:1;23195:8;:13;;23180:28;23176:191;;;23225:17;23245:36;23272:8;23245:22;23260:6;23245:10;:14;;:22;;;;:::i;:::-;:26;;:36;;;;:::i;:::-;23225:56;;23318:9;;;;;;;;;;;23310:23;;23341:9;23310:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23296:59;;;;;23210:157;23176:191;23401:15;;;;;;;;;;;23393:29;;23444:21;23393:87;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23379:101;;;;;22869:619;;;;;22826:662;:::o;14300:641::-;14447:1;14431:18;;:4;:18;;;;14423:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;14516:1;14502:16;;:2;:16;;;;14494:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;14561:38;14582:4;14588:2;14592:6;14561:20;:38::i;:::-;14610:19;14632:9;:15;14642:4;14632:15;;;;;;;;;;;;;;;;14610:37;;14681:6;14666:11;:21;;14658:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;14792:6;14778:11;:20;14760:9;:15;14770:4;14760:15;;;;;;;;;;;;;;;:38;;;;14837:6;14820:9;:13;14830:2;14820:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;14874:2;14859:26;;14868:4;14859:26;;;14878:6;14859:26;;;;;;:::i;:::-;;;;;;;;14896:37;14916:4;14922:2;14926:6;14896:19;:37::i;:::-;14412:529;14300:641;;;:::o;22540:278::-;22579:20;22602:24;22620:4;22602:9;:24::i;:::-;22579:47;;22657:1;22641:12;:17;22637:30;;;22660:7;;;22637:30;22719:2;22698:18;;:23;;;;:::i;:::-;22683:12;:38;22679:95;;;22772:2;22751:18;;:23;;;;:::i;:::-;22736:38;;22679:95;22787:23;22797:12;22787:9;:23::i;:::-;22568:250;22540:278;:::o;1328:98::-;1386:7;1417:1;1413;:5;;;;:::i;:::-;1406:12;;1328:98;;;;:::o;1737:::-;1795:7;1826:1;1822;:5;;;;:::i;:::-;1815:12;;1737:98;;;;:::o;27494:559::-;27615:21;27653:1;27639:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27615:40;;27684:4;27666;27671:1;27666:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;27710:10;;;;;;;;;;;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27700:4;27705:1;27700:7;;;;;;;;:::i;:::-;;;;;;;:27;;;;;;;;;;;27740:52;27757:4;27772:10;;;;;;;;;;;27785:6;27740:8;:52::i;:::-;27831:10;;;;;;;;;;;:61;;;27907:6;27928:1;27972:4;27999;28019:15;27831:214;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27544:509;27494:559;:::o;2432:98::-;2490:7;2521:1;2517;:5;;;;:::i;:::-;2510:12;;2432:98;;;;:::o;14167:125::-;;;;:::o;14949:150::-;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:118::-;3581:24;3599:5;3581:24;:::i;:::-;3576:3;3569:37;3494:118;;:::o;3618:222::-;3711:4;3749:2;3738:9;3734:18;3726:26;;3762:71;3830:1;3819:9;3815:17;3806:6;3762:71;:::i;:::-;3618:222;;;;:::o;3846:329::-;3905:6;3954:2;3942:9;3933:7;3929:23;3925:32;3922:119;;;3960:79;;:::i;:::-;3922:119;4080:1;4105:53;4150:7;4141:6;4130:9;4126:22;4105:53;:::i;:::-;4095:63;;4051:117;3846:329;;;;:::o;4181:619::-;4258:6;4266;4274;4323:2;4311:9;4302:7;4298:23;4294:32;4291:119;;;4329:79;;:::i;:::-;4291:119;4449:1;4474:53;4519:7;4510:6;4499:9;4495:22;4474:53;:::i;:::-;4464:63;;4420:117;4576:2;4602:53;4647:7;4638:6;4627:9;4623:22;4602:53;:::i;:::-;4592:63;;4547:118;4704:2;4730:53;4775:7;4766:6;4755:9;4751:22;4730:53;:::i;:::-;4720:63;;4675:118;4181:619;;;;;:::o;4806:118::-;4893:24;4911:5;4893:24;:::i;:::-;4888:3;4881:37;4806:118;;:::o;4930:222::-;5023:4;5061:2;5050:9;5046:18;5038:26;;5074:71;5142:1;5131:9;5127:17;5118:6;5074:71;:::i;:::-;4930:222;;;;:::o;5158:329::-;5217:6;5266:2;5254:9;5245:7;5241:23;5237:32;5234:119;;;5272:79;;:::i;:::-;5234:119;5392:1;5417:53;5462:7;5453:6;5442:9;5438:22;5417:53;:::i;:::-;5407:63;;5363:117;5158:329;;;;:::o;5493:86::-;5528:7;5568:4;5561:5;5557:16;5546:27;;5493:86;;;:::o;5585:112::-;5668:22;5684:5;5668:22;:::i;:::-;5663:3;5656:35;5585:112;;:::o;5703:214::-;5792:4;5830:2;5819:9;5815:18;5807:26;;5843:67;5907:1;5896:9;5892:17;5883:6;5843:67;:::i;:::-;5703:214;;;;:::o;5923:116::-;5993:21;6008:5;5993:21;:::i;:::-;5986:5;5983:32;5973:60;;6029:1;6026;6019:12;5973:60;5923:116;:::o;6045:133::-;6088:5;6126:6;6113:20;6104:29;;6142:30;6166:5;6142:30;:::i;:::-;6045:133;;;;:::o;6184:468::-;6249:6;6257;6306:2;6294:9;6285:7;6281:23;6277:32;6274:119;;;6312:79;;:::i;:::-;6274:119;6432:1;6457:53;6502:7;6493:6;6482:9;6478:22;6457:53;:::i;:::-;6447:63;;6403:117;6559:2;6585:50;6627:7;6618:6;6607:9;6603:22;6585:50;:::i;:::-;6575:60;;6530:115;6184:468;;;;;:::o;6658:323::-;6714:6;6763:2;6751:9;6742:7;6738:23;6734:32;6731:119;;;6769:79;;:::i;:::-;6731:119;6889:1;6914:50;6956:7;6947:6;6936:9;6932:22;6914:50;:::i;:::-;6904:60;;6860:114;6658:323;;;;:::o;6987:474::-;7055:6;7063;7112:2;7100:9;7091:7;7087:23;7083:32;7080:119;;;7118:79;;:::i;:::-;7080:119;7238:1;7263:53;7308:7;7299:6;7288:9;7284:22;7263:53;:::i;:::-;7253:63;;7209:117;7365:2;7391:53;7436:7;7427:6;7416:9;7412:22;7391:53;:::i;:::-;7381:63;;7336:118;6987:474;;;;;:::o;7467:60::-;7495:3;7516:5;7509:12;;7467:60;;;:::o;7533:142::-;7583:9;7616:53;7634:34;7643:24;7661:5;7643:24;:::i;:::-;7634:34;:::i;:::-;7616:53;:::i;:::-;7603:66;;7533:142;;;:::o;7681:126::-;7731:9;7764:37;7795:5;7764:37;:::i;:::-;7751:50;;7681:126;;;:::o;7813:152::-;7889:9;7922:37;7953:5;7922:37;:::i;:::-;7909:50;;7813:152;;;:::o;7971:183::-;8084:63;8141:5;8084:63;:::i;:::-;8079:3;8072:76;7971:183;;:::o;8160:274::-;8279:4;8317:2;8306:9;8302:18;8294:26;;8330:97;8424:1;8413:9;8409:17;8400:6;8330:97;:::i;:::-;8160:274;;;;:::o;8440:118::-;8511:22;8527:5;8511:22;:::i;:::-;8504:5;8501:33;8491:61;;8548:1;8545;8538:12;8491:61;8440:118;:::o;8564:135::-;8608:5;8646:6;8633:20;8624:29;;8662:31;8687:5;8662:31;:::i;:::-;8564:135;;;;:::o;8705:77::-;8742:7;8771:5;8760:16;;8705:77;;;:::o;8788:122::-;8861:24;8879:5;8861:24;:::i;:::-;8854:5;8851:35;8841:63;;8900:1;8897;8890:12;8841:63;8788:122;:::o;8916:139::-;8962:5;9000:6;8987:20;8978:29;;9016:33;9043:5;9016:33;:::i;:::-;8916:139;;;;:::o;9061:615::-;9136:6;9144;9152;9201:2;9189:9;9180:7;9176:23;9172:32;9169:119;;;9207:79;;:::i;:::-;9169:119;9327:1;9352:51;9395:7;9386:6;9375:9;9371:22;9352:51;:::i;:::-;9342:61;;9298:115;9452:2;9478:53;9523:7;9514:6;9503:9;9499:22;9478:53;:::i;:::-;9468:63;;9423:118;9580:2;9606:53;9651:7;9642:6;9631:9;9627:22;9606:53;:::i;:::-;9596:63;;9551:118;9061:615;;;;;:::o;9682:474::-;9750:6;9758;9807:2;9795:9;9786:7;9782:23;9778:32;9775:119;;;9813:79;;:::i;:::-;9775:119;9933:1;9958:53;10003:7;9994:6;9983:9;9979:22;9958:53;:::i;:::-;9948:63;;9904:117;10060:2;10086:53;10131:7;10122:6;10111:9;10107:22;10086:53;:::i;:::-;10076:63;;10031:118;9682:474;;;;;:::o;10162:180::-;10210:77;10207:1;10200:88;10307:4;10304:1;10297:15;10331:4;10328:1;10321:15;10348:320;10392:6;10429:1;10423:4;10419:12;10409:22;;10476:1;10470:4;10466:12;10497:18;10487:81;;10553:4;10545:6;10541:17;10531:27;;10487:81;10615:2;10607:6;10604:14;10584:18;10581:38;10578:84;;;10634:18;;:::i;:::-;10578:84;10399:269;10348:320;;;:::o;10674:163::-;10814:15;10810:1;10802:6;10798:14;10791:39;10674:163;:::o;10843:366::-;10985:3;11006:67;11070:2;11065:3;11006:67;:::i;:::-;10999:74;;11082:93;11171:3;11082:93;:::i;:::-;11200:2;11195:3;11191:12;11184:19;;10843:366;;;:::o;11215:419::-;11381:4;11419:2;11408:9;11404:18;11396:26;;11468:9;11462:4;11458:20;11454:1;11443:9;11439:17;11432:47;11496:131;11622:4;11496:131;:::i;:::-;11488:139;;11215:419;;;:::o;11640:179::-;11780:31;11776:1;11768:6;11764:14;11757:55;11640:179;:::o;11825:366::-;11967:3;11988:67;12052:2;12047:3;11988:67;:::i;:::-;11981:74;;12064:93;12153:3;12064:93;:::i;:::-;12182:2;12177:3;12173:12;12166:19;;11825:366;;;:::o;12197:419::-;12363:4;12401:2;12390:9;12386:18;12378:26;;12450:9;12444:4;12440:20;12436:1;12425:9;12421:17;12414:47;12478:131;12604:4;12478:131;:::i;:::-;12470:139;;12197:419;;;:::o;12622:180::-;12670:77;12667:1;12660:88;12767:4;12764:1;12757:15;12791:4;12788:1;12781:15;12808:348;12848:7;12871:20;12889:1;12871:20;:::i;:::-;12866:25;;12905:20;12923:1;12905:20;:::i;:::-;12900:25;;13093:1;13025:66;13021:74;13018:1;13015:81;13010:1;13003:9;12996:17;12992:105;12989:131;;;13100:18;;:::i;:::-;12989:131;13148:1;13145;13141:9;13130:20;;12808:348;;;;:::o;13162:180::-;13210:77;13207:1;13200:88;13307:4;13304:1;13297:15;13331:4;13328:1;13321:15;13348:185;13388:1;13405:20;13423:1;13405:20;:::i;:::-;13400:25;;13439:20;13457:1;13439:20;:::i;:::-;13434:25;;13478:1;13468:35;;13483:18;;:::i;:::-;13468:35;13525:1;13522;13518:9;13513:14;;13348:185;;;;:::o;13539:240::-;13679:34;13675:1;13667:6;13663:14;13656:58;13748:23;13743:2;13735:6;13731:15;13724:48;13539:240;:::o;13785:366::-;13927:3;13948:67;14012:2;14007:3;13948:67;:::i;:::-;13941:74;;14024:93;14113:3;14024:93;:::i;:::-;14142:2;14137:3;14133:12;14126:19;;13785:366;;;:::o;14157:419::-;14323:4;14361:2;14350:9;14346:18;14338:26;;14410:9;14404:4;14400:20;14396:1;14385:9;14381:17;14374:47;14438:131;14564:4;14438:131;:::i;:::-;14430:139;;14157:419;;;:::o;14582:239::-;14722:34;14718:1;14710:6;14706:14;14699:58;14791:22;14786:2;14778:6;14774:15;14767:47;14582:239;:::o;14827:366::-;14969:3;14990:67;15054:2;15049:3;14990:67;:::i;:::-;14983:74;;15066:93;15155:3;15066:93;:::i;:::-;15184:2;15179:3;15175:12;15168:19;;14827:366;;;:::o;15199:419::-;15365:4;15403:2;15392:9;15388:18;15380:26;;15452:9;15446:4;15442:20;15438:1;15427:9;15423:17;15416:47;15480:131;15606:4;15480:131;:::i;:::-;15472:139;;15199:419;;;:::o;15624:305::-;15664:3;15683:20;15701:1;15683:20;:::i;:::-;15678:25;;15717:20;15735:1;15717:20;:::i;:::-;15712:25;;15871:1;15803:66;15799:74;15796:1;15793:81;15790:107;;;15877:18;;:::i;:::-;15790:107;15921:1;15918;15914:9;15907:16;;15624:305;;;;:::o;15935:244::-;16075:34;16071:1;16063:6;16059:14;16052:58;16144:27;16139:2;16131:6;16127:15;16120:52;15935:244;:::o;16185:366::-;16327:3;16348:67;16412:2;16407:3;16348:67;:::i;:::-;16341:74;;16424:93;16513:3;16424:93;:::i;:::-;16542:2;16537:3;16533:12;16526:19;;16185:366;;;:::o;16557:419::-;16723:4;16761:2;16750:9;16746:18;16738:26;;16810:9;16804:4;16800:20;16796:1;16785:9;16781:17;16774:47;16838:131;16964:4;16838:131;:::i;:::-;16830:139;;16557:419;;;:::o;16982:102::-;17024:8;17071:5;17068:1;17064:13;17043:34;;16982:102;;;:::o;17090:848::-;17151:5;17158:4;17182:6;17173:15;;17206:5;17197:14;;17220:712;17241:1;17231:8;17228:15;17220:712;;;17336:4;17331:3;17327:14;17321:4;17318:24;17315:50;;;17345:18;;:::i;:::-;17315:50;17395:1;17385:8;17381:16;17378:451;;;17810:4;17803:5;17799:16;17790:25;;17378:451;17860:4;17854;17850:15;17842:23;;17890:32;17913:8;17890:32;:::i;:::-;17878:44;;17220:712;;;17090:848;;;;;;;:::o;17944:1073::-;17998:5;18189:8;18179:40;;18210:1;18201:10;;18212:5;;18179:40;18238:4;18228:36;;18255:1;18246:10;;18257:5;;18228:36;18324:4;18372:1;18367:27;;;;18408:1;18403:191;;;;18317:277;;18367:27;18385:1;18376:10;;18387:5;;;18403:191;18448:3;18438:8;18435:17;18432:43;;;18455:18;;:::i;:::-;18432:43;18504:8;18501:1;18497:16;18488:25;;18539:3;18532:5;18529:14;18526:40;;;18546:18;;:::i;:::-;18526:40;18579:5;;;18317:277;;18703:2;18693:8;18690:16;18684:3;18678:4;18675:13;18671:36;18653:2;18643:8;18640:16;18635:2;18629:4;18626:12;18622:35;18606:111;18603:246;;;18759:8;18753:4;18749:19;18740:28;;18794:3;18787:5;18784:14;18781:40;;;18801:18;;:::i;:::-;18781:40;18834:5;;18603:246;18874:42;18912:3;18902:8;18896:4;18893:1;18874:42;:::i;:::-;18859:57;;;;18948:4;18943:3;18939:14;18932:5;18929:25;18926:51;;;18957:18;;:::i;:::-;18926:51;19006:4;18999:5;18995:16;18986:25;;17944:1073;;;;;;:::o;19023:281::-;19081:5;19105:23;19123:4;19105:23;:::i;:::-;19097:31;;19149:25;19165:8;19149:25;:::i;:::-;19137:37;;19193:104;19230:66;19220:8;19214:4;19193:104;:::i;:::-;19184:113;;19023:281;;;;:::o;19310:234::-;19450:34;19446:1;19438:6;19434:14;19427:58;19519:17;19514:2;19506:6;19502:15;19495:42;19310:234;:::o;19550:366::-;19692:3;19713:67;19777:2;19772:3;19713:67;:::i;:::-;19706:74;;19789:93;19878:3;19789:93;:::i;:::-;19907:2;19902:3;19898:12;19891:19;;19550:366;;;:::o;19922:419::-;20088:4;20126:2;20115:9;20111:18;20103:26;;20175:9;20169:4;20165:20;20161:1;20150:9;20146:17;20139:47;20203:131;20329:4;20203:131;:::i;:::-;20195:139;;19922:419;;;:::o;20347:237::-;20487:34;20483:1;20475:6;20471:14;20464:58;20556:20;20551:2;20543:6;20539:15;20532:45;20347:237;:::o;20590:366::-;20732:3;20753:67;20817:2;20812:3;20753:67;:::i;:::-;20746:74;;20829:93;20918:3;20829:93;:::i;:::-;20947:2;20942:3;20938:12;20931:19;;20590:366;;;:::o;20962:419::-;21128:4;21166:2;21155:9;21151:18;21143:26;;21215:9;21209:4;21205:20;21201:1;21190:9;21186:17;21179:47;21243:131;21369:4;21243:131;:::i;:::-;21235:139;;20962:419;;;:::o;21387:181::-;21527:33;21523:1;21515:6;21511:14;21504:57;21387:181;:::o;21574:366::-;21716:3;21737:67;21801:2;21796:3;21737:67;:::i;:::-;21730:74;;21813:93;21902:3;21813:93;:::i;:::-;21931:2;21926:3;21922:12;21915:19;;21574:366;;;:::o;21946:419::-;22112:4;22150:2;22139:9;22135:18;22127:26;;22199:9;22193:4;22189:20;22185:1;22174:9;22170:17;22163:47;22227:131;22353:4;22227:131;:::i;:::-;22219:139;;21946:419;;;:::o;22371:178::-;22511:30;22507:1;22499:6;22495:14;22488:54;22371:178;:::o;22555:366::-;22697:3;22718:67;22782:2;22777:3;22718:67;:::i;:::-;22711:74;;22794:93;22883:3;22794:93;:::i;:::-;22912:2;22907:3;22903:12;22896:19;;22555:366;;;:::o;22927:419::-;23093:4;23131:2;23120:9;23116:18;23108:26;;23180:9;23174:4;23170:20;23166:1;23155:9;23151:17;23144:47;23208:131;23334:4;23208:131;:::i;:::-;23200:139;;22927:419;;;:::o;23352:170::-;23492:22;23488:1;23480:6;23476:14;23469:46;23352:170;:::o;23528:366::-;23670:3;23691:67;23755:2;23750:3;23691:67;:::i;:::-;23684:74;;23767:93;23856:3;23767:93;:::i;:::-;23885:2;23880:3;23876:12;23869:19;;23528:366;;;:::o;23900:419::-;24066:4;24104:2;24093:9;24089:18;24081:26;;24153:9;24147:4;24143:20;24139:1;24128:9;24124:17;24117:47;24181:131;24307:4;24181:131;:::i;:::-;24173:139;;23900:419;;;:::o;24325:118::-;24412:24;24430:5;24412:24;:::i;:::-;24407:3;24400:37;24325:118;;:::o;24449:664::-;24654:4;24692:3;24681:9;24677:19;24669:27;;24706:71;24774:1;24763:9;24759:17;24750:6;24706:71;:::i;:::-;24787:72;24855:2;24844:9;24840:18;24831:6;24787:72;:::i;:::-;24869;24937:2;24926:9;24922:18;24913:6;24869:72;:::i;:::-;24951;25019:2;25008:9;25004:18;24995:6;24951:72;:::i;:::-;25033:73;25101:3;25090:9;25086:19;25077:6;25033:73;:::i;:::-;24449:664;;;;;;;;:::o;25119:442::-;25268:4;25306:2;25295:9;25291:18;25283:26;;25319:71;25387:1;25376:9;25372:17;25363:6;25319:71;:::i;:::-;25400:72;25468:2;25457:9;25453:18;25444:6;25400:72;:::i;:::-;25482;25550:2;25539:9;25535:18;25526:6;25482:72;:::i;:::-;25119:442;;;;;;:::o;25567:148::-;25669:11;25706:3;25691:18;;25567:148;;;;:::o;25721:214::-;25861:66;25857:1;25849:6;25845:14;25838:90;25721:214;:::o;25941:400::-;26101:3;26122:84;26204:1;26199:3;26122:84;:::i;:::-;26115:91;;26215:93;26304:3;26215:93;:::i;:::-;26333:1;26328:3;26324:11;26317:18;;25941:400;;;:::o;26347:79::-;26386:7;26415:5;26404:16;;26347:79;;;:::o;26432:157::-;26537:45;26557:24;26575:5;26557:24;:::i;:::-;26537:45;:::i;:::-;26532:3;26525:58;26432:157;;:::o;26595:663::-;26836:3;26858:148;27002:3;26858:148;:::i;:::-;26851:155;;27016:75;27087:3;27078:6;27016:75;:::i;:::-;27116:2;27111:3;27107:12;27100:19;;27129:75;27200:3;27191:6;27129:75;:::i;:::-;27229:2;27224:3;27220:12;27213:19;;27249:3;27242:10;;26595:663;;;;;:::o;27264:545::-;27437:4;27475:3;27464:9;27460:19;27452:27;;27489:71;27557:1;27546:9;27542:17;27533:6;27489:71;:::i;:::-;27570:68;27634:2;27623:9;27619:18;27610:6;27570:68;:::i;:::-;27648:72;27716:2;27705:9;27701:18;27692:6;27648:72;:::i;:::-;27730;27798:2;27787:9;27783:18;27774:6;27730:72;:::i;:::-;27264:545;;;;;;;:::o;27815:167::-;27955:19;27951:1;27943:6;27939:14;27932:43;27815:167;:::o;27988:366::-;28130:3;28151:67;28215:2;28210:3;28151:67;:::i;:::-;28144:74;;28227:93;28316:3;28227:93;:::i;:::-;28345:2;28340:3;28336:12;28329:19;;27988:366;;;:::o;28360:419::-;28526:4;28564:2;28553:9;28549:18;28541:26;;28613:9;28607:4;28603:20;28599:1;28588:9;28584:17;28577:47;28641:131;28767:4;28641:131;:::i;:::-;28633:139;;28360:419;;;:::o;28785:164::-;28925:16;28921:1;28913:6;28909:14;28902:40;28785:164;:::o;28955:366::-;29097:3;29118:67;29182:2;29177:3;29118:67;:::i;:::-;29111:74;;29194:93;29283:3;29194:93;:::i;:::-;29312:2;29307:3;29303:12;29296:19;;28955:366;;;:::o;29327:419::-;29493:4;29531:2;29520:9;29516:18;29508:26;;29580:9;29574:4;29570:20;29566:1;29555:9;29551:17;29544:47;29608:131;29734:4;29608:131;:::i;:::-;29600:139;;29327:419;;;:::o;29752:167::-;29892:19;29888:1;29880:6;29876:14;29869:43;29752:167;:::o;29925:366::-;30067:3;30088:67;30152:2;30147:3;30088:67;:::i;:::-;30081:74;;30164:93;30253:3;30164:93;:::i;:::-;30282:2;30277:3;30273:12;30266:19;;29925:366;;;:::o;30297:419::-;30463:4;30501:2;30490:9;30486:18;30478:26;;30550:9;30544:4;30540:20;30536:1;30525:9;30521:17;30514:47;30578:131;30704:4;30578:131;:::i;:::-;30570:139;;30297:419;;;:::o;30722:180::-;30862:32;30858:1;30850:6;30846:14;30839:56;30722:180;:::o;30908:366::-;31050:3;31071:67;31135:2;31130:3;31071:67;:::i;:::-;31064:74;;31147:93;31236:3;31147:93;:::i;:::-;31265:2;31260:3;31256:12;31249:19;;30908:366;;;:::o;31280:419::-;31446:4;31484:2;31473:9;31469:18;31461:26;;31533:9;31527:4;31523:20;31519:1;31508:9;31504:17;31497:47;31561:131;31687:4;31561:131;:::i;:::-;31553:139;;31280:419;;;:::o;31705:182::-;31845:34;31841:1;31833:6;31829:14;31822:58;31705:182;:::o;31893:366::-;32035:3;32056:67;32120:2;32115:3;32056:67;:::i;:::-;32049:74;;32132:93;32221:3;32132:93;:::i;:::-;32250:2;32245:3;32241:12;32234:19;;31893:366;;;:::o;32265:419::-;32431:4;32469:2;32458:9;32454:18;32446:26;;32518:9;32512:4;32508:20;32504:1;32493:9;32489:17;32482:47;32546:131;32672:4;32546:131;:::i;:::-;32538:139;;32265:419;;;:::o;32690:177::-;32830:29;32826:1;32818:6;32814:14;32807:53;32690:177;:::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:175::-;33810:27;33806:1;33798:6;33794:14;33787:51;33670:175;:::o;33851:366::-;33993:3;34014:67;34078:2;34073:3;34014:67;:::i;:::-;34007:74;;34090:93;34179:3;34090:93;:::i;:::-;34208:2;34203:3;34199:12;34192:19;;33851:366;;;:::o;34223:419::-;34389:4;34427:2;34416:9;34412:18;34404:26;;34476:9;34470:4;34466:20;34462:1;34451:9;34447:17;34440:47;34504:131;34630:4;34504:131;:::i;:::-;34496:139;;34223:419;;;:::o;34648:175::-;34788:27;34784:1;34776:6;34772:14;34765:51;34648:175;:::o;34829:366::-;34971:3;34992:67;35056:2;35051:3;34992:67;:::i;:::-;34985:74;;35068:93;35157:3;35068:93;:::i;:::-;35186:2;35181:3;35177:12;35170:19;;34829:366;;;:::o;35201:419::-;35367:4;35405:2;35394:9;35390:18;35382:26;;35454:9;35448:4;35444:20;35440:1;35429:9;35425:17;35418:47;35482:131;35608:4;35482:131;:::i;:::-;35474:139;;35201:419;;;:::o;35626:173::-;35766:25;35762:1;35754:6;35750:14;35743:49;35626:173;:::o;35805:366::-;35947:3;35968:67;36032:2;36027:3;35968:67;:::i;:::-;35961:74;;36044:93;36133:3;36044:93;:::i;:::-;36162:2;36157:3;36153:12;36146:19;;35805:366;;;:::o;36177:419::-;36343:4;36381:2;36370:9;36366:18;36358:26;;36430:9;36424:4;36420:20;36416:1;36405:9;36401:17;36394:47;36458:131;36584:4;36458:131;:::i;:::-;36450:139;;36177:419;;;:::o;36602:172::-;36742:24;36738:1;36730:6;36726:14;36719:48;36602:172;:::o;36780:366::-;36922:3;36943:67;37007:2;37002:3;36943:67;:::i;:::-;36936:74;;37019:93;37108:3;37019:93;:::i;:::-;37137:2;37132:3;37128:12;37121:19;;36780:366;;;:::o;37152:419::-;37318:4;37356:2;37345:9;37341:18;37333:26;;37405:9;37399:4;37395:20;37391:1;37380:9;37376:17;37369:47;37433:131;37559:4;37433:131;:::i;:::-;37425:139;;37152:419;;;:::o;37577:240::-;37717:34;37713:1;37705:6;37701:14;37694:58;37786:23;37781:2;37773:6;37769:15;37762:48;37577:240;:::o;37823:366::-;37965:3;37986:67;38050:2;38045:3;37986:67;:::i;:::-;37979:74;;38062:93;38151:3;38062:93;:::i;:::-;38180:2;38175:3;38171:12;38164:19;;37823:366;;;:::o;38195:419::-;38361:4;38399:2;38388:9;38384:18;38376:26;;38448:9;38442:4;38438:20;38434:1;38423:9;38419:17;38412:47;38476:131;38602:4;38476:131;:::i;:::-;38468:139;;38195:419;;;:::o;38620:169::-;38760:21;38756:1;38748:6;38744:14;38737:45;38620:169;:::o;38795:366::-;38937:3;38958:67;39022:2;39017:3;38958:67;:::i;:::-;38951:74;;39034:93;39123:3;39034:93;:::i;:::-;39152:2;39147:3;39143:12;39136:19;;38795:366;;;:::o;39167:419::-;39333:4;39371:2;39360:9;39356:18;39348:26;;39420:9;39414:4;39410:20;39406:1;39395:9;39391:17;39384:47;39448:131;39574:4;39448:131;:::i;:::-;39440:139;;39167:419;;;:::o;39592:241::-;39732:34;39728:1;39720:6;39716:14;39709:58;39801:24;39796:2;39788:6;39784:15;39777:49;39592:241;:::o;39839:366::-;39981:3;40002:67;40066:2;40061:3;40002:67;:::i;:::-;39995:74;;40078:93;40167:3;40078:93;:::i;:::-;40196:2;40191:3;40187:12;40180:19;;39839:366;;;:::o;40211:419::-;40377:4;40415:2;40404:9;40400:18;40392:26;;40464:9;40458:4;40454:20;40450:1;40439:9;40435:17;40428:47;40492:131;40618:4;40492:131;:::i;:::-;40484:139;;40211:419;;;:::o;40636:137::-;40690:5;40721:6;40715:13;40706:22;;40737:30;40761:5;40737:30;:::i;:::-;40636:137;;;;:::o;40779:345::-;40846:6;40895:2;40883:9;40874:7;40870:23;40866:32;40863:119;;;40901:79;;:::i;:::-;40863:119;41021:1;41046:61;41099:7;41090:6;41079:9;41075:22;41046:61;:::i;:::-;41036:71;;40992:125;40779:345;;;;:::o;41130:775::-;41363:4;41401:3;41390:9;41386:19;41378:27;;41415:71;41483:1;41472:9;41468:17;41459:6;41415:71;:::i;:::-;41496:72;41564:2;41553:9;41549:18;41540:6;41496:72;:::i;:::-;41578;41646:2;41635:9;41631:18;41622:6;41578:72;:::i;:::-;41660;41728:2;41717:9;41713:18;41704:6;41660:72;:::i;:::-;41742:73;41810:3;41799:9;41795:19;41786:6;41742:73;:::i;:::-;41825;41893:3;41882:9;41878:19;41869:6;41825:73;:::i;:::-;41130:775;;;;;;;;;:::o;41911:170::-;42051:22;42047:1;42039:6;42035:14;42028:46;41911:170;:::o;42087:366::-;42229:3;42250:67;42314:2;42309:3;42250:67;:::i;:::-;42243:74;;42326:93;42415:3;42326:93;:::i;:::-;42444:2;42439:3;42435:12;42428:19;;42087:366;;;:::o;42459:419::-;42625:4;42663:2;42652:9;42648:18;42640:26;;42712:9;42706:4;42702:20;42698:1;42687:9;42683:17;42676:47;42740:131;42866:4;42740:131;:::i;:::-;42732:139;;42459:419;;;:::o;42884:181::-;43024:33;43020:1;43012:6;43008:14;43001:57;42884:181;:::o;43071:366::-;43213:3;43234:67;43298:2;43293:3;43234:67;:::i;:::-;43227:74;;43310:93;43399:3;43310:93;:::i;:::-;43428:2;43423:3;43419:12;43412:19;;43071:366;;;:::o;43443:419::-;43609:4;43647:2;43636:9;43632:18;43624:26;;43696:9;43690:4;43686:20;43682:1;43671:9;43667:17;43660:47;43724:131;43850:4;43724:131;:::i;:::-;43716:139;;43443:419;;;:::o;43868:191::-;43908:4;43928:20;43946:1;43928:20;:::i;:::-;43923:25;;43962:20;43980:1;43962:20;:::i;:::-;43957:25;;44001:1;43998;43995:8;43992:34;;;44006:18;;:::i;:::-;43992:34;44051:1;44048;44044:9;44036:17;;43868:191;;;;:::o;44065:147::-;44166:11;44203:3;44188:18;;44065:147;;;;:::o;44218:114::-;;:::o;44338:398::-;44497:3;44518:83;44599:1;44594:3;44518:83;:::i;:::-;44511:90;;44610:93;44699:3;44610:93;:::i;:::-;44728:1;44723:3;44719:11;44712:18;;44338:398;;;:::o;44742:379::-;44926:3;44948:147;45091:3;44948:147;:::i;:::-;44941:154;;45112:3;45105:10;;44742:379;;;:::o;45127:179::-;45267:31;45263:1;45255:6;45251:14;45244:55;45127:179;:::o;45312:366::-;45454:3;45475:67;45539:2;45534:3;45475:67;:::i;:::-;45468:74;;45551:93;45640:3;45551:93;:::i;:::-;45669:2;45664:3;45660:12;45653:19;;45312:366;;;:::o;45684:419::-;45850:4;45888:2;45877:9;45873:18;45865:26;;45937:9;45931:4;45927:20;45923:1;45912:9;45908:17;45901:47;45965:131;46091:4;45965:131;:::i;:::-;45957:139;;45684:419;;;:::o;46109:177::-;46249:29;46245:1;46237:6;46233:14;46226:53;46109:177;:::o;46292:366::-;46434:3;46455:67;46519:2;46514:3;46455:67;:::i;:::-;46448:74;;46531:93;46620:3;46531:93;:::i;:::-;46649:2;46644:3;46640:12;46633:19;;46292:366;;;:::o;46664:419::-;46830:4;46868:2;46857:9;46853:18;46845:26;;46917:9;46911:4;46907:20;46903:1;46892:9;46888:17;46881:47;46945:131;47071:4;46945:131;:::i;:::-;46937:139;;46664:419;;;:::o;47089:182::-;47229:34;47225:1;47217:6;47213:14;47206:58;47089:182;:::o;47277:366::-;47419:3;47440:67;47504:2;47499:3;47440:67;:::i;:::-;47433:74;;47516:93;47605:3;47516:93;:::i;:::-;47634:2;47629:3;47625:12;47618:19;;47277:366;;;:::o;47649:419::-;47815:4;47853:2;47842:9;47838:18;47830:26;;47902:9;47896:4;47892:20;47888:1;47877:9;47873:17;47866:47;47930:131;48056:4;47930:131;:::i;:::-;47922:139;;47649:419;;;:::o;48074:180::-;48122:77;48119:1;48112:88;48219:4;48216:1;48209:15;48243:4;48240:1;48233:15;48260:180;48308:77;48305:1;48298:88;48405:4;48402:1;48395:15;48429:4;48426:1;48419:15;48446:143;48503:5;48534:6;48528:13;48519:22;;48550:33;48577:5;48550:33;:::i;:::-;48446:143;;;;:::o;48595:351::-;48665:6;48714:2;48702:9;48693:7;48689:23;48685:32;48682:119;;;48720:79;;:::i;:::-;48682:119;48840:1;48865:64;48921:7;48912:6;48901:9;48897:22;48865:64;:::i;:::-;48855:74;;48811:128;48595:351;;;;:::o;48952:85::-;48997:7;49026:5;49015:16;;48952:85;;;:::o;49043:158::-;49101:9;49134:61;49152:42;49161:32;49187:5;49161:32;:::i;:::-;49152:42;:::i;:::-;49134:61;:::i;:::-;49121:74;;49043:158;;;:::o;49207:147::-;49302:45;49341:5;49302:45;:::i;:::-;49297:3;49290:58;49207:147;;:::o;49360:114::-;49427:6;49461:5;49455:12;49445:22;;49360:114;;;:::o;49480:184::-;49579:11;49613:6;49608:3;49601:19;49653:4;49648:3;49644:14;49629:29;;49480:184;;;;:::o;49670:132::-;49737:4;49760:3;49752:11;;49790:4;49785:3;49781:14;49773:22;;49670:132;;;:::o;49808:108::-;49885:24;49903:5;49885:24;:::i;:::-;49880:3;49873:37;49808:108;;:::o;49922:179::-;49991:10;50012:46;50054:3;50046:6;50012:46;:::i;:::-;50090:4;50085:3;50081:14;50067:28;;49922:179;;;;:::o;50107:113::-;50177:4;50209;50204:3;50200:14;50192:22;;50107:113;;;:::o;50256:732::-;50375:3;50404:54;50452:5;50404:54;:::i;:::-;50474:86;50553:6;50548:3;50474:86;:::i;:::-;50467:93;;50584:56;50634:5;50584:56;:::i;:::-;50663:7;50694:1;50679:284;50704:6;50701:1;50698:13;50679:284;;;50780:6;50774:13;50807:63;50866:3;50851:13;50807:63;:::i;:::-;50800:70;;50893:60;50946:6;50893:60;:::i;:::-;50883:70;;50739:224;50726:1;50723;50719:9;50714:14;;50679:284;;;50683:14;50979:3;50972:10;;50380:608;;;50256:732;;;;:::o;50994:831::-;51257:4;51295:3;51284:9;51280:19;51272:27;;51309:71;51377:1;51366:9;51362:17;51353:6;51309:71;:::i;:::-;51390:80;51466:2;51455:9;51451:18;51442:6;51390:80;:::i;:::-;51517:9;51511:4;51507:20;51502:2;51491:9;51487:18;51480:48;51545:108;51648:4;51639:6;51545:108;:::i;:::-;51537:116;;51663:72;51731:2;51720:9;51716:18;51707:6;51663:72;:::i;:::-;51745:73;51813:3;51802:9;51798:19;51789:6;51745:73;:::i;:::-;50994:831;;;;;;;;:::o
Swarm Source
ipfs://06e646acf56eb518ebb53780fb86fb69a77df5ed6360c0c45b4243b9a0c83ac7
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.