Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
100,000,000 KYOKAI
Holders
313
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
0.000000001 KYOKAIValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
KYOKAI
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-01-31 */ //SPDX-License-Identifier: MIT pragma solidity 0.8.17; interface IERC20 { function totalSupply() external view returns (uint256); function decimals() external view returns (uint8); function symbol() external view returns (string memory); function name() external view returns (string memory); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address __owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed _owner, address indexed spender, uint256 value); } abstract contract Auth { address internal _owner; constructor(address creatorOwner) { _owner = creatorOwner; } 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 KYOKAI is IERC20, Auth { uint8 private constant _decimals = 9; uint256 private constant _totalSupply = 100_000_000 * (10**_decimals); string private constant _name = "Kyokai"; string private constant _symbol = "KYOKAI"; uint256 private _antibotTaxBlock; uint8 private _buyTaxRate = 3; uint8 private _sellTaxRate = 22; uint8 private _taxRtHardCap = 25; uint16 private _taxSharesMarketing = 2; uint16 private _taxSharesLP = 1; uint16 private _totalTaxShares = _taxSharesMarketing + _taxSharesLP; address payable private _walletMarketing = payable(0xe46d00c3De194fe50DfCce3CeC5449636f5F8dA7); uint256 private _maxTxAmount = _totalSupply; uint256 private _maxWalletAmount = _totalSupply; uint256 private _taxSwapMin = _totalSupply * 10 / 100000; uint256 private _taxSwapMax = _totalSupply * 100 / 100000; mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _noFees; mapping (address => bool) private _noLimits; address private _lpOwner; address private constant _swapRouterAddress = address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); IUniswapV2Router02 private _primarySwapRouter = IUniswapV2Router02(_swapRouterAddress); address private WETH = address(0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2); address private _primaryLP; mapping (address => bool) private _isLP; bool private _tradingOpen; bool private _inTaxSwap = false; modifier lockTaxSwap { _inTaxSwap = true; _; _inTaxSwap = false; } event TokensAirdropped(uint256 totalWallets, uint256 totalTokens); event TokensBurned(address indexed burnedByWallet, uint256 tokenAmount); constructor() Auth(msg.sender) { _lpOwner = msg.sender; _balances[address(this)] = 8_292_240 * (10 ** _decimals); // 8.29% to LP, rest airdropped to old hodlders emit Transfer(address(0), address(this), _balances[address(this)]); _balances[_owner] = _totalSupply - _balances[address(this)]; emit Transfer(address(0), _owner, _balances[_owner]); _noFees[_owner] = true; _noFees[address(this)] = true; _noFees[_swapRouterAddress] = true; _noFees[_walletMarketing] = true; _noLimits[_owner] = true; _noLimits[address(this)] = true; _noLimits[_swapRouterAddress] = true; _noLimits[_walletMarketing] = 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 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(msg.sender), "Trading not open"); return _transferFrom(msg.sender, recipient, amount); } function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) { require(_checkTradingOpen(sender), "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 openTrading() external onlyOwner { _openTrading(); } function _approveRouter(uint256 _tokenAmount) internal { if ( _allowances[address(this)][_swapRouterAddress] < _tokenAmount ) { _allowances[address(this)][_swapRouterAddress] = type(uint256).max; emit Approval(address(this), _swapRouterAddress, type(uint256).max); } } function addInitialLiquidity() external onlyOwner lockTaxSwap { require(_primaryLP == address(0), "LP exists"); require(address(this).balance>0, "No ETH in contract"); require(_balances[address(this)]>0, "No tokens in contract"); WETH = _primarySwapRouter.WETH(); _primaryLP = IUniswapV2Factory(_primarySwapRouter.factory()).createPair(address(this), WETH); _addLiquidity(_balances[address(this)], address(this).balance); _isLP[_primaryLP] = true; } function _addLiquidity(uint256 _tokenAmount, uint256 _ethAmountWei) internal { address lpTokenRecipient = _lpOwner; _approveRouter(_tokenAmount); _primarySwapRouter.addLiquidityETH{value: _ethAmountWei} ( address(this), _tokenAmount, 0, 0, lpTokenRecipient, block.timestamp ); } function _openTrading() internal { require(!_tradingOpen, "trading already open"); require(_primaryLP != address(0), "LP not initialized"); _maxTxAmount = _totalSupply * 35 / 1000; _maxWalletAmount = _totalSupply * 35 / 1000; _antibotTaxBlock = block.number + 5; _tradingOpen = true; } function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) { require(sender != address(0), "No transfers from Zero wallet"); if (!_tradingOpen) { require(_noFees[sender] && _noLimits[sender], "Trading not open"); } if ( !_inTaxSwap && _isLP[recipient] ) { _swapTaxAndLiquify(); } if ( sender != address(this) && recipient != address(this) && sender != _owner ) { require(_checkLimits(sender, recipient, amount), "TX exceeds limits"); } 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 _checkLimits(address sender, address recipient, uint256 transferAmount) internal view returns (bool) { bool limitCheckPassed = true; if ( _tradingOpen && !_noLimits[sender] && !_noLimits[recipient] ) { if ( transferAmount > _maxTxAmount ) { limitCheckPassed = false; } else if ( !_isLP[recipient] && (_balances[recipient] + transferAmount > _maxWalletAmount) ) { limitCheckPassed = false; } } return limitCheckPassed; } function _checkTradingOpen(address sender) private view returns (bool){ bool checkResult = false; if ( _tradingOpen ) { checkResult = true; } else if (_noFees[sender] && _noLimits[sender]) { checkResult = true; } return checkResult; } function _calculateTax(address sender, address recipient, uint256 amount) internal view returns (uint256) { uint256 taxAmount; if ( !_tradingOpen || _noFees[sender] || _noFees[recipient] ) { taxAmount = 0; } else if ( _isLP[sender] ) { taxAmount = amount * _buyTaxRate / 100; if (block.number >= _antibotTaxBlock) { taxAmount = amount * _buyTaxRate / 100; } // regular buy tax else { taxAmount = amount * 99 / 100; } // antibot buy tax for a few blocks after openTrading } else if ( _isLP[recipient] ) { taxAmount = amount * _sellTaxRate / 100; } return taxAmount; } function getExemptions(address wallet) external view returns (bool noFees, bool noLimits) { return ( _noFees[wallet], _noLimits[wallet] ); } function setExemptions(address wallet, bool noFees, bool noLimits) external onlyOwner { if (noLimits || noFees) { require(!_isLP[wallet], "Cannot exempt LP"); } _noFees[ wallet ] = noFees; _noLimits[ wallet ] = noLimits; } function getTaxInfo() external view returns (uint8 buyTax, uint8 sellTax, uint16 sharesMarketing, uint16 sharesLP, uint8 taxRoundtripHardcap ) { return ( _buyTaxRate, _sellTaxRate, _taxSharesMarketing, _taxSharesLP, _taxRtHardCap); } function setTaxRates(uint8 newBuyTax, uint8 newSellTax) external onlyOwner { require(newBuyTax + newSellTax <= _taxRtHardCap, "Roundtrip too high"); _buyTaxRate = newBuyTax; _sellTaxRate = newSellTax; } function decreaseTaxRTHardcap(uint8 newRoundtripHardcap) external onlyOwner { require (newRoundtripHardcap < _taxRtHardCap, "New hardcap must be lower"); _taxRtHardCap = newRoundtripHardcap; } function setTaxDistribution(uint16 sharesAutoLP, uint16 sharesMarketing) external onlyOwner { uint16 totalShares = sharesAutoLP + sharesMarketing; require( totalShares > 0, "Both cannot be 0"); _taxSharesLP = sharesAutoLP; _taxSharesMarketing = sharesMarketing; _totalTaxShares = totalShares; } function getAddresses() external view returns (address owner, address primaryLP, address marketing, address LPowner ) { return ( _owner, _primaryLP, _walletMarketing, _lpOwner); } function setTaxWallets(address newMarketing, address newLpOwner) external onlyOwner { require(!_isLP[newMarketing] && !_isLP[newLpOwner], "LP cannot be tax wallet"); _walletMarketing = payable(newMarketing); _lpOwner = newLpOwner; _noFees[newMarketing] = true; _noLimits[newMarketing] = true; } function getLimitsInfo() external view returns (uint256 maxTX, uint256 maxWallet, uint256 taxSwapMin, uint256 taxSwapMax ) { return ( _maxTxAmount, _maxWalletAmount, _taxSwapMin, _taxSwapMax); } function increaseLimits(uint16 maxTxAmtPermile, uint16 maxWalletAmtPermile) external onlyOwner { uint256 newTxAmt = _totalSupply * maxTxAmtPermile / 1000 + 1; require(newTxAmt >= _maxTxAmount, "tx limit too low"); _maxTxAmount = newTxAmt; uint256 newWalletAmt = _totalSupply * maxWalletAmtPermile / 1000 + 1; require(newWalletAmt >= _maxWalletAmount, "wallet limit too low"); _maxWalletAmount = newWalletAmt; } function setTaxSwapLimits(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 / 100000, "Upper threshold too low"); require(_taxSwapMax<_totalSupply / 100, "Upper threshold too high"); } function _swapTaxAndLiquify() private lockTaxSwap { uint256 _taxTokensAvailable = balanceOf(address(this)); if ( _taxTokensAvailable >= _taxSwapMin && _tradingOpen ) { if ( _taxTokensAvailable >= _taxSwapMax ) { _taxTokensAvailable = _taxSwapMax; } uint256 _tokensForLP = _taxTokensAvailable * _taxSharesLP / _totalTaxShares / 2; uint256 _tokensToSwap = _taxTokensAvailable - _tokensForLP; if( _tokensToSwap > 10**_decimals ) { uint256 _ethPreSwap = address(this).balance; _swapTaxTokensForEth(_tokensToSwap); uint256 _ethSwapped = address(this).balance - _ethPreSwap; if ( _taxSharesLP > 0 ) { uint256 _ethWeiAmount = _ethSwapped * _taxSharesLP / _totalTaxShares ; _approveRouter(_tokensForLP); _addLiquidity(_tokensForLP, _ethWeiAmount); } } uint256 _contractETHBalance = address(this).balance; if(_contractETHBalance > 0) { _sendTaxEth(_contractETHBalance); } } } function _swapTaxTokensForEth(uint256 tokenAmount) private { _approveRouter(tokenAmount); address[] memory path = new address[](2); path[0] = address(this); path[1] = WETH; _primarySwapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp); } function _sendTaxEth(uint256 amount) private { _walletMarketing.transfer(amount); } function manualTaxSwapAndSend(uint8 swapTokenPercent, bool sendEth) external onlyOwner lockTaxSwap { require(swapTokenPercent <= 100, "Cannot swap more than 100%"); uint256 tokensToSwap = balanceOf(address(this)) * swapTokenPercent / 100; if (tokensToSwap > 10 ** _decimals) { _swapTaxTokensForEth(tokensToSwap); } if (sendEth) { uint256 _contractETHBalance = address(this).balance; if(_contractETHBalance > 0) { _sendTaxEth(_contractETHBalance); } } } function burnTokens(uint256 amount) external { uint256 _tokensAvailable = balanceOf(msg.sender); require(amount <= _tokensAvailable, "Token balance too low"); if ( amount > 0 ) { _balances[msg.sender] -= amount; _balances[address(0)] += amount; emit Transfer(msg.sender, address(0), amount); emit TokensBurned(msg.sender, amount); } } 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,"Input length mismatch"); 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":"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":[],"name":"addInitialLiquidity","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":[{"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":"uint8","name":"newRoundtripHardcap","type":"uint8"}],"name":"decreaseTaxRTHardcap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getAddresses","outputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"primaryLP","type":"address"},{"internalType":"address","name":"marketing","type":"address"},{"internalType":"address","name":"LPowner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"getExemptions","outputs":[{"internalType":"bool","name":"noFees","type":"bool"},{"internalType":"bool","name":"noLimits","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLimitsInfo","outputs":[{"internalType":"uint256","name":"maxTX","type":"uint256"},{"internalType":"uint256","name":"maxWallet","type":"uint256"},{"internalType":"uint256","name":"taxSwapMin","type":"uint256"},{"internalType":"uint256","name":"taxSwapMax","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTaxInfo","outputs":[{"internalType":"uint8","name":"buyTax","type":"uint8"},{"internalType":"uint8","name":"sellTax","type":"uint8"},{"internalType":"uint16","name":"sharesMarketing","type":"uint16"},{"internalType":"uint16","name":"sharesLP","type":"uint16"},{"internalType":"uint8","name":"taxRoundtripHardcap","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"maxTxAmtPermile","type":"uint16"},{"internalType":"uint16","name":"maxWalletAmtPermile","type":"uint16"}],"name":"increaseLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"swapTokenPercent","type":"uint8"},{"internalType":"bool","name":"sendEth","type":"bool"}],"name":"manualTaxSwapAndSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"noFees","type":"bool"},{"internalType":"bool","name":"noLimits","type":"bool"}],"name":"setExemptions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"sharesAutoLP","type":"uint16"},{"internalType":"uint16","name":"sharesMarketing","type":"uint16"}],"name":"setTaxDistribution","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"newBuyTax","type":"uint8"},{"internalType":"uint8","name":"newSellTax","type":"uint8"}],"name":"setTaxRates","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"minValue","type":"uint32"},{"internalType":"uint32","name":"minDivider","type":"uint32"},{"internalType":"uint32","name":"maxValue","type":"uint32"},{"internalType":"uint32","name":"maxDivider","type":"uint32"}],"name":"setTaxSwapLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketing","type":"address"},{"internalType":"address","name":"newLpOwner","type":"address"}],"name":"setTaxWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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
60806040526003600260006101000a81548160ff021916908360ff1602179055506016600260016101000a81548160ff021916908360ff16021790555060196002806101000a81548160ff021916908360ff16021790555060028060036101000a81548161ffff021916908361ffff1602179055506001600260056101000a81548161ffff021916908361ffff160217905550600260059054906101000a900461ffff16600260039054906101000a900461ffff16620000c09190620009c7565b600260076101000a81548161ffff021916908361ffff16021790555073e46d00c3de194fe50dfcce3cec5449636f5f8da7600260096101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a62000141919062000b6f565b6305f5e10062000152919062000bc0565b6003556009600a62000165919062000b6f565b6305f5e10062000176919062000bc0565b600455620186a0600a6009600a6200018f919062000b6f565b6305f5e100620001a0919062000bc0565b620001ac919062000bc0565b620001b8919062000c3a565b600555620186a060646009600a620001d1919062000b6f565b6305f5e100620001e2919062000bc0565b620001ee919062000bc0565b620001fa919062000c3a565b600655737a250d5630b4cf539739df2c5dacb4c659f2488d600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601060016101000a81548160ff021916908315150217905550348015620002cf57600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505033600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a62000363919062000b6f565b627e879062000373919062000bc0565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460405162000455919062000c83565b60405180910390a3600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546009600a620004ad919062000b6f565b6305f5e100620004be919062000bc0565b620004ca919062000ca0565b600760008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600760008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040516200060e919062000c83565b60405180910390a36001600960008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000600260099054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000600260099054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000cdb565b600061ffff82169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620009d4826200098a565b9150620009e1836200098a565b9250828201905061ffff811115620009fe57620009fd62000998565b5b92915050565b60008160011c9050919050565b6000808291508390505b600185111562000a635780860481111562000a3b5762000a3a62000998565b5b600185161562000a4b5780820291505b808102905062000a5b8562000a04565b945062000a1b565b94509492505050565b60008262000a7e576001905062000b51565b8162000a8e576000905062000b51565b816001811462000aa7576002811462000ab25762000ae8565b600191505062000b51565b60ff84111562000ac75762000ac662000998565b5b8360020a91508482111562000ae15762000ae062000998565b5b5062000b51565b5060208310610133831016604e8410600b841016171562000b225782820a90508381111562000b1c5762000b1b62000998565b5b62000b51565b62000b31848484600162000a11565b9250905081840481111562000b4b5762000b4a62000998565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000b7c8262000b58565b915062000b898362000b62565b925062000bb87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000a6c565b905092915050565b600062000bcd8262000b58565b915062000bda8362000b58565b925082820262000bea8162000b58565b9150828204841483151762000c045762000c0362000998565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000c478262000b58565b915062000c548362000b58565b92508262000c675762000c6662000c0b565b5b828204905092915050565b62000c7d8162000b58565b82525050565b600060208201905062000c9a600083018462000c72565b92915050565b600062000cad8262000b58565b915062000cba8362000b58565b925082820390508181111562000cd55762000cd462000998565b5b92915050565b6152c38062000ceb6000396000f3fe6080604052600436106101855760003560e01c806370a08231116100d1578063b14218031161008a578063dd62ed3e11610064578063dd62ed3e14610570578063e4dbc45b146105ad578063f2fde38b146105d6578063fd965024146105ff5761018c565b8063b142180314610507578063be826da714610530578063c9567bf9146105595761018c565b806370a08231146103cd578063740bf4971461040a578063931b68ea1461043357806395d89b4114610471578063a39fac121461049c578063a9059cbb146104ca5761018c565b806323b872dd1161013e578063587469c111610118578063587469c114610324578063672434821461034d5780636d1b229d146103765780636f013db91461039f5761018c565b806323b872dd146102935780632fb528ba146102d0578063313ce567146102f95761018c565b80630210a83d1461019157806306fdde03146101a8578063095ea7b3146101d357806318160ddd1461021057806318839bc31461023b57806322a62e1e146102645761018c565b3661018c57005b600080fd5b34801561019d57600080fd5b506101a6610628565b005b3480156101b457600080fd5b506101bd610b48565b6040516101ca919061396b565b60405180910390f35b3480156101df57600080fd5b506101fa60048036038101906101f59190613a2b565b610b85565b6040516102079190613a86565b60405180910390f35b34801561021c57600080fd5b50610225610c77565b6040516102329190613ab0565b60405180910390f35b34801561024757600080fd5b50610262600480360381019061025d9190613af7565b610c9b565b005b34801561027057600080fd5b50610279610e78565b60405161028a959493929190613b83565b60405180910390f35b34801561029f57600080fd5b506102ba60048036038101906102b59190613bd6565b610ee1565b6040516102c79190613a86565b60405180910390f35b3480156102dc57600080fd5b506102f760048036038101906102f29190613c55565b6110eb565b005b34801561030557600080fd5b5061030e611261565b60405161031b9190613c95565b60405180910390f35b34801561033057600080fd5b5061034b60048036038101906103469190613cdc565b61126a565b005b34801561035957600080fd5b50610374600480360381019061036f9190613dd7565b6113ab565b005b34801561038257600080fd5b5061039d60048036038101906103989190613e58565b611803565b005b3480156103ab57600080fd5b506103b46119c1565b6040516103c49493929190613e85565b60405180910390f35b3480156103d957600080fd5b506103f460048036038101906103ef9190613eca565b6119e1565b6040516104019190613ab0565b60405180910390f35b34801561041657600080fd5b50610431600480360381019061042c9190613ef7565b611a2a565b005b34801561043f57600080fd5b5061045a60048036038101906104559190613eca565b611cd1565b604051610468929190613f37565b60405180910390f35b34801561047d57600080fd5b50610486611d77565b604051610493919061396b565b60405180910390f35b3480156104a857600080fd5b506104b1611db4565b6040516104c19493929190613f6f565b60405180910390f35b3480156104d657600080fd5b506104f160048036038101906104ec9190613a2b565b611e52565b6040516104fe9190613a86565b60405180910390f35b34801561051357600080fd5b5061052e60048036038101906105299190613cdc565b611eaf565b005b34801561053c57600080fd5b5061055760048036038101906105529190613fb4565b61206d565b005b34801561056557600080fd5b5061056e61216d565b005b34801561057c57600080fd5b5061059760048036038101906105929190613ef7565b612205565b6040516105a49190613ab0565b60405180910390f35b3480156105b957600080fd5b506105d460048036038101906105cf919061401d565b61228c565b005b3480156105e257600080fd5b506105fd60048036038101906105f891906140c2565b6124cb565b005b34801561060b57600080fd5b50610626600480360381019061062191906140ef565b6125d3565b005b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ad906141a1565b60405180910390fd5b6001601060016101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610762576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107599061420d565b60405180910390fd5b600047116107a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079c90614279565b60405180910390fd5b6000600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411610827576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081e906142e5565b60405180910390fd5b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610894573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b8919061431a565b600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610965573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610989919061431a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b81526004016109e5929190614347565b6020604051808303816000875af1158015610a04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a28919061431a565b600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610ab1600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054476126fc565b6001600f6000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000601060016101000a81548160ff021916908315150217905550565b60606040518060400160405280600681526020017f4b796f6b61690000000000000000000000000000000000000000000000000000815250905090565b600081600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610c659190613ab0565b60405180910390a36001905092915050565b60006009600a610c8791906144d2565b6305f5e100610c96919061451d565b905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d20906141a1565b60405180910390fd5b8080610d325750815b15610dc557600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610dc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dbb906145ab565b60405180910390fd5b5b81600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b6000806000806000600260009054906101000a900460ff16600260019054906101000a900460ff16600260039054906101000a900461ffff16600260059054906101000a900461ffff1660028054906101000a900460ff16945094509450945094509091929394565b6000610eec846127de565b610f2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2290614617565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146110d75781600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110569190614637565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6110e28484846128b9565b90509392505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611179576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611170906141a1565b60405180910390fd5b6001601060016101000a81548160ff02191690831515021790555060648260ff1611156111db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d2906146b7565b60405180910390fd5b600060648360ff166111ec306119e1565b6111f6919061451d565b6112009190614706565b90506009600a61121091906144d2565b8111156112215761122081612de8565b5b8115611241576000479050600081111561123f5761123e81612f99565b5b505b506000601060016101000a81548160ff0219169083151502179055505050565b60006009905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ef906141a1565b60405180910390fd5b600081836113069190614737565b905060008161ffff161161134f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611346906147b9565b60405180910390fd5b82600260056101000a81548161ffff021916908361ffff16021790555081600260036101000a81548161ffff021916908361ffff16021790555080600260076101000a81548161ffff021916908361ffff160217905550505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611439576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611430906141a1565b60405180910390fd5b60fa848490501115611480576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147790614825565b60405180910390fd5b8181905084849050146114c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bf90614891565b60405180910390fd5b6000805b85859050811015611529576009600a6114e591906144d2565b8484838181106114f8576114f76148b1565b5b90506020020135611509919061451d565b8261151491906148e0565b9150808061152190614914565b9150506114cc565b5080600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156115ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a3906149ce565b60405180910390fd5b60005b858590508110156117bf576009600a6115c891906144d2565b8484838181106115db576115da6148b1565b5b905060200201356115ec919061451d565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461163a9190614637565b925050819055506009600a61164f91906144d2565b848483818110611662576116616148b1565b5b90506020020135611673919061451d565b6007600088888581811061168a576116896148b1565b5b905060200201602081019061169f9190613eca565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546116e891906148e0565b92505081905550858582818110611702576117016148b1565b5b90506020020160208101906117179190613eca565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a61177391906144d2565b878786818110611786576117856148b1565b5b90506020020135611797919061451d565b6040516117a49190613ab0565b60405180910390a380806117b790614914565b9150506115af565b507f71cc7095cc35ed4701c217a8efb440732eb0737da67f6548c008ac26fba9546485859050826040516117f49291906149ee565b60405180910390a15050505050565b600061180e336119e1565b905080821115611853576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184a90614a63565b60405180910390fd5b60008211156119bd5781600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546118ab9190614637565b9250508190555081600760008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461190191906148e0565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516119669190613ab0565b60405180910390a33373ffffffffffffffffffffffffffffffffffffffff167ffd38818f5291bf0bb3a2a48aadc06ba8757865d1dabd804585338aab3009dcb6836040516119b49190613ab0565b60405180910390a25b5050565b600080600080600354600454600554600654935093509350935090919293565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ab8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aaf906141a1565b60405180910390fd5b600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611b5c5750600f60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611b9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9290614acf565b60405180910390fd5b81600260096101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600080600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1691509150915091565b60606040518060400160405280600681526020017f4b594f4b41490000000000000000000000000000000000000000000000000000815250905090565b60008060008060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260099054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16935093509350935090919293565b6000611e5d336127de565b611e9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9390614617565b60405180910390fd5b611ea73384846128b9565b905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611f3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f34906141a1565b60405180910390fd5b600060016103e88461ffff166009600a611f5791906144d2565b6305f5e100611f66919061451d565b611f70919061451d565b611f7a9190614706565b611f8491906148e0565b9050600354811015611fcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc290614b3b565b60405180910390fd5b80600381905550600060016103e88461ffff166009600a611fec91906144d2565b6305f5e100611ffb919061451d565b612005919061451d565b61200f9190614706565b61201991906148e0565b9050600454811015612060576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205790614ba7565b60405180910390fd5b8060048190555050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146120fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f2906141a1565b60405180910390fd5b60028054906101000a900460ff1660ff168160ff1610612150576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214790614c13565b60405180910390fd5b806002806101000a81548160ff021916908360ff16021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146121fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f2906141a1565b60405180910390fd5b612203613005565b565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461231a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612311906141a1565b60405180910390fd5b8263ffffffff168463ffffffff166009600a61233691906144d2565b6305f5e100612345919061451d565b61234f919061451d565b6123599190614706565b6005819055508063ffffffff168263ffffffff166009600a61237b91906144d2565b6305f5e10061238a919061451d565b612394919061451d565b61239e9190614706565b60068190555060055460065410156123eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e290614c7f565b60405180910390fd5b620186a06009600a6123fd91906144d2565b6305f5e10061240c919061451d565b6124169190614706565b60065411612459576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245090614ceb565b60405180910390fd5b60646009600a61246991906144d2565b6305f5e100612478919061451d565b6124829190614706565b600654106124c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124bc90614d57565b60405180910390fd5b50505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612559576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612550906141a1565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516125c89190614dd6565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612661576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612658906141a1565b60405180910390fd5b60028054906101000a900460ff1660ff16818361267e9190614df1565b60ff1611156126c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b990614e72565b60405180910390fd5b81600260006101000a81548160ff021916908360ff16021790555080600260016101000a81548160ff021916908360ff1602179055505050565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061272c8361318e565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71983308660008087426040518863ffffffff1660e01b815260040161279396959493929190614ecd565b60606040518083038185885af11580156127b1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906127d69190614f43565b505050505050565b60008060009050601060009054906101000a900460ff161561280357600190506128b0565b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156128a55750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156128af57600190505b5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612929576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292090614fe2565b60405180910390fd5b601060009054906101000a900460ff16612a1f57600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156129df5750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612a1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1590614617565b60405180910390fd5b5b601060019054906101000a900460ff16158015612a855750600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612a9357612a92613378565b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015612afb57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612b53575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15612ba357612b63848484613515565b612ba2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b999061504e565b60405180910390fd5b5b6000612bb08585856136ac565b905060008184612bc09190614637565b905083600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c0d9190614637565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000821115612ce85781600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ca491906148e0565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b80600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d3391906148e0565b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051612dd39190613ab0565b60405180910390a36001925050509392505050565b612df18161318e565b6000600267ffffffffffffffff811115612e0e57612e0d61506e565b5b604051908082528060200260200182016040528015612e3c5781602001602082028036833780820191505090505b5090503081600081518110612e5457612e536148b1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612ec557612ec46148b1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612f6395949392919061515b565b600060405180830381600087803b158015612f7d57600080fd5b505af1158015612f91573d6000803e3d6000fd5b505050505050565b600260099054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613001573d6000803e3d6000fd5b5050565b601060009054906101000a900460ff1615613055576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161304c90615201565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036130e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130dd9061526d565b60405180910390fd5b6103e860236009600a6130f991906144d2565b6305f5e100613108919061451d565b613112919061451d565b61311c9190614706565b6003819055506103e860236009600a61313591906144d2565b6305f5e100613144919061451d565b61314e919061451d565b6131589190614706565b60048190555060054361316b91906148e0565b6001819055506001601060006101000a81548160ff021916908315150217905550565b80600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015613375577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60405161336c9190613ab0565b60405180910390a35b50565b6001601060016101000a81548160ff021916908315150217905550600061339e306119e1565b905060055481101580156133be5750601060009054906101000a900460ff165b156134f75760065481106133d25760065490505b600060028060079054906101000a900461ffff1661ffff16600260059054906101000a900461ffff1661ffff168461340a919061451d565b6134149190614706565b61341e9190614706565b90506000818361342e9190614637565b90506009600a61343e91906144d2565b8111156134db57600047905061345382612de8565b600081476134619190614637565b90506000600260059054906101000a900461ffff1661ffff1611156134d8576000600260079054906101000a900461ffff1661ffff16600260059054906101000a900461ffff1661ffff16836134b7919061451d565b6134c19190614706565b90506134cc8561318e565b6134d685826126fc565b505b50505b600047905060008111156134f3576134f281612f99565b5b5050505b506000601060016101000a81548160ff021916908315150217905550565b60008060019050601060009054906101000a900460ff1680156135825750600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156135d85750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156136a1576003548311156135f057600090506136a0565b600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613695575060045483600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461369391906148e0565b115b1561369f57600090505b5b5b809150509392505050565b600080601060009054906101000a900460ff1615806137145750600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806137685750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561377657600090506138d0565b600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561384f576064600260009054906101000a900460ff1660ff16846137e8919061451d565b6137f29190614706565b9050600154431061382e576064600260009054906101000a900460ff1660ff168461381d919061451d565b6138279190614706565b905061384a565b606460638461383d919061451d565b6138479190614706565b90505b6138cf565b600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156138ce576064600260019054906101000a900460ff1660ff16846138c1919061451d565b6138cb9190614706565b90505b5b5b809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156139155780820151818401526020810190506138fa565b60008484015250505050565b6000601f19601f8301169050919050565b600061393d826138db565b61394781856138e6565b93506139578185602086016138f7565b61396081613921565b840191505092915050565b600060208201905081810360008301526139858184613932565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006139c282613997565b9050919050565b6139d2816139b7565b81146139dd57600080fd5b50565b6000813590506139ef816139c9565b92915050565b6000819050919050565b613a08816139f5565b8114613a1357600080fd5b50565b600081359050613a25816139ff565b92915050565b60008060408385031215613a4257613a4161398d565b5b6000613a50858286016139e0565b9250506020613a6185828601613a16565b9150509250929050565b60008115159050919050565b613a8081613a6b565b82525050565b6000602082019050613a9b6000830184613a77565b92915050565b613aaa816139f5565b82525050565b6000602082019050613ac56000830184613aa1565b92915050565b613ad481613a6b565b8114613adf57600080fd5b50565b600081359050613af181613acb565b92915050565b600080600060608486031215613b1057613b0f61398d565b5b6000613b1e868287016139e0565b9350506020613b2f86828701613ae2565b9250506040613b4086828701613ae2565b9150509250925092565b600060ff82169050919050565b613b6081613b4a565b82525050565b600061ffff82169050919050565b613b7d81613b66565b82525050565b600060a082019050613b986000830188613b57565b613ba56020830187613b57565b613bb26040830186613b74565b613bbf6060830185613b74565b613bcc6080830184613b57565b9695505050505050565b600080600060608486031215613bef57613bee61398d565b5b6000613bfd868287016139e0565b9350506020613c0e868287016139e0565b9250506040613c1f86828701613a16565b9150509250925092565b613c3281613b4a565b8114613c3d57600080fd5b50565b600081359050613c4f81613c29565b92915050565b60008060408385031215613c6c57613c6b61398d565b5b6000613c7a85828601613c40565b9250506020613c8b85828601613ae2565b9150509250929050565b6000602082019050613caa6000830184613b57565b92915050565b613cb981613b66565b8114613cc457600080fd5b50565b600081359050613cd681613cb0565b92915050565b60008060408385031215613cf357613cf261398d565b5b6000613d0185828601613cc7565b9250506020613d1285828601613cc7565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f840112613d4157613d40613d1c565b5b8235905067ffffffffffffffff811115613d5e57613d5d613d21565b5b602083019150836020820283011115613d7a57613d79613d26565b5b9250929050565b60008083601f840112613d9757613d96613d1c565b5b8235905067ffffffffffffffff811115613db457613db3613d21565b5b602083019150836020820283011115613dd057613dcf613d26565b5b9250929050565b60008060008060408587031215613df157613df061398d565b5b600085013567ffffffffffffffff811115613e0f57613e0e613992565b5b613e1b87828801613d2b565b9450945050602085013567ffffffffffffffff811115613e3e57613e3d613992565b5b613e4a87828801613d81565b925092505092959194509250565b600060208284031215613e6e57613e6d61398d565b5b6000613e7c84828501613a16565b91505092915050565b6000608082019050613e9a6000830187613aa1565b613ea76020830186613aa1565b613eb46040830185613aa1565b613ec16060830184613aa1565b95945050505050565b600060208284031215613ee057613edf61398d565b5b6000613eee848285016139e0565b91505092915050565b60008060408385031215613f0e57613f0d61398d565b5b6000613f1c858286016139e0565b9250506020613f2d858286016139e0565b9150509250929050565b6000604082019050613f4c6000830185613a77565b613f596020830184613a77565b9392505050565b613f69816139b7565b82525050565b6000608082019050613f846000830187613f60565b613f916020830186613f60565b613f9e6040830185613f60565b613fab6060830184613f60565b95945050505050565b600060208284031215613fca57613fc961398d565b5b6000613fd884828501613c40565b91505092915050565b600063ffffffff82169050919050565b613ffa81613fe1565b811461400557600080fd5b50565b60008135905061401781613ff1565b92915050565b600080600080608085870312156140375761403661398d565b5b600061404587828801614008565b945050602061405687828801614008565b935050604061406787828801614008565b925050606061407887828801614008565b91505092959194509250565b600061408f82613997565b9050919050565b61409f81614084565b81146140aa57600080fd5b50565b6000813590506140bc81614096565b92915050565b6000602082840312156140d8576140d761398d565b5b60006140e6848285016140ad565b91505092915050565b600080604083850312156141065761410561398d565b5b600061411485828601613c40565b925050602061412585828601613c40565b9150509250929050565b7f4f6e6c7920636f6e7472616374205f6f776e65722063616e2063616c6c20746860008201527f69732066756e6374696f6e000000000000000000000000000000000000000000602082015250565b600061418b602b836138e6565b91506141968261412f565b604082019050919050565b600060208201905081810360008301526141ba8161417e565b9050919050565b7f4c50206578697374730000000000000000000000000000000000000000000000600082015250565b60006141f76009836138e6565b9150614202826141c1565b602082019050919050565b60006020820190508181036000830152614226816141ea565b9050919050565b7f4e6f2045544820696e20636f6e74726163740000000000000000000000000000600082015250565b60006142636012836138e6565b915061426e8261422d565b602082019050919050565b6000602082019050818103600083015261429281614256565b9050919050565b7f4e6f20746f6b656e7320696e20636f6e74726163740000000000000000000000600082015250565b60006142cf6015836138e6565b91506142da82614299565b602082019050919050565b600060208201905081810360008301526142fe816142c2565b9050919050565b600081519050614314816139c9565b92915050565b6000602082840312156143305761432f61398d565b5b600061433e84828501614305565b91505092915050565b600060408201905061435c6000830185613f60565b6143696020830184613f60565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156143f6578086048111156143d2576143d1614370565b5b60018516156143e15780820291505b80810290506143ef8561439f565b94506143b6565b94509492505050565b60008261440f57600190506144cb565b8161441d57600090506144cb565b8160018114614433576002811461443d5761446c565b60019150506144cb565b60ff84111561444f5761444e614370565b5b8360020a91508482111561446657614465614370565b5b506144cb565b5060208310610133831016604e8410600b84101617156144a15782820a90508381111561449c5761449b614370565b5b6144cb565b6144ae84848460016143ac565b925090508184048111156144c5576144c4614370565b5b81810290505b9392505050565b60006144dd826139f5565b91506144e883613b4a565b92506145157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846143ff565b905092915050565b6000614528826139f5565b9150614533836139f5565b9250828202614541816139f5565b9150828204841483151761455857614557614370565b5b5092915050565b7f43616e6e6f74206578656d7074204c5000000000000000000000000000000000600082015250565b60006145956010836138e6565b91506145a08261455f565b602082019050919050565b600060208201905081810360008301526145c481614588565b9050919050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b60006146016010836138e6565b915061460c826145cb565b602082019050919050565b60006020820190508181036000830152614630816145f4565b9050919050565b6000614642826139f5565b915061464d836139f5565b925082820390508181111561466557614664614370565b5b92915050565b7f43616e6e6f742073776170206d6f7265207468616e2031303025000000000000600082015250565b60006146a1601a836138e6565b91506146ac8261466b565b602082019050919050565b600060208201905081810360008301526146d081614694565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614711826139f5565b915061471c836139f5565b92508261472c5761472b6146d7565b5b828204905092915050565b600061474282613b66565b915061474d83613b66565b9250828201905061ffff81111561476757614766614370565b5b92915050565b7f426f74682063616e6e6f74206265203000000000000000000000000000000000600082015250565b60006147a36010836138e6565b91506147ae8261476d565b602082019050919050565b600060208201905081810360008301526147d281614796565b9050919050565b7f57616c6c657420636f756e74206f766572203235302028676173207269736b29600082015250565b600061480f6020836138e6565b915061481a826147d9565b602082019050919050565b6000602082019050818103600083015261483e81614802565b9050919050565b7f496e707574206c656e677468206d69736d617463680000000000000000000000600082015250565b600061487b6015836138e6565b915061488682614845565b602082019050919050565b600060208201905081810360008301526148aa8161486e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006148eb826139f5565b91506148f6836139f5565b925082820190508082111561490e5761490d614370565b5b92915050565b600061491f826139f5565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361495157614950614370565b5b600182019050919050565b7f546f6b656e2062616c616e6365206c6f776572207468616e2061697264726f7060008201527f20746f74616c0000000000000000000000000000000000000000000000000000602082015250565b60006149b86026836138e6565b91506149c38261495c565b604082019050919050565b600060208201905081810360008301526149e7816149ab565b9050919050565b6000604082019050614a036000830185613aa1565b614a106020830184613aa1565b9392505050565b7f546f6b656e2062616c616e636520746f6f206c6f770000000000000000000000600082015250565b6000614a4d6015836138e6565b9150614a5882614a17565b602082019050919050565b60006020820190508181036000830152614a7c81614a40565b9050919050565b7f4c502063616e6e6f74206265207461782077616c6c6574000000000000000000600082015250565b6000614ab96017836138e6565b9150614ac482614a83565b602082019050919050565b60006020820190508181036000830152614ae881614aac565b9050919050565b7f7478206c696d697420746f6f206c6f7700000000000000000000000000000000600082015250565b6000614b256010836138e6565b9150614b3082614aef565b602082019050919050565b60006020820190508181036000830152614b5481614b18565b9050919050565b7f77616c6c6574206c696d697420746f6f206c6f77000000000000000000000000600082015250565b6000614b916014836138e6565b9150614b9c82614b5b565b602082019050919050565b60006020820190508181036000830152614bc081614b84565b9050919050565b7f4e65772068617264636170206d757374206265206c6f77657200000000000000600082015250565b6000614bfd6019836138e6565b9150614c0882614bc7565b602082019050919050565b60006020820190508181036000830152614c2c81614bf0565b9050919050565b7f4d696e4d6178206572726f720000000000000000000000000000000000000000600082015250565b6000614c69600c836138e6565b9150614c7482614c33565b602082019050919050565b60006020820190508181036000830152614c9881614c5c565b9050919050565b7f5570706572207468726573686f6c6420746f6f206c6f77000000000000000000600082015250565b6000614cd56017836138e6565b9150614ce082614c9f565b602082019050919050565b60006020820190508181036000830152614d0481614cc8565b9050919050565b7f5570706572207468726573686f6c6420746f6f20686967680000000000000000600082015250565b6000614d416018836138e6565b9150614d4c82614d0b565b602082019050919050565b60006020820190508181036000830152614d7081614d34565b9050919050565b6000819050919050565b6000614d9c614d97614d9284613997565b614d77565b613997565b9050919050565b6000614dae82614d81565b9050919050565b6000614dc082614da3565b9050919050565b614dd081614db5565b82525050565b6000602082019050614deb6000830184614dc7565b92915050565b6000614dfc82613b4a565b9150614e0783613b4a565b9250828201905060ff811115614e2057614e1f614370565b5b92915050565b7f526f756e647472697020746f6f20686967680000000000000000000000000000600082015250565b6000614e5c6012836138e6565b9150614e6782614e26565b602082019050919050565b60006020820190508181036000830152614e8b81614e4f565b9050919050565b6000819050919050565b6000614eb7614eb2614ead84614e92565b614d77565b6139f5565b9050919050565b614ec781614e9c565b82525050565b600060c082019050614ee26000830189613f60565b614eef6020830188613aa1565b614efc6040830187614ebe565b614f096060830186614ebe565b614f166080830185613f60565b614f2360a0830184613aa1565b979650505050505050565b600081519050614f3d816139ff565b92915050565b600080600060608486031215614f5c57614f5b61398d565b5b6000614f6a86828701614f2e565b9350506020614f7b86828701614f2e565b9250506040614f8c86828701614f2e565b9150509250925092565b7f4e6f207472616e73666572732066726f6d205a65726f2077616c6c6574000000600082015250565b6000614fcc601d836138e6565b9150614fd782614f96565b602082019050919050565b60006020820190508181036000830152614ffb81614fbf565b9050919050565b7f54582065786365656473206c696d697473000000000000000000000000000000600082015250565b60006150386011836138e6565b915061504382615002565b602082019050919050565b600060208201905081810360008301526150678161502b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6150d2816139b7565b82525050565b60006150e483836150c9565b60208301905092915050565b6000602082019050919050565b60006151088261509d565b61511281856150a8565b935061511d836150b9565b8060005b8381101561514e57815161513588826150d8565b9750615140836150f0565b925050600181019050615121565b5085935050505092915050565b600060a0820190506151706000830188613aa1565b61517d6020830187614ebe565b818103604083015261518f81866150fd565b905061519e6060830185613f60565b6151ab6080830184613aa1565b9695505050505050565b7f74726164696e6720616c7265616479206f70656e000000000000000000000000600082015250565b60006151eb6014836138e6565b91506151f6826151b5565b602082019050919050565b6000602082019050818103600083015261521a816151de565b9050919050565b7f4c50206e6f7420696e697469616c697a65640000000000000000000000000000600082015250565b60006152576012836138e6565b915061526282615221565b602082019050919050565b600060208201905081810360008301526152868161524a565b905091905056fea2646970667358221220fd8ba1b02f96b24c7f4c8b4443a0e290bcc6bc3fb76ef5841c3e5714c06a398764736f6c63430008110033
Deployed Bytecode
0x6080604052600436106101855760003560e01c806370a08231116100d1578063b14218031161008a578063dd62ed3e11610064578063dd62ed3e14610570578063e4dbc45b146105ad578063f2fde38b146105d6578063fd965024146105ff5761018c565b8063b142180314610507578063be826da714610530578063c9567bf9146105595761018c565b806370a08231146103cd578063740bf4971461040a578063931b68ea1461043357806395d89b4114610471578063a39fac121461049c578063a9059cbb146104ca5761018c565b806323b872dd1161013e578063587469c111610118578063587469c114610324578063672434821461034d5780636d1b229d146103765780636f013db91461039f5761018c565b806323b872dd146102935780632fb528ba146102d0578063313ce567146102f95761018c565b80630210a83d1461019157806306fdde03146101a8578063095ea7b3146101d357806318160ddd1461021057806318839bc31461023b57806322a62e1e146102645761018c565b3661018c57005b600080fd5b34801561019d57600080fd5b506101a6610628565b005b3480156101b457600080fd5b506101bd610b48565b6040516101ca919061396b565b60405180910390f35b3480156101df57600080fd5b506101fa60048036038101906101f59190613a2b565b610b85565b6040516102079190613a86565b60405180910390f35b34801561021c57600080fd5b50610225610c77565b6040516102329190613ab0565b60405180910390f35b34801561024757600080fd5b50610262600480360381019061025d9190613af7565b610c9b565b005b34801561027057600080fd5b50610279610e78565b60405161028a959493929190613b83565b60405180910390f35b34801561029f57600080fd5b506102ba60048036038101906102b59190613bd6565b610ee1565b6040516102c79190613a86565b60405180910390f35b3480156102dc57600080fd5b506102f760048036038101906102f29190613c55565b6110eb565b005b34801561030557600080fd5b5061030e611261565b60405161031b9190613c95565b60405180910390f35b34801561033057600080fd5b5061034b60048036038101906103469190613cdc565b61126a565b005b34801561035957600080fd5b50610374600480360381019061036f9190613dd7565b6113ab565b005b34801561038257600080fd5b5061039d60048036038101906103989190613e58565b611803565b005b3480156103ab57600080fd5b506103b46119c1565b6040516103c49493929190613e85565b60405180910390f35b3480156103d957600080fd5b506103f460048036038101906103ef9190613eca565b6119e1565b6040516104019190613ab0565b60405180910390f35b34801561041657600080fd5b50610431600480360381019061042c9190613ef7565b611a2a565b005b34801561043f57600080fd5b5061045a60048036038101906104559190613eca565b611cd1565b604051610468929190613f37565b60405180910390f35b34801561047d57600080fd5b50610486611d77565b604051610493919061396b565b60405180910390f35b3480156104a857600080fd5b506104b1611db4565b6040516104c19493929190613f6f565b60405180910390f35b3480156104d657600080fd5b506104f160048036038101906104ec9190613a2b565b611e52565b6040516104fe9190613a86565b60405180910390f35b34801561051357600080fd5b5061052e60048036038101906105299190613cdc565b611eaf565b005b34801561053c57600080fd5b5061055760048036038101906105529190613fb4565b61206d565b005b34801561056557600080fd5b5061056e61216d565b005b34801561057c57600080fd5b5061059760048036038101906105929190613ef7565b612205565b6040516105a49190613ab0565b60405180910390f35b3480156105b957600080fd5b506105d460048036038101906105cf919061401d565b61228c565b005b3480156105e257600080fd5b506105fd60048036038101906105f891906140c2565b6124cb565b005b34801561060b57600080fd5b50610626600480360381019061062191906140ef565b6125d3565b005b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ad906141a1565b60405180910390fd5b6001601060016101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610762576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107599061420d565b60405180910390fd5b600047116107a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079c90614279565b60405180910390fd5b6000600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411610827576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081e906142e5565b60405180910390fd5b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610894573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b8919061431a565b600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610965573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610989919061431a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b81526004016109e5929190614347565b6020604051808303816000875af1158015610a04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a28919061431a565b600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610ab1600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054476126fc565b6001600f6000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000601060016101000a81548160ff021916908315150217905550565b60606040518060400160405280600681526020017f4b796f6b61690000000000000000000000000000000000000000000000000000815250905090565b600081600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610c659190613ab0565b60405180910390a36001905092915050565b60006009600a610c8791906144d2565b6305f5e100610c96919061451d565b905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d20906141a1565b60405180910390fd5b8080610d325750815b15610dc557600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610dc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dbb906145ab565b60405180910390fd5b5b81600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b6000806000806000600260009054906101000a900460ff16600260019054906101000a900460ff16600260039054906101000a900461ffff16600260059054906101000a900461ffff1660028054906101000a900460ff16945094509450945094509091929394565b6000610eec846127de565b610f2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2290614617565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146110d75781600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110569190614637565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6110e28484846128b9565b90509392505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611179576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611170906141a1565b60405180910390fd5b6001601060016101000a81548160ff02191690831515021790555060648260ff1611156111db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d2906146b7565b60405180910390fd5b600060648360ff166111ec306119e1565b6111f6919061451d565b6112009190614706565b90506009600a61121091906144d2565b8111156112215761122081612de8565b5b8115611241576000479050600081111561123f5761123e81612f99565b5b505b506000601060016101000a81548160ff0219169083151502179055505050565b60006009905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ef906141a1565b60405180910390fd5b600081836113069190614737565b905060008161ffff161161134f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611346906147b9565b60405180910390fd5b82600260056101000a81548161ffff021916908361ffff16021790555081600260036101000a81548161ffff021916908361ffff16021790555080600260076101000a81548161ffff021916908361ffff160217905550505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611439576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611430906141a1565b60405180910390fd5b60fa848490501115611480576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147790614825565b60405180910390fd5b8181905084849050146114c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bf90614891565b60405180910390fd5b6000805b85859050811015611529576009600a6114e591906144d2565b8484838181106114f8576114f76148b1565b5b90506020020135611509919061451d565b8261151491906148e0565b9150808061152190614914565b9150506114cc565b5080600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156115ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a3906149ce565b60405180910390fd5b60005b858590508110156117bf576009600a6115c891906144d2565b8484838181106115db576115da6148b1565b5b905060200201356115ec919061451d565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461163a9190614637565b925050819055506009600a61164f91906144d2565b848483818110611662576116616148b1565b5b90506020020135611673919061451d565b6007600088888581811061168a576116896148b1565b5b905060200201602081019061169f9190613eca565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546116e891906148e0565b92505081905550858582818110611702576117016148b1565b5b90506020020160208101906117179190613eca565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a61177391906144d2565b878786818110611786576117856148b1565b5b90506020020135611797919061451d565b6040516117a49190613ab0565b60405180910390a380806117b790614914565b9150506115af565b507f71cc7095cc35ed4701c217a8efb440732eb0737da67f6548c008ac26fba9546485859050826040516117f49291906149ee565b60405180910390a15050505050565b600061180e336119e1565b905080821115611853576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184a90614a63565b60405180910390fd5b60008211156119bd5781600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546118ab9190614637565b9250508190555081600760008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461190191906148e0565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516119669190613ab0565b60405180910390a33373ffffffffffffffffffffffffffffffffffffffff167ffd38818f5291bf0bb3a2a48aadc06ba8757865d1dabd804585338aab3009dcb6836040516119b49190613ab0565b60405180910390a25b5050565b600080600080600354600454600554600654935093509350935090919293565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ab8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aaf906141a1565b60405180910390fd5b600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611b5c5750600f60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611b9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9290614acf565b60405180910390fd5b81600260096101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600080600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1691509150915091565b60606040518060400160405280600681526020017f4b594f4b41490000000000000000000000000000000000000000000000000000815250905090565b60008060008060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260099054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16935093509350935090919293565b6000611e5d336127de565b611e9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9390614617565b60405180910390fd5b611ea73384846128b9565b905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611f3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f34906141a1565b60405180910390fd5b600060016103e88461ffff166009600a611f5791906144d2565b6305f5e100611f66919061451d565b611f70919061451d565b611f7a9190614706565b611f8491906148e0565b9050600354811015611fcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc290614b3b565b60405180910390fd5b80600381905550600060016103e88461ffff166009600a611fec91906144d2565b6305f5e100611ffb919061451d565b612005919061451d565b61200f9190614706565b61201991906148e0565b9050600454811015612060576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205790614ba7565b60405180910390fd5b8060048190555050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146120fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f2906141a1565b60405180910390fd5b60028054906101000a900460ff1660ff168160ff1610612150576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214790614c13565b60405180910390fd5b806002806101000a81548160ff021916908360ff16021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146121fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f2906141a1565b60405180910390fd5b612203613005565b565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461231a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612311906141a1565b60405180910390fd5b8263ffffffff168463ffffffff166009600a61233691906144d2565b6305f5e100612345919061451d565b61234f919061451d565b6123599190614706565b6005819055508063ffffffff168263ffffffff166009600a61237b91906144d2565b6305f5e10061238a919061451d565b612394919061451d565b61239e9190614706565b60068190555060055460065410156123eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e290614c7f565b60405180910390fd5b620186a06009600a6123fd91906144d2565b6305f5e10061240c919061451d565b6124169190614706565b60065411612459576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245090614ceb565b60405180910390fd5b60646009600a61246991906144d2565b6305f5e100612478919061451d565b6124829190614706565b600654106124c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124bc90614d57565b60405180910390fd5b50505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612559576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612550906141a1565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516125c89190614dd6565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612661576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612658906141a1565b60405180910390fd5b60028054906101000a900460ff1660ff16818361267e9190614df1565b60ff1611156126c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b990614e72565b60405180910390fd5b81600260006101000a81548160ff021916908360ff16021790555080600260016101000a81548160ff021916908360ff1602179055505050565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061272c8361318e565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71983308660008087426040518863ffffffff1660e01b815260040161279396959493929190614ecd565b60606040518083038185885af11580156127b1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906127d69190614f43565b505050505050565b60008060009050601060009054906101000a900460ff161561280357600190506128b0565b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156128a55750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156128af57600190505b5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612929576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292090614fe2565b60405180910390fd5b601060009054906101000a900460ff16612a1f57600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156129df5750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612a1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1590614617565b60405180910390fd5b5b601060019054906101000a900460ff16158015612a855750600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612a9357612a92613378565b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015612afb57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612b53575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15612ba357612b63848484613515565b612ba2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b999061504e565b60405180910390fd5b5b6000612bb08585856136ac565b905060008184612bc09190614637565b905083600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c0d9190614637565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000821115612ce85781600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ca491906148e0565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b80600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d3391906148e0565b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051612dd39190613ab0565b60405180910390a36001925050509392505050565b612df18161318e565b6000600267ffffffffffffffff811115612e0e57612e0d61506e565b5b604051908082528060200260200182016040528015612e3c5781602001602082028036833780820191505090505b5090503081600081518110612e5457612e536148b1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612ec557612ec46148b1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612f6395949392919061515b565b600060405180830381600087803b158015612f7d57600080fd5b505af1158015612f91573d6000803e3d6000fd5b505050505050565b600260099054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613001573d6000803e3d6000fd5b5050565b601060009054906101000a900460ff1615613055576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161304c90615201565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036130e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130dd9061526d565b60405180910390fd5b6103e860236009600a6130f991906144d2565b6305f5e100613108919061451d565b613112919061451d565b61311c9190614706565b6003819055506103e860236009600a61313591906144d2565b6305f5e100613144919061451d565b61314e919061451d565b6131589190614706565b60048190555060054361316b91906148e0565b6001819055506001601060006101000a81548160ff021916908315150217905550565b80600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015613375577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60405161336c9190613ab0565b60405180910390a35b50565b6001601060016101000a81548160ff021916908315150217905550600061339e306119e1565b905060055481101580156133be5750601060009054906101000a900460ff165b156134f75760065481106133d25760065490505b600060028060079054906101000a900461ffff1661ffff16600260059054906101000a900461ffff1661ffff168461340a919061451d565b6134149190614706565b61341e9190614706565b90506000818361342e9190614637565b90506009600a61343e91906144d2565b8111156134db57600047905061345382612de8565b600081476134619190614637565b90506000600260059054906101000a900461ffff1661ffff1611156134d8576000600260079054906101000a900461ffff1661ffff16600260059054906101000a900461ffff1661ffff16836134b7919061451d565b6134c19190614706565b90506134cc8561318e565b6134d685826126fc565b505b50505b600047905060008111156134f3576134f281612f99565b5b5050505b506000601060016101000a81548160ff021916908315150217905550565b60008060019050601060009054906101000a900460ff1680156135825750600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156135d85750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156136a1576003548311156135f057600090506136a0565b600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613695575060045483600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461369391906148e0565b115b1561369f57600090505b5b5b809150509392505050565b600080601060009054906101000a900460ff1615806137145750600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806137685750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561377657600090506138d0565b600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561384f576064600260009054906101000a900460ff1660ff16846137e8919061451d565b6137f29190614706565b9050600154431061382e576064600260009054906101000a900460ff1660ff168461381d919061451d565b6138279190614706565b905061384a565b606460638461383d919061451d565b6138479190614706565b90505b6138cf565b600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156138ce576064600260019054906101000a900460ff1660ff16846138c1919061451d565b6138cb9190614706565b90505b5b5b809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156139155780820151818401526020810190506138fa565b60008484015250505050565b6000601f19601f8301169050919050565b600061393d826138db565b61394781856138e6565b93506139578185602086016138f7565b61396081613921565b840191505092915050565b600060208201905081810360008301526139858184613932565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006139c282613997565b9050919050565b6139d2816139b7565b81146139dd57600080fd5b50565b6000813590506139ef816139c9565b92915050565b6000819050919050565b613a08816139f5565b8114613a1357600080fd5b50565b600081359050613a25816139ff565b92915050565b60008060408385031215613a4257613a4161398d565b5b6000613a50858286016139e0565b9250506020613a6185828601613a16565b9150509250929050565b60008115159050919050565b613a8081613a6b565b82525050565b6000602082019050613a9b6000830184613a77565b92915050565b613aaa816139f5565b82525050565b6000602082019050613ac56000830184613aa1565b92915050565b613ad481613a6b565b8114613adf57600080fd5b50565b600081359050613af181613acb565b92915050565b600080600060608486031215613b1057613b0f61398d565b5b6000613b1e868287016139e0565b9350506020613b2f86828701613ae2565b9250506040613b4086828701613ae2565b9150509250925092565b600060ff82169050919050565b613b6081613b4a565b82525050565b600061ffff82169050919050565b613b7d81613b66565b82525050565b600060a082019050613b986000830188613b57565b613ba56020830187613b57565b613bb26040830186613b74565b613bbf6060830185613b74565b613bcc6080830184613b57565b9695505050505050565b600080600060608486031215613bef57613bee61398d565b5b6000613bfd868287016139e0565b9350506020613c0e868287016139e0565b9250506040613c1f86828701613a16565b9150509250925092565b613c3281613b4a565b8114613c3d57600080fd5b50565b600081359050613c4f81613c29565b92915050565b60008060408385031215613c6c57613c6b61398d565b5b6000613c7a85828601613c40565b9250506020613c8b85828601613ae2565b9150509250929050565b6000602082019050613caa6000830184613b57565b92915050565b613cb981613b66565b8114613cc457600080fd5b50565b600081359050613cd681613cb0565b92915050565b60008060408385031215613cf357613cf261398d565b5b6000613d0185828601613cc7565b9250506020613d1285828601613cc7565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f840112613d4157613d40613d1c565b5b8235905067ffffffffffffffff811115613d5e57613d5d613d21565b5b602083019150836020820283011115613d7a57613d79613d26565b5b9250929050565b60008083601f840112613d9757613d96613d1c565b5b8235905067ffffffffffffffff811115613db457613db3613d21565b5b602083019150836020820283011115613dd057613dcf613d26565b5b9250929050565b60008060008060408587031215613df157613df061398d565b5b600085013567ffffffffffffffff811115613e0f57613e0e613992565b5b613e1b87828801613d2b565b9450945050602085013567ffffffffffffffff811115613e3e57613e3d613992565b5b613e4a87828801613d81565b925092505092959194509250565b600060208284031215613e6e57613e6d61398d565b5b6000613e7c84828501613a16565b91505092915050565b6000608082019050613e9a6000830187613aa1565b613ea76020830186613aa1565b613eb46040830185613aa1565b613ec16060830184613aa1565b95945050505050565b600060208284031215613ee057613edf61398d565b5b6000613eee848285016139e0565b91505092915050565b60008060408385031215613f0e57613f0d61398d565b5b6000613f1c858286016139e0565b9250506020613f2d858286016139e0565b9150509250929050565b6000604082019050613f4c6000830185613a77565b613f596020830184613a77565b9392505050565b613f69816139b7565b82525050565b6000608082019050613f846000830187613f60565b613f916020830186613f60565b613f9e6040830185613f60565b613fab6060830184613f60565b95945050505050565b600060208284031215613fca57613fc961398d565b5b6000613fd884828501613c40565b91505092915050565b600063ffffffff82169050919050565b613ffa81613fe1565b811461400557600080fd5b50565b60008135905061401781613ff1565b92915050565b600080600080608085870312156140375761403661398d565b5b600061404587828801614008565b945050602061405687828801614008565b935050604061406787828801614008565b925050606061407887828801614008565b91505092959194509250565b600061408f82613997565b9050919050565b61409f81614084565b81146140aa57600080fd5b50565b6000813590506140bc81614096565b92915050565b6000602082840312156140d8576140d761398d565b5b60006140e6848285016140ad565b91505092915050565b600080604083850312156141065761410561398d565b5b600061411485828601613c40565b925050602061412585828601613c40565b9150509250929050565b7f4f6e6c7920636f6e7472616374205f6f776e65722063616e2063616c6c20746860008201527f69732066756e6374696f6e000000000000000000000000000000000000000000602082015250565b600061418b602b836138e6565b91506141968261412f565b604082019050919050565b600060208201905081810360008301526141ba8161417e565b9050919050565b7f4c50206578697374730000000000000000000000000000000000000000000000600082015250565b60006141f76009836138e6565b9150614202826141c1565b602082019050919050565b60006020820190508181036000830152614226816141ea565b9050919050565b7f4e6f2045544820696e20636f6e74726163740000000000000000000000000000600082015250565b60006142636012836138e6565b915061426e8261422d565b602082019050919050565b6000602082019050818103600083015261429281614256565b9050919050565b7f4e6f20746f6b656e7320696e20636f6e74726163740000000000000000000000600082015250565b60006142cf6015836138e6565b91506142da82614299565b602082019050919050565b600060208201905081810360008301526142fe816142c2565b9050919050565b600081519050614314816139c9565b92915050565b6000602082840312156143305761432f61398d565b5b600061433e84828501614305565b91505092915050565b600060408201905061435c6000830185613f60565b6143696020830184613f60565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156143f6578086048111156143d2576143d1614370565b5b60018516156143e15780820291505b80810290506143ef8561439f565b94506143b6565b94509492505050565b60008261440f57600190506144cb565b8161441d57600090506144cb565b8160018114614433576002811461443d5761446c565b60019150506144cb565b60ff84111561444f5761444e614370565b5b8360020a91508482111561446657614465614370565b5b506144cb565b5060208310610133831016604e8410600b84101617156144a15782820a90508381111561449c5761449b614370565b5b6144cb565b6144ae84848460016143ac565b925090508184048111156144c5576144c4614370565b5b81810290505b9392505050565b60006144dd826139f5565b91506144e883613b4a565b92506145157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846143ff565b905092915050565b6000614528826139f5565b9150614533836139f5565b9250828202614541816139f5565b9150828204841483151761455857614557614370565b5b5092915050565b7f43616e6e6f74206578656d7074204c5000000000000000000000000000000000600082015250565b60006145956010836138e6565b91506145a08261455f565b602082019050919050565b600060208201905081810360008301526145c481614588565b9050919050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b60006146016010836138e6565b915061460c826145cb565b602082019050919050565b60006020820190508181036000830152614630816145f4565b9050919050565b6000614642826139f5565b915061464d836139f5565b925082820390508181111561466557614664614370565b5b92915050565b7f43616e6e6f742073776170206d6f7265207468616e2031303025000000000000600082015250565b60006146a1601a836138e6565b91506146ac8261466b565b602082019050919050565b600060208201905081810360008301526146d081614694565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614711826139f5565b915061471c836139f5565b92508261472c5761472b6146d7565b5b828204905092915050565b600061474282613b66565b915061474d83613b66565b9250828201905061ffff81111561476757614766614370565b5b92915050565b7f426f74682063616e6e6f74206265203000000000000000000000000000000000600082015250565b60006147a36010836138e6565b91506147ae8261476d565b602082019050919050565b600060208201905081810360008301526147d281614796565b9050919050565b7f57616c6c657420636f756e74206f766572203235302028676173207269736b29600082015250565b600061480f6020836138e6565b915061481a826147d9565b602082019050919050565b6000602082019050818103600083015261483e81614802565b9050919050565b7f496e707574206c656e677468206d69736d617463680000000000000000000000600082015250565b600061487b6015836138e6565b915061488682614845565b602082019050919050565b600060208201905081810360008301526148aa8161486e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006148eb826139f5565b91506148f6836139f5565b925082820190508082111561490e5761490d614370565b5b92915050565b600061491f826139f5565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361495157614950614370565b5b600182019050919050565b7f546f6b656e2062616c616e6365206c6f776572207468616e2061697264726f7060008201527f20746f74616c0000000000000000000000000000000000000000000000000000602082015250565b60006149b86026836138e6565b91506149c38261495c565b604082019050919050565b600060208201905081810360008301526149e7816149ab565b9050919050565b6000604082019050614a036000830185613aa1565b614a106020830184613aa1565b9392505050565b7f546f6b656e2062616c616e636520746f6f206c6f770000000000000000000000600082015250565b6000614a4d6015836138e6565b9150614a5882614a17565b602082019050919050565b60006020820190508181036000830152614a7c81614a40565b9050919050565b7f4c502063616e6e6f74206265207461782077616c6c6574000000000000000000600082015250565b6000614ab96017836138e6565b9150614ac482614a83565b602082019050919050565b60006020820190508181036000830152614ae881614aac565b9050919050565b7f7478206c696d697420746f6f206c6f7700000000000000000000000000000000600082015250565b6000614b256010836138e6565b9150614b3082614aef565b602082019050919050565b60006020820190508181036000830152614b5481614b18565b9050919050565b7f77616c6c6574206c696d697420746f6f206c6f77000000000000000000000000600082015250565b6000614b916014836138e6565b9150614b9c82614b5b565b602082019050919050565b60006020820190508181036000830152614bc081614b84565b9050919050565b7f4e65772068617264636170206d757374206265206c6f77657200000000000000600082015250565b6000614bfd6019836138e6565b9150614c0882614bc7565b602082019050919050565b60006020820190508181036000830152614c2c81614bf0565b9050919050565b7f4d696e4d6178206572726f720000000000000000000000000000000000000000600082015250565b6000614c69600c836138e6565b9150614c7482614c33565b602082019050919050565b60006020820190508181036000830152614c9881614c5c565b9050919050565b7f5570706572207468726573686f6c6420746f6f206c6f77000000000000000000600082015250565b6000614cd56017836138e6565b9150614ce082614c9f565b602082019050919050565b60006020820190508181036000830152614d0481614cc8565b9050919050565b7f5570706572207468726573686f6c6420746f6f20686967680000000000000000600082015250565b6000614d416018836138e6565b9150614d4c82614d0b565b602082019050919050565b60006020820190508181036000830152614d7081614d34565b9050919050565b6000819050919050565b6000614d9c614d97614d9284613997565b614d77565b613997565b9050919050565b6000614dae82614d81565b9050919050565b6000614dc082614da3565b9050919050565b614dd081614db5565b82525050565b6000602082019050614deb6000830184614dc7565b92915050565b6000614dfc82613b4a565b9150614e0783613b4a565b9250828201905060ff811115614e2057614e1f614370565b5b92915050565b7f526f756e647472697020746f6f20686967680000000000000000000000000000600082015250565b6000614e5c6012836138e6565b9150614e6782614e26565b602082019050919050565b60006020820190508181036000830152614e8b81614e4f565b9050919050565b6000819050919050565b6000614eb7614eb2614ead84614e92565b614d77565b6139f5565b9050919050565b614ec781614e9c565b82525050565b600060c082019050614ee26000830189613f60565b614eef6020830188613aa1565b614efc6040830187614ebe565b614f096060830186614ebe565b614f166080830185613f60565b614f2360a0830184613aa1565b979650505050505050565b600081519050614f3d816139ff565b92915050565b600080600060608486031215614f5c57614f5b61398d565b5b6000614f6a86828701614f2e565b9350506020614f7b86828701614f2e565b9250506040614f8c86828701614f2e565b9150509250925092565b7f4e6f207472616e73666572732066726f6d205a65726f2077616c6c6574000000600082015250565b6000614fcc601d836138e6565b9150614fd782614f96565b602082019050919050565b60006020820190508181036000830152614ffb81614fbf565b9050919050565b7f54582065786365656473206c696d697473000000000000000000000000000000600082015250565b60006150386011836138e6565b915061504382615002565b602082019050919050565b600060208201905081810360008301526150678161502b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6150d2816139b7565b82525050565b60006150e483836150c9565b60208301905092915050565b6000602082019050919050565b60006151088261509d565b61511281856150a8565b935061511d836150b9565b8060005b8381101561514e57815161513588826150d8565b9750615140836150f0565b925050600181019050615121565b5085935050505092915050565b600060a0820190506151706000830188613aa1565b61517d6020830187614ebe565b818103604083015261518f81866150fd565b905061519e6060830185613f60565b6151ab6080830184613aa1565b9695505050505050565b7f74726164696e6720616c7265616479206f70656e000000000000000000000000600082015250565b60006151eb6014836138e6565b91506151f6826151b5565b602082019050919050565b6000602082019050818103600083015261521a816151de565b9050919050565b7f4c50206e6f7420696e697469616c697a65640000000000000000000000000000600082015250565b60006152576012836138e6565b915061526282615221565b602082019050919050565b600060208201905081810360008301526152868161524a565b905091905056fea2646970667358221220fd8ba1b02f96b24c7f4c8b4443a0e290bcc6bc3fb76ef5841c3e5714c06a398764736f6c63430008110033
Deployed Bytecode Sourcemap
1924:13581:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6128:478;;;;;;;;;;;;;:::i;:::-;;4651:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4980:195;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4390:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9584:233;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9822:238;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;5395:368;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13745:485;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4481:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10482:311;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14606:896;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14237:364;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11301:199;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;4734:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10985:311;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9436:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;4564:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10798:184;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;5180:210;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11503:430;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10279:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5768:66;;;;;;;;;;;;;:::i;:::-;;4842:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11936:432;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1111:131;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10063:213;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6128:478;1048:6;;;;;;;;;;1034:20;;:10;:20;;;1026:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;3515:4:::1;3502:10;;:17;;;;;;;;;;;;;;;;;;6225:1:::2;6203:24;;:10;;;;;;;;;;;:24;;;6195:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;6276:1;6254:21;:23;6246:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;6338:1;6313:9;:24;6331:4;6313:24;;;;;;;;;;;;;;;;:26;6305:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;6383:18;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6376:4;;:32;;;;;;;;;;;;;;;;;;6444:18;;;;;;;;;;;:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6426:58;;;6493:4;6500;;;;;;;;;;;6426:79;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6413:10;;:92;;;;;;;;;;;;;;;;;;6510:62;6524:9;:24;6542:4;6524:24;;;;;;;;;;;;;;;;6550:21;6510:13;:62::i;:::-;6597:4;6577:5;:17;6583:10;;;;;;;;;;;6577:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;3537:5:::1;3524:10;;:18;;;;;;;;;;;;;;;;;;6128:478::o:0;4651:80::-;4699:13;4723:5;;;;;;;;;;;;;;;;;4716:12;;4651:80;:::o;4980:195::-;5055:4;5101:6;5066:11;:23;5078:10;5066:23;;;;;;;;;;;;;;;:32;5090:7;5066:32;;;;;;;;;;;;;;;:41;;;;5138:7;5117:37;;5126:10;5117:37;;;5147:6;5117:37;;;;;;:::i;:::-;;;;;;;;5166:4;5159:11;;4980:195;;;;:::o;4390:88::-;4445:7;2000:1;2060:2;:13;;;;:::i;:::-;2045:11;:29;;;;:::i;:::-;4456:19;;4390:88;:::o;9584:233::-;1048:6;;;;;;;;;;1034:20;;:10;:20;;;1026:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;9679:8:::1;:18;;;;9691:6;9679:18;9675:72;;;9710:5;:13;9716:6;9710:13;;;;;;;;;;;;;;;;;;;;;;;;;9709:14;9701:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;9675:72;9771:6;9751:7;:17;9760:6;9751:17;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;9804:8;9782:9;:19;9793:6;9782:19;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;9584:233:::0;;;:::o;9822:238::-;9867:12;9881:13;9896:22;9920:15;9937:25;9979:11;;;;;;;;;;;9992:12;;;;;;;;;;;10006:19;;;;;;;;;;;10027:12;;;;;;;;;;;10041:13;;;;;;;;;;9970:85;;;;;;;;;;9822:238;;;;;:::o;5395:368::-;5495:4;5514:25;5532:6;5514:17;:25::i;:::-;5506:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;5603:17;5568:11;:19;5580:6;5568:19;;;;;;;;;;;;;;;:31;5588:10;5568:31;;;;;;;;;;;;;;;;:52;5565:142;;5695:6;5661:11;:19;5673:6;5661:19;;;;;;;;;;;;;;;:31;5681:10;5661:31;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;5627:11;:19;5639:6;5627:19;;;;;;;;;;;;;;;:31;5647:10;5627:31;;;;;;;;;;;;;;;:74;;;;5565:142;5718:40;5732:6;5740:9;5751:6;5718:13;:40::i;:::-;5711:47;;5395:368;;;;;:::o;13745:485::-;1048:6;;;;;;;;;;1034:20;;:10;:20;;;1026:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;3515:4:::1;3502:10;;:17;;;;;;;;;;;;;;;;;;13877:3:::2;13857:16;:23;;;;13849:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;13916:20;13985:3;13966:16;13939:43;;:24;13957:4;13939:9;:24::i;:::-;:43;;;;:::i;:::-;:49;;;;:::i;:::-;13916:72;;2000:1;14012:2;:15;;;;:::i;:::-;13997:12;:30;13993:82;;;14035:34;14056:12;14035:20;:34::i;:::-;13993:82;14083:7;14079:147;;;14099:27;14129:21;14099:51;;14181:1;14159:19;:23;14156:65;;;14186:32;14198:19;14186:11;:32::i;:::-;14156:65;14092:134;14079:147;13844:386;3537:5:::1;3524:10;;:18;;;;;;;;;;;;;;;;;;13745:485:::0;;:::o;4481:80::-;4533:5;2000:1;4542:16;;4481:80;:::o;10482:311::-;1048:6;;;;;;;;;;1034:20;;:10;:20;;;1026:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;10579:18:::1;10615:15;10600:12;:30;;;;:::i;:::-;10579:51;;10658:1;10644:11;:15;;;10635:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;10700:12;10685;;:27;;;;;;;;;;;;;;;;;;10739:15;10717:19;;:37;;;;;;;;;;;;;;;;;;10777:11;10759:15;;:29;;;;;;;;;;;;;;;;;;10574:219;10482:311:::0;;:::o;14606:896::-;1048:6;;;;;;;;;;1034:20;;:10;:20;;;1026:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;14744:3:::1;14724:9;;:16;;:23;;14716:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14822:12;;:19;;14802:9;;:16;;:39;14794:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;14879:20;14918:6:::0;14914:116:::1;14932:9;;:16;;14928:1;:20;14914:116;;;2000:1;15004:2;:13;;;;:::i;:::-;14986:12;;14999:1;14986:15;;;;;;;:::i;:::-;;;;;;;;:31;;;;:::i;:::-;14969:49;;;;;:::i;:::-;;;14950:3;;;;;:::i;:::-;;;;14914:116;;;;15073:12;15048:9;:21;15058:10;15048:21;;;;;;;;;;;;;;;;:37;;15040:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;15145:6;15141:288;15159:9;;:16;;15155:1;:20;15141:288;;;2000:1;15240:2;:13;;;;:::i;:::-;15222:12;;15235:1;15222:15;;;;;;;:::i;:::-;;;;;;;;:31;;;;:::i;:::-;15196:9;:21;15206:10;15196:21;;;;;;;;;;;;;;;;:58;;;;;;;:::i;:::-;;;;;;;;2000:1;15315:2;:13;;;;:::i;:::-;15297:12;;15310:1;15297:15;;;;;;;:::i;:::-;;;;;;;;:31;;;;:::i;:::-;15269:9;:23;15279:9;;15289:1;15279:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;15269:23;;;;;;;;;;;;;;;;:60;;;;;;;:::i;:::-;;;;;;;;15361:9;;15371:1;15361:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;15340:70;;15349:10;15340:70;;;2000:1;15394:2;:13;;;;:::i;:::-;15376:12;;15389:1;15376:15;;;;;;;:::i;:::-;;;;;;;;:31;;;;:::i;:::-;15340:70;;;;;;:::i;:::-;;;;;;;;15177:3;;;;;:::i;:::-;;;;15141:288;;;;15446:48;15463:9;;:16;;15481:12;15446:48;;;;;;;:::i;:::-;;;;;;;;14705:797;14606:896:::0;;;;:::o;14237:364::-;14287:24;14314:21;14324:10;14314:9;:21::i;:::-;14287:48;;14358:16;14348:6;:26;;14340:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;14419:1;14410:6;:10;14405:192;;;14454:6;14429:9;:21;14439:10;14429:21;;;;;;;;;;;;;;;;:31;;;;;;;:::i;:::-;;;;;;;;14491:6;14466:9;:21;14484:1;14466:21;;;;;;;;;;;;;;;;:31;;;;;;;:::i;:::-;;;;;;;;14537:1;14508:40;;14517:10;14508:40;;;14541:6;14508:40;;;;;;:::i;:::-;;;;;;;;14572:10;14559:32;;;14584:6;14559:32;;;;;;:::i;:::-;;;;;;;;14405:192;14282:319;14237:364;:::o;11301:199::-;11349:13;11364:17;11383:18;11403;11438:12;;11452:16;;11470:11;;11483;;11429:66;;;;;;;;11301:199;;;;:::o;4734:105::-;4800:7;4818:9;:18;4828:7;4818:18;;;;;;;;;;;;;;;;4811:25;;4734:105;;;:::o;10985:311::-;1048:6;;;;;;;;;;1034:20;;:10;:20;;;1026:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;11083:5:::1;:19;11089:12;11083:19;;;;;;;;;;;;;;;;;;;;;;;;;11082:20;:42;;;;;11107:5;:17;11113:10;11107:17;;;;;;;;;;;;;;;;;;;;;;;;;11106:18;11082:42;11074:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;11184:12;11157:16;;:40;;;;;;;;;;;;;;;;;;11213:10;11202:8;;:21;;;;;;;;;;;;;;;;;;11252:4;11228:7;:21;11236:12;11228:21;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;11287:4;11261:9;:23;11271:12;11261:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;10985:311:::0;;:::o;9436:145::-;9498:11;9511:13;9540:7;:15;9548:6;9540:15;;;;;;;;;;;;;;;;;;;;;;;;;9557:9;:17;9567:6;9557:17;;;;;;;;;;;;;;;;;;;;;;;;;9531:45;;;;9436:145;;;:::o;4564:84::-;4614:13;4638:7;;;;;;;;;;;;;;;;;4631:14;;4564:84;:::o;10798:184::-;10845:13;10860:17;10879;10898:15;10930:6;;;;;;;;;;10938:10;;;;;;;;;;;10950:16;;;;;;;;;;;10968:8;;;;;;;;;;;10921:56;;;;;;;;10798:184;;;;:::o;5180:210::-;5260:4;5279:29;5297:10;5279:17;:29::i;:::-;5271:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;5341:44;5355:10;5367:9;5378:6;5341:13;:44::i;:::-;5334:51;;5180:210;;;;:::o;11503:430::-;1048:6;;;;;;;;;;1034:20;;:10;:20;;;1026:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;11603:16:::1;11662:1;11655:4;11637:15;11622:30;;2000:1;2060:2;:13;;;;:::i;:::-;2045:11;:29;;;;:::i;:::-;11622:30;;;;:::i;:::-;:37;;;;:::i;:::-;:41;;;;:::i;:::-;11603:60;;11688:12;;11676:8;:24;;11668:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;11741:8;11726:12;:23;;;;11754:20;11821:1;11814:4;11792:19;11777:34;;2000:1;2060:2;:13;;;;:::i;:::-;2045:11;:29;;;;:::i;:::-;11777:34;;;;:::i;:::-;:41;;;;:::i;:::-;:45;;;;:::i;:::-;11754:68;;11851:16;;11835:12;:32;;11827:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;11916:12;11897:16;:31;;;;11598:335;;11503:430:::0;;:::o;10279:200::-;1048:6;;;;;;;;;;1034:20;;:10;:20;;;1026:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;10391:13:::1;::::0;::::1;;;;;;;;10369:35;;:19;:35;;;10360:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;10455:19;10439:13;::::0;:35:::1;;;;;;;;;;;;;;;;;;10279:200:::0;:::o;5768:66::-;1048:6;;;;;;;;;;1034:20;;:10;:20;;;1026:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;5815:14:::1;:12;:14::i;:::-;5768:66::o:0;4842:133::-;4926:7;4944:11;:19;4956:6;4944:19;;;;;;;;;;;;;;;:28;4964:7;4944:28;;;;;;;;;;;;;;;;4937:35;;4842:133;;;;:::o;11936:432::-;1048:6;;;;;;;;;;1034:20;;:10;:20;;;1026:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;12098:10:::1;12072:36;;12087:8;12072:23;;2000:1;2060:2;:13;;;;:::i;:::-;2045:11;:29;;;;:::i;:::-;12072:23;;;;:::i;:::-;:36;;;;:::i;:::-;12058:11;:50;;;;12153:10;12127:36;;12142:8;12127:23;;2000:1;2060:2;:13;;;;:::i;:::-;2045:11;:29;;;;:::i;:::-;12127:23;;;;:::i;:::-;:36;;;;:::i;:::-;12113:11;:50;;;;12189:11;;12176;;:24;;12168:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;12257:6;2000:1;2060:2;:13;;;;:::i;:::-;2045:11;:29;;;;:::i;:::-;12242:21;;;;:::i;:::-;12230:11;;:33;12222:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;12331:3;2000:1;2060:2;:13;;;;:::i;:::-;2045:11;:29;;;;:::i;:::-;12316:18;;;;:::i;:::-;12304:11;;:30;12296:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11936:432:::0;;;;:::o;1111:131::-;1048:6;;;;;;;;;;1034:20;;:10;:20;;;1026:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;1194:8:::1;1185:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1209:30;1230:8;1209:30;;;;;;:::i;:::-;;;;;;;;1111:131:::0;:::o;10063:213::-;1048:6;;;;;;;;;;1034:20;;:10;:20;;;1026:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;10177:13:::1;::::0;::::1;;;;;;;;10151:39;;10163:10;10151:9;:22;;;;:::i;:::-;:39;;;;10143:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;10232:9;10218:11;;:23;;;;;;;;;;;;;;;;;;10261:10;10246:12;;:25;;;;;;;;;;;;;;;;;;10063:213:::0;;:::o;6611:289::-;6693:24;6720:8;;;;;;;;;;;6693:35;;6733:28;6748:12;6733:14;:28::i;:::-;6766:18;;;;;;;;;;;:34;;;6808:13;6833:4;6840:12;6854:1;6857;6860:16;6878:15;6766:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;6688:212;6611:289;;:::o;8574:252::-;8639:4;8649:16;8668:5;8649:24;;8683:12;;;;;;;;;;;8678:118;;;8714:4;8700:18;;8678:118;;;8735:7;:15;8743:6;8735:15;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;;;8754:9;:17;8764:6;8754:17;;;;;;;;;;;;;;;;;;;;;;;;;8735:36;8731:65;;;8789:4;8775:18;;8731:65;8678:118;8810:11;8803:18;;;8574:252;;;:::o;7231:883::-;7323:4;7360:1;7342:20;;:6;:20;;;7334:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;7406:12;;;;;;;;;;;7401:89;;7430:7;:15;7438:6;7430:15;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;;;7449:9;:17;7459:6;7449:17;;;;;;;;;;;;;;;;;;;;;;;;;7430:36;7422:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;7401:89;7500:10;;;;;;;;;;;7499:11;:31;;;;;7514:5;:16;7520:9;7514:16;;;;;;;;;;;;;;;;;;;;;;;;;7499:31;7494:64;;;7535:20;:18;:20::i;:::-;7494:64;7589:4;7571:23;;:6;:23;;;;:53;;;;;7619:4;7598:26;;:9;:26;;;;7571:53;:73;;;;;7638:6;;;;;;;;;;7628:16;;:6;:16;;;;7571:73;7566:155;;;7657:39;7670:6;7678:9;7689:6;7657:12;:39::i;:::-;7649:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;7566:155;7725:18;7746:40;7760:6;7768:9;7779:6;7746:13;:40::i;:::-;7725:61;;7791:23;7826:10;7817:6;:19;;;;:::i;:::-;7791:45;;7881:6;7861:9;:17;7871:6;7861:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;7841:9;:17;7851:6;7841:17;;;;;;;;;;;;;;;:46;;;;7910:1;7897:10;:14;7892:91;;;7970:10;7943:9;:24;7961:4;7943:24;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;7916:9;:24;7934:4;7916:24;;;;;;;;;;;;;;;:64;;;;7892:91;8033:15;8010:9;:20;8020:9;8010:20;;;;;;;;;;;;;;;;:38;;;;:::i;:::-;7987:9;:20;7997:9;7987:20;;;;;;;;;;;;;;;:61;;;;8075:9;8058:35;;8067:6;8058:35;;;8086:6;8058:35;;;;;;:::i;:::-;;;;;;;;8105:4;8098:11;;;;7231:883;;;;;:::o;13335:312::-;13399:27;13414:11;13399:14;:27::i;:::-;13431:21;13469:1;13455:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13431:40;;13494:4;13476;13481:1;13476:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;13514:4;;;;;;;;;;;13504;13509:1;13504:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;;;13523:18;;;;;;;;;;;:69;;;13593:11;13605:1;13607:4;13620;13626:15;13523:119;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13394:253;13335:312;:::o;13652:88::-;13702:16;;;;;;;;;;;:25;;:33;13728:6;13702:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13652:88;:::o;6905:321::-;6958:12;;;;;;;;;;;6957:13;6949:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;7036:1;7014:24;;:10;;;;;;;;;;;:24;;;7006:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;7105:4;7100:2;2000:1;2060:2;:13;;;;:::i;:::-;2045:11;:29;;;;:::i;:::-;7085:17;;;;:::i;:::-;:24;;;;:::i;:::-;7066:12;:43;;;;7153:4;7148:2;2000:1;2060:2;:13;;;;:::i;:::-;2045:11;:29;;;;:::i;:::-;7133:17;;;;:::i;:::-;:24;;;;:::i;:::-;7114:16;:43;;;;7196:1;7181:12;:16;;;;:::i;:::-;7162;:35;;;;7217:4;7202:12;;:19;;;;;;;;;;;;;;;;;;6905:321::o;5839:284::-;5953:12;5904:11;:26;5924:4;5904:26;;;;;;;;;;;;;;;:46;3120:42;5904:46;;;;;;;;;;;;;;;;:61;5899:220;;;6023:17;5974:11;:26;5994:4;5974:26;;;;;;;;;;;;;;;:46;3120:42;5974:46;;;;;;;;;;;;;;;:66;;;;3120:42;6051:62;;6068:4;6051:62;;;6095:17;6051:62;;;;;;:::i;:::-;;;;;;;;5899:220;5839:284;:::o;12373:957::-;3515:4;3502:10;;:17;;;;;;;;;;;;;;;;;;12428:27:::1;12458:24;12476:4;12458:9;:24::i;:::-;12428:54;;12517:11;;12494:19;:34;;:50;;;;;12532:12;;;;;;;;;;;12494:50;12489:837;;;12581:11;;12558:19;:34;12553:80;;12619:11;;12597:33;;12553:80;12640:20;12718:1;12700:15:::0;::::1;;;;;;;;;;12663:52;;12685:12;;;;;;;;;;;12663:34;;:19;:34;;;;:::i;:::-;:52;;;;:::i;:::-;:56;;;;:::i;:::-;12640:79;;12730:21;12776:12;12754:19;:34;;;;:::i;:::-;12730:58;;2000:1;12814:2;:13;;;;:::i;:::-;12798;:29;12794:400;;;12837:19;12859:21;12837:43;;12887:35;12908:13;12887:20;:35::i;:::-;12929:19;12975:11;12951:21;:35;;;;:::i;:::-;12929:57;;13013:1;12998:12;;;;;;;;;;;:16;;;12993:195;;;13025:21;13078:15;;;;;;;;;;;13049:44;;13063:12;;;;;;;;;;;13049:26;;:11;:26;;;;:::i;:::-;:44;;;;:::i;:::-;13025:68;;13102:28;13117:12;13102:14;:28::i;:::-;13138:42;13152:12;13166:13;13138;:42::i;:::-;13017:171;12993:195;12830:364;;12794:400;13199:27;13229:21;13199:51;;13281:1;13259:19;:23;13256:65;;;13286:32;13298:19;13286:11;:32::i;:::-;13256:65;12547:779;;;12489:837;12423:907;3537:5:::0;3524:10;;:18;;;;;;;;;;;;;;;;;;12373:957::o;8119:450::-;8223:4;8234:21;8258:4;8234:28;;8272:12;;;;;;;;;;;:34;;;;;8289:9;:17;8299:6;8289:17;;;;;;;;;;;;;;;;;;;;;;;;;8288:18;8272:34;:59;;;;;8311:9;:20;8321:9;8311:20;;;;;;;;;;;;;;;;;;;;;;;;;8310:21;8272:59;8267:270;;;8362:12;;8345:14;:29;8340:192;;;8398:5;8379:24;;8340:192;;;8422:5;:16;8428:9;8422:16;;;;;;;;;;;;;;;;;;;;;;;;;8421:17;:79;;;;;8483:16;;8466:14;8443:9;:20;8453:9;8443:20;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;:56;8421:79;8416:116;;;8524:5;8505:24;;8416:116;8340:192;8267:270;8548:16;8541:23;;;8119:450;;;;;:::o;8831:600::-;8928:7;8942:17;8970:12;;;;;;;;;;;8969:13;:32;;;;8986:7;:15;8994:6;8986:15;;;;;;;;;;;;;;;;;;;;;;;;;8969:32;:54;;;;9005:7;:18;9013:9;9005:18;;;;;;;;;;;;;;;;;;;;;;;;;8969:54;8964:442;;;9040:1;9028:13;;8964:442;;;9058:5;:13;9064:6;9058:13;;;;;;;;;;;;;;;;;;;;;;;;;9053:353;;;9116:3;9102:11;;;;;;;;;;;9093:20;;:6;:20;;;;:::i;:::-;:26;;;;:::i;:::-;9081:38;;9146:16;;9130:12;:32;9126:144;;9201:3;9187:11;;;;;;;;;;;9178:20;;:6;:20;;;;:::i;:::-;:26;;;;:::i;:::-;9166:38;;9126:144;;;9264:3;9259:2;9250:6;:11;;;;:::i;:::-;:17;;;;:::i;:::-;9238:29;;9126:144;9053:353;;;9343:5;:16;9349:9;9343:16;;;;;;;;;;;;;;;;;;;;;;;;;9338:68;;;9400:3;9385:12;;;;;;;;;;;9376:21;;:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;9364:39;;9338:68;9053:353;8964:442;9417:9;9410:16;;;8831:600;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:116::-;3868:21;3883:5;3868:21;:::i;:::-;3861:5;3858:32;3848:60;;3904:1;3901;3894:12;3848:60;3798:116;:::o;3920:133::-;3963:5;4001:6;3988:20;3979:29;;4017:30;4041:5;4017:30;:::i;:::-;3920:133;;;;:::o;4059:607::-;4130:6;4138;4146;4195:2;4183:9;4174:7;4170:23;4166:32;4163:119;;;4201:79;;:::i;:::-;4163:119;4321:1;4346:53;4391:7;4382:6;4371:9;4367:22;4346:53;:::i;:::-;4336:63;;4292:117;4448:2;4474:50;4516:7;4507:6;4496:9;4492:22;4474:50;:::i;:::-;4464:60;;4419:115;4573:2;4599:50;4641:7;4632:6;4621:9;4617:22;4599:50;:::i;:::-;4589:60;;4544:115;4059:607;;;;;:::o;4672:86::-;4707:7;4747:4;4740:5;4736:16;4725:27;;4672:86;;;:::o;4764:112::-;4847:22;4863:5;4847:22;:::i;:::-;4842:3;4835:35;4764:112;;:::o;4882:89::-;4918:7;4958:6;4951:5;4947:18;4936:29;;4882:89;;;:::o;4977:115::-;5062:23;5079:5;5062:23;:::i;:::-;5057:3;5050:36;4977:115;;:::o;5098:632::-;5287:4;5325:3;5314:9;5310:19;5302:27;;5339:67;5403:1;5392:9;5388:17;5379:6;5339:67;:::i;:::-;5416:68;5480:2;5469:9;5465:18;5456:6;5416:68;:::i;:::-;5494:70;5560:2;5549:9;5545:18;5536:6;5494:70;:::i;:::-;5574;5640:2;5629:9;5625:18;5616:6;5574:70;:::i;:::-;5654:69;5718:3;5707:9;5703:19;5694:6;5654:69;:::i;:::-;5098:632;;;;;;;;:::o;5736:619::-;5813:6;5821;5829;5878:2;5866:9;5857:7;5853:23;5849:32;5846:119;;;5884:79;;:::i;:::-;5846:119;6004:1;6029:53;6074:7;6065:6;6054:9;6050:22;6029:53;:::i;:::-;6019:63;;5975:117;6131:2;6157:53;6202:7;6193:6;6182:9;6178:22;6157:53;:::i;:::-;6147:63;;6102:118;6259:2;6285:53;6330:7;6321:6;6310:9;6306:22;6285:53;:::i;:::-;6275:63;;6230:118;5736:619;;;;;:::o;6361:118::-;6432:22;6448:5;6432:22;:::i;:::-;6425:5;6422:33;6412:61;;6469:1;6466;6459:12;6412:61;6361:118;:::o;6485:135::-;6529:5;6567:6;6554:20;6545:29;;6583:31;6608:5;6583:31;:::i;:::-;6485:135;;;;:::o;6626:464::-;6689:6;6697;6746:2;6734:9;6725:7;6721:23;6717:32;6714:119;;;6752:79;;:::i;:::-;6714:119;6872:1;6897:51;6940:7;6931:6;6920:9;6916:22;6897:51;:::i;:::-;6887:61;;6843:115;6997:2;7023:50;7065:7;7056:6;7045:9;7041:22;7023:50;:::i;:::-;7013:60;;6968:115;6626:464;;;;;:::o;7096:214::-;7185:4;7223:2;7212:9;7208:18;7200:26;;7236:67;7300:1;7289:9;7285:17;7276:6;7236:67;:::i;:::-;7096:214;;;;:::o;7316:120::-;7388:23;7405:5;7388:23;:::i;:::-;7381:5;7378:34;7368:62;;7426:1;7423;7416:12;7368:62;7316:120;:::o;7442:137::-;7487:5;7525:6;7512:20;7503:29;;7541:32;7567:5;7541:32;:::i;:::-;7442:137;;;;:::o;7585:470::-;7651:6;7659;7708:2;7696:9;7687:7;7683:23;7679:32;7676:119;;;7714:79;;:::i;:::-;7676:119;7834:1;7859:52;7903:7;7894:6;7883:9;7879:22;7859:52;:::i;:::-;7849:62;;7805:116;7960:2;7986:52;8030:7;8021:6;8010:9;8006:22;7986:52;:::i;:::-;7976:62;;7931:117;7585:470;;;;;:::o;8061:117::-;8170:1;8167;8160:12;8184:117;8293:1;8290;8283:12;8307:117;8416:1;8413;8406:12;8447:568;8520:8;8530:6;8580:3;8573:4;8565:6;8561:17;8557:27;8547:122;;8588:79;;:::i;:::-;8547:122;8701:6;8688:20;8678:30;;8731:18;8723:6;8720:30;8717:117;;;8753:79;;:::i;:::-;8717:117;8867:4;8859:6;8855:17;8843:29;;8921:3;8913:4;8905:6;8901:17;8891:8;8887:32;8884:41;8881:128;;;8928:79;;:::i;:::-;8881:128;8447:568;;;;;:::o;9038:::-;9111:8;9121:6;9171:3;9164:4;9156:6;9152:17;9148:27;9138:122;;9179:79;;:::i;:::-;9138:122;9292:6;9279:20;9269:30;;9322:18;9314:6;9311:30;9308:117;;;9344:79;;:::i;:::-;9308:117;9458:4;9450:6;9446:17;9434:29;;9512:3;9504:4;9496:6;9492:17;9482:8;9478:32;9475:41;9472:128;;;9519:79;;:::i;:::-;9472:128;9038:568;;;;;:::o;9612:934::-;9734:6;9742;9750;9758;9807:2;9795:9;9786:7;9782:23;9778:32;9775:119;;;9813:79;;:::i;:::-;9775:119;9961:1;9950:9;9946:17;9933:31;9991:18;9983:6;9980:30;9977:117;;;10013:79;;:::i;:::-;9977:117;10126:80;10198:7;10189:6;10178:9;10174:22;10126:80;:::i;:::-;10108:98;;;;9904:312;10283:2;10272:9;10268:18;10255:32;10314:18;10306:6;10303:30;10300:117;;;10336:79;;:::i;:::-;10300:117;10449:80;10521:7;10512:6;10501:9;10497:22;10449:80;:::i;:::-;10431:98;;;;10226:313;9612:934;;;;;;;:::o;10552:329::-;10611:6;10660:2;10648:9;10639:7;10635:23;10631:32;10628:119;;;10666:79;;:::i;:::-;10628:119;10786:1;10811:53;10856:7;10847:6;10836:9;10832:22;10811:53;:::i;:::-;10801:63;;10757:117;10552:329;;;;:::o;10887:553::-;11064:4;11102:3;11091:9;11087:19;11079:27;;11116:71;11184:1;11173:9;11169:17;11160:6;11116:71;:::i;:::-;11197:72;11265:2;11254:9;11250:18;11241:6;11197:72;:::i;:::-;11279;11347:2;11336:9;11332:18;11323:6;11279:72;:::i;:::-;11361;11429:2;11418:9;11414:18;11405:6;11361:72;:::i;:::-;10887:553;;;;;;;:::o;11446:329::-;11505:6;11554:2;11542:9;11533:7;11529:23;11525:32;11522:119;;;11560:79;;:::i;:::-;11522:119;11680:1;11705:53;11750:7;11741:6;11730:9;11726:22;11705:53;:::i;:::-;11695:63;;11651:117;11446:329;;;;:::o;11781:474::-;11849:6;11857;11906:2;11894:9;11885:7;11881:23;11877:32;11874:119;;;11912:79;;:::i;:::-;11874:119;12032:1;12057:53;12102:7;12093:6;12082:9;12078:22;12057:53;:::i;:::-;12047:63;;12003:117;12159:2;12185:53;12230:7;12221:6;12210:9;12206:22;12185:53;:::i;:::-;12175:63;;12130:118;11781:474;;;;;:::o;12261:308::-;12370:4;12408:2;12397:9;12393:18;12385:26;;12421:65;12483:1;12472:9;12468:17;12459:6;12421:65;:::i;:::-;12496:66;12558:2;12547:9;12543:18;12534:6;12496:66;:::i;:::-;12261:308;;;;;:::o;12575:118::-;12662:24;12680:5;12662:24;:::i;:::-;12657:3;12650:37;12575:118;;:::o;12699:553::-;12876:4;12914:3;12903:9;12899:19;12891:27;;12928:71;12996:1;12985:9;12981:17;12972:6;12928:71;:::i;:::-;13009:72;13077:2;13066:9;13062:18;13053:6;13009:72;:::i;:::-;13091;13159:2;13148:9;13144:18;13135:6;13091:72;:::i;:::-;13173;13241:2;13230:9;13226:18;13217:6;13173:72;:::i;:::-;12699:553;;;;;;;:::o;13258:325::-;13315:6;13364:2;13352:9;13343:7;13339:23;13335:32;13332:119;;;13370:79;;:::i;:::-;13332:119;13490:1;13515:51;13558:7;13549:6;13538:9;13534:22;13515:51;:::i;:::-;13505:61;;13461:115;13258:325;;;;:::o;13589:93::-;13625:7;13665:10;13658:5;13654:22;13643:33;;13589:93;;;:::o;13688:120::-;13760:23;13777:5;13760:23;:::i;:::-;13753:5;13750:34;13740:62;;13798:1;13795;13788:12;13740:62;13688:120;:::o;13814:137::-;13859:5;13897:6;13884:20;13875:29;;13913:32;13939:5;13913:32;:::i;:::-;13814:137;;;;:::o;13957:757::-;14039:6;14047;14055;14063;14112:3;14100:9;14091:7;14087:23;14083:33;14080:120;;;14119:79;;:::i;:::-;14080:120;14239:1;14264:52;14308:7;14299:6;14288:9;14284:22;14264:52;:::i;:::-;14254:62;;14210:116;14365:2;14391:52;14435:7;14426:6;14415:9;14411:22;14391:52;:::i;:::-;14381:62;;14336:117;14492:2;14518:52;14562:7;14553:6;14542:9;14538:22;14518:52;:::i;:::-;14508:62;;14463:117;14619:2;14645:52;14689:7;14680:6;14669:9;14665:22;14645:52;:::i;:::-;14635:62;;14590:117;13957:757;;;;;;;:::o;14720:104::-;14765:7;14794:24;14812:5;14794:24;:::i;:::-;14783:35;;14720:104;;;:::o;14830:138::-;14911:32;14937:5;14911:32;:::i;:::-;14904:5;14901:43;14891:71;;14958:1;14955;14948:12;14891:71;14830:138;:::o;14974:155::-;15028:5;15066:6;15053:20;15044:29;;15082:41;15117:5;15082:41;:::i;:::-;14974:155;;;;:::o;15135:345::-;15202:6;15251:2;15239:9;15230:7;15226:23;15222:32;15219:119;;;15257:79;;:::i;:::-;15219:119;15377:1;15402:61;15455:7;15446:6;15435:9;15431:22;15402:61;:::i;:::-;15392:71;;15348:125;15135:345;;;;:::o;15486:466::-;15550:6;15558;15607:2;15595:9;15586:7;15582:23;15578:32;15575:119;;;15613:79;;:::i;:::-;15575:119;15733:1;15758:51;15801:7;15792:6;15781:9;15777:22;15758:51;:::i;:::-;15748:61;;15704:115;15858:2;15884:51;15927:7;15918:6;15907:9;15903:22;15884:51;:::i;:::-;15874:61;;15829:116;15486:466;;;;;:::o;15958:230::-;16098:34;16094:1;16086:6;16082:14;16075:58;16167:13;16162:2;16154:6;16150:15;16143:38;15958:230;:::o;16194:366::-;16336:3;16357:67;16421:2;16416:3;16357:67;:::i;:::-;16350:74;;16433:93;16522:3;16433:93;:::i;:::-;16551:2;16546:3;16542:12;16535:19;;16194:366;;;:::o;16566:419::-;16732:4;16770:2;16759:9;16755:18;16747:26;;16819:9;16813:4;16809:20;16805:1;16794:9;16790:17;16783:47;16847:131;16973:4;16847:131;:::i;:::-;16839:139;;16566:419;;;:::o;16991:159::-;17131:11;17127:1;17119:6;17115:14;17108:35;16991:159;:::o;17156:365::-;17298:3;17319:66;17383:1;17378:3;17319:66;:::i;:::-;17312:73;;17394:93;17483:3;17394:93;:::i;:::-;17512:2;17507:3;17503:12;17496:19;;17156:365;;;:::o;17527:419::-;17693:4;17731:2;17720:9;17716:18;17708:26;;17780:9;17774:4;17770:20;17766:1;17755:9;17751:17;17744:47;17808:131;17934:4;17808:131;:::i;:::-;17800:139;;17527:419;;;:::o;17952:168::-;18092:20;18088:1;18080:6;18076:14;18069:44;17952:168;:::o;18126:366::-;18268:3;18289:67;18353:2;18348:3;18289:67;:::i;:::-;18282:74;;18365:93;18454:3;18365:93;:::i;:::-;18483:2;18478:3;18474:12;18467:19;;18126:366;;;:::o;18498:419::-;18664:4;18702:2;18691:9;18687:18;18679:26;;18751:9;18745:4;18741:20;18737:1;18726:9;18722:17;18715:47;18779:131;18905:4;18779:131;:::i;:::-;18771:139;;18498:419;;;:::o;18923:171::-;19063:23;19059:1;19051:6;19047:14;19040:47;18923:171;:::o;19100:366::-;19242:3;19263:67;19327:2;19322:3;19263:67;:::i;:::-;19256:74;;19339:93;19428:3;19339:93;:::i;:::-;19457:2;19452:3;19448:12;19441:19;;19100:366;;;:::o;19472:419::-;19638:4;19676:2;19665:9;19661:18;19653:26;;19725:9;19719:4;19715:20;19711:1;19700:9;19696:17;19689:47;19753:131;19879:4;19753:131;:::i;:::-;19745:139;;19472:419;;;:::o;19897:143::-;19954:5;19985:6;19979:13;19970:22;;20001:33;20028:5;20001:33;:::i;:::-;19897:143;;;;:::o;20046:351::-;20116:6;20165:2;20153:9;20144:7;20140:23;20136:32;20133:119;;;20171:79;;:::i;:::-;20133:119;20291:1;20316:64;20372:7;20363:6;20352:9;20348:22;20316:64;:::i;:::-;20306:74;;20262:128;20046:351;;;;:::o;20403:332::-;20524:4;20562:2;20551:9;20547:18;20539:26;;20575:71;20643:1;20632:9;20628:17;20619:6;20575:71;:::i;:::-;20656:72;20724:2;20713:9;20709:18;20700:6;20656:72;:::i;:::-;20403:332;;;;;:::o;20741:180::-;20789:77;20786:1;20779:88;20886:4;20883:1;20876:15;20910:4;20907:1;20900:15;20927:102;20969:8;21016:5;21013:1;21009:13;20988:34;;20927:102;;;:::o;21035:848::-;21096:5;21103:4;21127:6;21118:15;;21151:5;21142:14;;21165:712;21186:1;21176:8;21173:15;21165:712;;;21281:4;21276:3;21272:14;21266:4;21263:24;21260:50;;;21290:18;;:::i;:::-;21260:50;21340:1;21330:8;21326:16;21323:451;;;21755:4;21748:5;21744:16;21735:25;;21323:451;21805:4;21799;21795:15;21787:23;;21835:32;21858:8;21835:32;:::i;:::-;21823:44;;21165:712;;;21035:848;;;;;;;:::o;21889:1073::-;21943:5;22134:8;22124:40;;22155:1;22146:10;;22157:5;;22124:40;22183:4;22173:36;;22200:1;22191:10;;22202:5;;22173:36;22269:4;22317:1;22312:27;;;;22353:1;22348:191;;;;22262:277;;22312:27;22330:1;22321:10;;22332:5;;;22348:191;22393:3;22383:8;22380:17;22377:43;;;22400:18;;:::i;:::-;22377:43;22449:8;22446:1;22442:16;22433:25;;22484:3;22477:5;22474:14;22471:40;;;22491:18;;:::i;:::-;22471:40;22524:5;;;22262:277;;22648:2;22638:8;22635:16;22629:3;22623:4;22620:13;22616:36;22598:2;22588:8;22585:16;22580:2;22574:4;22571:12;22567:35;22551:111;22548:246;;;22704:8;22698:4;22694:19;22685:28;;22739:3;22732:5;22729:14;22726:40;;;22746:18;;:::i;:::-;22726:40;22779:5;;22548:246;22819:42;22857:3;22847:8;22841:4;22838:1;22819:42;:::i;:::-;22804:57;;;;22893:4;22888:3;22884:14;22877:5;22874:25;22871:51;;;22902:18;;:::i;:::-;22871:51;22951:4;22944:5;22940:16;22931:25;;21889:1073;;;;;;:::o;22968:281::-;23026:5;23050:23;23068:4;23050:23;:::i;:::-;23042:31;;23094:25;23110:8;23094:25;:::i;:::-;23082:37;;23138:104;23175:66;23165:8;23159:4;23138:104;:::i;:::-;23129:113;;22968:281;;;;:::o;23255:410::-;23295:7;23318:20;23336:1;23318:20;:::i;:::-;23313:25;;23352:20;23370:1;23352:20;:::i;:::-;23347:25;;23407:1;23404;23400:9;23429:30;23447:11;23429:30;:::i;:::-;23418:41;;23608:1;23599:7;23595:15;23592:1;23589:22;23569:1;23562:9;23542:83;23519:139;;23638:18;;:::i;:::-;23519:139;23303:362;23255:410;;;;:::o;23671:166::-;23811:18;23807:1;23799:6;23795:14;23788:42;23671:166;:::o;23843:366::-;23985:3;24006:67;24070:2;24065:3;24006:67;:::i;:::-;23999:74;;24082:93;24171:3;24082:93;:::i;:::-;24200:2;24195:3;24191:12;24184:19;;23843:366;;;:::o;24215:419::-;24381:4;24419:2;24408:9;24404:18;24396:26;;24468:9;24462:4;24458:20;24454:1;24443:9;24439:17;24432:47;24496:131;24622:4;24496:131;:::i;:::-;24488:139;;24215:419;;;:::o;24640:166::-;24780:18;24776:1;24768:6;24764:14;24757:42;24640:166;:::o;24812:366::-;24954:3;24975:67;25039:2;25034:3;24975:67;:::i;:::-;24968:74;;25051:93;25140:3;25051:93;:::i;:::-;25169:2;25164:3;25160:12;25153:19;;24812:366;;;:::o;25184:419::-;25350:4;25388:2;25377:9;25373:18;25365:26;;25437:9;25431:4;25427:20;25423:1;25412:9;25408:17;25401:47;25465:131;25591:4;25465:131;:::i;:::-;25457:139;;25184:419;;;:::o;25609:194::-;25649:4;25669:20;25687:1;25669:20;:::i;:::-;25664:25;;25703:20;25721:1;25703:20;:::i;:::-;25698:25;;25747:1;25744;25740:9;25732:17;;25771:1;25765:4;25762:11;25759:37;;;25776:18;;:::i;:::-;25759:37;25609:194;;;;:::o;25809:176::-;25949:28;25945:1;25937:6;25933:14;25926:52;25809:176;:::o;25991:366::-;26133:3;26154:67;26218:2;26213:3;26154:67;:::i;:::-;26147:74;;26230:93;26319:3;26230:93;:::i;:::-;26348:2;26343:3;26339:12;26332:19;;25991:366;;;:::o;26363:419::-;26529:4;26567:2;26556:9;26552:18;26544:26;;26616:9;26610:4;26606:20;26602:1;26591:9;26587:17;26580:47;26644:131;26770:4;26644:131;:::i;:::-;26636:139;;26363:419;;;:::o;26788:180::-;26836:77;26833:1;26826:88;26933:4;26930:1;26923:15;26957:4;26954:1;26947:15;26974:185;27014:1;27031:20;27049:1;27031:20;:::i;:::-;27026:25;;27065:20;27083:1;27065:20;:::i;:::-;27060:25;;27104:1;27094:35;;27109:18;;:::i;:::-;27094:35;27151:1;27148;27144:9;27139:14;;26974:185;;;;:::o;27165:193::-;27204:3;27223:19;27240:1;27223:19;:::i;:::-;27218:24;;27256:19;27273:1;27256:19;:::i;:::-;27251:24;;27298:1;27295;27291:9;27284:16;;27321:6;27316:3;27313:15;27310:41;;;27331:18;;:::i;:::-;27310:41;27165:193;;;;:::o;27364:166::-;27504:18;27500:1;27492:6;27488:14;27481:42;27364:166;:::o;27536:366::-;27678:3;27699:67;27763:2;27758:3;27699:67;:::i;:::-;27692:74;;27775:93;27864:3;27775:93;:::i;:::-;27893:2;27888:3;27884:12;27877:19;;27536:366;;;:::o;27908:419::-;28074:4;28112:2;28101:9;28097:18;28089:26;;28161:9;28155:4;28151:20;28147:1;28136:9;28132:17;28125:47;28189:131;28315:4;28189:131;:::i;:::-;28181:139;;27908:419;;;:::o;28333:182::-;28473:34;28469:1;28461:6;28457:14;28450:58;28333:182;:::o;28521:366::-;28663:3;28684:67;28748:2;28743:3;28684:67;:::i;:::-;28677:74;;28760:93;28849:3;28760:93;:::i;:::-;28878:2;28873:3;28869:12;28862:19;;28521:366;;;:::o;28893:419::-;29059:4;29097:2;29086:9;29082:18;29074:26;;29146:9;29140:4;29136:20;29132:1;29121:9;29117:17;29110:47;29174:131;29300:4;29174:131;:::i;:::-;29166:139;;28893:419;;;:::o;29318:171::-;29458:23;29454:1;29446:6;29442:14;29435:47;29318:171;:::o;29495:366::-;29637:3;29658:67;29722:2;29717:3;29658:67;:::i;:::-;29651:74;;29734:93;29823:3;29734:93;:::i;:::-;29852:2;29847:3;29843:12;29836:19;;29495:366;;;:::o;29867:419::-;30033:4;30071:2;30060:9;30056:18;30048:26;;30120:9;30114:4;30110:20;30106:1;30095:9;30091:17;30084:47;30148:131;30274:4;30148:131;:::i;:::-;30140:139;;29867:419;;;:::o;30292:180::-;30340:77;30337:1;30330:88;30437:4;30434:1;30427:15;30461:4;30458:1;30451:15;30478:191;30518:3;30537:20;30555:1;30537:20;:::i;:::-;30532:25;;30571:20;30589:1;30571:20;:::i;:::-;30566:25;;30614:1;30611;30607:9;30600:16;;30635:3;30632:1;30629:10;30626:36;;;30642:18;;:::i;:::-;30626:36;30478:191;;;;:::o;30675:233::-;30714:3;30737:24;30755:5;30737:24;:::i;:::-;30728:33;;30783:66;30776:5;30773:77;30770:103;;30853:18;;:::i;:::-;30770:103;30900:1;30893:5;30889:13;30882:20;;30675:233;;;:::o;30914:225::-;31054:34;31050:1;31042:6;31038:14;31031:58;31123:8;31118:2;31110:6;31106:15;31099:33;30914:225;:::o;31145:366::-;31287:3;31308:67;31372:2;31367:3;31308:67;:::i;:::-;31301:74;;31384:93;31473:3;31384:93;:::i;:::-;31502:2;31497:3;31493:12;31486:19;;31145:366;;;:::o;31517:419::-;31683:4;31721:2;31710:9;31706:18;31698:26;;31770:9;31764:4;31760:20;31756:1;31745:9;31741:17;31734:47;31798:131;31924:4;31798:131;:::i;:::-;31790:139;;31517:419;;;:::o;31942:332::-;32063:4;32101:2;32090:9;32086:18;32078:26;;32114:71;32182:1;32171:9;32167:17;32158:6;32114:71;:::i;:::-;32195:72;32263:2;32252:9;32248:18;32239:6;32195:72;:::i;:::-;31942:332;;;;;:::o;32280:171::-;32420:23;32416:1;32408:6;32404:14;32397:47;32280:171;:::o;32457:366::-;32599:3;32620:67;32684:2;32679:3;32620:67;:::i;:::-;32613:74;;32696:93;32785:3;32696:93;:::i;:::-;32814:2;32809:3;32805:12;32798:19;;32457:366;;;:::o;32829:419::-;32995:4;33033:2;33022:9;33018:18;33010:26;;33082:9;33076:4;33072:20;33068:1;33057:9;33053:17;33046:47;33110:131;33236:4;33110:131;:::i;:::-;33102:139;;32829:419;;;:::o;33254:173::-;33394:25;33390:1;33382:6;33378:14;33371:49;33254:173;:::o;33433:366::-;33575:3;33596:67;33660:2;33655:3;33596:67;:::i;:::-;33589:74;;33672:93;33761:3;33672:93;:::i;:::-;33790:2;33785:3;33781:12;33774:19;;33433:366;;;:::o;33805:419::-;33971:4;34009:2;33998:9;33994:18;33986:26;;34058:9;34052:4;34048:20;34044:1;34033:9;34029:17;34022:47;34086:131;34212:4;34086:131;:::i;:::-;34078:139;;33805:419;;;:::o;34230:166::-;34370:18;34366:1;34358:6;34354:14;34347:42;34230:166;:::o;34402:366::-;34544:3;34565:67;34629:2;34624:3;34565:67;:::i;:::-;34558:74;;34641:93;34730:3;34641:93;:::i;:::-;34759:2;34754:3;34750:12;34743:19;;34402:366;;;:::o;34774:419::-;34940:4;34978:2;34967:9;34963:18;34955:26;;35027:9;35021:4;35017:20;35013:1;35002:9;34998:17;34991:47;35055:131;35181:4;35055:131;:::i;:::-;35047:139;;34774:419;;;:::o;35199:170::-;35339:22;35335:1;35327:6;35323:14;35316:46;35199:170;:::o;35375:366::-;35517:3;35538:67;35602:2;35597:3;35538:67;:::i;:::-;35531:74;;35614:93;35703:3;35614:93;:::i;:::-;35732:2;35727:3;35723:12;35716:19;;35375:366;;;:::o;35747:419::-;35913:4;35951:2;35940:9;35936:18;35928:26;;36000:9;35994:4;35990:20;35986:1;35975:9;35971:17;35964:47;36028:131;36154:4;36028:131;:::i;:::-;36020:139;;35747:419;;;:::o;36172:175::-;36312:27;36308:1;36300:6;36296:14;36289:51;36172:175;:::o;36353:366::-;36495:3;36516:67;36580:2;36575:3;36516:67;:::i;:::-;36509:74;;36592:93;36681:3;36592:93;:::i;:::-;36710:2;36705:3;36701:12;36694:19;;36353:366;;;:::o;36725:419::-;36891:4;36929:2;36918:9;36914:18;36906:26;;36978:9;36972:4;36968:20;36964:1;36953:9;36949:17;36942:47;37006:131;37132:4;37006:131;:::i;:::-;36998:139;;36725:419;;;:::o;37150:162::-;37290:14;37286:1;37278:6;37274:14;37267:38;37150:162;:::o;37318:366::-;37460:3;37481:67;37545:2;37540:3;37481:67;:::i;:::-;37474:74;;37557:93;37646:3;37557:93;:::i;:::-;37675:2;37670:3;37666:12;37659:19;;37318:366;;;:::o;37690:419::-;37856:4;37894:2;37883:9;37879:18;37871:26;;37943:9;37937:4;37933:20;37929:1;37918:9;37914:17;37907:47;37971:131;38097:4;37971:131;:::i;:::-;37963:139;;37690:419;;;:::o;38115:173::-;38255:25;38251:1;38243:6;38239:14;38232:49;38115:173;:::o;38294:366::-;38436:3;38457:67;38521:2;38516:3;38457:67;:::i;:::-;38450:74;;38533:93;38622:3;38533:93;:::i;:::-;38651:2;38646:3;38642:12;38635:19;;38294:366;;;:::o;38666:419::-;38832:4;38870:2;38859:9;38855:18;38847:26;;38919:9;38913:4;38909:20;38905:1;38894:9;38890:17;38883:47;38947:131;39073:4;38947:131;:::i;:::-;38939:139;;38666:419;;;:::o;39091:174::-;39231:26;39227:1;39219:6;39215:14;39208:50;39091:174;:::o;39271:366::-;39413:3;39434:67;39498:2;39493:3;39434:67;:::i;:::-;39427:74;;39510:93;39599:3;39510:93;:::i;:::-;39628:2;39623:3;39619:12;39612:19;;39271:366;;;:::o;39643:419::-;39809:4;39847:2;39836:9;39832:18;39824:26;;39896:9;39890:4;39886:20;39882:1;39871:9;39867:17;39860:47;39924:131;40050:4;39924:131;:::i;:::-;39916:139;;39643:419;;;:::o;40068:60::-;40096:3;40117:5;40110:12;;40068:60;;;:::o;40134:142::-;40184:9;40217:53;40235:34;40244:24;40262:5;40244:24;:::i;:::-;40235:34;:::i;:::-;40217:53;:::i;:::-;40204:66;;40134:142;;;:::o;40282:126::-;40332:9;40365:37;40396:5;40365:37;:::i;:::-;40352:50;;40282:126;;;:::o;40414:134::-;40472:9;40505:37;40536:5;40505:37;:::i;:::-;40492:50;;40414:134;;;:::o;40554:147::-;40649:45;40688:5;40649:45;:::i;:::-;40644:3;40637:58;40554:147;;:::o;40707:238::-;40808:4;40846:2;40835:9;40831:18;40823:26;;40859:79;40935:1;40924:9;40920:17;40911:6;40859:79;:::i;:::-;40707:238;;;;:::o;40951:188::-;40989:3;41008:18;41024:1;41008:18;:::i;:::-;41003:23;;41040:18;41056:1;41040:18;:::i;:::-;41035:23;;41081:1;41078;41074:9;41067:16;;41104:4;41099:3;41096:13;41093:39;;;41112:18;;:::i;:::-;41093:39;40951:188;;;;:::o;41145:168::-;41285:20;41281:1;41273:6;41269:14;41262:44;41145:168;:::o;41319:366::-;41461:3;41482:67;41546:2;41541:3;41482:67;:::i;:::-;41475:74;;41558:93;41647:3;41558:93;:::i;:::-;41676:2;41671:3;41667:12;41660:19;;41319:366;;;:::o;41691:419::-;41857:4;41895:2;41884:9;41880:18;41872:26;;41944:9;41938:4;41934:20;41930:1;41919:9;41915:17;41908:47;41972:131;42098:4;41972:131;:::i;:::-;41964:139;;41691:419;;;:::o;42116:85::-;42161:7;42190:5;42179:16;;42116:85;;;:::o;42207:158::-;42265:9;42298:61;42316:42;42325:32;42351:5;42325:32;:::i;:::-;42316:42;:::i;:::-;42298:61;:::i;:::-;42285:74;;42207:158;;;:::o;42371:147::-;42466:45;42505:5;42466:45;:::i;:::-;42461:3;42454:58;42371:147;;:::o;42524:807::-;42773:4;42811:3;42800:9;42796:19;42788:27;;42825:71;42893:1;42882:9;42878:17;42869:6;42825:71;:::i;:::-;42906:72;42974:2;42963:9;42959:18;42950:6;42906:72;:::i;:::-;42988:80;43064:2;43053:9;43049:18;43040:6;42988:80;:::i;:::-;43078;43154:2;43143:9;43139:18;43130:6;43078:80;:::i;:::-;43168:73;43236:3;43225:9;43221:19;43212:6;43168:73;:::i;:::-;43251;43319:3;43308:9;43304:19;43295:6;43251:73;:::i;:::-;42524:807;;;;;;;;;:::o;43337:143::-;43394:5;43425:6;43419:13;43410:22;;43441:33;43468:5;43441:33;:::i;:::-;43337:143;;;;:::o;43486:663::-;43574:6;43582;43590;43639:2;43627:9;43618:7;43614:23;43610:32;43607:119;;;43645:79;;:::i;:::-;43607:119;43765:1;43790:64;43846:7;43837:6;43826:9;43822:22;43790:64;:::i;:::-;43780:74;;43736:128;43903:2;43929:64;43985:7;43976:6;43965:9;43961:22;43929:64;:::i;:::-;43919:74;;43874:129;44042:2;44068:64;44124:7;44115:6;44104:9;44100:22;44068:64;:::i;:::-;44058:74;;44013:129;43486:663;;;;;:::o;44155:179::-;44295:31;44291:1;44283:6;44279:14;44272:55;44155:179;:::o;44340:366::-;44482:3;44503:67;44567:2;44562:3;44503:67;:::i;:::-;44496:74;;44579:93;44668:3;44579:93;:::i;:::-;44697:2;44692:3;44688:12;44681:19;;44340:366;;;:::o;44712:419::-;44878:4;44916:2;44905:9;44901:18;44893:26;;44965:9;44959:4;44955:20;44951:1;44940:9;44936:17;44929:47;44993:131;45119:4;44993:131;:::i;:::-;44985:139;;44712:419;;;:::o;45137:167::-;45277:19;45273:1;45265:6;45261:14;45254:43;45137:167;:::o;45310:366::-;45452:3;45473:67;45537:2;45532:3;45473:67;:::i;:::-;45466:74;;45549:93;45638:3;45549:93;:::i;:::-;45667:2;45662:3;45658:12;45651:19;;45310:366;;;:::o;45682:419::-;45848:4;45886:2;45875:9;45871:18;45863:26;;45935:9;45929:4;45925:20;45921:1;45910:9;45906:17;45899:47;45963:131;46089:4;45963:131;:::i;:::-;45955:139;;45682:419;;;:::o;46107:180::-;46155:77;46152:1;46145:88;46252:4;46249:1;46242:15;46276:4;46273:1;46266:15;46293:114;46360:6;46394:5;46388:12;46378:22;;46293:114;;;:::o;46413:184::-;46512:11;46546:6;46541:3;46534:19;46586:4;46581:3;46577:14;46562:29;;46413:184;;;;:::o;46603:132::-;46670:4;46693:3;46685:11;;46723:4;46718:3;46714:14;46706:22;;46603:132;;;:::o;46741:108::-;46818:24;46836:5;46818:24;:::i;:::-;46813:3;46806:37;46741:108;;:::o;46855:179::-;46924:10;46945:46;46987:3;46979:6;46945:46;:::i;:::-;47023:4;47018:3;47014:14;47000:28;;46855:179;;;;:::o;47040:113::-;47110:4;47142;47137:3;47133:14;47125:22;;47040:113;;;:::o;47189:732::-;47308:3;47337:54;47385:5;47337:54;:::i;:::-;47407:86;47486:6;47481:3;47407:86;:::i;:::-;47400:93;;47517:56;47567:5;47517:56;:::i;:::-;47596:7;47627:1;47612:284;47637:6;47634:1;47631:13;47612:284;;;47713:6;47707:13;47740:63;47799:3;47784:13;47740:63;:::i;:::-;47733:70;;47826:60;47879:6;47826:60;:::i;:::-;47816:70;;47672:224;47659:1;47656;47652:9;47647:14;;47612:284;;;47616:14;47912:3;47905:10;;47313:608;;;47189:732;;;;:::o;47927:831::-;48190:4;48228:3;48217:9;48213:19;48205:27;;48242:71;48310:1;48299:9;48295:17;48286:6;48242:71;:::i;:::-;48323:80;48399:2;48388:9;48384:18;48375:6;48323:80;:::i;:::-;48450:9;48444:4;48440:20;48435:2;48424:9;48420:18;48413:48;48478:108;48581:4;48572:6;48478:108;:::i;:::-;48470:116;;48596:72;48664:2;48653:9;48649:18;48640:6;48596:72;:::i;:::-;48678:73;48746:3;48735:9;48731:19;48722:6;48678:73;:::i;:::-;47927:831;;;;;;;;:::o;48764:170::-;48904:22;48900:1;48892:6;48888:14;48881:46;48764:170;:::o;48940:366::-;49082:3;49103:67;49167:2;49162:3;49103:67;:::i;:::-;49096:74;;49179:93;49268:3;49179:93;:::i;:::-;49297:2;49292:3;49288:12;49281:19;;48940:366;;;:::o;49312:419::-;49478:4;49516:2;49505:9;49501:18;49493:26;;49565:9;49559:4;49555:20;49551:1;49540:9;49536:17;49529:47;49593:131;49719:4;49593:131;:::i;:::-;49585:139;;49312:419;;;:::o;49737:168::-;49877:20;49873:1;49865:6;49861:14;49854:44;49737:168;:::o;49911:366::-;50053:3;50074:67;50138:2;50133:3;50074:67;:::i;:::-;50067:74;;50150:93;50239:3;50150:93;:::i;:::-;50268:2;50263:3;50259:12;50252:19;;49911:366;;;:::o;50283:419::-;50449:4;50487:2;50476:9;50472:18;50464:26;;50536:9;50530:4;50526:20;50522:1;50511:9;50507:17;50500:47;50564:131;50690:4;50564:131;:::i;:::-;50556:139;;50283:419;;;:::o
Swarm Source
ipfs://fd8ba1b02f96b24c7f4c8b4443a0e290bcc6bc3fb76ef5841c3e5714c06a3987
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.