Feature Tip: Add private address tag to any address under My Name Tag !
Overview
Max Total Supply
1,000,000,000 KNDX
Holders
10,713 ( 0.009%)
Market
Price
$0.02 @ 0.000009 ETH (+9.81%)
Onchain Market Cap
$24,869,230.00
Circulating Supply Market Cap
$13,534,178.00
Other Info
Token Contract (WITH 9 Decimals)
Balance
51,624.89536453 KNDXValue
$1,283.87 ( ~0.449055444820685 Eth) [0.0052%]Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|---|---|---|---|---|
1 | Uniswap V2 (Ethereum) | 0X7CA5AF5BA3472AF6049F63C1ABC324475D44EFC1-0XC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2 | $0.0248 0.0000086 Eth | $48,813.00 1,996,554.454 0X7CA5AF5BA3472AF6049F63C1ABC324475D44EFC1 | 100.0000% |
Contract Name:
KNDX
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-11-07 */ //SPDX-License-Identifier: MIT pragma solidity 0.8.17; interface IERC20 { function totalSupply() external view returns (uint256); function decimals() external view returns (uint8); function symbol() external view returns (string memory); function name() external view returns (string memory); function getOwner() external view returns (address); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address _owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } abstract contract Auth { address internal owner; constructor(address _owner) { owner = _owner; } modifier onlyOwner() { require(msg.sender == owner, "Only contract owner can call this function"); _; } function transferOwnership(address payable newOwner) external onlyOwner { owner = newOwner; emit OwnershipTransferred(newOwner); } event OwnershipTransferred(address owner); } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router02 { function swapExactTokensForETHSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external; function WETH() external pure returns (address); function factory() external pure returns (address); function addLiquidityETH(address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline) external payable returns (uint amountToken, uint amountETH, uint liquidity); } contract KNDX is IERC20, Auth { string constant _name = "Kondux"; string constant _symbol = "KNDX"; uint8 constant _decimals = 9; uint256 constant _totalSupply = 1_000_000_000 * 10**_decimals; mapping (address => uint256) _balances; mapping (address => mapping (address => uint256)) _allowances; mapping (address => bool) public excludedFromFees; bool public tradingOpen; uint256 public taxSwapMin; uint256 public taxSwapMax; mapping (address => bool) private _isLiqPool; uint8 constant _maxTaxRate = 5; uint8 public taxRateBuy; uint8 public taxRateSell; bool public antiBotEnabled; mapping (address => bool) public excludedFromAntiBot; mapping (address => uint256) private _lastSwapBlock; address payable private taxWallet = payable(0x79BD02b5936FFdC5915cB7Cd58156E3169F4F569); bool private _inTaxSwap = false; address private constant _uniswapV2RouterAddress = address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); IUniswapV2Router02 private _uniswapV2Router; modifier lockTaxSwap { _inTaxSwap = true; _; _inTaxSwap = false; } event TokensAirdropped(uint256 totalWallets, uint256 totalTokens); event TokensBurned(address indexed burnedByWallet, uint256 tokenAmount); event TaxWalletChanged(address newTaxWallet); event TaxRateChanged(uint8 newBuyTax, uint8 newSellTax); constructor () Auth(msg.sender) { taxSwapMin = _totalSupply * 10 / 10000; taxSwapMax = _totalSupply * 50 / 10000; _uniswapV2Router = IUniswapV2Router02(_uniswapV2RouterAddress); excludedFromFees[_uniswapV2RouterAddress] = true; excludedFromAntiBot[owner] = true; excludedFromAntiBot[address(this)] = true; excludedFromFees[owner] = true; excludedFromFees[address(this)] = true; excludedFromFees[taxWallet] = true; } receive() external payable {} function totalSupply() external pure override returns (uint256) { return _totalSupply; } function decimals() external pure override returns (uint8) { return _decimals; } function symbol() external pure override returns (string memory) { return _symbol; } function name() external pure override returns (string memory) { return _name; } function getOwner() external view override returns (address) { return owner; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _allowances[msg.sender][spender] = amount; emit Approval(msg.sender, spender, amount); return true; } function transfer(address recipient, uint256 amount) external override returns (bool) { require(_checkTradingOpen(), "Trading not open"); return _transferFrom(msg.sender, recipient, amount); } function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) { require(_checkTradingOpen(), "Trading not open"); if (_allowances[sender][msg.sender] != type(uint256).max){ _allowances[sender][msg.sender] = _allowances[sender][msg.sender] - amount; } return _transferFrom(sender, recipient, amount); } function _distributeInitialBalances() internal { //holder airdrops 27.965%, 1556 wallets uint256 airdropTokensAmount = 279_646_010 * 10**_decimals; _balances[owner] = airdropTokensAmount; emit Transfer(address(0), owner, airdropTokensAmount ); // Treasury 25%: 0x1D0A105F0cED39b207AE444957cc70483c04C767 uint256 treasuryAmount = 250_000_000 * 10**_decimals; _balances[address(0x1D0A105F0cED39b207AE444957cc70483c04C767)] = treasuryAmount; emit Transfer(address(0), address(0x1D0A105F0cED39b207AE444957cc70483c04C767), treasuryAmount ); // Dev Fund 19.462% : 0xac5c6FDd4F32977eec56C48978bAe86CE08968e0 uint256 devFundAmount = 194_620_743 * 10**_decimals; _balances[address(0xac5c6FDd4F32977eec56C48978bAe86CE08968e0)] = devFundAmount; emit Transfer(address(0), address(0xac5c6FDd4F32977eec56C48978bAe86CE08968e0), devFundAmount ); // Rewards pool 15%: 0x94baCbCceE5c16520Ab8545c35e89eCE7017a34D uint256 rewardsPoolAmount = 150_000_000 * 10**_decimals; _balances[address(0x94baCbCceE5c16520Ab8545c35e89eCE7017a34D)] = rewardsPoolAmount; emit Transfer(address(0), address(0x94baCbCceE5c16520Ab8545c35e89eCE7017a34D), rewardsPoolAmount ); // Marketing 44076978.428271124 : 0xCbE59E5967B80Ad18764d49c9184E6249aFe2D28 uint256 marketingAmount = 44_076_978 * 10**_decimals; _balances[address(0xCbE59E5967B80Ad18764d49c9184E6249aFe2D28)] = marketingAmount; emit Transfer(address(0), address(0xCbE59E5967B80Ad18764d49c9184E6249aFe2D28), marketingAmount ); //liquidity pool is 2.507% uint256 liquidityPoolAmount = 25_066_478 * 10**_decimals; _balances[address(this)] = liquidityPoolAmount; emit Transfer(address(0), address(this), liquidityPoolAmount ); // Burn amount (diff between total supply and the above, ~ 5.659% uint256 burnAmount = _totalSupply - (airdropTokensAmount+treasuryAmount+devFundAmount+rewardsPoolAmount+marketingAmount+liquidityPoolAmount); _balances[address(0)] = burnAmount; emit Transfer(address(0), address(0), burnAmount ); emit TokensBurned(address(0), burnAmount); } function initLP() external onlyOwner { require(!tradingOpen, "trading already open"); _distributeInitialBalances(); uint256 _contractETHBalance = address(this).balance; require(_contractETHBalance > 0, "no eth in contract"); uint256 _contractTokenBalance = balanceOf(address(this)); require(_contractTokenBalance > 0, "no tokens"); address _uniLpAddr = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); _isLiqPool[_uniLpAddr] = true; _approveRouter(_contractTokenBalance); _addLiquidity(_contractTokenBalance, _contractETHBalance, false); // _openTrading(); //trading will be open manually through enableTrading() function } function _approveRouter(uint256 _tokenAmount) internal { if ( _allowances[address(this)][_uniswapV2RouterAddress] < _tokenAmount ) { _allowances[address(this)][_uniswapV2RouterAddress] = type(uint256).max; emit Approval(address(this), _uniswapV2RouterAddress, type(uint256).max); } } function _addLiquidity(uint256 _tokenAmount, uint256 _ethAmountWei, bool autoburn) internal { address lpTokenRecipient = address(0); if ( !autoburn ) { lpTokenRecipient = owner; } _uniswapV2Router.addLiquidityETH{value: _ethAmountWei} ( address(this), _tokenAmount, 0, 0, lpTokenRecipient, block.timestamp ); } function enableTrading() external onlyOwner { _openTrading(); } function _openTrading() internal { require(!tradingOpen, "trading already open"); taxRateBuy = 3; taxRateSell = 3; tradingOpen = true; } function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) { require(sender != address(0) || recipient != address(0), "Zero wallet cannot do transfers."); if ( tradingOpen ) { if ( antiBotEnabled ) { checkAntiBot(sender, recipient); } if ( !_inTaxSwap && _isLiqPool[recipient] ) { _swapTaxAndDistributeEth(); } } uint256 _taxAmount = _calculateTax(sender, recipient, amount); uint256 _transferAmount = amount - _taxAmount; _balances[sender] = _balances[sender] - amount; if ( _taxAmount > 0 ) { _balances[address(this)] = _balances[address(this)] + _taxAmount; } _balances[recipient] = _balances[recipient] + _transferAmount; emit Transfer(sender, recipient, amount); return true; } function _checkTradingOpen() private view returns (bool){ bool checkResult = false; if ( tradingOpen ) { checkResult = true; } else if ( tx.origin == owner ) { checkResult = true; } return checkResult; } function _calculateTax(address sender, address recipient, uint256 amount) internal view returns (uint256) { uint256 taxAmount; if ( !tradingOpen || excludedFromFees[sender] || excludedFromFees[recipient] ) { taxAmount = 0; } else if ( _isLiqPool[sender] ) { taxAmount = amount * taxRateBuy / 100; } else if ( _isLiqPool[recipient] ) { taxAmount = amount * taxRateSell / 100; } else { taxAmount = 0; } return taxAmount; } function burnTokens(uint256 amount) external { //burns tokens from the msg.sender's wallet uint256 _tokensAvailable = balanceOf(msg.sender); require(amount <= _tokensAvailable, "Token balance too low"); _balances[msg.sender] -= amount; _balances[address(0)] += amount; emit Transfer(msg.sender,address(0), amount); emit TokensBurned(msg.sender, amount); } function checkAntiBot(address sender, address recipient) internal { if ( _isLiqPool[sender] && !excludedFromAntiBot[recipient] ) { //buy transactions require(_lastSwapBlock[recipient] < block.number, "AntiBot triggered"); _lastSwapBlock[recipient] = block.number; } else if ( _isLiqPool[recipient] && !excludedFromAntiBot[sender] ) { //sell transactions require(_lastSwapBlock[sender] < block.number, "AntiBot triggered"); _lastSwapBlock[sender] = block.number; } } function enableAntiBot(bool isEnabled) external onlyOwner { antiBotEnabled = isEnabled; } function excludeFromAntiBot(address wallet, bool isExcluded) external onlyOwner { if (!isExcluded) { require(wallet != address(this) && wallet != owner, "This address must be excluded" ); } excludedFromAntiBot[wallet] = isExcluded; } function excludeFromFees(address wallet, bool isExcluded) external onlyOwner { if (isExcluded) { require(wallet != address(this) && wallet != owner, "Cannot enforce fees for this address"); } excludedFromFees[wallet] = isExcluded; } function adjustTaxRate(uint8 newBuyTax, uint8 newSellTax) external onlyOwner { require(newBuyTax <= _maxTaxRate && newSellTax <= _maxTaxRate, "Tax too high"); //set new tax rate percentage - cannot be higher than the default rate 5% taxRateBuy = newBuyTax; taxRateSell = newSellTax; emit TaxRateChanged(newBuyTax, newSellTax); } function setTaxWallet(address newTaxWallet) external onlyOwner { taxWallet = payable(newTaxWallet); excludedFromFees[newTaxWallet] = true; emit TaxWalletChanged(newTaxWallet); } function taxSwapSettings(uint32 minValue, uint32 minDivider, uint32 maxValue, uint32 maxDivider) external onlyOwner { taxSwapMin = _totalSupply * minValue / minDivider; taxSwapMax = _totalSupply * maxValue / maxDivider; require(taxSwapMax>=taxSwapMin, "MinMax error"); require(taxSwapMax>_totalSupply / 10000, "Upper threshold too low"); require(taxSwapMax<_totalSupply * 2 / 100, "Upper threshold too high"); } function _swapTaxAndDistributeEth() private lockTaxSwap { uint256 _taxTokensAvailable = balanceOf(address(this)); if ( _taxTokensAvailable >= taxSwapMin && tradingOpen ) { if ( _taxTokensAvailable >= taxSwapMax ) { _taxTokensAvailable = taxSwapMax; } if ( _taxTokensAvailable > 10**_decimals) { _swapTaxTokensForEth(_taxTokensAvailable); uint256 _contractETHBalance = address(this).balance; if (_contractETHBalance > 0) { _distributeTaxEth(_contractETHBalance); } } } } function _swapTaxTokensForEth(uint256 _tokenAmount) private { _approveRouter(_tokenAmount); address[] memory path = new address[](2); path[0] = address(this); path[1] = _uniswapV2Router.WETH(); _uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(_tokenAmount,0,path,address(this),block.timestamp); } function _distributeTaxEth(uint256 _amount) private { taxWallet.transfer(_amount); } function taxTokensSwap() external onlyOwner { uint256 taxTokenBalance = balanceOf(address(this)); require(taxTokenBalance > 0, "No tokens"); _swapTaxTokensForEth(taxTokenBalance); } function taxEthSend() external onlyOwner { uint256 _contractEthBalance = address(this).balance; require(_contractEthBalance > 0, "No ETH in contract to distribute"); _distributeTaxEth(_contractEthBalance); } function airdrop(address[] calldata addresses, uint256[] calldata tokenAmounts) external onlyOwner { require(addresses.length <= 250,"Wallet count over 250 (gas risk)"); require(addresses.length == tokenAmounts.length,"Address and token amount list mismach"); uint256 airdropTotal = 0; for(uint i=0; i < addresses.length; i++){ airdropTotal += (tokenAmounts[i] * 10**_decimals); } require(_balances[msg.sender] >= airdropTotal, "Token balance lower than airdrop total"); for(uint i=0; i < addresses.length; i++){ _balances[msg.sender] -= (tokenAmounts[i] * 10**_decimals); _balances[addresses[i]] += (tokenAmounts[i] * 10**_decimals); emit Transfer(msg.sender, addresses[i], (tokenAmounts[i] * 10**_decimals) ); } emit TokensAirdropped(addresses.length, airdropTotal); } }
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":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"newBuyTax","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"newSellTax","type":"uint8"}],"name":"TaxRateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newTaxWallet","type":"address"}],"name":"TaxWalletChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"totalWallets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalTokens","type":"uint256"}],"name":"TokensAirdropped","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"burnedByWallet","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"TokensBurned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"uint8","name":"newBuyTax","type":"uint8"},{"internalType":"uint8","name":"newSellTax","type":"uint8"}],"name":"adjustTaxRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tokenAmounts","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"antiBotEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"isEnabled","type":"bool"}],"name":"enableAntiBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"excludeFromAntiBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludedFromAntiBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"newTaxWallet","type":"address"}],"name":"setTaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"taxEthSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"taxRateBuy","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxRateSell","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxSwapMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxSwapMin","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"minValue","type":"uint32"},{"internalType":"uint32","name":"minDivider","type":"uint32"},{"internalType":"uint32","name":"maxValue","type":"uint32"},{"internalType":"uint32","name":"maxDivider","type":"uint32"}],"name":"taxSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"taxTokensSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040527379bd02b5936ffdc5915cb7cd58156e3169f4f569600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600b60146101000a81548160ff0219169083151502179055503480156200008157600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050612710600a6009600a620000d99190620005c9565b633b9aca00620000ea91906200061a565b620000f691906200061a565b62000102919062000694565b60058190555061271060326009600a6200011d9190620005c9565b633b9aca006200012e91906200061a565b6200013a91906200061a565b62000146919062000694565b600681905550737a250d5630b4cf539739df2c5dacb4c659f2488d600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160036000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620006cc565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620004bd578086048111156200049557620004946200042f565b5b6001851615620004a55780820291505b8081029050620004b5856200045e565b945062000475565b94509492505050565b600082620004d85760019050620005ab565b81620004e85760009050620005ab565b81600181146200050157600281146200050c5762000542565b6001915050620005ab565b60ff8411156200052157620005206200042f565b5b8360020a9150848211156200053b576200053a6200042f565b5b50620005ab565b5060208310610133831016604e8410600b84101617156200057c5782820a9050838111156200057657620005756200042f565b5b620005ab565b6200058b84848460016200046b565b92509050818404811115620005a557620005a46200042f565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620005d682620005b2565b9150620005e383620005bc565b9250620006127fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620004c6565b905092915050565b60006200062782620005b2565b91506200063483620005b2565b92508282026200064481620005b2565b915082820484148315176200065e576200065d6200042f565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620006a182620005b2565b9150620006ae83620005b2565b925082620006c157620006c062000665565b5b828204905092915050565b614f9680620006dc6000396000f3fe6080604052600436106101db5760003560e01c80638a8c523c11610102578063db86159911610095578063ea414b2811610064578063ea414b2814610690578063eb819948146106b9578063f2fde38b146106e4578063ffb54a991461070d576101e2565b8063db861599146105d4578063dbe66ca0146105ff578063dca2a8b61461063c578063dd62ed3e14610653576101e2565b8063c0246668116100d1578063c02466681461052c578063cc18e05a14610555578063cfc06e0b14610580578063d8c6404b146105a9576101e2565b80638a8c523c1461048457806395d89b411461049b578063a4191178146104c6578063a9059cbb146104ef576101e2565b8063388b4f171161017a5780636e34e91d116101495780636e34e91d146103da57806370a08231146103f157806380781cf91461042e578063893d20e814610459576101e2565b8063388b4f1714610322578063672434821461035f5780636b7f8b90146103885780636d1b229d146103b1576101e2565b806318160ddd116101b657806318160ddd146102785780631c939ee9146102a357806323b872dd146102ba578063313ce567146102f7576101e2565b8062fffc9d146101e757806306fdde0314610210578063095ea7b31461023b576101e2565b366101e257005b600080fd5b3480156101f357600080fd5b5061020e600480360381019061020991906139cd565b610738565b005b34801561021c57600080fd5b50610225610982565b6040516102329190613ac4565b60405180910390f35b34801561024757600080fd5b50610262600480360381019061025d9190613b7a565b6109bf565b60405161026f9190613bd5565b60405180910390f35b34801561028457600080fd5b5061028d610ab1565b60405161029a9190613bff565b60405180910390f35b3480156102af57600080fd5b506102b8610ad5565b005b3480156102c657600080fd5b506102e160048036038101906102dc9190613c1a565b610bb7565b6040516102ee9190613bd5565b60405180910390f35b34801561030357600080fd5b5061030c610dc0565b6040516103199190613c89565b60405180910390f35b34801561032e57600080fd5b5061034960048036038101906103449190613ca4565b610dc9565b6040516103569190613bd5565b60405180910390f35b34801561036b57600080fd5b5061038660048036038101906103819190613d8c565b610de9565b005b34801561039457600080fd5b506103af60048036038101906103aa9190613e39565b611241565b005b3480156103bd57600080fd5b506103d860048036038101906103d39190613e66565b6112ec565b005b3480156103e657600080fd5b506103ef6114a0565b005b3480156103fd57600080fd5b5061041860048036038101906104139190613ca4565b611832565b6040516104259190613bff565b60405180910390f35b34801561043a57600080fd5b5061044361187b565b6040516104509190613c89565b60405180910390f35b34801561046557600080fd5b5061046e61188e565b60405161047b9190613ea2565b60405180910390f35b34801561049057600080fd5b506104996118b7565b005b3480156104a757600080fd5b506104b061194f565b6040516104bd9190613ac4565b60405180910390f35b3480156104d257600080fd5b506104ed60048036038101906104e89190613ee9565b61198c565b005b3480156104fb57600080fd5b5061051660048036038101906105119190613b7a565b611aea565b6040516105239190613bd5565b60405180910390f35b34801561053857600080fd5b50610553600480360381019061054e9190613f29565b611b46565b005b34801561056157600080fd5b5061056a611cfd565b6040516105779190613c89565b60405180910390f35b34801561058c57600080fd5b506105a760048036038101906105a29190613f29565b611d10565b005b3480156105b557600080fd5b506105be611ec6565b6040516105cb9190613bd5565b60405180910390f35b3480156105e057600080fd5b506105e9611ed9565b6040516105f69190613bff565b60405180910390f35b34801561060b57600080fd5b5061062660048036038101906106219190613ca4565b611edf565b6040516106339190613bd5565b60405180910390f35b34801561064857600080fd5b50610651611eff565b005b34801561065f57600080fd5b5061067a60048036038101906106759190613f69565b611fe9565b6040516106879190613bff565b60405180910390f35b34801561069c57600080fd5b506106b760048036038101906106b29190613ca4565b612070565b005b3480156106c557600080fd5b506106ce6121d0565b6040516106db9190613bff565b60405180910390f35b3480156106f057600080fd5b5061070b60048036038101906107069190613fe7565b6121d6565b005b34801561071957600080fd5b506107226122de565b60405161072f9190613bd5565b60405180910390f35b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107bd90614086565b60405180910390fd5b8263ffffffff168463ffffffff166009600a6107e29190614208565b633b9aca006107f19190614253565b6107fb9190614253565b61080591906142c4565b6005819055508063ffffffff168263ffffffff166009600a6108279190614208565b633b9aca006108369190614253565b6108409190614253565b61084a91906142c4565b6006819055506005546006541015610897576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088e90614341565b60405180910390fd5b6127106009600a6108a89190614208565b633b9aca006108b79190614253565b6108c191906142c4565b60065411610904576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fb906143ad565b60405180910390fd5b606460026009600a6109169190614208565b633b9aca006109259190614253565b61092f9190614253565b61093991906142c4565b6006541061097c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097390614419565b60405180910390fd5b50505050565b60606040518060400160405280600681526020017f4b6f6e6475780000000000000000000000000000000000000000000000000000815250905090565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610a9f9190613bff565b60405180910390a36001905092915050565b60006009600a610ac19190614208565b633b9aca00610ad09190614253565b905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5a90614086565b60405180910390fd5b600047905060008111610bab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba290614485565b60405180910390fd5b610bb4816122f1565b50565b6000610bc161235d565b610c00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf7906144f1565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610dac5781600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d2b9190614511565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610db78484846123e2565b90509392505050565b60006009905090565b60096020528060005260406000206000915054906101000a900460ff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6e90614086565b60405180910390fd5b60fa848490501115610ebe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb590614591565b60405180910390fd5b818190508484905014610f06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efd90614623565b60405180910390fd5b6000805b85859050811015610f67576009600a610f239190614208565b848483818110610f3657610f35614643565b5b90506020020135610f479190614253565b82610f529190614672565b91508080610f5f906146a6565b915050610f0a565b5080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610fea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe190614760565b60405180910390fd5b60005b858590508110156111fd576009600a6110069190614208565b84848381811061101957611018614643565b5b9050602002013561102a9190614253565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546110789190614511565b925050819055506009600a61108d9190614208565b8484838181106110a05761109f614643565b5b905060200201356110b19190614253565b600160008888858181106110c8576110c7614643565b5b90506020020160208101906110dd9190613ca4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546111269190614672565b925050819055508585828181106111405761113f614643565b5b90506020020160208101906111559190613ca4565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a6111b19190614208565b8787868181106111c4576111c3614643565b5b905060200201356111d59190614253565b6040516111e29190613bff565b60405180910390a380806111f5906146a6565b915050610fed565b507f71cc7095cc35ed4701c217a8efb440732eb0737da67f6548c008ac26fba954648585905082604051611232929190614780565b60405180910390a15050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c690614086565b60405180910390fd5b80600860026101000a81548160ff02191690831515021790555050565b60006112f733611832565b90508082111561133c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611333906147f5565b60405180910390fd5b81600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461138b9190614511565b9250508190555081600160008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546113e19190614672565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516114469190613bff565b60405180910390a33373ffffffffffffffffffffffffffffffffffffffff167ffd38818f5291bf0bb3a2a48aadc06ba8757865d1dabd804585338aab3009dcb6836040516114949190613bff565b60405180910390a25050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461152e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152590614086565b60405180910390fd5b600460009054906101000a900460ff161561157e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157590614861565b60405180910390fd5b61158661277a565b6000479050600081116115ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c5906148cd565b60405180910390fd5b60006115d930611832565b90506000811161161e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161590614939565b60405180910390fd5b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561168d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b1919061496e565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561173a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061175e919061496e565b6040518363ffffffff1660e01b815260040161177b92919061499b565b6020604051808303816000875af115801561179a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117be919061496e565b90506001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061182182612e83565b61182d8284600061306d565b505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600860009054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611945576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193c90614086565b60405180910390fd5b61194d61314b565b565b60606040518060400160405280600481526020017f4b4e445800000000000000000000000000000000000000000000000000000000815250905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1190614086565b60405180910390fd5b600560ff168260ff1611158015611a385750600560ff168160ff1611155b611a77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6e90614a10565b60405180910390fd5b81600860006101000a81548160ff021916908360ff16021790555080600860016101000a81548160ff021916908360ff1602179055507f1dcee7b4b427ba2551f752d6f3ff03de326f6a4fca7432dda760ccff555f27f38282604051611ade929190614a30565b60405180910390a15050565b6000611af461235d565b611b33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2a906144f1565b60405180910390fd5b611b3e3384846123e2565b905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611bd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bcb90614086565b60405180910390fd5b8015611ca2573073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611c62575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b611ca1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9890614acb565b60405180910390fd5b5b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600860019054906101000a900460ff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9590614086565b60405180910390fd5b80611e6b573073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611e2b575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b611e6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6190614b37565b60405180910390fd5b5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600860029054906101000a900460ff1681565b60065481565b60036020528060005260406000206000915054906101000a900460ff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611f8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8490614086565b60405180910390fd5b6000611f9830611832565b905060008111611fdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd490614ba3565b60405180910390fd5b611fe6816131f0565b50565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146120fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f590614086565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507ea263b61aab5ebdcff20c4c0c74c2589ea5ab52149abde19eca17ad52217899816040516121c59190613ea2565b60405180910390a150565b60055481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612264576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225b90614086565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516122d39190614c22565b60405180910390a150565b600460009054906101000a900460ff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612359573d6000803e3d6000fd5b5050565b60008060009050600460009054906101000a900460ff161561238257600190506123db565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16036123da57600190505b5b8091505090565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158061244c5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b61248b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248290614c89565b60405180910390fd5b600460009054906101000a900460ff161561253557600860029054906101000a900460ff16156124c0576124bf848461340f565b5b600b60149054906101000a900460ff161580156125265750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612534576125336136f4565b5b5b60006125428585856137a5565b9050600081846125529190614511565b905083600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461259f9190614511565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600082111561267a5781600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126369190614672565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b80600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126c59190614672565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516127659190613bff565b60405180910390a36001925050509392505050565b60006009600a61278a9190614208565b6310ab0f3a6127999190614253565b905080600160008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161287e9190613bff565b60405180910390a360006009600a6128969190614208565b630ee6b2806128a59190614253565b90508060016000731d0a105f0ced39b207ae444957cc70483c04c76773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550731d0a105f0ced39b207ae444957cc70483c04c76773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516129719190613bff565b60405180910390a360006009600a6129899190614208565b630b99ad476129989190614253565b9050806001600073ac5c6fdd4f32977eec56c48978bae86ce08968e073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555073ac5c6fdd4f32977eec56c48978bae86ce08968e073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612a649190613bff565b60405180910390a360006009600a612a7c9190614208565b6308f0d180612a8b9190614253565b905080600160007394bacbccee5c16520ab8545c35e89ece7017a34d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507394bacbccee5c16520ab8545c35e89ece7017a34d73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612b579190613bff565b60405180910390a360006009600a612b6f9190614208565b6302a08fb2612b7e9190614253565b9050806001600073cbe59e5967b80ad18764d49c9184e6249afe2d2873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555073cbe59e5967b80ad18764d49c9184e6249afe2d2873ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612c4a9190613bff565b60405180910390a360006009600a612c629190614208565b63017e7bee612c719190614253565b905080600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612d159190613bff565b60405180910390a3600081838587898b612d2f9190614672565b612d399190614672565b612d439190614672565b612d4d9190614672565b612d579190614672565b6009600a612d659190614208565b633b9aca00612d749190614253565b612d7e9190614511565b905080600160008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612e239190613bff565b60405180910390a3600073ffffffffffffffffffffffffffffffffffffffff167ffd38818f5291bf0bb3a2a48aadc06ba8757865d1dabd804585338aab3009dcb682604051612e729190613bff565b60405180910390a250505050505050565b80600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561306a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040516130619190613bff565b60405180910390a35b50565b6000816130985760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308760008087426040518863ffffffff1660e01b81526004016130ff96959493929190614ce4565b60606040518083038185885af115801561311d573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906131429190614d5a565b50505050505050565b600460009054906101000a900460ff161561319b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161319290614861565b60405180910390fd5b6003600860006101000a81548160ff021916908360ff1602179055506003600860016101000a81548160ff021916908360ff1602179055506001600460006101000a81548160ff021916908315150217905550565b6131f981612e83565b6000600267ffffffffffffffff81111561321657613215614dad565b5b6040519080825280602002602001820160405280156132445781602001602082028036833780820191505090505b509050308160008151811061325c5761325b614643565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613303573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613327919061496e565b8160018151811061333b5761333a614643565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016133d9959493929190614e9a565b600060405180830381600087803b1580156133f357600080fd5b505af1158015613407573d6000803e3d6000fd5b505050505050565b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156134b25750600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156135815743600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410613538576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161352f90614f40565b60405180910390fd5b43600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506136f0565b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156136245750600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156136ef5743600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054106136aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136a190614f40565b60405180910390fd5b43600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b5050565b6001600b60146101000a81548160ff021916908315150217905550600061371a30611832565b9050600554811015801561373a5750600460009054906101000a900460ff165b1561378757600654811061374e5760065490505b6009600a61375c9190614208565b8111156137865761376c816131f0565b6000479050600081111561378457613783816122f1565b5b505b5b506000600b60146101000a81548160ff021916908315150217905550565b600080600460009054906101000a900460ff16158061380d5750600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806138615750600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561386f576000905061397c565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156138f2576064600860009054906101000a900460ff1660ff16846138e19190614253565b6138eb91906142c4565b905061397b565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613975576064600860019054906101000a900460ff1660ff16846139649190614253565b61396e91906142c4565b905061397a565b600090505b5b5b809150509392505050565b600080fd5b600080fd5b600063ffffffff82169050919050565b6139aa81613991565b81146139b557600080fd5b50565b6000813590506139c7816139a1565b92915050565b600080600080608085870312156139e7576139e6613987565b5b60006139f5878288016139b8565b9450506020613a06878288016139b8565b9350506040613a17878288016139b8565b9250506060613a28878288016139b8565b91505092959194509250565b600081519050919050565b600082825260208201905092915050565b60005b83811015613a6e578082015181840152602081019050613a53565b60008484015250505050565b6000601f19601f8301169050919050565b6000613a9682613a34565b613aa08185613a3f565b9350613ab0818560208601613a50565b613ab981613a7a565b840191505092915050565b60006020820190508181036000830152613ade8184613a8b565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613b1182613ae6565b9050919050565b613b2181613b06565b8114613b2c57600080fd5b50565b600081359050613b3e81613b18565b92915050565b6000819050919050565b613b5781613b44565b8114613b6257600080fd5b50565b600081359050613b7481613b4e565b92915050565b60008060408385031215613b9157613b90613987565b5b6000613b9f85828601613b2f565b9250506020613bb085828601613b65565b9150509250929050565b60008115159050919050565b613bcf81613bba565b82525050565b6000602082019050613bea6000830184613bc6565b92915050565b613bf981613b44565b82525050565b6000602082019050613c146000830184613bf0565b92915050565b600080600060608486031215613c3357613c32613987565b5b6000613c4186828701613b2f565b9350506020613c5286828701613b2f565b9250506040613c6386828701613b65565b9150509250925092565b600060ff82169050919050565b613c8381613c6d565b82525050565b6000602082019050613c9e6000830184613c7a565b92915050565b600060208284031215613cba57613cb9613987565b5b6000613cc884828501613b2f565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112613cf657613cf5613cd1565b5b8235905067ffffffffffffffff811115613d1357613d12613cd6565b5b602083019150836020820283011115613d2f57613d2e613cdb565b5b9250929050565b60008083601f840112613d4c57613d4b613cd1565b5b8235905067ffffffffffffffff811115613d6957613d68613cd6565b5b602083019150836020820283011115613d8557613d84613cdb565b5b9250929050565b60008060008060408587031215613da657613da5613987565b5b600085013567ffffffffffffffff811115613dc457613dc361398c565b5b613dd087828801613ce0565b9450945050602085013567ffffffffffffffff811115613df357613df261398c565b5b613dff87828801613d36565b925092505092959194509250565b613e1681613bba565b8114613e2157600080fd5b50565b600081359050613e3381613e0d565b92915050565b600060208284031215613e4f57613e4e613987565b5b6000613e5d84828501613e24565b91505092915050565b600060208284031215613e7c57613e7b613987565b5b6000613e8a84828501613b65565b91505092915050565b613e9c81613b06565b82525050565b6000602082019050613eb76000830184613e93565b92915050565b613ec681613c6d565b8114613ed157600080fd5b50565b600081359050613ee381613ebd565b92915050565b60008060408385031215613f0057613eff613987565b5b6000613f0e85828601613ed4565b9250506020613f1f85828601613ed4565b9150509250929050565b60008060408385031215613f4057613f3f613987565b5b6000613f4e85828601613b2f565b9250506020613f5f85828601613e24565b9150509250929050565b60008060408385031215613f8057613f7f613987565b5b6000613f8e85828601613b2f565b9250506020613f9f85828601613b2f565b9150509250929050565b6000613fb482613ae6565b9050919050565b613fc481613fa9565b8114613fcf57600080fd5b50565b600081359050613fe181613fbb565b92915050565b600060208284031215613ffd57613ffc613987565b5b600061400b84828501613fd2565b91505092915050565b7f4f6e6c7920636f6e7472616374206f776e65722063616e2063616c6c2074686960008201527f732066756e6374696f6e00000000000000000000000000000000000000000000602082015250565b6000614070602a83613a3f565b915061407b82614014565b604082019050919050565b6000602082019050818103600083015261409f81614063565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111561412c57808604811115614108576141076140a6565b5b60018516156141175780820291505b8081029050614125856140d5565b94506140ec565b94509492505050565b6000826141455760019050614201565b816141535760009050614201565b81600181146141695760028114614173576141a2565b6001915050614201565b60ff841115614185576141846140a6565b5b8360020a91508482111561419c5761419b6140a6565b5b50614201565b5060208310610133831016604e8410600b84101617156141d75782820a9050838111156141d2576141d16140a6565b5b614201565b6141e484848460016140e2565b925090508184048111156141fb576141fa6140a6565b5b81810290505b9392505050565b600061421382613b44565b915061421e83613c6d565b925061424b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614135565b905092915050565b600061425e82613b44565b915061426983613b44565b925082820261427781613b44565b9150828204841483151761428e5761428d6140a6565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006142cf82613b44565b91506142da83613b44565b9250826142ea576142e9614295565b5b828204905092915050565b7f4d696e4d6178206572726f720000000000000000000000000000000000000000600082015250565b600061432b600c83613a3f565b9150614336826142f5565b602082019050919050565b6000602082019050818103600083015261435a8161431e565b9050919050565b7f5570706572207468726573686f6c6420746f6f206c6f77000000000000000000600082015250565b6000614397601783613a3f565b91506143a282614361565b602082019050919050565b600060208201905081810360008301526143c68161438a565b9050919050565b7f5570706572207468726573686f6c6420746f6f20686967680000000000000000600082015250565b6000614403601883613a3f565b915061440e826143cd565b602082019050919050565b60006020820190508181036000830152614432816143f6565b9050919050565b7f4e6f2045544820696e20636f6e747261637420746f2064697374726962757465600082015250565b600061446f602083613a3f565b915061447a82614439565b602082019050919050565b6000602082019050818103600083015261449e81614462565b9050919050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b60006144db601083613a3f565b91506144e6826144a5565b602082019050919050565b6000602082019050818103600083015261450a816144ce565b9050919050565b600061451c82613b44565b915061452783613b44565b925082820390508181111561453f5761453e6140a6565b5b92915050565b7f57616c6c657420636f756e74206f766572203235302028676173207269736b29600082015250565b600061457b602083613a3f565b915061458682614545565b602082019050919050565b600060208201905081810360008301526145aa8161456e565b9050919050565b7f4164647265737320616e6420746f6b656e20616d6f756e74206c697374206d6960008201527f736d616368000000000000000000000000000000000000000000000000000000602082015250565b600061460d602583613a3f565b9150614618826145b1565b604082019050919050565b6000602082019050818103600083015261463c81614600565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061467d82613b44565b915061468883613b44565b92508282019050808211156146a05761469f6140a6565b5b92915050565b60006146b182613b44565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036146e3576146e26140a6565b5b600182019050919050565b7f546f6b656e2062616c616e6365206c6f776572207468616e2061697264726f7060008201527f20746f74616c0000000000000000000000000000000000000000000000000000602082015250565b600061474a602683613a3f565b9150614755826146ee565b604082019050919050565b600060208201905081810360008301526147798161473d565b9050919050565b60006040820190506147956000830185613bf0565b6147a26020830184613bf0565b9392505050565b7f546f6b656e2062616c616e636520746f6f206c6f770000000000000000000000600082015250565b60006147df601583613a3f565b91506147ea826147a9565b602082019050919050565b6000602082019050818103600083015261480e816147d2565b9050919050565b7f74726164696e6720616c7265616479206f70656e000000000000000000000000600082015250565b600061484b601483613a3f565b915061485682614815565b602082019050919050565b6000602082019050818103600083015261487a8161483e565b9050919050565b7f6e6f2065746820696e20636f6e74726163740000000000000000000000000000600082015250565b60006148b7601283613a3f565b91506148c282614881565b602082019050919050565b600060208201905081810360008301526148e6816148aa565b9050919050565b7f6e6f20746f6b656e730000000000000000000000000000000000000000000000600082015250565b6000614923600983613a3f565b915061492e826148ed565b602082019050919050565b6000602082019050818103600083015261495281614916565b9050919050565b60008151905061496881613b18565b92915050565b60006020828403121561498457614983613987565b5b600061499284828501614959565b91505092915050565b60006040820190506149b06000830185613e93565b6149bd6020830184613e93565b9392505050565b7f54617820746f6f20686967680000000000000000000000000000000000000000600082015250565b60006149fa600c83613a3f565b9150614a05826149c4565b602082019050919050565b60006020820190508181036000830152614a29816149ed565b9050919050565b6000604082019050614a456000830185613c7a565b614a526020830184613c7a565b9392505050565b7f43616e6e6f7420656e666f726365206665657320666f7220746869732061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614ab5602483613a3f565b9150614ac082614a59565b604082019050919050565b60006020820190508181036000830152614ae481614aa8565b9050919050565b7f546869732061646472657373206d757374206265206578636c75646564000000600082015250565b6000614b21601d83613a3f565b9150614b2c82614aeb565b602082019050919050565b60006020820190508181036000830152614b5081614b14565b9050919050565b7f4e6f20746f6b656e730000000000000000000000000000000000000000000000600082015250565b6000614b8d600983613a3f565b9150614b9882614b57565b602082019050919050565b60006020820190508181036000830152614bbc81614b80565b9050919050565b6000819050919050565b6000614be8614be3614bde84613ae6565b614bc3565b613ae6565b9050919050565b6000614bfa82614bcd565b9050919050565b6000614c0c82614bef565b9050919050565b614c1c81614c01565b82525050565b6000602082019050614c376000830184614c13565b92915050565b7f5a65726f2077616c6c65742063616e6e6f7420646f207472616e73666572732e600082015250565b6000614c73602083613a3f565b9150614c7e82614c3d565b602082019050919050565b60006020820190508181036000830152614ca281614c66565b9050919050565b6000819050919050565b6000614cce614cc9614cc484614ca9565b614bc3565b613b44565b9050919050565b614cde81614cb3565b82525050565b600060c082019050614cf96000830189613e93565b614d066020830188613bf0565b614d136040830187614cd5565b614d206060830186614cd5565b614d2d6080830185613e93565b614d3a60a0830184613bf0565b979650505050505050565b600081519050614d5481613b4e565b92915050565b600080600060608486031215614d7357614d72613987565b5b6000614d8186828701614d45565b9350506020614d9286828701614d45565b9250506040614da386828701614d45565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614e1181613b06565b82525050565b6000614e238383614e08565b60208301905092915050565b6000602082019050919050565b6000614e4782614ddc565b614e518185614de7565b9350614e5c83614df8565b8060005b83811015614e8d578151614e748882614e17565b9750614e7f83614e2f565b925050600181019050614e60565b5085935050505092915050565b600060a082019050614eaf6000830188613bf0565b614ebc6020830187614cd5565b8181036040830152614ece8186614e3c565b9050614edd6060830185613e93565b614eea6080830184613bf0565b9695505050505050565b7f416e7469426f7420747269676765726564000000000000000000000000000000600082015250565b6000614f2a601183613a3f565b9150614f3582614ef4565b602082019050919050565b60006020820190508181036000830152614f5981614f1d565b905091905056fea26469706673582212203c3c8ffef7bd793bc00d1ada03364ff0ae5767f5f188f62119edfe669d71d2c164736f6c63430008110033
Deployed Bytecode
0x6080604052600436106101db5760003560e01c80638a8c523c11610102578063db86159911610095578063ea414b2811610064578063ea414b2814610690578063eb819948146106b9578063f2fde38b146106e4578063ffb54a991461070d576101e2565b8063db861599146105d4578063dbe66ca0146105ff578063dca2a8b61461063c578063dd62ed3e14610653576101e2565b8063c0246668116100d1578063c02466681461052c578063cc18e05a14610555578063cfc06e0b14610580578063d8c6404b146105a9576101e2565b80638a8c523c1461048457806395d89b411461049b578063a4191178146104c6578063a9059cbb146104ef576101e2565b8063388b4f171161017a5780636e34e91d116101495780636e34e91d146103da57806370a08231146103f157806380781cf91461042e578063893d20e814610459576101e2565b8063388b4f1714610322578063672434821461035f5780636b7f8b90146103885780636d1b229d146103b1576101e2565b806318160ddd116101b657806318160ddd146102785780631c939ee9146102a357806323b872dd146102ba578063313ce567146102f7576101e2565b8062fffc9d146101e757806306fdde0314610210578063095ea7b31461023b576101e2565b366101e257005b600080fd5b3480156101f357600080fd5b5061020e600480360381019061020991906139cd565b610738565b005b34801561021c57600080fd5b50610225610982565b6040516102329190613ac4565b60405180910390f35b34801561024757600080fd5b50610262600480360381019061025d9190613b7a565b6109bf565b60405161026f9190613bd5565b60405180910390f35b34801561028457600080fd5b5061028d610ab1565b60405161029a9190613bff565b60405180910390f35b3480156102af57600080fd5b506102b8610ad5565b005b3480156102c657600080fd5b506102e160048036038101906102dc9190613c1a565b610bb7565b6040516102ee9190613bd5565b60405180910390f35b34801561030357600080fd5b5061030c610dc0565b6040516103199190613c89565b60405180910390f35b34801561032e57600080fd5b5061034960048036038101906103449190613ca4565b610dc9565b6040516103569190613bd5565b60405180910390f35b34801561036b57600080fd5b5061038660048036038101906103819190613d8c565b610de9565b005b34801561039457600080fd5b506103af60048036038101906103aa9190613e39565b611241565b005b3480156103bd57600080fd5b506103d860048036038101906103d39190613e66565b6112ec565b005b3480156103e657600080fd5b506103ef6114a0565b005b3480156103fd57600080fd5b5061041860048036038101906104139190613ca4565b611832565b6040516104259190613bff565b60405180910390f35b34801561043a57600080fd5b5061044361187b565b6040516104509190613c89565b60405180910390f35b34801561046557600080fd5b5061046e61188e565b60405161047b9190613ea2565b60405180910390f35b34801561049057600080fd5b506104996118b7565b005b3480156104a757600080fd5b506104b061194f565b6040516104bd9190613ac4565b60405180910390f35b3480156104d257600080fd5b506104ed60048036038101906104e89190613ee9565b61198c565b005b3480156104fb57600080fd5b5061051660048036038101906105119190613b7a565b611aea565b6040516105239190613bd5565b60405180910390f35b34801561053857600080fd5b50610553600480360381019061054e9190613f29565b611b46565b005b34801561056157600080fd5b5061056a611cfd565b6040516105779190613c89565b60405180910390f35b34801561058c57600080fd5b506105a760048036038101906105a29190613f29565b611d10565b005b3480156105b557600080fd5b506105be611ec6565b6040516105cb9190613bd5565b60405180910390f35b3480156105e057600080fd5b506105e9611ed9565b6040516105f69190613bff565b60405180910390f35b34801561060b57600080fd5b5061062660048036038101906106219190613ca4565b611edf565b6040516106339190613bd5565b60405180910390f35b34801561064857600080fd5b50610651611eff565b005b34801561065f57600080fd5b5061067a60048036038101906106759190613f69565b611fe9565b6040516106879190613bff565b60405180910390f35b34801561069c57600080fd5b506106b760048036038101906106b29190613ca4565b612070565b005b3480156106c557600080fd5b506106ce6121d0565b6040516106db9190613bff565b60405180910390f35b3480156106f057600080fd5b5061070b60048036038101906107069190613fe7565b6121d6565b005b34801561071957600080fd5b506107226122de565b60405161072f9190613bd5565b60405180910390f35b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107bd90614086565b60405180910390fd5b8263ffffffff168463ffffffff166009600a6107e29190614208565b633b9aca006107f19190614253565b6107fb9190614253565b61080591906142c4565b6005819055508063ffffffff168263ffffffff166009600a6108279190614208565b633b9aca006108369190614253565b6108409190614253565b61084a91906142c4565b6006819055506005546006541015610897576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088e90614341565b60405180910390fd5b6127106009600a6108a89190614208565b633b9aca006108b79190614253565b6108c191906142c4565b60065411610904576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fb906143ad565b60405180910390fd5b606460026009600a6109169190614208565b633b9aca006109259190614253565b61092f9190614253565b61093991906142c4565b6006541061097c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097390614419565b60405180910390fd5b50505050565b60606040518060400160405280600681526020017f4b6f6e6475780000000000000000000000000000000000000000000000000000815250905090565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610a9f9190613bff565b60405180910390a36001905092915050565b60006009600a610ac19190614208565b633b9aca00610ad09190614253565b905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5a90614086565b60405180910390fd5b600047905060008111610bab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba290614485565b60405180910390fd5b610bb4816122f1565b50565b6000610bc161235d565b610c00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf7906144f1565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610dac5781600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d2b9190614511565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610db78484846123e2565b90509392505050565b60006009905090565b60096020528060005260406000206000915054906101000a900460ff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6e90614086565b60405180910390fd5b60fa848490501115610ebe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb590614591565b60405180910390fd5b818190508484905014610f06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efd90614623565b60405180910390fd5b6000805b85859050811015610f67576009600a610f239190614208565b848483818110610f3657610f35614643565b5b90506020020135610f479190614253565b82610f529190614672565b91508080610f5f906146a6565b915050610f0a565b5080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610fea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe190614760565b60405180910390fd5b60005b858590508110156111fd576009600a6110069190614208565b84848381811061101957611018614643565b5b9050602002013561102a9190614253565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546110789190614511565b925050819055506009600a61108d9190614208565b8484838181106110a05761109f614643565b5b905060200201356110b19190614253565b600160008888858181106110c8576110c7614643565b5b90506020020160208101906110dd9190613ca4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546111269190614672565b925050819055508585828181106111405761113f614643565b5b90506020020160208101906111559190613ca4565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a6111b19190614208565b8787868181106111c4576111c3614643565b5b905060200201356111d59190614253565b6040516111e29190613bff565b60405180910390a380806111f5906146a6565b915050610fed565b507f71cc7095cc35ed4701c217a8efb440732eb0737da67f6548c008ac26fba954648585905082604051611232929190614780565b60405180910390a15050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c690614086565b60405180910390fd5b80600860026101000a81548160ff02191690831515021790555050565b60006112f733611832565b90508082111561133c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611333906147f5565b60405180910390fd5b81600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461138b9190614511565b9250508190555081600160008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546113e19190614672565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516114469190613bff565b60405180910390a33373ffffffffffffffffffffffffffffffffffffffff167ffd38818f5291bf0bb3a2a48aadc06ba8757865d1dabd804585338aab3009dcb6836040516114949190613bff565b60405180910390a25050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461152e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152590614086565b60405180910390fd5b600460009054906101000a900460ff161561157e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157590614861565b60405180910390fd5b61158661277a565b6000479050600081116115ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c5906148cd565b60405180910390fd5b60006115d930611832565b90506000811161161e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161590614939565b60405180910390fd5b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561168d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b1919061496e565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561173a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061175e919061496e565b6040518363ffffffff1660e01b815260040161177b92919061499b565b6020604051808303816000875af115801561179a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117be919061496e565b90506001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061182182612e83565b61182d8284600061306d565b505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600860009054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611945576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193c90614086565b60405180910390fd5b61194d61314b565b565b60606040518060400160405280600481526020017f4b4e445800000000000000000000000000000000000000000000000000000000815250905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1190614086565b60405180910390fd5b600560ff168260ff1611158015611a385750600560ff168160ff1611155b611a77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6e90614a10565b60405180910390fd5b81600860006101000a81548160ff021916908360ff16021790555080600860016101000a81548160ff021916908360ff1602179055507f1dcee7b4b427ba2551f752d6f3ff03de326f6a4fca7432dda760ccff555f27f38282604051611ade929190614a30565b60405180910390a15050565b6000611af461235d565b611b33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2a906144f1565b60405180910390fd5b611b3e3384846123e2565b905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611bd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bcb90614086565b60405180910390fd5b8015611ca2573073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611c62575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b611ca1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9890614acb565b60405180910390fd5b5b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600860019054906101000a900460ff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9590614086565b60405180910390fd5b80611e6b573073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611e2b575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b611e6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6190614b37565b60405180910390fd5b5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600860029054906101000a900460ff1681565b60065481565b60036020528060005260406000206000915054906101000a900460ff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611f8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8490614086565b60405180910390fd5b6000611f9830611832565b905060008111611fdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd490614ba3565b60405180910390fd5b611fe6816131f0565b50565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146120fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f590614086565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507ea263b61aab5ebdcff20c4c0c74c2589ea5ab52149abde19eca17ad52217899816040516121c59190613ea2565b60405180910390a150565b60055481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612264576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225b90614086565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516122d39190614c22565b60405180910390a150565b600460009054906101000a900460ff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612359573d6000803e3d6000fd5b5050565b60008060009050600460009054906101000a900460ff161561238257600190506123db565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16036123da57600190505b5b8091505090565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158061244c5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b61248b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248290614c89565b60405180910390fd5b600460009054906101000a900460ff161561253557600860029054906101000a900460ff16156124c0576124bf848461340f565b5b600b60149054906101000a900460ff161580156125265750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612534576125336136f4565b5b5b60006125428585856137a5565b9050600081846125529190614511565b905083600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461259f9190614511565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600082111561267a5781600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126369190614672565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b80600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126c59190614672565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516127659190613bff565b60405180910390a36001925050509392505050565b60006009600a61278a9190614208565b6310ab0f3a6127999190614253565b905080600160008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161287e9190613bff565b60405180910390a360006009600a6128969190614208565b630ee6b2806128a59190614253565b90508060016000731d0a105f0ced39b207ae444957cc70483c04c76773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550731d0a105f0ced39b207ae444957cc70483c04c76773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516129719190613bff565b60405180910390a360006009600a6129899190614208565b630b99ad476129989190614253565b9050806001600073ac5c6fdd4f32977eec56c48978bae86ce08968e073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555073ac5c6fdd4f32977eec56c48978bae86ce08968e073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612a649190613bff565b60405180910390a360006009600a612a7c9190614208565b6308f0d180612a8b9190614253565b905080600160007394bacbccee5c16520ab8545c35e89ece7017a34d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507394bacbccee5c16520ab8545c35e89ece7017a34d73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612b579190613bff565b60405180910390a360006009600a612b6f9190614208565b6302a08fb2612b7e9190614253565b9050806001600073cbe59e5967b80ad18764d49c9184e6249afe2d2873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555073cbe59e5967b80ad18764d49c9184e6249afe2d2873ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612c4a9190613bff565b60405180910390a360006009600a612c629190614208565b63017e7bee612c719190614253565b905080600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612d159190613bff565b60405180910390a3600081838587898b612d2f9190614672565b612d399190614672565b612d439190614672565b612d4d9190614672565b612d579190614672565b6009600a612d659190614208565b633b9aca00612d749190614253565b612d7e9190614511565b905080600160008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612e239190613bff565b60405180910390a3600073ffffffffffffffffffffffffffffffffffffffff167ffd38818f5291bf0bb3a2a48aadc06ba8757865d1dabd804585338aab3009dcb682604051612e729190613bff565b60405180910390a250505050505050565b80600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561306a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040516130619190613bff565b60405180910390a35b50565b6000816130985760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308760008087426040518863ffffffff1660e01b81526004016130ff96959493929190614ce4565b60606040518083038185885af115801561311d573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906131429190614d5a565b50505050505050565b600460009054906101000a900460ff161561319b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161319290614861565b60405180910390fd5b6003600860006101000a81548160ff021916908360ff1602179055506003600860016101000a81548160ff021916908360ff1602179055506001600460006101000a81548160ff021916908315150217905550565b6131f981612e83565b6000600267ffffffffffffffff81111561321657613215614dad565b5b6040519080825280602002602001820160405280156132445781602001602082028036833780820191505090505b509050308160008151811061325c5761325b614643565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613303573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613327919061496e565b8160018151811061333b5761333a614643565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016133d9959493929190614e9a565b600060405180830381600087803b1580156133f357600080fd5b505af1158015613407573d6000803e3d6000fd5b505050505050565b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156134b25750600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156135815743600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410613538576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161352f90614f40565b60405180910390fd5b43600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506136f0565b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156136245750600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156136ef5743600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054106136aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136a190614f40565b60405180910390fd5b43600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b5050565b6001600b60146101000a81548160ff021916908315150217905550600061371a30611832565b9050600554811015801561373a5750600460009054906101000a900460ff165b1561378757600654811061374e5760065490505b6009600a61375c9190614208565b8111156137865761376c816131f0565b6000479050600081111561378457613783816122f1565b5b505b5b506000600b60146101000a81548160ff021916908315150217905550565b600080600460009054906101000a900460ff16158061380d5750600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806138615750600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561386f576000905061397c565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156138f2576064600860009054906101000a900460ff1660ff16846138e19190614253565b6138eb91906142c4565b905061397b565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613975576064600860019054906101000a900460ff1660ff16846139649190614253565b61396e91906142c4565b905061397a565b600090505b5b5b809150509392505050565b600080fd5b600080fd5b600063ffffffff82169050919050565b6139aa81613991565b81146139b557600080fd5b50565b6000813590506139c7816139a1565b92915050565b600080600080608085870312156139e7576139e6613987565b5b60006139f5878288016139b8565b9450506020613a06878288016139b8565b9350506040613a17878288016139b8565b9250506060613a28878288016139b8565b91505092959194509250565b600081519050919050565b600082825260208201905092915050565b60005b83811015613a6e578082015181840152602081019050613a53565b60008484015250505050565b6000601f19601f8301169050919050565b6000613a9682613a34565b613aa08185613a3f565b9350613ab0818560208601613a50565b613ab981613a7a565b840191505092915050565b60006020820190508181036000830152613ade8184613a8b565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613b1182613ae6565b9050919050565b613b2181613b06565b8114613b2c57600080fd5b50565b600081359050613b3e81613b18565b92915050565b6000819050919050565b613b5781613b44565b8114613b6257600080fd5b50565b600081359050613b7481613b4e565b92915050565b60008060408385031215613b9157613b90613987565b5b6000613b9f85828601613b2f565b9250506020613bb085828601613b65565b9150509250929050565b60008115159050919050565b613bcf81613bba565b82525050565b6000602082019050613bea6000830184613bc6565b92915050565b613bf981613b44565b82525050565b6000602082019050613c146000830184613bf0565b92915050565b600080600060608486031215613c3357613c32613987565b5b6000613c4186828701613b2f565b9350506020613c5286828701613b2f565b9250506040613c6386828701613b65565b9150509250925092565b600060ff82169050919050565b613c8381613c6d565b82525050565b6000602082019050613c9e6000830184613c7a565b92915050565b600060208284031215613cba57613cb9613987565b5b6000613cc884828501613b2f565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112613cf657613cf5613cd1565b5b8235905067ffffffffffffffff811115613d1357613d12613cd6565b5b602083019150836020820283011115613d2f57613d2e613cdb565b5b9250929050565b60008083601f840112613d4c57613d4b613cd1565b5b8235905067ffffffffffffffff811115613d6957613d68613cd6565b5b602083019150836020820283011115613d8557613d84613cdb565b5b9250929050565b60008060008060408587031215613da657613da5613987565b5b600085013567ffffffffffffffff811115613dc457613dc361398c565b5b613dd087828801613ce0565b9450945050602085013567ffffffffffffffff811115613df357613df261398c565b5b613dff87828801613d36565b925092505092959194509250565b613e1681613bba565b8114613e2157600080fd5b50565b600081359050613e3381613e0d565b92915050565b600060208284031215613e4f57613e4e613987565b5b6000613e5d84828501613e24565b91505092915050565b600060208284031215613e7c57613e7b613987565b5b6000613e8a84828501613b65565b91505092915050565b613e9c81613b06565b82525050565b6000602082019050613eb76000830184613e93565b92915050565b613ec681613c6d565b8114613ed157600080fd5b50565b600081359050613ee381613ebd565b92915050565b60008060408385031215613f0057613eff613987565b5b6000613f0e85828601613ed4565b9250506020613f1f85828601613ed4565b9150509250929050565b60008060408385031215613f4057613f3f613987565b5b6000613f4e85828601613b2f565b9250506020613f5f85828601613e24565b9150509250929050565b60008060408385031215613f8057613f7f613987565b5b6000613f8e85828601613b2f565b9250506020613f9f85828601613b2f565b9150509250929050565b6000613fb482613ae6565b9050919050565b613fc481613fa9565b8114613fcf57600080fd5b50565b600081359050613fe181613fbb565b92915050565b600060208284031215613ffd57613ffc613987565b5b600061400b84828501613fd2565b91505092915050565b7f4f6e6c7920636f6e7472616374206f776e65722063616e2063616c6c2074686960008201527f732066756e6374696f6e00000000000000000000000000000000000000000000602082015250565b6000614070602a83613a3f565b915061407b82614014565b604082019050919050565b6000602082019050818103600083015261409f81614063565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111561412c57808604811115614108576141076140a6565b5b60018516156141175780820291505b8081029050614125856140d5565b94506140ec565b94509492505050565b6000826141455760019050614201565b816141535760009050614201565b81600181146141695760028114614173576141a2565b6001915050614201565b60ff841115614185576141846140a6565b5b8360020a91508482111561419c5761419b6140a6565b5b50614201565b5060208310610133831016604e8410600b84101617156141d75782820a9050838111156141d2576141d16140a6565b5b614201565b6141e484848460016140e2565b925090508184048111156141fb576141fa6140a6565b5b81810290505b9392505050565b600061421382613b44565b915061421e83613c6d565b925061424b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614135565b905092915050565b600061425e82613b44565b915061426983613b44565b925082820261427781613b44565b9150828204841483151761428e5761428d6140a6565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006142cf82613b44565b91506142da83613b44565b9250826142ea576142e9614295565b5b828204905092915050565b7f4d696e4d6178206572726f720000000000000000000000000000000000000000600082015250565b600061432b600c83613a3f565b9150614336826142f5565b602082019050919050565b6000602082019050818103600083015261435a8161431e565b9050919050565b7f5570706572207468726573686f6c6420746f6f206c6f77000000000000000000600082015250565b6000614397601783613a3f565b91506143a282614361565b602082019050919050565b600060208201905081810360008301526143c68161438a565b9050919050565b7f5570706572207468726573686f6c6420746f6f20686967680000000000000000600082015250565b6000614403601883613a3f565b915061440e826143cd565b602082019050919050565b60006020820190508181036000830152614432816143f6565b9050919050565b7f4e6f2045544820696e20636f6e747261637420746f2064697374726962757465600082015250565b600061446f602083613a3f565b915061447a82614439565b602082019050919050565b6000602082019050818103600083015261449e81614462565b9050919050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b60006144db601083613a3f565b91506144e6826144a5565b602082019050919050565b6000602082019050818103600083015261450a816144ce565b9050919050565b600061451c82613b44565b915061452783613b44565b925082820390508181111561453f5761453e6140a6565b5b92915050565b7f57616c6c657420636f756e74206f766572203235302028676173207269736b29600082015250565b600061457b602083613a3f565b915061458682614545565b602082019050919050565b600060208201905081810360008301526145aa8161456e565b9050919050565b7f4164647265737320616e6420746f6b656e20616d6f756e74206c697374206d6960008201527f736d616368000000000000000000000000000000000000000000000000000000602082015250565b600061460d602583613a3f565b9150614618826145b1565b604082019050919050565b6000602082019050818103600083015261463c81614600565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061467d82613b44565b915061468883613b44565b92508282019050808211156146a05761469f6140a6565b5b92915050565b60006146b182613b44565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036146e3576146e26140a6565b5b600182019050919050565b7f546f6b656e2062616c616e6365206c6f776572207468616e2061697264726f7060008201527f20746f74616c0000000000000000000000000000000000000000000000000000602082015250565b600061474a602683613a3f565b9150614755826146ee565b604082019050919050565b600060208201905081810360008301526147798161473d565b9050919050565b60006040820190506147956000830185613bf0565b6147a26020830184613bf0565b9392505050565b7f546f6b656e2062616c616e636520746f6f206c6f770000000000000000000000600082015250565b60006147df601583613a3f565b91506147ea826147a9565b602082019050919050565b6000602082019050818103600083015261480e816147d2565b9050919050565b7f74726164696e6720616c7265616479206f70656e000000000000000000000000600082015250565b600061484b601483613a3f565b915061485682614815565b602082019050919050565b6000602082019050818103600083015261487a8161483e565b9050919050565b7f6e6f2065746820696e20636f6e74726163740000000000000000000000000000600082015250565b60006148b7601283613a3f565b91506148c282614881565b602082019050919050565b600060208201905081810360008301526148e6816148aa565b9050919050565b7f6e6f20746f6b656e730000000000000000000000000000000000000000000000600082015250565b6000614923600983613a3f565b915061492e826148ed565b602082019050919050565b6000602082019050818103600083015261495281614916565b9050919050565b60008151905061496881613b18565b92915050565b60006020828403121561498457614983613987565b5b600061499284828501614959565b91505092915050565b60006040820190506149b06000830185613e93565b6149bd6020830184613e93565b9392505050565b7f54617820746f6f20686967680000000000000000000000000000000000000000600082015250565b60006149fa600c83613a3f565b9150614a05826149c4565b602082019050919050565b60006020820190508181036000830152614a29816149ed565b9050919050565b6000604082019050614a456000830185613c7a565b614a526020830184613c7a565b9392505050565b7f43616e6e6f7420656e666f726365206665657320666f7220746869732061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614ab5602483613a3f565b9150614ac082614a59565b604082019050919050565b60006020820190508181036000830152614ae481614aa8565b9050919050565b7f546869732061646472657373206d757374206265206578636c75646564000000600082015250565b6000614b21601d83613a3f565b9150614b2c82614aeb565b602082019050919050565b60006020820190508181036000830152614b5081614b14565b9050919050565b7f4e6f20746f6b656e730000000000000000000000000000000000000000000000600082015250565b6000614b8d600983613a3f565b9150614b9882614b57565b602082019050919050565b60006020820190508181036000830152614bbc81614b80565b9050919050565b6000819050919050565b6000614be8614be3614bde84613ae6565b614bc3565b613ae6565b9050919050565b6000614bfa82614bcd565b9050919050565b6000614c0c82614bef565b9050919050565b614c1c81614c01565b82525050565b6000602082019050614c376000830184614c13565b92915050565b7f5a65726f2077616c6c65742063616e6e6f7420646f207472616e73666572732e600082015250565b6000614c73602083613a3f565b9150614c7e82614c3d565b602082019050919050565b60006020820190508181036000830152614ca281614c66565b9050919050565b6000819050919050565b6000614cce614cc9614cc484614ca9565b614bc3565b613b44565b9050919050565b614cde81614cb3565b82525050565b600060c082019050614cf96000830189613e93565b614d066020830188613bf0565b614d136040830187614cd5565b614d206060830186614cd5565b614d2d6080830185613e93565b614d3a60a0830184613bf0565b979650505050505050565b600081519050614d5481613b4e565b92915050565b600080600060608486031215614d7357614d72613987565b5b6000614d8186828701614d45565b9350506020614d9286828701614d45565b9250506040614da386828701614d45565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614e1181613b06565b82525050565b6000614e238383614e08565b60208301905092915050565b6000602082019050919050565b6000614e4782614ddc565b614e518185614de7565b9350614e5c83614df8565b8060005b83811015614e8d578151614e748882614e17565b9750614e7f83614e2f565b925050600181019050614e60565b5085935050505092915050565b600060a082019050614eaf6000830188613bf0565b614ebc6020830187614cd5565b8181036040830152614ece8186614e3c565b9050614edd6060830185613e93565b614eea6080830184613bf0565b9695505050505050565b7f416e7469426f7420747269676765726564000000000000000000000000000000600082015250565b6000614f2a601183613a3f565b9150614f3582614ef4565b602082019050919050565b60006020820190508181036000830152614f5981614f1d565b905091905056fea26469706673582212203c3c8ffef7bd793bc00d1ada03364ff0ae5767f5f188f62119edfe669d71d2c164736f6c63430008110033
Deployed Bytecode Sourcemap
1960:13134:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12376:428;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4047:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4457:195;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3786:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13954:220;;;;;;;;;;;;;:::i;:::-;;4862:363;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3877:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2574:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14179:912;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11241:94;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10359:378;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7324:715;;;;;;;;;;;;;:::i;:::-;;4211:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2489:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4130:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8677:77;;;;;;;;;;;;;:::i;:::-;;3960:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11831:345;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4657:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11586:240;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2514:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11340:241;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2544:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2377:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2270:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13757:192;;;;;;;;;;;;;:::i;:::-;;4319:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12183:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2350:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1149:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2323:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12376:428;1088:5;;;;;;;;;;1074:19;;:10;:19;;;1066:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;12536:10:::1;12510:36;;12525:8;12510:23;;2093:1;2146:2;:13;;;;:::i;:::-;2130;:29;;;;:::i;:::-;12510:23;;;;:::i;:::-;:36;;;;:::i;:::-;12497:10;:49;;;;12590:10;12564:36;;12579:8;12564:23;;2093:1;2146:2;:13;;;;:::i;:::-;2130;:29;;;;:::i;:::-;12564:23;;;;:::i;:::-;:36;;;;:::i;:::-;12551:10;:49;;;;12625:10;;12613;;:22;;12605:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;12691:5;2093:1;2146:2;:13;;;;:::i;:::-;2130;:29;;;;:::i;:::-;12676:20;;;;:::i;:::-;12665:10;;:31;12657:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12767:3;12763:1;2093;2146:2;:13;;;;:::i;:::-;2130;:29;;;;:::i;:::-;12748:16;;;;:::i;:::-;:22;;;;:::i;:::-;12737:10;;:33;12729:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;12376:428:::0;;;;:::o;4047:80::-;4095:13;4119:5;;;;;;;;;;;;;;;;;4112:12;;4047:80;:::o;4457:195::-;4532:4;4578:6;4543:11;:23;4555:10;4543:23;;;;;;;;;;;;;;;:32;4567:7;4543:32;;;;;;;;;;;;;;;:41;;;;4615:7;4594:37;;4603:10;4594:37;;;4624:6;4594:37;;;;;;:::i;:::-;;;;;;;;4643:4;4636:11;;4457:195;;;;:::o;3786:88::-;3841:7;2093:1;2146:2;:13;;;;:::i;:::-;2130;:29;;;;:::i;:::-;3852:19;;3786:88;:::o;13954:220::-;1088:5;;;;;;;;;;1074:19;;:10;:19;;;1066:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;14001:27:::1;14031:21;14001:51;;14087:1;14065:19;:23;14057:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14130:38;14148:19;14130:17;:38::i;:::-;13995:179;13954:220::o:0;4862:363::-;4962:4;4981:19;:17;:19::i;:::-;4973:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;5065:17;5030:11;:19;5042:6;5030:19;;;;;;;;;;;;;;;:31;5050:10;5030:31;;;;;;;;;;;;;;;;:52;5026:143;;5157:6;5123:11;:19;5135:6;5123:19;;;;;;;;;;;;;;;:31;5143:10;5123:31;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;5089:11;:19;5101:6;5089:19;;;;;;;;;;;;;;;:31;5109:10;5089:31;;;;;;;;;;;;;;;:74;;;;5026:143;5180:40;5194:6;5202:9;5213:6;5180:13;:40::i;:::-;5173:47;;4862:363;;;;;:::o;3877:80::-;3929:5;2093:1;3938:16;;3877:80;:::o;2574:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;14179:912::-;1088:5;;;;;;;;;;1074:19;;:10;:19;;;1066:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;14317:3:::1;14297:9;;:16;;:23;;14289:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14395:12;;:19;;14375:9;;:16;;:39;14367:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;14468:20;14507:6:::0;14503:116:::1;14521:9;;:16;;14517:1;:20;14503:116;;;2093:1;14593:2;:13;;;;:::i;:::-;14575:12;;14588:1;14575:15;;;;;;;:::i;:::-;;;;;;;;:31;;;;:::i;:::-;14558:49;;;;;:::i;:::-;;;14539:3;;;;;:::i;:::-;;;;14503:116;;;;14662:12;14637:9;:21;14647:10;14637:21;;;;;;;;;;;;;;;;:37;;14629:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;14734:6;14730:288;14748:9;;:16;;14744:1;:20;14730:288;;;2093:1;14829:2;:13;;;;:::i;:::-;14811:12;;14824:1;14811:15;;;;;;;:::i;:::-;;;;;;;;:31;;;;:::i;:::-;14785:9;:21;14795:10;14785:21;;;;;;;;;;;;;;;;:58;;;;;;;:::i;:::-;;;;;;;;2093:1;14904:2;:13;;;;:::i;:::-;14886:12;;14899:1;14886:15;;;;;;;:::i;:::-;;;;;;;;:31;;;;:::i;:::-;14858:9;:23;14868:9;;14878:1;14868:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;14858:23;;;;;;;;;;;;;;;;:60;;;;;;;:::i;:::-;;;;;;;;14950:9;;14960:1;14950:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;14929:70;;14938:10;14929:70;;;2093:1;14983:2;:13;;;;:::i;:::-;14965:12;;14978:1;14965:15;;;;;;;:::i;:::-;;;;;;;;:31;;;;:::i;:::-;14929:70;;;;;;:::i;:::-;;;;;;;;14766:3;;;;;:::i;:::-;;;;14730:288;;;;15035:48;15052:9;;:16;;15070:12;15035:48;;;;;;;:::i;:::-;;;;;;;;14278:813;14179:912:::0;;;;:::o;11241:94::-;1088:5;;;;;;;;;;1074:19;;:10;:19;;;1066:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;11321:9:::1;11304:14;;:26;;;;;;;;;;;;;;;;;;11241:94:::0;:::o;10359:378::-;10456:24;10483:21;10493:10;10483:9;:21::i;:::-;10456:48;;10527:16;10517:6;:26;;10509:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;10599:6;10574:9;:21;10584:10;10574:21;;;;;;;;;;;;;;;;:31;;;;;;;:::i;:::-;;;;;;;;10635:6;10610:9;:21;10628:1;10610:21;;;;;;;;;;;;;;;;:31;;;;;;;:::i;:::-;;;;;;;;10679:1;10651:39;;10660:10;10651:39;;;10683:6;10651:39;;;;;;:::i;:::-;;;;;;;;10713:10;10700:32;;;10725:6;10700:32;;;;;;:::i;:::-;;;;;;;;10404:333;10359:378;:::o;7324:715::-;1088:5;;;;;;;;;;1074:19;;:10;:19;;;1066:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;7375:11:::1;;;;;;;;;;;7374:12;7366:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;7418:28;:26;:28::i;:::-;7453:27;7483:21;7453:51;;7539:1;7517:19;:23;7509:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;7568:29;7600:24;7618:4;7600:9;:24::i;:::-;7568:56;;7661:1;7637:21;:25;7629:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;7681:18;7720:16;;;;;;;;;;;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7702:56;;;7767:4;7774:16;;;;;;;;;;;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7702:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7681:117;;7828:4;7803:10;:22;7814:10;7803:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;7839:37;7854:21;7839:14;:37::i;:::-;7881:64;7895:21;7918:19;7939:5;7881:13;:64::i;:::-;7361:678;;;7324:715::o:0;4211:105::-;4277:7;4295:9;:18;4305:7;4295:18;;;;;;;;;;;;;;;;4288:25;;4211:105;;;:::o;2489:23::-;;;;;;;;;;;;;:::o;4130:78::-;4182:7;4200:5;;;;;;;;;;;4193:12;;4130:78;:::o;8677:77::-;1088:5;;;;;;;;;;1074:19;;:10;:19;;;1066:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;8732:14:::1;:12;:14::i;:::-;8677:77::o:0;3960:84::-;4010:13;4034:7;;;;;;;;;;;;;;;;;4027:14;;3960:84;:::o;11831:345::-;1088:5;;;;;;;;;;1074:19;;:10;:19;;;1066:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;2483:1:::1;11921:24;;:9;:24;;;;:53;;;;;2483:1;11949:25;;:10;:25;;;;11921:53;11913:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;12086:9;12073:10;;:22;;;;;;;;;;;;;;;;;;12114:10;12100:11;;:24;;;;;;;;;;;;;;;;;;12134:37;12149:9;12160:10;12134:37;;;;;;;:::i;:::-;;;;;;;;11831:345:::0;;:::o;4657:200::-;4737:4;4756:19;:17;:19::i;:::-;4748:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;4808:44;4822:10;4834:9;4845:6;4808:13;:44::i;:::-;4801:51;;4657:200;;;;:::o;11586:240::-;1088:5;;;;;;;;;;1074:19;;:10;:19;;;1066:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;11672:10:::1;11668:112;;;11712:4;11694:23;;:6;:23;;;;:42;;;;;11731:5;::::0;::::1;;;;;;;;11721:15;;:6;:15;;;;11694:42;11686:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;11668:112;11811:10;11784:16;:24;11801:6;11784:24;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;11586:240:::0;;:::o;2514:24::-;;;;;;;;;;;;;:::o;11340:241::-;1088:5;;;;;;;;;;1074:19;;:10;:19;;;1066:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;11430:10:::1;11425:107;;11470:4;11452:23;;:6;:23;;;;:42;;;;;11489:5;::::0;::::1;;;;;;;;11479:15;;:6;:15;;;;11452:42;11444:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;11425:107;11566:10;11536:19;:27;11556:6;11536:27;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;11340:241:::0;;:::o;2544:26::-;;;;;;;;;;;;;:::o;2377:25::-;;;;:::o;2270:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;13757:192::-;1088:5;;;;;;;;;;1074:19;;:10;:19;;;1066:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;13806:23:::1;13832:24;13850:4;13832:9;:24::i;:::-;13806:50;;13887:1;13869:15;:19;13861:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;13907:37;13928:15;13907:20;:37::i;:::-;13801:148;13757:192::o:0;4319:133::-;4403:7;4421:11;:19;4433:6;4421:19;;;;;;;;;;;;;;;:28;4441:7;4421:28;;;;;;;;;;;;;;;;4414:35;;4319:133;;;;:::o;12183:188::-;1088:5;;;;;;;;;;1074:19;;:10;:19;;;1066:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;12271:12:::1;12251:9;;:33;;;;;;;;;;;;;;;;;;12322:4;12289:16;:30;12306:12;12289:30;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;12336:30;12353:12;12336:30;;;;;;:::i;:::-;;;;;;;;12183:188:::0;:::o;2350:25::-;;;;:::o;1149:130::-;1088:5;;;;;;;;;;1074:19;;:10;:19;;;1066:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;1231:8:::1;1223:5;::::0;:16:::1;;;;;;;;;;;;;;;;;;1246:30;1267:8;1246:30;;;;;;:::i;:::-;;;;;;;;1149:130:::0;:::o;2323:23::-;;;;;;;;;;;;;:::o;13663:89::-;13720:9;;;;;;;;;;;:18;;:27;13739:7;13720:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13663:89;:::o;9688:219::-;9739:4;9749:16;9768:5;9749:24;;9783:11;;;;;;;;;;;9778:101;;;9813:4;9799:18;;9778:101;;;9848:5;;;;;;;;;;9835:18;;:9;:18;;;9830:49;;9872:4;9858:18;;9830:49;9778:101;9891:11;9884:18;;;9688:219;:::o;8920:763::-;9012:4;9049:1;9031:20;;:6;:20;;;;:47;;;;9076:1;9055:23;;:9;:23;;;;9031:47;9023:92;;;;;;;;;;;;:::i;:::-;;;;;;;;;9125:11;;;;;;;;;;;9120:168;;;9150:14;;;;;;;;;;;9145:58;;;9169:31;9182:6;9190:9;9169:12;:31::i;:::-;9145:58;9214:10;;;;;;;;;;;9213:11;:36;;;;;9228:10;:21;9239:9;9228:21;;;;;;;;;;;;;;;;;;;;;;;;;9213:36;9208:75;;;9254:26;:24;:26::i;:::-;9208:75;9120:168;9294:18;9315:40;9329:6;9337:9;9348:6;9315:13;:40::i;:::-;9294:61;;9360:23;9395:10;9386:6;:19;;;;:::i;:::-;9360:45;;9450:6;9430:9;:17;9440:6;9430:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;9410:9;:17;9420:6;9410:17;;;;;;;;;;;;;;;:46;;;;9479:1;9466:10;:14;9461:91;;;9539:10;9512:9;:24;9530:4;9512:24;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;9485:9;:24;9503:4;9485:24;;;;;;;;;;;;;;;:64;;;;9461:91;9602:15;9579:9;:20;9589:9;9579:20;;;;;;;;;;;;;;;;:38;;;;:::i;:::-;9556:9;:20;9566:9;9556:20;;;;;;;;;;;;;;;:61;;;;9644:9;9627:35;;9636:6;9627:35;;;9655:6;9627:35;;;;;;:::i;:::-;;;;;;;;9674:4;9667:11;;;;8920:763;;;;;:::o;5230:2089::-;5325:27;2093:1;5369:2;:13;;;;:::i;:::-;5355:11;:27;;;;:::i;:::-;5325:57;;5406:19;5387:9;:16;5397:5;;;;;;;;;;;5387:16;;;;;;;;;;;;;;;:38;;;;5456:5;;;;;;;;;;5435:49;;5452:1;5435:49;;;5463:19;5435:49;;;;;;:::i;:::-;;;;;;;;5555:22;2093:1;5594:2;:13;;;;:::i;:::-;5580:11;:27;;;;:::i;:::-;5555:52;;5677:14;5612:9;:62;5630:42;5612:62;;;;;;;;;;;;;;;:79;;;;5730:42;5701:90;;5718:1;5701:90;;;5775:14;5701:90;;;;;;:::i;:::-;;;;;;;;5867:21;2093:1;5905:2;:13;;;;:::i;:::-;5891:11;:27;;;;:::i;:::-;5867:51;;5988:13;5923:9;:62;5941:42;5923:62;;;;;;;;;;;;;;;:78;;;;6040:42;6011:89;;6028:1;6011:89;;;6085:13;6011:89;;;;;;:::i;:::-;;;;;;;;6175:25;2093:1;6217:2;:13;;;;:::i;:::-;6203:11;:27;;;;:::i;:::-;6175:55;;6300:17;6235:9;:62;6253:42;6235:62;;;;;;;;;;;;;;;:82;;;;6356:42;6327:93;;6344:1;6327:93;;;6401:17;6327:93;;;;;;:::i;:::-;;;;;;;;6508:23;2093:1;6547:2;:13;;;;:::i;:::-;6534:10;:26;;;;:::i;:::-;6508:52;;6630:15;6565:9;:62;6583:42;6565:62;;;;;;;;;;;;;;;:80;;;;6684:42;6655:91;;6672:1;6655:91;;;6729:15;6655:91;;;;;;:::i;:::-;;;;;;;;6783:27;2093:1;6826:2;:13;;;;:::i;:::-;6813:10;:26;;;;:::i;:::-;6783:56;;6872:19;6845:9;:24;6863:4;6845:24;;;;;;;;;;;;;;;:46;;;;6930:4;6901:57;;6918:1;6901:57;;;6937:19;6901:57;;;;;;:::i;:::-;;;;;;;;7034:18;7154:19;7138:15;7120:17;7106:13;7091:14;7071:19;:34;;;;:::i;:::-;:48;;;;:::i;:::-;:66;;;;:::i;:::-;:82;;;;:::i;:::-;:102;;;;:::i;:::-;2093:1;2146:2;:13;;;;:::i;:::-;2130;:29;;;;:::i;:::-;7055:119;;;;:::i;:::-;7034:140;;7203:10;7179:9;:21;7197:1;7179:21;;;;;;;;;;;;;;;:34;;;;7252:1;7223:45;;7240:1;7223:45;;;7256:10;7223:45;;;;;;:::i;:::-;;;;;;;;7299:1;7278:36;;;7303:10;7278:36;;;;;;:::i;:::-;;;;;;;;5277:2042;;;;;;;5230:2089::o;8044:299::-;8163:12;8109:11;:26;8129:4;8109:26;;;;;;;;;;;;;;;:51;2874:42;8109:51;;;;;;;;;;;;;;;;:66;8104:235;;;8238:17;8184:11;:26;8204:4;8184:26;;;;;;;;;;;;;;;:51;2874:42;8184:51;;;;;;;;;;;;;;;:71;;;;2874:42;8266:67;;8283:4;8266:67;;;8315:17;8266:67;;;;;;:::i;:::-;;;;;;;;8104:235;8044:299;:::o;8348:321::-;8445:24;8493:8;8487:46;;8525:5;;;;;;;;;;8506:24;;8487:46;8537:16;;;;;;;;;;;:32;;;8577:13;8602:4;8609:12;8623:1;8626;8629:16;8647:15;8537:127;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;8440:229;8348:321;;;:::o;8759:156::-;8812:11;;;;;;;;;;;8811:12;8803:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;8866:1;8853:10;;:14;;;;;;;;;;;;;;;;;;8886:1;8872:11;;:15;;;;;;;;;;;;;;;;;;8906:4;8892:11;;:18;;;;;;;;;;;;;;;;;;8759:156::o;13326:332::-;13391:28;13406:12;13391:14;:28::i;:::-;13424:21;13462:1;13448:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13424:40;;13487:4;13469;13474:1;13469:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;13507:16;;;;;;;;;;;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13497:4;13502:1;13497:7;;;;;;;;:::i;:::-;;;;;;;:33;;;;;;;;;;;13535:16;;;;;;;;;;;:67;;;13603:12;13616:1;13618:4;13631;13637:15;13535:118;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13386:272;13326:332;:::o;10744:492::-;10820:10;:18;10831:6;10820:18;;;;;;;;;;;;;;;;;;;;;;;;;:53;;;;;10843:19;:30;10863:9;10843:30;;;;;;;;;;;;;;;;;;;;;;;;;10842:31;10820:53;10815:417;;;10937:12;10909:14;:25;10924:9;10909:25;;;;;;;;;;;;;;;;:40;10901:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;11005:12;10977:14;:25;10992:9;10977:25;;;;;;;;;;;;;;;:40;;;;10815:417;;;11034:10;:21;11045:9;11034:21;;;;;;;;;;;;;;;;;;;;;;;;;:53;;;;;11060:19;:27;11080:6;11060:27;;;;;;;;;;;;;;;;;;;;;;;;;11059:28;11034:53;11029:203;;;11149:12;11124:14;:22;11139:6;11124:22;;;;;;;;;;;;;;;;:37;11116:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11214:12;11189:14;:22;11204:6;11189:22;;;;;;;;;;;;;;;:37;;;;11029:203;10815:417;10744:492;;:::o;12809:512::-;3004:4;2991:10;;:17;;;;;;;;;;;;;;;;;;12870:27:::1;12900:24;12918:4;12900:9;:24::i;:::-;12870:54;;12957:10;;12934:19;:33;;:48;;;;;12971:11;;;;;;;;;;;12934:48;12929:388;;;13019:10;;12996:19;:33;12991:78;;13056:10;;13034:32;;12991:78;2093:1;13101:2;:13;;;;:::i;:::-;13079:19;:35;13074:233;;;13123:41;13144:19;13123:20;:41::i;:::-;13171:27;13201:21;13171:51;;13255:1;13233:19;:23;13229:72;;;13260:38;13278:19;13260:17;:38::i;:::-;13229:72;13116:191;13074:233;12929:388;12865:456;3026:5:::0;3013:10;;:18;;;;;;;;;;;;;;;;;;12809:512::o;9912:440::-;10009:7;10023:17;10051:11;;;;;;;;;;;10050:12;:40;;;;10066:16;:24;10083:6;10066:24;;;;;;;;;;;;;;;;;;;;;;;;;10050:40;:71;;;;10094:16;:27;10111:9;10094:27;;;;;;;;;;;;;;;;;;;;;;;;;10050:71;10045:282;;;10138:1;10126:13;;10045:282;;;10156:10;:18;10167:6;10156:18;;;;;;;;;;;;;;;;;;;;;;;;;10151:176;;;10213:3;10200:10;;;;;;;;;;;10191:19;;:6;:19;;;;:::i;:::-;:25;;;;:::i;:::-;10179:37;;10151:176;;;10233:10;:21;10244:9;10233:21;;;;;;;;;;;;;;;;;;;;;;;;;10228:99;;;10294:3;10280:11;;;;;;;;;;;10271:20;;:6;:20;;;;:::i;:::-;:26;;;;:::i;:::-;10259:38;;10228:99;;;10323:1;10311:13;;10228:99;10151:176;10045:282;10338:9;10331:16;;;9912:440;;;;;:::o;88:117:1:-;197:1;194;187:12;211:117;320:1;317;310:12;334:93;370:7;410:10;403:5;399:22;388:33;;334:93;;;:::o;433:120::-;505:23;522:5;505:23;:::i;:::-;498:5;495:34;485:62;;543:1;540;533:12;485:62;433:120;:::o;559:137::-;604:5;642:6;629:20;620:29;;658:32;684:5;658:32;:::i;:::-;559:137;;;;:::o;702:757::-;784:6;792;800;808;857:3;845:9;836:7;832:23;828:33;825:120;;;864:79;;:::i;:::-;825:120;984:1;1009:52;1053:7;1044:6;1033:9;1029:22;1009:52;:::i;:::-;999:62;;955:116;1110:2;1136:52;1180:7;1171:6;1160:9;1156:22;1136:52;:::i;:::-;1126:62;;1081:117;1237:2;1263:52;1307:7;1298:6;1287:9;1283:22;1263:52;:::i;:::-;1253:62;;1208:117;1364:2;1390:52;1434:7;1425:6;1414:9;1410:22;1390:52;:::i;:::-;1380:62;;1335:117;702:757;;;;;;;:::o;1465:99::-;1517:6;1551:5;1545:12;1535:22;;1465:99;;;:::o;1570:169::-;1654:11;1688:6;1683:3;1676:19;1728:4;1723:3;1719:14;1704:29;;1570:169;;;;:::o;1745:246::-;1826:1;1836:113;1850:6;1847:1;1844:13;1836:113;;;1935:1;1930:3;1926:11;1920:18;1916:1;1911:3;1907:11;1900:39;1872:2;1869:1;1865:10;1860:15;;1836:113;;;1983:1;1974:6;1969:3;1965:16;1958:27;1807:184;1745:246;;;:::o;1997:102::-;2038:6;2089:2;2085:7;2080:2;2073:5;2069:14;2065:28;2055:38;;1997:102;;;:::o;2105:377::-;2193:3;2221:39;2254:5;2221:39;:::i;:::-;2276:71;2340:6;2335:3;2276:71;:::i;:::-;2269:78;;2356:65;2414:6;2409:3;2402:4;2395:5;2391:16;2356:65;:::i;:::-;2446:29;2468:6;2446:29;:::i;:::-;2441:3;2437:39;2430:46;;2197:285;2105:377;;;;:::o;2488:313::-;2601:4;2639:2;2628:9;2624:18;2616:26;;2688:9;2682:4;2678:20;2674:1;2663:9;2659:17;2652:47;2716:78;2789:4;2780:6;2716:78;:::i;:::-;2708:86;;2488:313;;;;:::o;2807:126::-;2844:7;2884:42;2877:5;2873:54;2862:65;;2807:126;;;:::o;2939:96::-;2976:7;3005:24;3023:5;3005:24;:::i;:::-;2994:35;;2939:96;;;:::o;3041:122::-;3114:24;3132:5;3114:24;:::i;:::-;3107:5;3104:35;3094:63;;3153:1;3150;3143:12;3094:63;3041:122;:::o;3169:139::-;3215:5;3253:6;3240:20;3231:29;;3269:33;3296:5;3269:33;:::i;:::-;3169:139;;;;:::o;3314:77::-;3351:7;3380:5;3369:16;;3314:77;;;:::o;3397:122::-;3470:24;3488:5;3470:24;:::i;:::-;3463:5;3460:35;3450:63;;3509:1;3506;3499:12;3450:63;3397:122;:::o;3525:139::-;3571:5;3609:6;3596:20;3587:29;;3625:33;3652:5;3625:33;:::i;:::-;3525:139;;;;:::o;3670:474::-;3738:6;3746;3795:2;3783:9;3774:7;3770:23;3766:32;3763:119;;;3801:79;;:::i;:::-;3763:119;3921:1;3946:53;3991:7;3982:6;3971:9;3967:22;3946:53;:::i;:::-;3936:63;;3892:117;4048:2;4074:53;4119:7;4110:6;4099:9;4095:22;4074:53;:::i;:::-;4064:63;;4019:118;3670:474;;;;;:::o;4150:90::-;4184:7;4227:5;4220:13;4213:21;4202:32;;4150:90;;;:::o;4246:109::-;4327:21;4342:5;4327:21;:::i;:::-;4322:3;4315:34;4246:109;;:::o;4361:210::-;4448:4;4486:2;4475:9;4471:18;4463:26;;4499:65;4561:1;4550:9;4546:17;4537:6;4499:65;:::i;:::-;4361:210;;;;:::o;4577:118::-;4664:24;4682:5;4664:24;:::i;:::-;4659:3;4652:37;4577:118;;:::o;4701:222::-;4794:4;4832:2;4821:9;4817:18;4809:26;;4845:71;4913:1;4902:9;4898:17;4889:6;4845:71;:::i;:::-;4701:222;;;;:::o;4929:619::-;5006:6;5014;5022;5071:2;5059:9;5050:7;5046:23;5042:32;5039:119;;;5077:79;;:::i;:::-;5039:119;5197:1;5222:53;5267:7;5258:6;5247:9;5243:22;5222:53;:::i;:::-;5212:63;;5168:117;5324:2;5350:53;5395:7;5386:6;5375:9;5371:22;5350:53;:::i;:::-;5340:63;;5295:118;5452:2;5478:53;5523:7;5514:6;5503:9;5499:22;5478:53;:::i;:::-;5468:63;;5423:118;4929:619;;;;;:::o;5554:86::-;5589:7;5629:4;5622:5;5618:16;5607:27;;5554:86;;;:::o;5646:112::-;5729:22;5745:5;5729:22;:::i;:::-;5724:3;5717:35;5646:112;;:::o;5764:214::-;5853:4;5891:2;5880:9;5876:18;5868:26;;5904:67;5968:1;5957:9;5953:17;5944:6;5904:67;:::i;:::-;5764:214;;;;:::o;5984:329::-;6043:6;6092:2;6080:9;6071:7;6067:23;6063:32;6060:119;;;6098:79;;:::i;:::-;6060:119;6218:1;6243:53;6288:7;6279:6;6268:9;6264:22;6243:53;:::i;:::-;6233:63;;6189:117;5984:329;;;;:::o;6319:117::-;6428:1;6425;6418:12;6442:117;6551:1;6548;6541:12;6565:117;6674:1;6671;6664:12;6705:568;6778:8;6788:6;6838:3;6831:4;6823:6;6819:17;6815:27;6805:122;;6846:79;;:::i;:::-;6805:122;6959:6;6946:20;6936:30;;6989:18;6981:6;6978:30;6975:117;;;7011:79;;:::i;:::-;6975:117;7125:4;7117:6;7113:17;7101:29;;7179:3;7171:4;7163:6;7159:17;7149:8;7145:32;7142:41;7139:128;;;7186:79;;:::i;:::-;7139:128;6705:568;;;;;:::o;7296:::-;7369:8;7379:6;7429:3;7422:4;7414:6;7410:17;7406:27;7396:122;;7437:79;;:::i;:::-;7396:122;7550:6;7537:20;7527:30;;7580:18;7572:6;7569:30;7566:117;;;7602:79;;:::i;:::-;7566:117;7716:4;7708:6;7704:17;7692:29;;7770:3;7762:4;7754:6;7750:17;7740:8;7736:32;7733:41;7730:128;;;7777:79;;:::i;:::-;7730:128;7296:568;;;;;:::o;7870:934::-;7992:6;8000;8008;8016;8065:2;8053:9;8044:7;8040:23;8036:32;8033:119;;;8071:79;;:::i;:::-;8033:119;8219:1;8208:9;8204:17;8191:31;8249:18;8241:6;8238:30;8235:117;;;8271:79;;:::i;:::-;8235:117;8384:80;8456:7;8447:6;8436:9;8432:22;8384:80;:::i;:::-;8366:98;;;;8162:312;8541:2;8530:9;8526:18;8513:32;8572:18;8564:6;8561:30;8558:117;;;8594:79;;:::i;:::-;8558:117;8707:80;8779:7;8770:6;8759:9;8755:22;8707:80;:::i;:::-;8689:98;;;;8484:313;7870:934;;;;;;;:::o;8810:116::-;8880:21;8895:5;8880:21;:::i;:::-;8873:5;8870:32;8860:60;;8916:1;8913;8906:12;8860:60;8810:116;:::o;8932:133::-;8975:5;9013:6;9000:20;8991:29;;9029:30;9053:5;9029:30;:::i;:::-;8932:133;;;;:::o;9071:323::-;9127:6;9176:2;9164:9;9155:7;9151:23;9147:32;9144:119;;;9182:79;;:::i;:::-;9144:119;9302:1;9327:50;9369:7;9360:6;9349:9;9345:22;9327:50;:::i;:::-;9317:60;;9273:114;9071:323;;;;:::o;9400:329::-;9459:6;9508:2;9496:9;9487:7;9483:23;9479:32;9476:119;;;9514:79;;:::i;:::-;9476:119;9634:1;9659:53;9704:7;9695:6;9684:9;9680:22;9659:53;:::i;:::-;9649:63;;9605:117;9400:329;;;;:::o;9735:118::-;9822:24;9840:5;9822:24;:::i;:::-;9817:3;9810:37;9735:118;;:::o;9859:222::-;9952:4;9990:2;9979:9;9975:18;9967:26;;10003:71;10071:1;10060:9;10056:17;10047:6;10003:71;:::i;:::-;9859:222;;;;:::o;10087:118::-;10158:22;10174:5;10158:22;:::i;:::-;10151:5;10148:33;10138:61;;10195:1;10192;10185:12;10138:61;10087:118;:::o;10211:135::-;10255:5;10293:6;10280:20;10271:29;;10309:31;10334:5;10309:31;:::i;:::-;10211:135;;;;:::o;10352:466::-;10416:6;10424;10473:2;10461:9;10452:7;10448:23;10444:32;10441:119;;;10479:79;;:::i;:::-;10441:119;10599:1;10624:51;10667:7;10658:6;10647:9;10643:22;10624:51;:::i;:::-;10614:61;;10570:115;10724:2;10750:51;10793:7;10784:6;10773:9;10769:22;10750:51;:::i;:::-;10740:61;;10695:116;10352:466;;;;;:::o;10824:468::-;10889:6;10897;10946:2;10934:9;10925:7;10921:23;10917:32;10914:119;;;10952:79;;:::i;:::-;10914:119;11072:1;11097:53;11142:7;11133:6;11122:9;11118:22;11097:53;:::i;:::-;11087:63;;11043:117;11199:2;11225:50;11267:7;11258:6;11247:9;11243:22;11225:50;:::i;:::-;11215:60;;11170:115;10824:468;;;;;:::o;11298:474::-;11366:6;11374;11423:2;11411:9;11402:7;11398:23;11394:32;11391:119;;;11429:79;;:::i;:::-;11391:119;11549:1;11574:53;11619:7;11610:6;11599:9;11595:22;11574:53;:::i;:::-;11564:63;;11520:117;11676:2;11702:53;11747:7;11738:6;11727:9;11723:22;11702:53;:::i;:::-;11692:63;;11647:118;11298:474;;;;;:::o;11778:104::-;11823:7;11852:24;11870:5;11852:24;:::i;:::-;11841:35;;11778:104;;;:::o;11888:138::-;11969:32;11995:5;11969:32;:::i;:::-;11962:5;11959:43;11949:71;;12016:1;12013;12006:12;11949:71;11888:138;:::o;12032:155::-;12086:5;12124:6;12111:20;12102:29;;12140:41;12175:5;12140:41;:::i;:::-;12032:155;;;;:::o;12193:345::-;12260:6;12309:2;12297:9;12288:7;12284:23;12280:32;12277:119;;;12315:79;;:::i;:::-;12277:119;12435:1;12460:61;12513:7;12504:6;12493:9;12489:22;12460:61;:::i;:::-;12450:71;;12406:125;12193:345;;;;:::o;12544:229::-;12684:34;12680:1;12672:6;12668:14;12661:58;12753:12;12748:2;12740:6;12736:15;12729:37;12544:229;:::o;12779:366::-;12921:3;12942:67;13006:2;13001:3;12942:67;:::i;:::-;12935:74;;13018:93;13107:3;13018:93;:::i;:::-;13136:2;13131:3;13127:12;13120:19;;12779:366;;;:::o;13151:419::-;13317:4;13355:2;13344:9;13340:18;13332:26;;13404:9;13398:4;13394:20;13390:1;13379:9;13375:17;13368:47;13432:131;13558:4;13432:131;:::i;:::-;13424:139;;13151:419;;;:::o;13576:180::-;13624:77;13621:1;13614:88;13721:4;13718:1;13711:15;13745:4;13742:1;13735:15;13762:102;13804:8;13851:5;13848:1;13844:13;13823:34;;13762:102;;;:::o;13870:848::-;13931:5;13938:4;13962:6;13953:15;;13986:5;13977:14;;14000:712;14021:1;14011:8;14008:15;14000:712;;;14116:4;14111:3;14107:14;14101:4;14098:24;14095:50;;;14125:18;;:::i;:::-;14095:50;14175:1;14165:8;14161:16;14158:451;;;14590:4;14583:5;14579:16;14570:25;;14158:451;14640:4;14634;14630:15;14622:23;;14670:32;14693:8;14670:32;:::i;:::-;14658:44;;14000:712;;;13870:848;;;;;;;:::o;14724:1073::-;14778:5;14969:8;14959:40;;14990:1;14981:10;;14992:5;;14959:40;15018:4;15008:36;;15035:1;15026:10;;15037:5;;15008:36;15104:4;15152:1;15147:27;;;;15188:1;15183:191;;;;15097:277;;15147:27;15165:1;15156:10;;15167:5;;;15183:191;15228:3;15218:8;15215:17;15212:43;;;15235:18;;:::i;:::-;15212:43;15284:8;15281:1;15277:16;15268:25;;15319:3;15312:5;15309:14;15306:40;;;15326:18;;:::i;:::-;15306:40;15359:5;;;15097:277;;15483:2;15473:8;15470:16;15464:3;15458:4;15455:13;15451:36;15433:2;15423:8;15420:16;15415:2;15409:4;15406:12;15402:35;15386:111;15383:246;;;15539:8;15533:4;15529:19;15520:28;;15574:3;15567:5;15564:14;15561:40;;;15581:18;;:::i;:::-;15561:40;15614:5;;15383:246;15654:42;15692:3;15682:8;15676:4;15673:1;15654:42;:::i;:::-;15639:57;;;;15728:4;15723:3;15719:14;15712:5;15709:25;15706:51;;;15737:18;;:::i;:::-;15706:51;15786:4;15779:5;15775:16;15766:25;;14724:1073;;;;;;:::o;15803:281::-;15861:5;15885:23;15903:4;15885:23;:::i;:::-;15877:31;;15929:25;15945:8;15929:25;:::i;:::-;15917:37;;15973:104;16010:66;16000:8;15994:4;15973:104;:::i;:::-;15964:113;;15803:281;;;;:::o;16090:410::-;16130:7;16153:20;16171:1;16153:20;:::i;:::-;16148:25;;16187:20;16205:1;16187:20;:::i;:::-;16182:25;;16242:1;16239;16235:9;16264:30;16282:11;16264:30;:::i;:::-;16253:41;;16443:1;16434:7;16430:15;16427:1;16424:22;16404:1;16397:9;16377:83;16354:139;;16473:18;;:::i;:::-;16354:139;16138:362;16090:410;;;;:::o;16506:180::-;16554:77;16551:1;16544:88;16651:4;16648:1;16641:15;16675:4;16672:1;16665:15;16692:185;16732:1;16749:20;16767:1;16749:20;:::i;:::-;16744:25;;16783:20;16801:1;16783:20;:::i;:::-;16778:25;;16822:1;16812:35;;16827:18;;:::i;:::-;16812:35;16869:1;16866;16862:9;16857:14;;16692:185;;;;:::o;16883:162::-;17023:14;17019:1;17011:6;17007:14;17000:38;16883:162;:::o;17051:366::-;17193:3;17214:67;17278:2;17273:3;17214:67;:::i;:::-;17207:74;;17290:93;17379:3;17290:93;:::i;:::-;17408:2;17403:3;17399:12;17392:19;;17051:366;;;:::o;17423:419::-;17589:4;17627:2;17616:9;17612:18;17604:26;;17676:9;17670:4;17666:20;17662:1;17651:9;17647:17;17640:47;17704:131;17830:4;17704:131;:::i;:::-;17696:139;;17423:419;;;:::o;17848:173::-;17988:25;17984:1;17976:6;17972:14;17965:49;17848:173;:::o;18027:366::-;18169:3;18190:67;18254:2;18249:3;18190:67;:::i;:::-;18183:74;;18266:93;18355:3;18266:93;:::i;:::-;18384:2;18379:3;18375:12;18368:19;;18027:366;;;:::o;18399:419::-;18565:4;18603:2;18592:9;18588:18;18580:26;;18652:9;18646:4;18642:20;18638:1;18627:9;18623:17;18616:47;18680:131;18806:4;18680:131;:::i;:::-;18672:139;;18399:419;;;:::o;18824:174::-;18964:26;18960:1;18952:6;18948:14;18941:50;18824:174;:::o;19004:366::-;19146:3;19167:67;19231:2;19226:3;19167:67;:::i;:::-;19160:74;;19243:93;19332:3;19243:93;:::i;:::-;19361:2;19356:3;19352:12;19345:19;;19004:366;;;:::o;19376:419::-;19542:4;19580:2;19569:9;19565:18;19557:26;;19629:9;19623:4;19619:20;19615:1;19604:9;19600:17;19593:47;19657:131;19783:4;19657:131;:::i;:::-;19649:139;;19376:419;;;:::o;19801:182::-;19941:34;19937:1;19929:6;19925:14;19918:58;19801:182;:::o;19989:366::-;20131:3;20152:67;20216:2;20211:3;20152:67;:::i;:::-;20145:74;;20228:93;20317:3;20228:93;:::i;:::-;20346:2;20341:3;20337:12;20330:19;;19989:366;;;:::o;20361:419::-;20527:4;20565:2;20554:9;20550:18;20542:26;;20614:9;20608:4;20604:20;20600:1;20589:9;20585:17;20578:47;20642:131;20768:4;20642:131;:::i;:::-;20634:139;;20361:419;;;:::o;20786:166::-;20926:18;20922:1;20914:6;20910:14;20903:42;20786:166;:::o;20958:366::-;21100:3;21121:67;21185:2;21180:3;21121:67;:::i;:::-;21114:74;;21197:93;21286:3;21197:93;:::i;:::-;21315:2;21310:3;21306:12;21299:19;;20958:366;;;:::o;21330:419::-;21496:4;21534:2;21523:9;21519:18;21511:26;;21583:9;21577:4;21573:20;21569:1;21558:9;21554:17;21547:47;21611:131;21737:4;21611:131;:::i;:::-;21603:139;;21330:419;;;:::o;21755:194::-;21795:4;21815:20;21833:1;21815:20;:::i;:::-;21810:25;;21849:20;21867:1;21849:20;:::i;:::-;21844:25;;21893:1;21890;21886:9;21878:17;;21917:1;21911:4;21908:11;21905:37;;;21922:18;;:::i;:::-;21905:37;21755:194;;;;:::o;21955:182::-;22095:34;22091:1;22083:6;22079:14;22072:58;21955:182;:::o;22143:366::-;22285:3;22306:67;22370:2;22365:3;22306:67;:::i;:::-;22299:74;;22382:93;22471:3;22382:93;:::i;:::-;22500:2;22495:3;22491:12;22484:19;;22143:366;;;:::o;22515:419::-;22681:4;22719:2;22708:9;22704:18;22696:26;;22768:9;22762:4;22758:20;22754:1;22743:9;22739:17;22732:47;22796:131;22922:4;22796:131;:::i;:::-;22788:139;;22515:419;;;:::o;22940:224::-;23080:34;23076:1;23068:6;23064:14;23057:58;23149:7;23144:2;23136:6;23132:15;23125:32;22940:224;:::o;23170:366::-;23312:3;23333:67;23397:2;23392:3;23333:67;:::i;:::-;23326:74;;23409:93;23498:3;23409:93;:::i;:::-;23527:2;23522:3;23518:12;23511:19;;23170:366;;;:::o;23542:419::-;23708:4;23746:2;23735:9;23731:18;23723:26;;23795:9;23789:4;23785:20;23781:1;23770:9;23766:17;23759:47;23823:131;23949:4;23823:131;:::i;:::-;23815:139;;23542:419;;;:::o;23967:180::-;24015:77;24012:1;24005:88;24112:4;24109:1;24102:15;24136:4;24133:1;24126:15;24153:191;24193:3;24212:20;24230:1;24212:20;:::i;:::-;24207:25;;24246:20;24264:1;24246:20;:::i;:::-;24241:25;;24289:1;24286;24282:9;24275:16;;24310:3;24307:1;24304:10;24301:36;;;24317:18;;:::i;:::-;24301:36;24153:191;;;;:::o;24350:233::-;24389:3;24412:24;24430:5;24412:24;:::i;:::-;24403:33;;24458:66;24451:5;24448:77;24445:103;;24528:18;;:::i;:::-;24445:103;24575:1;24568:5;24564:13;24557:20;;24350:233;;;:::o;24589:225::-;24729:34;24725:1;24717:6;24713:14;24706:58;24798:8;24793:2;24785:6;24781:15;24774:33;24589:225;:::o;24820:366::-;24962:3;24983:67;25047:2;25042:3;24983:67;:::i;:::-;24976:74;;25059:93;25148:3;25059:93;:::i;:::-;25177:2;25172:3;25168:12;25161:19;;24820:366;;;:::o;25192:419::-;25358:4;25396:2;25385:9;25381:18;25373:26;;25445:9;25439:4;25435:20;25431:1;25420:9;25416:17;25409:47;25473:131;25599:4;25473:131;:::i;:::-;25465:139;;25192:419;;;:::o;25617:332::-;25738:4;25776:2;25765:9;25761:18;25753:26;;25789:71;25857:1;25846:9;25842:17;25833:6;25789:71;:::i;:::-;25870:72;25938:2;25927:9;25923:18;25914:6;25870:72;:::i;:::-;25617:332;;;;;:::o;25955:171::-;26095:23;26091:1;26083:6;26079:14;26072:47;25955:171;:::o;26132:366::-;26274:3;26295:67;26359:2;26354:3;26295:67;:::i;:::-;26288:74;;26371:93;26460:3;26371:93;:::i;:::-;26489:2;26484:3;26480:12;26473:19;;26132:366;;;:::o;26504:419::-;26670:4;26708:2;26697:9;26693:18;26685:26;;26757:9;26751:4;26747:20;26743:1;26732:9;26728:17;26721:47;26785:131;26911:4;26785:131;:::i;:::-;26777:139;;26504:419;;;:::o;26929:170::-;27069:22;27065:1;27057:6;27053:14;27046:46;26929:170;:::o;27105:366::-;27247:3;27268:67;27332:2;27327:3;27268:67;:::i;:::-;27261:74;;27344:93;27433:3;27344:93;:::i;:::-;27462:2;27457:3;27453:12;27446:19;;27105:366;;;:::o;27477:419::-;27643:4;27681:2;27670:9;27666:18;27658:26;;27730:9;27724:4;27720:20;27716:1;27705:9;27701:17;27694:47;27758:131;27884:4;27758:131;:::i;:::-;27750:139;;27477:419;;;:::o;27902:168::-;28042:20;28038:1;28030:6;28026:14;28019:44;27902:168;:::o;28076:366::-;28218:3;28239:67;28303:2;28298:3;28239:67;:::i;:::-;28232:74;;28315:93;28404:3;28315:93;:::i;:::-;28433:2;28428:3;28424:12;28417:19;;28076:366;;;:::o;28448:419::-;28614:4;28652:2;28641:9;28637:18;28629:26;;28701:9;28695:4;28691:20;28687:1;28676:9;28672:17;28665:47;28729:131;28855:4;28729:131;:::i;:::-;28721:139;;28448:419;;;:::o;28873:159::-;29013:11;29009:1;29001:6;28997:14;28990:35;28873:159;:::o;29038:365::-;29180:3;29201:66;29265:1;29260:3;29201:66;:::i;:::-;29194:73;;29276:93;29365:3;29276:93;:::i;:::-;29394:2;29389:3;29385:12;29378:19;;29038:365;;;:::o;29409:419::-;29575:4;29613:2;29602:9;29598:18;29590:26;;29662:9;29656:4;29652:20;29648:1;29637:9;29633:17;29626:47;29690:131;29816:4;29690:131;:::i;:::-;29682:139;;29409:419;;;:::o;29834:143::-;29891:5;29922:6;29916:13;29907:22;;29938:33;29965:5;29938:33;:::i;:::-;29834:143;;;;:::o;29983:351::-;30053:6;30102:2;30090:9;30081:7;30077:23;30073:32;30070:119;;;30108:79;;:::i;:::-;30070:119;30228:1;30253:64;30309:7;30300:6;30289:9;30285:22;30253:64;:::i;:::-;30243:74;;30199:128;29983:351;;;;:::o;30340:332::-;30461:4;30499:2;30488:9;30484:18;30476:26;;30512:71;30580:1;30569:9;30565:17;30556:6;30512:71;:::i;:::-;30593:72;30661:2;30650:9;30646:18;30637:6;30593:72;:::i;:::-;30340:332;;;;;:::o;30678:162::-;30818:14;30814:1;30806:6;30802:14;30795:38;30678:162;:::o;30846:366::-;30988:3;31009:67;31073:2;31068:3;31009:67;:::i;:::-;31002:74;;31085:93;31174:3;31085:93;:::i;:::-;31203:2;31198:3;31194:12;31187:19;;30846:366;;;:::o;31218:419::-;31384:4;31422:2;31411:9;31407:18;31399:26;;31471:9;31465:4;31461:20;31457:1;31446:9;31442:17;31435:47;31499:131;31625:4;31499:131;:::i;:::-;31491:139;;31218:419;;;:::o;31643:316::-;31756:4;31794:2;31783:9;31779:18;31771:26;;31807:67;31871:1;31860:9;31856:17;31847:6;31807:67;:::i;:::-;31884:68;31948:2;31937:9;31933:18;31924:6;31884:68;:::i;:::-;31643:316;;;;;:::o;31965:223::-;32105:34;32101:1;32093:6;32089:14;32082:58;32174:6;32169:2;32161:6;32157:15;32150:31;31965:223;:::o;32194:366::-;32336:3;32357:67;32421:2;32416:3;32357:67;:::i;:::-;32350:74;;32433:93;32522:3;32433:93;:::i;:::-;32551:2;32546:3;32542:12;32535:19;;32194:366;;;:::o;32566:419::-;32732:4;32770:2;32759:9;32755:18;32747:26;;32819:9;32813:4;32809:20;32805:1;32794:9;32790:17;32783:47;32847:131;32973:4;32847:131;:::i;:::-;32839:139;;32566:419;;;:::o;32991:179::-;33131:31;33127:1;33119:6;33115:14;33108:55;32991:179;:::o;33176:366::-;33318:3;33339:67;33403:2;33398:3;33339:67;:::i;:::-;33332:74;;33415:93;33504:3;33415:93;:::i;:::-;33533:2;33528:3;33524:12;33517:19;;33176:366;;;:::o;33548:419::-;33714:4;33752:2;33741:9;33737:18;33729:26;;33801:9;33795:4;33791:20;33787:1;33776:9;33772:17;33765:47;33829:131;33955:4;33829:131;:::i;:::-;33821:139;;33548:419;;;:::o;33973:159::-;34113:11;34109:1;34101:6;34097:14;34090:35;33973:159;:::o;34138:365::-;34280:3;34301:66;34365:1;34360:3;34301:66;:::i;:::-;34294:73;;34376:93;34465:3;34376:93;:::i;:::-;34494:2;34489:3;34485:12;34478:19;;34138:365;;;:::o;34509:419::-;34675:4;34713:2;34702:9;34698:18;34690:26;;34762:9;34756:4;34752:20;34748:1;34737:9;34733:17;34726:47;34790:131;34916:4;34790:131;:::i;:::-;34782:139;;34509:419;;;:::o;34934:60::-;34962:3;34983:5;34976:12;;34934:60;;;:::o;35000:142::-;35050:9;35083:53;35101:34;35110:24;35128:5;35110:24;:::i;:::-;35101:34;:::i;:::-;35083:53;:::i;:::-;35070:66;;35000:142;;;:::o;35148:126::-;35198:9;35231:37;35262:5;35231:37;:::i;:::-;35218:50;;35148:126;;;:::o;35280:134::-;35338:9;35371:37;35402:5;35371:37;:::i;:::-;35358:50;;35280:134;;;:::o;35420:147::-;35515:45;35554:5;35515:45;:::i;:::-;35510:3;35503:58;35420:147;;:::o;35573:238::-;35674:4;35712:2;35701:9;35697:18;35689:26;;35725:79;35801:1;35790:9;35786:17;35777:6;35725:79;:::i;:::-;35573:238;;;;:::o;35817:182::-;35957:34;35953:1;35945:6;35941:14;35934:58;35817:182;:::o;36005:366::-;36147:3;36168:67;36232:2;36227:3;36168:67;:::i;:::-;36161:74;;36244:93;36333:3;36244:93;:::i;:::-;36362:2;36357:3;36353:12;36346:19;;36005:366;;;:::o;36377:419::-;36543:4;36581:2;36570:9;36566:18;36558:26;;36630:9;36624:4;36620:20;36616:1;36605:9;36601:17;36594:47;36658:131;36784:4;36658:131;:::i;:::-;36650:139;;36377:419;;;:::o;36802:85::-;36847:7;36876:5;36865:16;;36802:85;;;:::o;36893:158::-;36951:9;36984:61;37002:42;37011:32;37037:5;37011:32;:::i;:::-;37002:42;:::i;:::-;36984:61;:::i;:::-;36971:74;;36893:158;;;:::o;37057:147::-;37152:45;37191:5;37152:45;:::i;:::-;37147:3;37140:58;37057:147;;:::o;37210:807::-;37459:4;37497:3;37486:9;37482:19;37474:27;;37511:71;37579:1;37568:9;37564:17;37555:6;37511:71;:::i;:::-;37592:72;37660:2;37649:9;37645:18;37636:6;37592:72;:::i;:::-;37674:80;37750:2;37739:9;37735:18;37726:6;37674:80;:::i;:::-;37764;37840:2;37829:9;37825:18;37816:6;37764:80;:::i;:::-;37854:73;37922:3;37911:9;37907:19;37898:6;37854:73;:::i;:::-;37937;38005:3;37994:9;37990:19;37981:6;37937:73;:::i;:::-;37210:807;;;;;;;;;:::o;38023:143::-;38080:5;38111:6;38105:13;38096:22;;38127:33;38154:5;38127:33;:::i;:::-;38023:143;;;;:::o;38172:663::-;38260:6;38268;38276;38325:2;38313:9;38304:7;38300:23;38296:32;38293:119;;;38331:79;;:::i;:::-;38293:119;38451:1;38476:64;38532:7;38523:6;38512:9;38508:22;38476:64;:::i;:::-;38466:74;;38422:128;38589:2;38615:64;38671:7;38662:6;38651:9;38647:22;38615:64;:::i;:::-;38605:74;;38560:129;38728:2;38754:64;38810:7;38801:6;38790:9;38786:22;38754:64;:::i;:::-;38744:74;;38699:129;38172:663;;;;;:::o;38841:180::-;38889:77;38886:1;38879:88;38986:4;38983:1;38976:15;39010:4;39007:1;39000:15;39027:114;39094:6;39128:5;39122:12;39112:22;;39027:114;;;:::o;39147:184::-;39246:11;39280:6;39275:3;39268:19;39320:4;39315:3;39311:14;39296:29;;39147:184;;;;:::o;39337:132::-;39404:4;39427:3;39419:11;;39457:4;39452:3;39448:14;39440:22;;39337:132;;;:::o;39475:108::-;39552:24;39570:5;39552:24;:::i;:::-;39547:3;39540:37;39475:108;;:::o;39589:179::-;39658:10;39679:46;39721:3;39713:6;39679:46;:::i;:::-;39757:4;39752:3;39748:14;39734:28;;39589:179;;;;:::o;39774:113::-;39844:4;39876;39871:3;39867:14;39859:22;;39774:113;;;:::o;39923:732::-;40042:3;40071:54;40119:5;40071:54;:::i;:::-;40141:86;40220:6;40215:3;40141:86;:::i;:::-;40134:93;;40251:56;40301:5;40251:56;:::i;:::-;40330:7;40361:1;40346:284;40371:6;40368:1;40365:13;40346:284;;;40447:6;40441:13;40474:63;40533:3;40518:13;40474:63;:::i;:::-;40467:70;;40560:60;40613:6;40560:60;:::i;:::-;40550:70;;40406:224;40393:1;40390;40386:9;40381:14;;40346:284;;;40350:14;40646:3;40639:10;;40047:608;;;39923:732;;;;:::o;40661:831::-;40924:4;40962:3;40951:9;40947:19;40939:27;;40976:71;41044:1;41033:9;41029:17;41020:6;40976:71;:::i;:::-;41057:80;41133:2;41122:9;41118:18;41109:6;41057:80;:::i;:::-;41184:9;41178:4;41174:20;41169:2;41158:9;41154:18;41147:48;41212:108;41315:4;41306:6;41212:108;:::i;:::-;41204:116;;41330:72;41398:2;41387:9;41383:18;41374:6;41330:72;:::i;:::-;41412:73;41480:3;41469:9;41465:19;41456:6;41412:73;:::i;:::-;40661:831;;;;;;;;:::o;41498:167::-;41638:19;41634:1;41626:6;41622:14;41615:43;41498:167;:::o;41671:366::-;41813:3;41834:67;41898:2;41893:3;41834:67;:::i;:::-;41827:74;;41910:93;41999:3;41910:93;:::i;:::-;42028:2;42023:3;42019:12;42012:19;;41671:366;;;:::o;42043:419::-;42209:4;42247:2;42236:9;42232:18;42224:26;;42296:9;42290:4;42286:20;42282:1;42271:9;42267:17;42260:47;42324:131;42450:4;42324:131;:::i;:::-;42316:139;;42043:419;;;:::o
Swarm Source
ipfs://3c3c8ffef7bd793bc00d1ada03364ff0ae5767f5f188f62119edfe669d71d2c1
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.