ERC-20
Overview
Max Total Supply
1,000,000,000 Phoenix
Holders
35
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
7,306,877.808176383 PhoenixValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
ThePhoenix
Compiler Version
v0.8.10+commit.fc410830
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-11-24 */ pragma solidity 0.8.10; pragma experimental ABIEncoderV2; // SPDX-License-Identifier: MIT // ORIGINAL The Phoenix CODE // VISIT US https://thephoenix.vip/ // TELEGRAM t.me/ThePhoenixERC interface IBEP20 { function totalSupply() external view returns (uint256); 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); /** * @dev Emitted when `value` tokens are moved from one _account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval( address indexed owner, address indexed spender, uint256 value ); } // Dex Factory contract interface interface IDexFactory { function createPair(address tokenA, address tokenB) external returns (address pair); } // Dex Router02 contract interface interface IDexRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _setOwner(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any _account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } /** * @dev Transfers ownership of the contract to a new _account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require( newOwner != address(0), "Ownable: new owner is the zero address" ); _setOwner(newOwner); } /** * @dev set the owner for the first time. * Can only be called by the contract or deployer. */ function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } contract ThePhoenix is Context, IBEP20, Ownable { using SafeMath for uint256; // all private variables and functions are only for contract use mapping(address => uint256) private _rOwned; mapping(address => uint256) private _tOwned; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) private _isExcludedFromFee; mapping(address => bool) private _isExcludedFromReward; mapping(address => bool) private _isExcludedFromMaxHoldLimit; mapping(address => bool) private _isExcludedFromMinBuyLimit; mapping(address => bool) public isSniper; uint256 private constant MAX = ~uint256(0); uint256 private _tTotal = 1000000000 * 1e9; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; string private _name = "The Phoenix"; // token name string private _symbol = "Phoenix"; // token ticker uint8 private _decimals = 9; // token decimals IDexRouter public dexRouter; // Dex router address address public dexPair; // LP token address address payable public marketWallet; // market wallet address address public burnAddress = (0x000000000000000000000000000000000000dEaD); uint256 public minTokenToSwap = 1000000 * 1e9; // 100k amount will trigger the swap and add liquidity uint256 public maxHoldingAmount = 20000000 * 1e9; uint256 public minBuyLimit = 20000000 * 1e9; uint256 private excludedTSupply; // for contract use uint256 private excludedRSupply; // for contract use bool public swapAndLiquifyEnabled = true; // should be true to turn on to liquidate the pool bool public Fees = true; bool public antiBotStopEnabled = false; bool public isMaxHoldLimitValid = true; // max Holding Limit is valid if it's true // buy tax fee uint256 public reflectionFeeOnBuying = 0; uint256 public liquidityFeeOnBuying = 0; uint256 public marketWalletFeeOnBuying = 150; uint256 public burnFeeOnBuying = 10; // sell tax fee uint256 public reflectionFeeOnSelling = 0; uint256 public liquidityFeeOnSelling = 0; uint256 public marketWalletFeeOnSelling = 150; uint256 public burnFeeOnSelling = 10; // for smart contract use uint256 private _currentReflectionFee; uint256 private _currentLiquidityFee; uint256 private _currentmarketWalletFee; uint256 private _currentBurnFee; uint256 private _accumulatedLiquidity; uint256 private _accumulatedMarketWallet; //Events for blockchain event SwapAndLiquifyEnabledUpdated(bool enabled); event AntiBotStopEnableUpdated(bool enabled); event SwapAndLiquify( uint256 tokensSwapped, uint256 bnbReceived, uint256 tokensIntoLiqudity ); // constructor for initializing the contract constructor(address payable _marketWallet) { _rOwned[owner()] = _rTotal; marketWallet = _marketWallet; IDexRouter _dexRouter = IDexRouter( 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D // 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D //testnet ); // Create a Dex pair for this new token dexPair = IDexFactory(_dexRouter.factory()).createPair( address(this), _dexRouter.WETH() ); // set the rest of the contract variables dexRouter = _dexRouter; //exclude owner and this contract from fee _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; // exclude addresses from max holding limit _isExcludedFromMaxHoldLimit[owner()] = true; _isExcludedFromMaxHoldLimit[address(this)] = true; _isExcludedFromMaxHoldLimit[dexPair] = true; _isExcludedFromMaxHoldLimit[burnAddress] = true; _isExcludedFromMinBuyLimit[owner()] = true; _isExcludedFromMinBuyLimit[dexPair] = true; emit Transfer(address(0), owner(), _tTotal); } // token standards by Blockchain function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _tTotal; } function balanceOf(address _account) public view override returns (uint256) { if (_isExcludedFromReward[_account]) return _tOwned[_account]; return tokenFromReflection(_rOwned[_account]); } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public override returns (bool) { require(!isSniper[sender], "Sniper detected"); require(!isSniper[recipient], "Sniper detected"); require(!antiBotStopEnabled, "Trading shifted for bot deletion."); _transfer(sender, recipient, amount); _approve( sender, _msgSender(), _allowances[sender][_msgSender()].sub( amount, "Token: transfer amount exceeds allowance" ) ); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue) ); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender].sub( subtractedValue, "Token: decreased allowance below zero" ) ); return true; } // public view able functions // to check wether the address is excluded from reward or not function isExcludedFromReward(address _account) public view returns (bool) { return _isExcludedFromReward[_account]; } // to check how much tokens get redistributed among holders till now function totalHolderDistribution() public view returns (uint256) { return _tFeeTotal; } // to check wether the address is excluded from fee or not function isExcludedFromFee(address _account) public view returns (bool) { return _isExcludedFromFee[_account]; } // to check wether the address is excluded from max Holding or not function isExcludedFromMaxHoldLimit(address _account) public view returns (bool) { return _isExcludedFromMaxHoldLimit[_account]; } // to check wether the address is excluded from max txn or not function isExcludedFromMaxTxnLimit(address _account) public view returns (bool) { return _isExcludedFromMinBuyLimit[_account]; } // For manual distribution to the holders function deliver(uint256 tAmount) public { address sender = _msgSender(); require( !_isExcludedFromReward[sender], "Token: Excluded addresses cannot call this function" ); uint256 rAmount = tAmount.mul(_getRate()); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rTotal = _rTotal.sub(rAmount); _tFeeTotal = _tFeeTotal.add(tAmount); } function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns (uint256) { require(tAmount <= _tTotal, "BEP20: Amount must be less than supply"); if (!deductTransferFee) { uint256 rAmount = tAmount.mul(_getRate()); return rAmount; } else { uint256 rAmount = tAmount.mul(_getRate()); uint256 rTransferAmount = rAmount.sub( totalFeePerTx(tAmount).mul(_getRate()) ); return rTransferAmount; } } function tokenFromReflection(uint256 rAmount) public view returns (uint256) { require( rAmount <= _rTotal, "Token: Amount must be less than total reflections" ); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } //to include or exludde any address from max hold limit function includeOrExcludeFromMaxHoldLimit(address _address, bool value) public onlyOwner { _isExcludedFromMaxHoldLimit[_address] = value; } //to include or exludde any address from max hold limit function includeOrExcludeFromMaxTxnLimit(address _address, bool value) public onlyOwner { _isExcludedFromMinBuyLimit[_address] = value; } //only owner can change sniper shift function setAntiBotStopEnabled(bool _state) public onlyOwner { antiBotStopEnabled = _state; emit AntiBotStopEnableUpdated(_state); } //only owner can change MaxHoldingAmount function setMaxHoldingAmount(uint256 _amount) public onlyOwner { maxHoldingAmount = _amount; } //only owner can change MaxHoldingAmount function setMinBuyLimit(uint256 _amount) public onlyOwner { minBuyLimit = _amount; } // owner can remove stuck tokens in case of any issue function removeStuckToken(address _token, uint256 _amount) external onlyOwner { IBEP20(_token).transfer(owner(), _amount); } //only owner can change SellFeePercentages any time after deployment function setSellFeePercent( uint256 _redistributionFee, uint256 _liquidityFee, uint256 _marketWalletFee, uint256 _burnFee ) external onlyOwner { reflectionFeeOnSelling = _redistributionFee; liquidityFeeOnSelling = _liquidityFee; marketWalletFeeOnSelling = _marketWalletFee; burnFeeOnSelling = _burnFee; } //to include or exludde any address from fee function includeOrExcludeFromFee(address _account, bool _value) public onlyOwner { _isExcludedFromFee[_account] = _value; } //only owner can change MinTokenToSwap function setMinTokenToSwap(uint256 _amount) public onlyOwner { minTokenToSwap = _amount; } //only owner can change BuyFeePercentages any time after deployment function setBuyFeePercent( uint256 _redistributionFee, uint256 _liquidityFee, uint256 _marketWalletFee, uint256 _burnFee ) external onlyOwner { reflectionFeeOnBuying = _redistributionFee; liquidityFeeOnBuying = _liquidityFee; marketWalletFeeOnBuying = _marketWalletFee; burnFeeOnBuying = _burnFee; } //only owner can change state of swapping, he can turn it in to true or false any time after deployment function enableOrDisableSwapAndLiquify(bool _state) public onlyOwner { swapAndLiquifyEnabled = _state; emit SwapAndLiquifyEnabledUpdated(_state); } //To enable or disable all fees when set it to true fees will be disabled function enableOrDisableFees(bool _state) external onlyOwner { Fees = _state; } // owner can change market address function setmarketWalletAddress(address payable _newAddress) external onlyOwner { marketWallet = _newAddress; } //to receive BNB from dexRouter when swapping receive() external payable {} // internal functions for contract use function totalFeePerTx(uint256 tAmount) internal view returns (uint256) { uint256 percentage = tAmount .mul( _currentReflectionFee.add(_currentLiquidityFee).add( _currentmarketWalletFee.add(_currentBurnFee) ) ) .div(1e3); return percentage; } function _checkMaxWalletAmount(address to, uint256 amount) private view{ if ( !_isExcludedFromMaxHoldLimit[to] // by default false ) { if (isMaxHoldLimitValid) { require( balanceOf(to).add(amount) <= maxHoldingAmount, "BEP20: amount exceed max holding limit" ); } } } function _getRate() private view returns (uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(tSupply); } function setBuyFee() private { _currentReflectionFee = reflectionFeeOnBuying; _currentLiquidityFee = liquidityFeeOnBuying; _currentmarketWalletFee = marketWalletFeeOnBuying; _currentBurnFee = burnFeeOnBuying; } function _getCurrentSupply() private view returns (uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; rSupply = rSupply.sub(excludedRSupply); tSupply = tSupply.sub(excludedTSupply); if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } function removeAllFee() private { _currentReflectionFee = 0; _currentLiquidityFee = 0; _currentmarketWalletFee = 0; _currentBurnFee = 0; } function setSellFee() private { _currentReflectionFee = reflectionFeeOnSelling; _currentLiquidityFee = liquidityFeeOnSelling; _currentmarketWalletFee = marketWalletFeeOnSelling; _currentBurnFee = burnFeeOnSelling; } function addSniperInList(address _account) external onlyOwner { require(_account != address(dexRouter), "We can not blacklist router"); require(!isSniper[_account], "Sniper already exist"); isSniper[_account] = true; } function removeSniperFromList(address _account) external onlyOwner { require(isSniper[_account], "Not a sniper"); isSniper[_account] = false; } function _approve( address owner, address spender, uint256 amount ) private { require(owner != address(0), "Token: approve from the zero address"); require(spender != address(0), "Token: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } // base function to transfer tokens function _transfer( address from, address to, uint256 amount ) private { require(from != address(0), "Token: transfer from the zero address"); require(to != address(0), "Token: transfer to the zero address"); require(amount > 0, "Token: transfer amount must be greater than zero"); // swap and liquify swapAndLiquify(from, to); //indicates if fee should be deducted from transfer bool takeFee = true; //if any _account belongs to _isExcludedFromFee _account then remove the fee if (_isExcludedFromFee[from] || _isExcludedFromFee[to] || !Fees) { takeFee = false; } //transfer amount, it will take tax, burn, liquidity fee _tokenTransfer(from, to, amount, takeFee); } //this method is responsible for taking all fee, if takeFee is true function _tokenTransfer( address sender, address recipient, uint256 amount, bool takeFee ) private { // buying handler require(!isSniper[sender], "Sniper detected"); require(!isSniper[recipient], "Sniper detected"); require(!antiBotStopEnabled, "Trading shifted for bot deletion."); if(!_isExcludedFromMinBuyLimit[recipient]){ require(amount <= minBuyLimit,"Amount must be greater than minimum buy Limit" ); } if (sender == dexPair && takeFee) { setBuyFee(); } // selling handler else if (recipient == dexPair && takeFee) { setSellFee(); } // normal transaction handler else { removeAllFee(); } // check if sender or reciver excluded from reward then do transfer accordingly if ( _isExcludedFromReward[sender] && !_isExcludedFromReward[recipient] ) { _transferFromExcluded(sender, recipient, amount); } else if ( !_isExcludedFromReward[sender] && _isExcludedFromReward[recipient] ) { _transferToExcluded(sender, recipient, amount); } else if ( _isExcludedFromReward[sender] && _isExcludedFromReward[recipient] ) { _transferBothExcluded(sender, recipient, amount); } else { _transferStandard(sender, recipient, amount); } } // if both sender and receiver are not excluded from reward function _transferStandard( address sender, address recipient, uint256 tAmount ) private { uint256 currentRate = _getRate(); uint256 tTransferAmount = tAmount.sub(totalFeePerTx(tAmount)); uint256 rAmount = tAmount.mul(currentRate); uint256 rTransferAmount = rAmount.sub( totalFeePerTx(tAmount).mul(currentRate) ); _checkMaxWalletAmount(recipient, tTransferAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeAllFee(sender,tAmount, currentRate); _takeBurnFee(sender,tAmount, currentRate); _reflectFee(tAmount); emit Transfer(sender, recipient, tTransferAmount); } // if sender is excluded from reward function _transferFromExcluded( address sender, address recipient, uint256 tAmount ) private { uint256 currentRate = _getRate(); uint256 tTransferAmount = tAmount.sub(totalFeePerTx(tAmount)); uint256 rAmount = tAmount.mul(currentRate); uint256 rTransferAmount = rAmount.sub( totalFeePerTx(tAmount).mul(currentRate) ); _checkMaxWalletAmount(recipient, tTransferAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); excludedTSupply = excludedTSupply.sub(tAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeAllFee(sender,tAmount, currentRate); _takeBurnFee(sender,tAmount, currentRate); _reflectFee(tAmount); emit Transfer(sender, recipient, tTransferAmount); } // if both sender and receiver are excluded from reward function _transferBothExcluded( address sender, address recipient, uint256 tAmount ) private { uint256 currentRate = _getRate(); uint256 tTransferAmount = tAmount.sub(totalFeePerTx(tAmount)); _checkMaxWalletAmount(recipient, tTransferAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); excludedTSupply = excludedTSupply.sub(tAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); excludedTSupply = excludedTSupply.add(tAmount); _takeAllFee(sender,tAmount, currentRate); _takeBurnFee(sender,tAmount, currentRate); _reflectFee(tAmount); emit Transfer(sender, recipient, tTransferAmount); } // if receiver is excluded from reward function _transferToExcluded( address sender, address recipient, uint256 tAmount ) private { uint256 currentRate = _getRate(); uint256 tTransferAmount = tAmount.sub(totalFeePerTx(tAmount)); uint256 rAmount = tAmount.mul(currentRate); _checkMaxWalletAmount(recipient, tTransferAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); excludedTSupply = excludedTSupply.add(tAmount); _takeAllFee(sender,tAmount, currentRate); _takeBurnFee(sender,tAmount, currentRate); _reflectFee(tAmount); emit Transfer(sender, recipient, tTransferAmount); } // for automatic redistribution among all holders on each tx function _reflectFee(uint256 tAmount) private { uint256 tFee = tAmount.mul(_currentReflectionFee).div(1e3); uint256 rFee = tFee.mul(_getRate()); _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } // take fees for liquidity, market/dev function _takeAllFee(address sender,uint256 tAmount, uint256 currentRate) internal { uint256 tFee = tAmount .mul(_currentLiquidityFee.add(_currentmarketWalletFee)) .div(1e3); if (tFee > 0) { _accumulatedLiquidity = _accumulatedLiquidity.add( tAmount.mul(_currentLiquidityFee).div(1e3) ); _accumulatedMarketWallet = _accumulatedMarketWallet.add( tAmount.mul(_currentmarketWalletFee).div(1e3) ); uint256 rFee = tFee.mul(currentRate); if (_isExcludedFromReward[address(this)]) _tOwned[address(this)] = _tOwned[address(this)].add(tFee); else _rOwned[address(this)] = _rOwned[address(this)].add(rFee); emit Transfer(sender, address(this), tFee); } } function _takeBurnFee(address sender,uint256 tAmount, uint256 currentRate) internal { uint256 burnFee = tAmount.mul(_currentBurnFee).div(1e3); uint256 rBurnFee = burnFee.mul(currentRate); _rOwned[burnAddress] = _rOwned[burnAddress].add(rBurnFee); emit Transfer(sender, burnAddress, burnFee); } function swapAndLiquify(address from, address to) private { // is the token balance of this contract address over the min number of // tokens that we need to initiate a swap + liquidity lock? // also, don't get caught in a circular liquidity event. // also, don't swap & liquify if sender is Dex pair. uint256 contractTokenBalance = balanceOf(address(this)); bool shouldSell = contractTokenBalance >= minTokenToSwap; if ( shouldSell && from != dexPair && swapAndLiquifyEnabled && !(from == address(this) && to == address(dexPair)) // swap 1 time ) { // approve contract _approve(address(this), address(dexRouter), contractTokenBalance); uint256 halfLiquid = _accumulatedLiquidity.div(2); uint256 otherHalfLiquid = _accumulatedLiquidity.sub(halfLiquid); uint256 tokenAmountToBeSwapped = contractTokenBalance.sub( otherHalfLiquid ); // now is to lock into liquidty pool Utils.swapTokensForEth(address(dexRouter), tokenAmountToBeSwapped); uint256 deltaBalance = address(this).balance; uint256 bnbToBeAddedToLiquidity = deltaBalance.mul(halfLiquid).div(tokenAmountToBeSwapped); uint256 bnbFormarketWallet = deltaBalance.sub(bnbToBeAddedToLiquidity); // sending bnb to award pool wallet if(bnbFormarketWallet > 0) marketWallet.transfer(bnbFormarketWallet); // add liquidity to Dex if(bnbToBeAddedToLiquidity > 0){ Utils.addLiquidity( address(dexRouter), owner(), otherHalfLiquid, bnbToBeAddedToLiquidity ); emit SwapAndLiquify( halfLiquid, bnbToBeAddedToLiquidity, otherHalfLiquid ); } // Reset current accumulated amount _accumulatedLiquidity = 0; _accumulatedMarketWallet = 0; } } } // Library for doing a swap on Dex library Utils { using SafeMath for uint256; function swapTokensForEth(address routerAddress, uint256 tokenAmount) internal { IDexRouter dexRouter = IDexRouter(routerAddress); // generate the Dex pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = dexRouter.WETH(); // make the swap dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of BNB path, address(this), block.timestamp + 300 ); } function addLiquidity( address routerAddress, address owner, uint256 tokenAmount, uint256 ethAmount ) internal { IDexRouter dexRouter = IDexRouter(routerAddress); // add the liquidity dexRouter.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable owner, block.timestamp + 300 ); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address payable","name":"_marketWallet","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"AntiBotStopEnableUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bnbReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","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":"Fees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"addSniperInList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"antiBotStopEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnFeeOnBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnFeeOnSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"enableOrDisableFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"enableOrDisableSwapAndLiquify","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"bool","name":"_value","type":"bool"}],"name":"includeOrExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"includeOrExcludeFromMaxHoldLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"includeOrExcludeFromMaxTxnLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"isExcludedFromMaxHoldLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"isExcludedFromMaxTxnLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isMaxHoldLimitValid","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isSniper","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFeeOnBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFeeOnSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketWalletFeeOnBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketWalletFeeOnSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxHoldingAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minBuyLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minTokenToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reflectionFeeOnBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reflectionFeeOnSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"removeSniperFromList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"removeStuckToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"setAntiBotStopEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_redistributionFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketWalletFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"}],"name":"setBuyFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMaxHoldingAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMinBuyLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMinTokenToSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_redistributionFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketWalletFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"}],"name":"setSellFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_newAddress","type":"address"}],"name":"setmarketWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalHolderDistribution","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052670de0b6b3a764000060095560095460001962000022919062000a7e565b60001962000031919062000ae5565b600a556040518060400160405280600b81526020017f5468652050686f656e6978000000000000000000000000000000000000000000815250600c90805190602001906200008192919062000995565b506040518060400160405280600781526020017f50686f656e697800000000000000000000000000000000000000000000000000815250600d9080519060200190620000cf92919062000995565b506009600e60006101000a81548160ff021916908360ff16021790555061dead601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555066038d7ea4c6800060125566470de4df82000060135566470de4df8200006014556001601760006101000a81548160ff0219169083151502179055506001601760016101000a81548160ff0219169083151502179055506000601760026101000a81548160ff0219169083151502179055506001601760036101000a81548160ff021916908315150217905550600060185560006019556096601a55600a601b556000601c556000601d556096601e55600a601f55348015620001f157600080fd5b5060405162006c4a38038062006c4a833981810160405281019062000217919062000b8a565b620002376200022b620008a060201b60201c565b620008a860201b60201c565b600a54600160006200024e6200096c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000332573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000358919062000c01565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003c0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e6919062000c01565b6040518363ffffffff1660e01b81526004016200040592919062000c44565b6020604051808303816000875af115801562000425573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200044b919062000c01565b600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600e60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160046000620004e26200096c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000620005a16200096c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000620007546200096c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200082f6200096c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60095460405162000890919062000c82565b60405180910390a3505062000d04565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054620009a39062000cce565b90600052602060002090601f016020900481019282620009c7576000855562000a13565b82601f10620009e257805160ff191683800117855562000a13565b8280016001018555821562000a13579182015b8281111562000a12578251825591602001919060010190620009f5565b5b50905062000a22919062000a26565b5090565b5b8082111562000a4157600081600090555060010162000a27565b5090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000a8b8262000a45565b915062000a988362000a45565b92508262000aab5762000aaa62000a4f565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000af28262000a45565b915062000aff8362000a45565b92508282101562000b155762000b1462000ab6565b5b828203905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000b528262000b25565b9050919050565b62000b648162000b45565b811462000b7057600080fd5b50565b60008151905062000b848162000b59565b92915050565b60006020828403121562000ba35762000ba262000b20565b5b600062000bb38482850162000b73565b91505092915050565b600062000bc98262000b25565b9050919050565b62000bdb8162000bbc565b811462000be757600080fd5b50565b60008151905062000bfb8162000bd0565b92915050565b60006020828403121562000c1a5762000c1962000b20565b5b600062000c2a8482850162000bea565b91505092915050565b62000c3e8162000bbc565b82525050565b600060408201905062000c5b600083018562000c33565b62000c6a602083018462000c33565b9392505050565b62000c7c8162000a45565b82525050565b600060208201905062000c99600083018462000c71565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000ce757607f821691505b6020821081141562000cfe5762000cfd62000c9f565b5b50919050565b615f368062000d146000396000f3fe6080604052600436106103785760003560e01c8063775a1f6c116101d1578063b81df74211610102578063dd7bd775116100a0578063f097ea1a1161006f578063f097ea1a14610d35578063f242ab4114610d5e578063f2fde38b14610d89578063fe1a711114610db25761037f565b8063dd7bd77514610c8d578063e4440a8614610cb6578063e6c84dc614610ce1578063ea5b9e8514610d0c5761037f565b8063cb5c474c116100dc578063cb5c474c14610bd1578063ce261d1014610bfc578063dd07382914610c25578063dd62ed3e14610c505761037f565b8063b81df74214610b54578063bded89fb14610b7f578063c624b42314610ba85761037f565b806399b770321161016f578063a457c2d711610149578063a457c2d714610a88578063a9059cbb14610ac5578063afee32a914610b02578063b0bc2a2d14610b2b5761037f565b806399b7703214610a0b5780639d3feb9a14610a345780639d854b6314610a5f5761037f565b806389f9a1d3116101ab57806389f9a1d31461095f5780638da5cb5b1461098a5780639285c1ca146109b557806395d89b41146109e05761037f565b8063775a1f6c146108ce57806388f82020146108f957806389f5649e146109365761037f565b806339509351116102ab5780635342acb41161024957806370a082311161022357806370a082311461081257806370d5ae051461084f578063715018a61461087a5780637584817c146108915761037f565b80635342acb4146107815780635e9416fc146107be5780636d268267146107e75761037f565b80634549b039116102855780634549b039146106c55780634a74bb021461070257806350a64fcd1461072d5780635249a820146107585761037f565b806339509351146106345780633aaa36e6146106715780633bd5d1731461069c5761037f565b806318160ddd116103185780632d838119116102f25780632d83811914610578578063313ce567146105b55780633326d7f2146105e057806338d6f8471461060b5761037f565b806318160ddd146104e55780631884f1e61461051057806323b872dd1461053b5761037f565b80630758d924116103545780630758d92414610417578063095ea7b3146104425780630f3a325f1461047f578063172fdc23146104bc5761037f565b8062281dc1146103845780629cb0e9146103af57806306fdde03146103ec5761037f565b3661037f57005b600080fd5b34801561039057600080fd5b50610399610ddd565b6040516103a69190614a17565b60405180910390f35b3480156103bb57600080fd5b506103d660048036038101906103d19190614a95565b610de3565b6040516103e39190614add565b60405180910390f35b3480156103f857600080fd5b50610401610e39565b60405161040e9190614b91565b60405180910390f35b34801561042357600080fd5b5061042c610ecb565b6040516104399190614c12565b60405180910390f35b34801561044e57600080fd5b5061046960048036038101906104649190614c59565b610ef1565b6040516104769190614add565b60405180910390f35b34801561048b57600080fd5b506104a660048036038101906104a19190614a95565b610f0f565b6040516104b39190614add565b60405180910390f35b3480156104c857600080fd5b506104e360048036038101906104de9190614cc5565b610f2f565b005b3480156104f157600080fd5b506104fa610fff565b6040516105079190614a17565b60405180910390f35b34801561051c57600080fd5b50610525611009565b6040516105329190614a17565b60405180910390f35b34801561054757600080fd5b50610562600480360381019061055d9190614cf2565b61100f565b60405161056f9190614add565b60405180910390f35b34801561058457600080fd5b5061059f600480360381019061059a9190614d45565b611252565b6040516105ac9190614a17565b60405180910390f35b3480156105c157600080fd5b506105ca6112c0565b6040516105d79190614d8e565b60405180910390f35b3480156105ec57600080fd5b506105f56112d7565b6040516106029190614a17565b60405180910390f35b34801561061757600080fd5b50610632600480360381019061062d9190614a95565b6112dd565b005b34801561064057600080fd5b5061065b60048036038101906106569190614c59565b6114d2565b6040516106689190614add565b60405180910390f35b34801561067d57600080fd5b50610686611585565b6040516106939190614add565b60405180910390f35b3480156106a857600080fd5b506106c360048036038101906106be9190614d45565b611598565b005b3480156106d157600080fd5b506106ec60048036038101906106e79190614da9565b61171f565b6040516106f99190614a17565b60405180910390f35b34801561070e57600080fd5b506107176117f4565b6040516107249190614add565b60405180910390f35b34801561073957600080fd5b50610742611807565b60405161074f9190614a17565b60405180910390f35b34801561076457600080fd5b5061077f600480360381019061077a9190614e27565b611811565b005b34801561078d57600080fd5b506107a860048036038101906107a39190614a95565b6118d1565b6040516107b59190614add565b60405180910390f35b3480156107ca57600080fd5b506107e560048036038101906107e09190614e54565b611927565b005b3480156107f357600080fd5b506107fc6119fe565b6040516108099190614a17565b60405180910390f35b34801561081e57600080fd5b5061083960048036038101906108349190614a95565b611a04565b6040516108469190614a17565b60405180910390f35b34801561085b57600080fd5b50610864611aef565b6040516108719190614ea3565b60405180910390f35b34801561088657600080fd5b5061088f611b15565b005b34801561089d57600080fd5b506108b860048036038101906108b39190614a95565b611b9d565b6040516108c59190614add565b60405180910390f35b3480156108da57600080fd5b506108e3611bf3565b6040516108f09190614a17565b60405180910390f35b34801561090557600080fd5b50610920600480360381019061091b9190614a95565b611bf9565b60405161092d9190614add565b60405180910390f35b34801561094257600080fd5b5061095d60048036038101906109589190614e54565b611c4f565b005b34801561096b57600080fd5b50610974611d26565b6040516109819190614a17565b60405180910390f35b34801561099657600080fd5b5061099f611d2c565b6040516109ac9190614ea3565b60405180910390f35b3480156109c157600080fd5b506109ca611d55565b6040516109d79190614add565b60405180910390f35b3480156109ec57600080fd5b506109f5611d68565b604051610a029190614b91565b60405180910390f35b348015610a1757600080fd5b50610a326004803603810190610a2d9190614d45565b611dfa565b005b348015610a4057600080fd5b50610a49611e80565b604051610a569190614a17565b60405180910390f35b348015610a6b57600080fd5b50610a866004803603810190610a819190614ebe565b611e86565b005b348015610a9457600080fd5b50610aaf6004803603810190610aaa9190614c59565b611f24565b604051610abc9190614add565b60405180910390f35b348015610ad157600080fd5b50610aec6004803603810190610ae79190614c59565b611ff1565b604051610af99190614add565b60405180910390f35b348015610b0e57600080fd5b50610b296004803603810190610b249190614ebe565b61200f565b005b348015610b3757600080fd5b50610b526004803603810190610b4d9190614cc5565b6120ad565b005b348015610b6057600080fd5b50610b69612146565b604051610b769190614a17565b60405180910390f35b348015610b8b57600080fd5b50610ba66004803603810190610ba19190614d45565b61214c565b005b348015610bb457600080fd5b50610bcf6004803603810190610bca9190614cc5565b6121d2565b005b348015610bdd57600080fd5b50610be66122a2565b604051610bf39190614a17565b60405180910390f35b348015610c0857600080fd5b50610c236004803603810190610c1e9190614c59565b6122a8565b005b348015610c3157600080fd5b50610c3a6123ae565b604051610c479190614a17565b60405180910390f35b348015610c5c57600080fd5b50610c776004803603810190610c729190614f25565b6123b4565b604051610c849190614a17565b60405180910390f35b348015610c9957600080fd5b50610cb46004803603810190610caf9190614a95565b61243b565b005b348015610cc257600080fd5b50610ccb61259e565b604051610cd89190614f74565b60405180910390f35b348015610ced57600080fd5b50610cf66125c4565b604051610d039190614a17565b60405180910390f35b348015610d1857600080fd5b50610d336004803603810190610d2e9190614e54565b6125ca565b005b348015610d4157600080fd5b50610d5c6004803603810190610d579190614d45565b6126a1565b005b348015610d6a57600080fd5b50610d73612727565b604051610d809190614ea3565b60405180910390f35b348015610d9557600080fd5b50610db06004803603810190610dab9190614a95565b61274d565b005b348015610dbe57600080fd5b50610dc7612845565b604051610dd49190614add565b60405180910390f35b601c5481565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6060600c8054610e4890614fbe565b80601f0160208091040260200160405190810160405280929190818152602001828054610e7490614fbe565b8015610ec15780601f10610e9657610100808354040283529160200191610ec1565b820191906000526020600020905b815481529060010190602001808311610ea457829003601f168201915b5050505050905090565b600e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610f05610efe612858565b8484612860565b6001905092915050565b60086020528060005260406000206000915054906101000a900460ff1681565b610f37612858565b73ffffffffffffffffffffffffffffffffffffffff16610f55611d2c565b73ffffffffffffffffffffffffffffffffffffffff1614610fab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa29061503c565b60405180910390fd5b80601760006101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15981604051610ff49190614add565b60405180910390a150565b6000600954905090565b60125481565b6000600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561109e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611095906150a8565b60405180910390fd5b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561112b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611122906150a8565b60405180910390fd5b601760029054906101000a900460ff161561117b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111729061513a565b60405180910390fd5b611186848484612a2b565b61124784611192612858565b61124285604051806060016040528060288152602001615ed960289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006111f8612858565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c339092919063ffffffff16565b612860565b600190509392505050565b6000600a54821115611299576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611290906151cc565b60405180910390fd5b60006112a3612c97565b90506112b88184612cc290919063ffffffff16565b915050919050565b6000600e60009054906101000a900460ff16905090565b60195481565b6112e5612858565b73ffffffffffffffffffffffffffffffffffffffff16611303611d2c565b73ffffffffffffffffffffffffffffffffffffffff1614611359576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113509061503c565b60405180910390fd5b600e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156113ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e190615238565b60405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611477576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146e906152a4565b60405180910390fd5b6001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600061157b6114df612858565b8461157685600360006114f0612858565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d0c90919063ffffffff16565b612860565b6001905092915050565b601760019054906101000a900460ff1681565b60006115a2612858565b9050600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611631576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162890615336565b60405180910390fd5b600061164d61163e612c97565b84612d6a90919063ffffffff16565b90506116a181600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612de590919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506116f981600a54612de590919063ffffffff16565b600a8190555061171483600b54612d0c90919063ffffffff16565b600b81905550505050565b6000600954831115611766576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175d906153c8565b60405180910390fd5b81611792576000611787611778612c97565b85612d6a90919063ffffffff16565b9050809150506117ee565b60006117ae61179f612c97565b85612d6a90919063ffffffff16565b905060006117e66117d76117c0612c97565b6117c988612e2f565b612d6a90919063ffffffff16565b83612de590919063ffffffff16565b905080925050505b92915050565b601760009054906101000a900460ff1681565b6000600b54905090565b611819612858565b73ffffffffffffffffffffffffffffffffffffffff16611837611d2c565b73ffffffffffffffffffffffffffffffffffffffff161461188d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118849061503c565b60405180910390fd5b80601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61192f612858565b73ffffffffffffffffffffffffffffffffffffffff1661194d611d2c565b73ffffffffffffffffffffffffffffffffffffffff16146119a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199a9061503c565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601b5481565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611a9f57600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611aea565b611ae7600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611252565b90505b919050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611b1d612858565b73ffffffffffffffffffffffffffffffffffffffff16611b3b611d2c565b73ffffffffffffffffffffffffffffffffffffffff1614611b91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b889061503c565b60405180910390fd5b611b9b6000612ea2565b565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601e5481565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611c57612858565b73ffffffffffffffffffffffffffffffffffffffff16611c75611d2c565b73ffffffffffffffffffffffffffffffffffffffff1614611ccb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc29061503c565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60135481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601760029054906101000a900460ff1681565b6060600d8054611d7790614fbe565b80601f0160208091040260200160405190810160405280929190818152602001828054611da390614fbe565b8015611df05780601f10611dc557610100808354040283529160200191611df0565b820191906000526020600020905b815481529060010190602001808311611dd357829003601f168201915b5050505050905090565b611e02612858565b73ffffffffffffffffffffffffffffffffffffffff16611e20611d2c565b73ffffffffffffffffffffffffffffffffffffffff1614611e76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6d9061503c565b60405180910390fd5b8060148190555050565b601f5481565b611e8e612858565b73ffffffffffffffffffffffffffffffffffffffff16611eac611d2c565b73ffffffffffffffffffffffffffffffffffffffff1614611f02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef99061503c565b60405180910390fd5b83601c8190555082601d8190555081601e8190555080601f8190555050505050565b6000611fe7611f31612858565b84611fe285604051806060016040528060258152602001615eb46025913960036000611f5b612858565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c339092919063ffffffff16565b612860565b6001905092915050565b6000612005611ffe612858565b8484612a2b565b6001905092915050565b612017612858565b73ffffffffffffffffffffffffffffffffffffffff16612035611d2c565b73ffffffffffffffffffffffffffffffffffffffff161461208b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120829061503c565b60405180910390fd5b836018819055508260198190555081601a8190555080601b8190555050505050565b6120b5612858565b73ffffffffffffffffffffffffffffffffffffffff166120d3611d2c565b73ffffffffffffffffffffffffffffffffffffffff1614612129576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121209061503c565b60405180910390fd5b80601760016101000a81548160ff02191690831515021790555050565b60145481565b612154612858565b73ffffffffffffffffffffffffffffffffffffffff16612172611d2c565b73ffffffffffffffffffffffffffffffffffffffff16146121c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121bf9061503c565b60405180910390fd5b8060138190555050565b6121da612858565b73ffffffffffffffffffffffffffffffffffffffff166121f8611d2c565b73ffffffffffffffffffffffffffffffffffffffff161461224e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122459061503c565b60405180910390fd5b80601760026101000a81548160ff0219169083151502179055507f4de571fd3e7dc38a16cdbb0d7ff4c4d80a6d06fbd12339f1fa56851761c46964816040516122979190614add565b60405180910390a150565b601a5481565b6122b0612858565b73ffffffffffffffffffffffffffffffffffffffff166122ce611d2c565b73ffffffffffffffffffffffffffffffffffffffff1614612324576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231b9061503c565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb612348611d2c565b836040518363ffffffff1660e01b81526004016123669291906153e8565b6020604051808303816000875af1158015612385573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123a99190615426565b505050565b60185481565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612443612858565b73ffffffffffffffffffffffffffffffffffffffff16612461611d2c565b73ffffffffffffffffffffffffffffffffffffffff16146124b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ae9061503c565b60405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612543576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253a9061549f565b60405180910390fd5b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601d5481565b6125d2612858565b73ffffffffffffffffffffffffffffffffffffffff166125f0611d2c565b73ffffffffffffffffffffffffffffffffffffffff1614612646576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263d9061503c565b60405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6126a9612858565b73ffffffffffffffffffffffffffffffffffffffff166126c7611d2c565b73ffffffffffffffffffffffffffffffffffffffff161461271d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127149061503c565b60405180910390fd5b8060128190555050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612755612858565b73ffffffffffffffffffffffffffffffffffffffff16612773611d2c565b73ffffffffffffffffffffffffffffffffffffffff16146127c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c09061503c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612839576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283090615531565b60405180910390fd5b61284281612ea2565b50565b601760039054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156128d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128c7906155c3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612940576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161293790615655565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612a1e9190614a17565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612a9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a92906156e7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612b0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0290615779565b60405180910390fd5b60008111612b4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b459061580b565b60405180910390fd5b612b588383612f66565b600060019050600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612bff5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80612c175750601760019054906101000a900460ff16155b15612c2157600090505b612c2d84848484613278565b50505050565b6000838311158290612c7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c729190614b91565b60405180910390fd5b5060008385612c8a919061585a565b9050809150509392505050565b6000806000612ca4613796565b91509150612cbb8183612cc290919063ffffffff16565b9250505090565b6000612d0483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613811565b905092915050565b6000808284612d1b919061588e565b905083811015612d60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d5790615930565b60405180910390fd5b8091505092915050565b600080831415612d7d5760009050612ddf565b60008284612d8b9190615950565b9050828482612d9a91906159d9565b14612dda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dd190615a7c565b60405180910390fd5b809150505b92915050565b6000612e2783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612c33565b905092915050565b600080612e976103e8612e89612e7a612e55602354602254612d0c90919063ffffffff16565b612e6c602154602054612d0c90919063ffffffff16565b612d0c90919063ffffffff16565b86612d6a90919063ffffffff16565b612cc290919063ffffffff16565b905080915050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000612f7130611a04565b905060006012548210159050808015612fd85750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015612ff05750601760009054906101000a900460ff165b801561308157503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561307f5750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b155b15613272576130b330600e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612860565b60006130cb6002602454612cc290919063ffffffff16565b905060006130e482602454612de590919063ffffffff16565b905060006130fb8286612de590919063ffffffff16565b9050613129600e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682613874565b60004790506000613155836131478785612d6a90919063ffffffff16565b612cc290919063ffffffff16565b9050600061316c8284612de590919063ffffffff16565b905060008111156131e157601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156131df573d6000803e3d6000fd5b505b600082111561325b5761321f600e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613218611d2c565b8785613a5a565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56186838760405161325293929190615a9c565b60405180910390a15b600060248190555060006025819055505050505050505b50505050565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613305576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132fc906150a8565b60405180910390fd5b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613392576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613389906150a8565b60405180910390fd5b601760029054906101000a900460ff16156133e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133d99061513a565b60405180910390fd5b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661347957601454821115613478576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161346f90615b45565b60405180910390fd5b5b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156134d35750805b156134e5576134e0613afe565b61355b565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561353f5750805b156135515761354c613b24565b61355a565b613559613b4a565b5b5b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156135fe5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156136135761360e848484613b6c565b613790565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156136b65750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156136cb576136c6848484613dbb565b61378f565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561376d5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156137825761377d848484613fd8565b61378e565b61378d8484846141f8565b5b5b5b50505050565b6000806000600a549050600060095490506137bc60165483612de590919063ffffffff16565b91506137d360155482612de590919063ffffffff16565b90506137ec600954600a54612cc290919063ffffffff16565b82101561380457600a5460095493509350505061380d565b81819350935050505b9091565b60008083118290613858576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161384f9190614b91565b60405180910390fd5b506000838561386791906159d9565b9050809150509392505050565b60008290506000600267ffffffffffffffff81111561389657613895615b65565b5b6040519080825280602002602001820160405280156138c45781602001602082028036833780820191505090505b50905030816000815181106138dc576138db615b94565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613961573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139859190615bd8565b8160018151811061399957613998615b94565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663791ac947846000843061012c42613a02919061588e565b6040518663ffffffff1660e01b8152600401613a22959493929190615cfe565b600060405180830381600087803b158015613a3c57600080fd5b505af1158015613a50573d6000803e3d6000fd5b5050505050505050565b60008490508073ffffffffffffffffffffffffffffffffffffffff1663f305d7198330866000808a61012c42613a90919061588e565b6040518863ffffffff1660e01b8152600401613ab196959493929190615d58565b60606040518083038185885af1158015613acf573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613af49190615dce565b5050505050505050565b601854602081905550601954602181905550601a54602281905550601b54602381905550565b601c54602081905550601d54602181905550601e54602281905550601f54602381905550565b6000602081905550600060218190555060006022819055506000602381905550565b6000613b76612c97565b90506000613b95613b8684612e2f565b84612de590919063ffffffff16565b90506000613bac8385612d6a90919063ffffffff16565b90506000613bdd613bce85613bc088612e2f565b612d6a90919063ffffffff16565b83612de590919063ffffffff16565b9050613be9868461442c565b613c3b85600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612de590919063ffffffff16565b600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613c9385601554612de590919063ffffffff16565b601581905550613ceb81600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d0c90919063ffffffff16565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613d398786866144f7565b613d448786866147cd565b613d4d85614978565b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613daa9190614a17565b60405180910390a350505050505050565b6000613dc5612c97565b90506000613de4613dd584612e2f565b84612de590919063ffffffff16565b90506000613dfb8385612d6a90919063ffffffff16565b9050613e07858361442c565b613e5981600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612de590919063ffffffff16565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613eee82600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d0c90919063ffffffff16565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f4684601554612d0c90919063ffffffff16565b601581905550613f578685856144f7565b613f628685856147cd565b613f6b84614978565b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613fc89190614a17565b60405180910390a3505050505050565b6000613fe2612c97565b90506000614001613ff284612e2f565b84612de590919063ffffffff16565b905061400d848261442c565b61405f83600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612de590919063ffffffff16565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506140b783601554612de590919063ffffffff16565b60158190555061410f81600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d0c90919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061416783601554612d0c90919063ffffffff16565b6015819055506141788584846144f7565b6141838584846147cd565b61418c83614978565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516141e99190614a17565b60405180910390a35050505050565b6000614202612c97565b9050600061422161421284612e2f565b84612de590919063ffffffff16565b905060006142388385612d6a90919063ffffffff16565b9050600061426961425a8561424c88612e2f565b612d6a90919063ffffffff16565b83612de590919063ffffffff16565b9050614275868461442c565b6142c782600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612de590919063ffffffff16565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061435c81600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d0c90919063ffffffff16565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506143aa8786866144f7565b6143b58786866147cd565b6143be85614978565b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161441b9190614a17565b60405180910390a350505050505050565b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166144f357601760039054906101000a900460ff16156144f2576013546144b0826144a285611a04565b612d0c90919063ffffffff16565b11156144f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016144e890615e93565b60405180910390fd5b5b5b5050565b60006145366103e8614528614519602254602154612d0c90919063ffffffff16565b86612d6a90919063ffffffff16565b612cc290919063ffffffff16565b905060008111156147c75761457e61456d6103e861455f60215487612d6a90919063ffffffff16565b612cc290919063ffffffff16565b602454612d0c90919063ffffffff16565b6024819055506145c16145b06103e86145a260225487612d6a90919063ffffffff16565b612cc290919063ffffffff16565b602554612d0c90919063ffffffff16565b60258190555060006145dc8383612d6a90919063ffffffff16565b9050600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156146ca5761468282600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d0c90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614760565b61471c81600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d0c90919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b3073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516147bd9190614a17565b60405180910390a3505b50505050565b60006147f86103e86147ea60235486612d6a90919063ffffffff16565b612cc290919063ffffffff16565b9050600061480f8383612d6a90919063ffffffff16565b90506148858160016000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d0c90919063ffffffff16565b60016000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516149699190614a17565b60405180910390a35050505050565b60006149a36103e861499560205485612d6a90919063ffffffff16565b612cc290919063ffffffff16565b905060006149c16149b2612c97565b83612d6a90919063ffffffff16565b90506149d881600a54612de590919063ffffffff16565b600a819055506149f382600b54612d0c90919063ffffffff16565b600b81905550505050565b6000819050919050565b614a11816149fe565b82525050565b6000602082019050614a2c6000830184614a08565b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000614a6282614a37565b9050919050565b614a7281614a57565b8114614a7d57600080fd5b50565b600081359050614a8f81614a69565b92915050565b600060208284031215614aab57614aaa614a32565b5b6000614ab984828501614a80565b91505092915050565b60008115159050919050565b614ad781614ac2565b82525050565b6000602082019050614af26000830184614ace565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015614b32578082015181840152602081019050614b17565b83811115614b41576000848401525b50505050565b6000601f19601f8301169050919050565b6000614b6382614af8565b614b6d8185614b03565b9350614b7d818560208601614b14565b614b8681614b47565b840191505092915050565b60006020820190508181036000830152614bab8184614b58565b905092915050565b6000819050919050565b6000614bd8614bd3614bce84614a37565b614bb3565b614a37565b9050919050565b6000614bea82614bbd565b9050919050565b6000614bfc82614bdf565b9050919050565b614c0c81614bf1565b82525050565b6000602082019050614c276000830184614c03565b92915050565b614c36816149fe565b8114614c4157600080fd5b50565b600081359050614c5381614c2d565b92915050565b60008060408385031215614c7057614c6f614a32565b5b6000614c7e85828601614a80565b9250506020614c8f85828601614c44565b9150509250929050565b614ca281614ac2565b8114614cad57600080fd5b50565b600081359050614cbf81614c99565b92915050565b600060208284031215614cdb57614cda614a32565b5b6000614ce984828501614cb0565b91505092915050565b600080600060608486031215614d0b57614d0a614a32565b5b6000614d1986828701614a80565b9350506020614d2a86828701614a80565b9250506040614d3b86828701614c44565b9150509250925092565b600060208284031215614d5b57614d5a614a32565b5b6000614d6984828501614c44565b91505092915050565b600060ff82169050919050565b614d8881614d72565b82525050565b6000602082019050614da36000830184614d7f565b92915050565b60008060408385031215614dc057614dbf614a32565b5b6000614dce85828601614c44565b9250506020614ddf85828601614cb0565b9150509250929050565b6000614df482614a37565b9050919050565b614e0481614de9565b8114614e0f57600080fd5b50565b600081359050614e2181614dfb565b92915050565b600060208284031215614e3d57614e3c614a32565b5b6000614e4b84828501614e12565b91505092915050565b60008060408385031215614e6b57614e6a614a32565b5b6000614e7985828601614a80565b9250506020614e8a85828601614cb0565b9150509250929050565b614e9d81614a57565b82525050565b6000602082019050614eb86000830184614e94565b92915050565b60008060008060808587031215614ed857614ed7614a32565b5b6000614ee687828801614c44565b9450506020614ef787828801614c44565b9350506040614f0887828801614c44565b9250506060614f1987828801614c44565b91505092959194509250565b60008060408385031215614f3c57614f3b614a32565b5b6000614f4a85828601614a80565b9250506020614f5b85828601614a80565b9150509250929050565b614f6e81614de9565b82525050565b6000602082019050614f896000830184614f65565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614fd657607f821691505b60208210811415614fea57614fe9614f8f565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000615026602083614b03565b915061503182614ff0565b602082019050919050565b6000602082019050818103600083015261505581615019565b9050919050565b7f536e697065722064657465637465640000000000000000000000000000000000600082015250565b6000615092600f83614b03565b915061509d8261505c565b602082019050919050565b600060208201905081810360008301526150c181615085565b9050919050565b7f54726164696e67207368696674656420666f7220626f742064656c6574696f6e60008201527f2e00000000000000000000000000000000000000000000000000000000000000602082015250565b6000615124602183614b03565b915061512f826150c8565b604082019050919050565b6000602082019050818103600083015261515381615117565b9050919050565b7f546f6b656e3a20416d6f756e74206d757374206265206c657373207468616e2060008201527f746f74616c207265666c656374696f6e73000000000000000000000000000000602082015250565b60006151b6603183614b03565b91506151c18261515a565b604082019050919050565b600060208201905081810360008301526151e5816151a9565b9050919050565b7f57652063616e206e6f7420626c61636b6c69737420726f757465720000000000600082015250565b6000615222601b83614b03565b915061522d826151ec565b602082019050919050565b6000602082019050818103600083015261525181615215565b9050919050565b7f536e6970657220616c7265616479206578697374000000000000000000000000600082015250565b600061528e601483614b03565b915061529982615258565b602082019050919050565b600060208201905081810360008301526152bd81615281565b9050919050565b7f546f6b656e3a204578636c75646564206164647265737365732063616e6e6f7460008201527f2063616c6c20746869732066756e6374696f6e00000000000000000000000000602082015250565b6000615320603383614b03565b915061532b826152c4565b604082019050919050565b6000602082019050818103600083015261534f81615313565b9050919050565b7f42455032303a20416d6f756e74206d757374206265206c657373207468616e2060008201527f737570706c790000000000000000000000000000000000000000000000000000602082015250565b60006153b2602683614b03565b91506153bd82615356565b604082019050919050565b600060208201905081810360008301526153e1816153a5565b9050919050565b60006040820190506153fd6000830185614e94565b61540a6020830184614a08565b9392505050565b60008151905061542081614c99565b92915050565b60006020828403121561543c5761543b614a32565b5b600061544a84828501615411565b91505092915050565b7f4e6f74206120736e697065720000000000000000000000000000000000000000600082015250565b6000615489600c83614b03565b915061549482615453565b602082019050919050565b600060208201905081810360008301526154b88161547c565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061551b602683614b03565b9150615526826154bf565b604082019050919050565b6000602082019050818103600083015261554a8161550e565b9050919050565b7f546f6b656e3a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006155ad602483614b03565b91506155b882615551565b604082019050919050565b600060208201905081810360008301526155dc816155a0565b9050919050565b7f546f6b656e3a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061563f602283614b03565b915061564a826155e3565b604082019050919050565b6000602082019050818103600083015261566e81615632565b9050919050565b7f546f6b656e3a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006156d1602583614b03565b91506156dc82615675565b604082019050919050565b60006020820190508181036000830152615700816156c4565b9050919050565b7f546f6b656e3a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000615763602383614b03565b915061576e82615707565b604082019050919050565b6000602082019050818103600083015261579281615756565b9050919050565b7f546f6b656e3a207472616e7366657220616d6f756e74206d757374206265206760008201527f726561746572207468616e207a65726f00000000000000000000000000000000602082015250565b60006157f5603083614b03565b915061580082615799565b604082019050919050565b60006020820190508181036000830152615824816157e8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000615865826149fe565b9150615870836149fe565b9250828210156158835761588261582b565b5b828203905092915050565b6000615899826149fe565b91506158a4836149fe565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156158d9576158d861582b565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061591a601b83614b03565b9150615925826158e4565b602082019050919050565b600060208201905081810360008301526159498161590d565b9050919050565b600061595b826149fe565b9150615966836149fe565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561599f5761599e61582b565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006159e4826149fe565b91506159ef836149fe565b9250826159ff576159fe6159aa565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000615a66602183614b03565b9150615a7182615a0a565b604082019050919050565b60006020820190508181036000830152615a9581615a59565b9050919050565b6000606082019050615ab16000830186614a08565b615abe6020830185614a08565b615acb6040830184614a08565b949350505050565b7f416d6f756e74206d7573742062652067726561746572207468616e206d696e6960008201527f6d756d20627579204c696d697400000000000000000000000000000000000000602082015250565b6000615b2f602d83614b03565b9150615b3a82615ad3565b604082019050919050565b60006020820190508181036000830152615b5e81615b22565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050615bd281614a69565b92915050565b600060208284031215615bee57615bed614a32565b5b6000615bfc84828501615bc3565b91505092915050565b6000819050919050565b6000615c2a615c25615c2084615c05565b614bb3565b6149fe565b9050919050565b615c3a81615c0f565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615c7581614a57565b82525050565b6000615c878383615c6c565b60208301905092915050565b6000602082019050919050565b6000615cab82615c40565b615cb58185615c4b565b9350615cc083615c5c565b8060005b83811015615cf1578151615cd88882615c7b565b9750615ce383615c93565b925050600181019050615cc4565b5085935050505092915050565b600060a082019050615d136000830188614a08565b615d206020830187615c31565b8181036040830152615d328186615ca0565b9050615d416060830185614e94565b615d4e6080830184614a08565b9695505050505050565b600060c082019050615d6d6000830189614e94565b615d7a6020830188614a08565b615d876040830187615c31565b615d946060830186615c31565b615da16080830185614e94565b615dae60a0830184614a08565b979650505050505050565b600081519050615dc881614c2d565b92915050565b600080600060608486031215615de757615de6614a32565b5b6000615df586828701615db9565b9350506020615e0686828701615db9565b9250506040615e1786828701615db9565b9150509250925092565b7f42455032303a20616d6f756e7420657863656564206d617820686f6c64696e6760008201527f206c696d69740000000000000000000000000000000000000000000000000000602082015250565b6000615e7d602683614b03565b9150615e8882615e21565b604082019050919050565b60006020820190508181036000830152615eac81615e70565b905091905056fe546f6b656e3a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f546f6b656e3a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212204e0c5ea04ee6a57c2d48352decd3d798a166fb2e1a986f6327f66906904ca79864736f6c634300080a0033000000000000000000000000305ca5675f7431fdb51ad40527e41a16477226d5
Deployed Bytecode
0x6080604052600436106103785760003560e01c8063775a1f6c116101d1578063b81df74211610102578063dd7bd775116100a0578063f097ea1a1161006f578063f097ea1a14610d35578063f242ab4114610d5e578063f2fde38b14610d89578063fe1a711114610db25761037f565b8063dd7bd77514610c8d578063e4440a8614610cb6578063e6c84dc614610ce1578063ea5b9e8514610d0c5761037f565b8063cb5c474c116100dc578063cb5c474c14610bd1578063ce261d1014610bfc578063dd07382914610c25578063dd62ed3e14610c505761037f565b8063b81df74214610b54578063bded89fb14610b7f578063c624b42314610ba85761037f565b806399b770321161016f578063a457c2d711610149578063a457c2d714610a88578063a9059cbb14610ac5578063afee32a914610b02578063b0bc2a2d14610b2b5761037f565b806399b7703214610a0b5780639d3feb9a14610a345780639d854b6314610a5f5761037f565b806389f9a1d3116101ab57806389f9a1d31461095f5780638da5cb5b1461098a5780639285c1ca146109b557806395d89b41146109e05761037f565b8063775a1f6c146108ce57806388f82020146108f957806389f5649e146109365761037f565b806339509351116102ab5780635342acb41161024957806370a082311161022357806370a082311461081257806370d5ae051461084f578063715018a61461087a5780637584817c146108915761037f565b80635342acb4146107815780635e9416fc146107be5780636d268267146107e75761037f565b80634549b039116102855780634549b039146106c55780634a74bb021461070257806350a64fcd1461072d5780635249a820146107585761037f565b806339509351146106345780633aaa36e6146106715780633bd5d1731461069c5761037f565b806318160ddd116103185780632d838119116102f25780632d83811914610578578063313ce567146105b55780633326d7f2146105e057806338d6f8471461060b5761037f565b806318160ddd146104e55780631884f1e61461051057806323b872dd1461053b5761037f565b80630758d924116103545780630758d92414610417578063095ea7b3146104425780630f3a325f1461047f578063172fdc23146104bc5761037f565b8062281dc1146103845780629cb0e9146103af57806306fdde03146103ec5761037f565b3661037f57005b600080fd5b34801561039057600080fd5b50610399610ddd565b6040516103a69190614a17565b60405180910390f35b3480156103bb57600080fd5b506103d660048036038101906103d19190614a95565b610de3565b6040516103e39190614add565b60405180910390f35b3480156103f857600080fd5b50610401610e39565b60405161040e9190614b91565b60405180910390f35b34801561042357600080fd5b5061042c610ecb565b6040516104399190614c12565b60405180910390f35b34801561044e57600080fd5b5061046960048036038101906104649190614c59565b610ef1565b6040516104769190614add565b60405180910390f35b34801561048b57600080fd5b506104a660048036038101906104a19190614a95565b610f0f565b6040516104b39190614add565b60405180910390f35b3480156104c857600080fd5b506104e360048036038101906104de9190614cc5565b610f2f565b005b3480156104f157600080fd5b506104fa610fff565b6040516105079190614a17565b60405180910390f35b34801561051c57600080fd5b50610525611009565b6040516105329190614a17565b60405180910390f35b34801561054757600080fd5b50610562600480360381019061055d9190614cf2565b61100f565b60405161056f9190614add565b60405180910390f35b34801561058457600080fd5b5061059f600480360381019061059a9190614d45565b611252565b6040516105ac9190614a17565b60405180910390f35b3480156105c157600080fd5b506105ca6112c0565b6040516105d79190614d8e565b60405180910390f35b3480156105ec57600080fd5b506105f56112d7565b6040516106029190614a17565b60405180910390f35b34801561061757600080fd5b50610632600480360381019061062d9190614a95565b6112dd565b005b34801561064057600080fd5b5061065b60048036038101906106569190614c59565b6114d2565b6040516106689190614add565b60405180910390f35b34801561067d57600080fd5b50610686611585565b6040516106939190614add565b60405180910390f35b3480156106a857600080fd5b506106c360048036038101906106be9190614d45565b611598565b005b3480156106d157600080fd5b506106ec60048036038101906106e79190614da9565b61171f565b6040516106f99190614a17565b60405180910390f35b34801561070e57600080fd5b506107176117f4565b6040516107249190614add565b60405180910390f35b34801561073957600080fd5b50610742611807565b60405161074f9190614a17565b60405180910390f35b34801561076457600080fd5b5061077f600480360381019061077a9190614e27565b611811565b005b34801561078d57600080fd5b506107a860048036038101906107a39190614a95565b6118d1565b6040516107b59190614add565b60405180910390f35b3480156107ca57600080fd5b506107e560048036038101906107e09190614e54565b611927565b005b3480156107f357600080fd5b506107fc6119fe565b6040516108099190614a17565b60405180910390f35b34801561081e57600080fd5b5061083960048036038101906108349190614a95565b611a04565b6040516108469190614a17565b60405180910390f35b34801561085b57600080fd5b50610864611aef565b6040516108719190614ea3565b60405180910390f35b34801561088657600080fd5b5061088f611b15565b005b34801561089d57600080fd5b506108b860048036038101906108b39190614a95565b611b9d565b6040516108c59190614add565b60405180910390f35b3480156108da57600080fd5b506108e3611bf3565b6040516108f09190614a17565b60405180910390f35b34801561090557600080fd5b50610920600480360381019061091b9190614a95565b611bf9565b60405161092d9190614add565b60405180910390f35b34801561094257600080fd5b5061095d60048036038101906109589190614e54565b611c4f565b005b34801561096b57600080fd5b50610974611d26565b6040516109819190614a17565b60405180910390f35b34801561099657600080fd5b5061099f611d2c565b6040516109ac9190614ea3565b60405180910390f35b3480156109c157600080fd5b506109ca611d55565b6040516109d79190614add565b60405180910390f35b3480156109ec57600080fd5b506109f5611d68565b604051610a029190614b91565b60405180910390f35b348015610a1757600080fd5b50610a326004803603810190610a2d9190614d45565b611dfa565b005b348015610a4057600080fd5b50610a49611e80565b604051610a569190614a17565b60405180910390f35b348015610a6b57600080fd5b50610a866004803603810190610a819190614ebe565b611e86565b005b348015610a9457600080fd5b50610aaf6004803603810190610aaa9190614c59565b611f24565b604051610abc9190614add565b60405180910390f35b348015610ad157600080fd5b50610aec6004803603810190610ae79190614c59565b611ff1565b604051610af99190614add565b60405180910390f35b348015610b0e57600080fd5b50610b296004803603810190610b249190614ebe565b61200f565b005b348015610b3757600080fd5b50610b526004803603810190610b4d9190614cc5565b6120ad565b005b348015610b6057600080fd5b50610b69612146565b604051610b769190614a17565b60405180910390f35b348015610b8b57600080fd5b50610ba66004803603810190610ba19190614d45565b61214c565b005b348015610bb457600080fd5b50610bcf6004803603810190610bca9190614cc5565b6121d2565b005b348015610bdd57600080fd5b50610be66122a2565b604051610bf39190614a17565b60405180910390f35b348015610c0857600080fd5b50610c236004803603810190610c1e9190614c59565b6122a8565b005b348015610c3157600080fd5b50610c3a6123ae565b604051610c479190614a17565b60405180910390f35b348015610c5c57600080fd5b50610c776004803603810190610c729190614f25565b6123b4565b604051610c849190614a17565b60405180910390f35b348015610c9957600080fd5b50610cb46004803603810190610caf9190614a95565b61243b565b005b348015610cc257600080fd5b50610ccb61259e565b604051610cd89190614f74565b60405180910390f35b348015610ced57600080fd5b50610cf66125c4565b604051610d039190614a17565b60405180910390f35b348015610d1857600080fd5b50610d336004803603810190610d2e9190614e54565b6125ca565b005b348015610d4157600080fd5b50610d5c6004803603810190610d579190614d45565b6126a1565b005b348015610d6a57600080fd5b50610d73612727565b604051610d809190614ea3565b60405180910390f35b348015610d9557600080fd5b50610db06004803603810190610dab9190614a95565b61274d565b005b348015610dbe57600080fd5b50610dc7612845565b604051610dd49190614add565b60405180910390f35b601c5481565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6060600c8054610e4890614fbe565b80601f0160208091040260200160405190810160405280929190818152602001828054610e7490614fbe565b8015610ec15780601f10610e9657610100808354040283529160200191610ec1565b820191906000526020600020905b815481529060010190602001808311610ea457829003601f168201915b5050505050905090565b600e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610f05610efe612858565b8484612860565b6001905092915050565b60086020528060005260406000206000915054906101000a900460ff1681565b610f37612858565b73ffffffffffffffffffffffffffffffffffffffff16610f55611d2c565b73ffffffffffffffffffffffffffffffffffffffff1614610fab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa29061503c565b60405180910390fd5b80601760006101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15981604051610ff49190614add565b60405180910390a150565b6000600954905090565b60125481565b6000600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561109e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611095906150a8565b60405180910390fd5b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561112b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611122906150a8565b60405180910390fd5b601760029054906101000a900460ff161561117b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111729061513a565b60405180910390fd5b611186848484612a2b565b61124784611192612858565b61124285604051806060016040528060288152602001615ed960289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006111f8612858565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c339092919063ffffffff16565b612860565b600190509392505050565b6000600a54821115611299576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611290906151cc565b60405180910390fd5b60006112a3612c97565b90506112b88184612cc290919063ffffffff16565b915050919050565b6000600e60009054906101000a900460ff16905090565b60195481565b6112e5612858565b73ffffffffffffffffffffffffffffffffffffffff16611303611d2c565b73ffffffffffffffffffffffffffffffffffffffff1614611359576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113509061503c565b60405180910390fd5b600e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156113ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e190615238565b60405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611477576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146e906152a4565b60405180910390fd5b6001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600061157b6114df612858565b8461157685600360006114f0612858565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d0c90919063ffffffff16565b612860565b6001905092915050565b601760019054906101000a900460ff1681565b60006115a2612858565b9050600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611631576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162890615336565b60405180910390fd5b600061164d61163e612c97565b84612d6a90919063ffffffff16565b90506116a181600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612de590919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506116f981600a54612de590919063ffffffff16565b600a8190555061171483600b54612d0c90919063ffffffff16565b600b81905550505050565b6000600954831115611766576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175d906153c8565b60405180910390fd5b81611792576000611787611778612c97565b85612d6a90919063ffffffff16565b9050809150506117ee565b60006117ae61179f612c97565b85612d6a90919063ffffffff16565b905060006117e66117d76117c0612c97565b6117c988612e2f565b612d6a90919063ffffffff16565b83612de590919063ffffffff16565b905080925050505b92915050565b601760009054906101000a900460ff1681565b6000600b54905090565b611819612858565b73ffffffffffffffffffffffffffffffffffffffff16611837611d2c565b73ffffffffffffffffffffffffffffffffffffffff161461188d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118849061503c565b60405180910390fd5b80601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61192f612858565b73ffffffffffffffffffffffffffffffffffffffff1661194d611d2c565b73ffffffffffffffffffffffffffffffffffffffff16146119a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199a9061503c565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601b5481565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611a9f57600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611aea565b611ae7600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611252565b90505b919050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611b1d612858565b73ffffffffffffffffffffffffffffffffffffffff16611b3b611d2c565b73ffffffffffffffffffffffffffffffffffffffff1614611b91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b889061503c565b60405180910390fd5b611b9b6000612ea2565b565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601e5481565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611c57612858565b73ffffffffffffffffffffffffffffffffffffffff16611c75611d2c565b73ffffffffffffffffffffffffffffffffffffffff1614611ccb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc29061503c565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60135481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601760029054906101000a900460ff1681565b6060600d8054611d7790614fbe565b80601f0160208091040260200160405190810160405280929190818152602001828054611da390614fbe565b8015611df05780601f10611dc557610100808354040283529160200191611df0565b820191906000526020600020905b815481529060010190602001808311611dd357829003601f168201915b5050505050905090565b611e02612858565b73ffffffffffffffffffffffffffffffffffffffff16611e20611d2c565b73ffffffffffffffffffffffffffffffffffffffff1614611e76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6d9061503c565b60405180910390fd5b8060148190555050565b601f5481565b611e8e612858565b73ffffffffffffffffffffffffffffffffffffffff16611eac611d2c565b73ffffffffffffffffffffffffffffffffffffffff1614611f02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef99061503c565b60405180910390fd5b83601c8190555082601d8190555081601e8190555080601f8190555050505050565b6000611fe7611f31612858565b84611fe285604051806060016040528060258152602001615eb46025913960036000611f5b612858565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c339092919063ffffffff16565b612860565b6001905092915050565b6000612005611ffe612858565b8484612a2b565b6001905092915050565b612017612858565b73ffffffffffffffffffffffffffffffffffffffff16612035611d2c565b73ffffffffffffffffffffffffffffffffffffffff161461208b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120829061503c565b60405180910390fd5b836018819055508260198190555081601a8190555080601b8190555050505050565b6120b5612858565b73ffffffffffffffffffffffffffffffffffffffff166120d3611d2c565b73ffffffffffffffffffffffffffffffffffffffff1614612129576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121209061503c565b60405180910390fd5b80601760016101000a81548160ff02191690831515021790555050565b60145481565b612154612858565b73ffffffffffffffffffffffffffffffffffffffff16612172611d2c565b73ffffffffffffffffffffffffffffffffffffffff16146121c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121bf9061503c565b60405180910390fd5b8060138190555050565b6121da612858565b73ffffffffffffffffffffffffffffffffffffffff166121f8611d2c565b73ffffffffffffffffffffffffffffffffffffffff161461224e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122459061503c565b60405180910390fd5b80601760026101000a81548160ff0219169083151502179055507f4de571fd3e7dc38a16cdbb0d7ff4c4d80a6d06fbd12339f1fa56851761c46964816040516122979190614add565b60405180910390a150565b601a5481565b6122b0612858565b73ffffffffffffffffffffffffffffffffffffffff166122ce611d2c565b73ffffffffffffffffffffffffffffffffffffffff1614612324576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231b9061503c565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb612348611d2c565b836040518363ffffffff1660e01b81526004016123669291906153e8565b6020604051808303816000875af1158015612385573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123a99190615426565b505050565b60185481565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612443612858565b73ffffffffffffffffffffffffffffffffffffffff16612461611d2c565b73ffffffffffffffffffffffffffffffffffffffff16146124b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ae9061503c565b60405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612543576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253a9061549f565b60405180910390fd5b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601d5481565b6125d2612858565b73ffffffffffffffffffffffffffffffffffffffff166125f0611d2c565b73ffffffffffffffffffffffffffffffffffffffff1614612646576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263d9061503c565b60405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6126a9612858565b73ffffffffffffffffffffffffffffffffffffffff166126c7611d2c565b73ffffffffffffffffffffffffffffffffffffffff161461271d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127149061503c565b60405180910390fd5b8060128190555050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612755612858565b73ffffffffffffffffffffffffffffffffffffffff16612773611d2c565b73ffffffffffffffffffffffffffffffffffffffff16146127c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c09061503c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612839576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283090615531565b60405180910390fd5b61284281612ea2565b50565b601760039054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156128d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128c7906155c3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612940576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161293790615655565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612a1e9190614a17565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612a9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a92906156e7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612b0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0290615779565b60405180910390fd5b60008111612b4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b459061580b565b60405180910390fd5b612b588383612f66565b600060019050600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612bff5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80612c175750601760019054906101000a900460ff16155b15612c2157600090505b612c2d84848484613278565b50505050565b6000838311158290612c7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c729190614b91565b60405180910390fd5b5060008385612c8a919061585a565b9050809150509392505050565b6000806000612ca4613796565b91509150612cbb8183612cc290919063ffffffff16565b9250505090565b6000612d0483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613811565b905092915050565b6000808284612d1b919061588e565b905083811015612d60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d5790615930565b60405180910390fd5b8091505092915050565b600080831415612d7d5760009050612ddf565b60008284612d8b9190615950565b9050828482612d9a91906159d9565b14612dda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dd190615a7c565b60405180910390fd5b809150505b92915050565b6000612e2783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612c33565b905092915050565b600080612e976103e8612e89612e7a612e55602354602254612d0c90919063ffffffff16565b612e6c602154602054612d0c90919063ffffffff16565b612d0c90919063ffffffff16565b86612d6a90919063ffffffff16565b612cc290919063ffffffff16565b905080915050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000612f7130611a04565b905060006012548210159050808015612fd85750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015612ff05750601760009054906101000a900460ff165b801561308157503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561307f5750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b155b15613272576130b330600e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612860565b60006130cb6002602454612cc290919063ffffffff16565b905060006130e482602454612de590919063ffffffff16565b905060006130fb8286612de590919063ffffffff16565b9050613129600e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682613874565b60004790506000613155836131478785612d6a90919063ffffffff16565b612cc290919063ffffffff16565b9050600061316c8284612de590919063ffffffff16565b905060008111156131e157601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156131df573d6000803e3d6000fd5b505b600082111561325b5761321f600e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613218611d2c565b8785613a5a565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56186838760405161325293929190615a9c565b60405180910390a15b600060248190555060006025819055505050505050505b50505050565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613305576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132fc906150a8565b60405180910390fd5b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613392576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613389906150a8565b60405180910390fd5b601760029054906101000a900460ff16156133e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133d99061513a565b60405180910390fd5b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661347957601454821115613478576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161346f90615b45565b60405180910390fd5b5b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156134d35750805b156134e5576134e0613afe565b61355b565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561353f5750805b156135515761354c613b24565b61355a565b613559613b4a565b5b5b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156135fe5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156136135761360e848484613b6c565b613790565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156136b65750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156136cb576136c6848484613dbb565b61378f565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561376d5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156137825761377d848484613fd8565b61378e565b61378d8484846141f8565b5b5b5b50505050565b6000806000600a549050600060095490506137bc60165483612de590919063ffffffff16565b91506137d360155482612de590919063ffffffff16565b90506137ec600954600a54612cc290919063ffffffff16565b82101561380457600a5460095493509350505061380d565b81819350935050505b9091565b60008083118290613858576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161384f9190614b91565b60405180910390fd5b506000838561386791906159d9565b9050809150509392505050565b60008290506000600267ffffffffffffffff81111561389657613895615b65565b5b6040519080825280602002602001820160405280156138c45781602001602082028036833780820191505090505b50905030816000815181106138dc576138db615b94565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613961573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139859190615bd8565b8160018151811061399957613998615b94565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663791ac947846000843061012c42613a02919061588e565b6040518663ffffffff1660e01b8152600401613a22959493929190615cfe565b600060405180830381600087803b158015613a3c57600080fd5b505af1158015613a50573d6000803e3d6000fd5b5050505050505050565b60008490508073ffffffffffffffffffffffffffffffffffffffff1663f305d7198330866000808a61012c42613a90919061588e565b6040518863ffffffff1660e01b8152600401613ab196959493929190615d58565b60606040518083038185885af1158015613acf573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613af49190615dce565b5050505050505050565b601854602081905550601954602181905550601a54602281905550601b54602381905550565b601c54602081905550601d54602181905550601e54602281905550601f54602381905550565b6000602081905550600060218190555060006022819055506000602381905550565b6000613b76612c97565b90506000613b95613b8684612e2f565b84612de590919063ffffffff16565b90506000613bac8385612d6a90919063ffffffff16565b90506000613bdd613bce85613bc088612e2f565b612d6a90919063ffffffff16565b83612de590919063ffffffff16565b9050613be9868461442c565b613c3b85600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612de590919063ffffffff16565b600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613c9385601554612de590919063ffffffff16565b601581905550613ceb81600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d0c90919063ffffffff16565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613d398786866144f7565b613d448786866147cd565b613d4d85614978565b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613daa9190614a17565b60405180910390a350505050505050565b6000613dc5612c97565b90506000613de4613dd584612e2f565b84612de590919063ffffffff16565b90506000613dfb8385612d6a90919063ffffffff16565b9050613e07858361442c565b613e5981600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612de590919063ffffffff16565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613eee82600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d0c90919063ffffffff16565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f4684601554612d0c90919063ffffffff16565b601581905550613f578685856144f7565b613f628685856147cd565b613f6b84614978565b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613fc89190614a17565b60405180910390a3505050505050565b6000613fe2612c97565b90506000614001613ff284612e2f565b84612de590919063ffffffff16565b905061400d848261442c565b61405f83600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612de590919063ffffffff16565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506140b783601554612de590919063ffffffff16565b60158190555061410f81600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d0c90919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061416783601554612d0c90919063ffffffff16565b6015819055506141788584846144f7565b6141838584846147cd565b61418c83614978565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516141e99190614a17565b60405180910390a35050505050565b6000614202612c97565b9050600061422161421284612e2f565b84612de590919063ffffffff16565b905060006142388385612d6a90919063ffffffff16565b9050600061426961425a8561424c88612e2f565b612d6a90919063ffffffff16565b83612de590919063ffffffff16565b9050614275868461442c565b6142c782600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612de590919063ffffffff16565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061435c81600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d0c90919063ffffffff16565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506143aa8786866144f7565b6143b58786866147cd565b6143be85614978565b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161441b9190614a17565b60405180910390a350505050505050565b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166144f357601760039054906101000a900460ff16156144f2576013546144b0826144a285611a04565b612d0c90919063ffffffff16565b11156144f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016144e890615e93565b60405180910390fd5b5b5b5050565b60006145366103e8614528614519602254602154612d0c90919063ffffffff16565b86612d6a90919063ffffffff16565b612cc290919063ffffffff16565b905060008111156147c75761457e61456d6103e861455f60215487612d6a90919063ffffffff16565b612cc290919063ffffffff16565b602454612d0c90919063ffffffff16565b6024819055506145c16145b06103e86145a260225487612d6a90919063ffffffff16565b612cc290919063ffffffff16565b602554612d0c90919063ffffffff16565b60258190555060006145dc8383612d6a90919063ffffffff16565b9050600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156146ca5761468282600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d0c90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614760565b61471c81600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d0c90919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b3073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516147bd9190614a17565b60405180910390a3505b50505050565b60006147f86103e86147ea60235486612d6a90919063ffffffff16565b612cc290919063ffffffff16565b9050600061480f8383612d6a90919063ffffffff16565b90506148858160016000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d0c90919063ffffffff16565b60016000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516149699190614a17565b60405180910390a35050505050565b60006149a36103e861499560205485612d6a90919063ffffffff16565b612cc290919063ffffffff16565b905060006149c16149b2612c97565b83612d6a90919063ffffffff16565b90506149d881600a54612de590919063ffffffff16565b600a819055506149f382600b54612d0c90919063ffffffff16565b600b81905550505050565b6000819050919050565b614a11816149fe565b82525050565b6000602082019050614a2c6000830184614a08565b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000614a6282614a37565b9050919050565b614a7281614a57565b8114614a7d57600080fd5b50565b600081359050614a8f81614a69565b92915050565b600060208284031215614aab57614aaa614a32565b5b6000614ab984828501614a80565b91505092915050565b60008115159050919050565b614ad781614ac2565b82525050565b6000602082019050614af26000830184614ace565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015614b32578082015181840152602081019050614b17565b83811115614b41576000848401525b50505050565b6000601f19601f8301169050919050565b6000614b6382614af8565b614b6d8185614b03565b9350614b7d818560208601614b14565b614b8681614b47565b840191505092915050565b60006020820190508181036000830152614bab8184614b58565b905092915050565b6000819050919050565b6000614bd8614bd3614bce84614a37565b614bb3565b614a37565b9050919050565b6000614bea82614bbd565b9050919050565b6000614bfc82614bdf565b9050919050565b614c0c81614bf1565b82525050565b6000602082019050614c276000830184614c03565b92915050565b614c36816149fe565b8114614c4157600080fd5b50565b600081359050614c5381614c2d565b92915050565b60008060408385031215614c7057614c6f614a32565b5b6000614c7e85828601614a80565b9250506020614c8f85828601614c44565b9150509250929050565b614ca281614ac2565b8114614cad57600080fd5b50565b600081359050614cbf81614c99565b92915050565b600060208284031215614cdb57614cda614a32565b5b6000614ce984828501614cb0565b91505092915050565b600080600060608486031215614d0b57614d0a614a32565b5b6000614d1986828701614a80565b9350506020614d2a86828701614a80565b9250506040614d3b86828701614c44565b9150509250925092565b600060208284031215614d5b57614d5a614a32565b5b6000614d6984828501614c44565b91505092915050565b600060ff82169050919050565b614d8881614d72565b82525050565b6000602082019050614da36000830184614d7f565b92915050565b60008060408385031215614dc057614dbf614a32565b5b6000614dce85828601614c44565b9250506020614ddf85828601614cb0565b9150509250929050565b6000614df482614a37565b9050919050565b614e0481614de9565b8114614e0f57600080fd5b50565b600081359050614e2181614dfb565b92915050565b600060208284031215614e3d57614e3c614a32565b5b6000614e4b84828501614e12565b91505092915050565b60008060408385031215614e6b57614e6a614a32565b5b6000614e7985828601614a80565b9250506020614e8a85828601614cb0565b9150509250929050565b614e9d81614a57565b82525050565b6000602082019050614eb86000830184614e94565b92915050565b60008060008060808587031215614ed857614ed7614a32565b5b6000614ee687828801614c44565b9450506020614ef787828801614c44565b9350506040614f0887828801614c44565b9250506060614f1987828801614c44565b91505092959194509250565b60008060408385031215614f3c57614f3b614a32565b5b6000614f4a85828601614a80565b9250506020614f5b85828601614a80565b9150509250929050565b614f6e81614de9565b82525050565b6000602082019050614f896000830184614f65565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614fd657607f821691505b60208210811415614fea57614fe9614f8f565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000615026602083614b03565b915061503182614ff0565b602082019050919050565b6000602082019050818103600083015261505581615019565b9050919050565b7f536e697065722064657465637465640000000000000000000000000000000000600082015250565b6000615092600f83614b03565b915061509d8261505c565b602082019050919050565b600060208201905081810360008301526150c181615085565b9050919050565b7f54726164696e67207368696674656420666f7220626f742064656c6574696f6e60008201527f2e00000000000000000000000000000000000000000000000000000000000000602082015250565b6000615124602183614b03565b915061512f826150c8565b604082019050919050565b6000602082019050818103600083015261515381615117565b9050919050565b7f546f6b656e3a20416d6f756e74206d757374206265206c657373207468616e2060008201527f746f74616c207265666c656374696f6e73000000000000000000000000000000602082015250565b60006151b6603183614b03565b91506151c18261515a565b604082019050919050565b600060208201905081810360008301526151e5816151a9565b9050919050565b7f57652063616e206e6f7420626c61636b6c69737420726f757465720000000000600082015250565b6000615222601b83614b03565b915061522d826151ec565b602082019050919050565b6000602082019050818103600083015261525181615215565b9050919050565b7f536e6970657220616c7265616479206578697374000000000000000000000000600082015250565b600061528e601483614b03565b915061529982615258565b602082019050919050565b600060208201905081810360008301526152bd81615281565b9050919050565b7f546f6b656e3a204578636c75646564206164647265737365732063616e6e6f7460008201527f2063616c6c20746869732066756e6374696f6e00000000000000000000000000602082015250565b6000615320603383614b03565b915061532b826152c4565b604082019050919050565b6000602082019050818103600083015261534f81615313565b9050919050565b7f42455032303a20416d6f756e74206d757374206265206c657373207468616e2060008201527f737570706c790000000000000000000000000000000000000000000000000000602082015250565b60006153b2602683614b03565b91506153bd82615356565b604082019050919050565b600060208201905081810360008301526153e1816153a5565b9050919050565b60006040820190506153fd6000830185614e94565b61540a6020830184614a08565b9392505050565b60008151905061542081614c99565b92915050565b60006020828403121561543c5761543b614a32565b5b600061544a84828501615411565b91505092915050565b7f4e6f74206120736e697065720000000000000000000000000000000000000000600082015250565b6000615489600c83614b03565b915061549482615453565b602082019050919050565b600060208201905081810360008301526154b88161547c565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061551b602683614b03565b9150615526826154bf565b604082019050919050565b6000602082019050818103600083015261554a8161550e565b9050919050565b7f546f6b656e3a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006155ad602483614b03565b91506155b882615551565b604082019050919050565b600060208201905081810360008301526155dc816155a0565b9050919050565b7f546f6b656e3a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061563f602283614b03565b915061564a826155e3565b604082019050919050565b6000602082019050818103600083015261566e81615632565b9050919050565b7f546f6b656e3a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006156d1602583614b03565b91506156dc82615675565b604082019050919050565b60006020820190508181036000830152615700816156c4565b9050919050565b7f546f6b656e3a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000615763602383614b03565b915061576e82615707565b604082019050919050565b6000602082019050818103600083015261579281615756565b9050919050565b7f546f6b656e3a207472616e7366657220616d6f756e74206d757374206265206760008201527f726561746572207468616e207a65726f00000000000000000000000000000000602082015250565b60006157f5603083614b03565b915061580082615799565b604082019050919050565b60006020820190508181036000830152615824816157e8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000615865826149fe565b9150615870836149fe565b9250828210156158835761588261582b565b5b828203905092915050565b6000615899826149fe565b91506158a4836149fe565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156158d9576158d861582b565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061591a601b83614b03565b9150615925826158e4565b602082019050919050565b600060208201905081810360008301526159498161590d565b9050919050565b600061595b826149fe565b9150615966836149fe565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561599f5761599e61582b565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006159e4826149fe565b91506159ef836149fe565b9250826159ff576159fe6159aa565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000615a66602183614b03565b9150615a7182615a0a565b604082019050919050565b60006020820190508181036000830152615a9581615a59565b9050919050565b6000606082019050615ab16000830186614a08565b615abe6020830185614a08565b615acb6040830184614a08565b949350505050565b7f416d6f756e74206d7573742062652067726561746572207468616e206d696e6960008201527f6d756d20627579204c696d697400000000000000000000000000000000000000602082015250565b6000615b2f602d83614b03565b9150615b3a82615ad3565b604082019050919050565b60006020820190508181036000830152615b5e81615b22565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050615bd281614a69565b92915050565b600060208284031215615bee57615bed614a32565b5b6000615bfc84828501615bc3565b91505092915050565b6000819050919050565b6000615c2a615c25615c2084615c05565b614bb3565b6149fe565b9050919050565b615c3a81615c0f565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615c7581614a57565b82525050565b6000615c878383615c6c565b60208301905092915050565b6000602082019050919050565b6000615cab82615c40565b615cb58185615c4b565b9350615cc083615c5c565b8060005b83811015615cf1578151615cd88882615c7b565b9750615ce383615c93565b925050600181019050615cc4565b5085935050505092915050565b600060a082019050615d136000830188614a08565b615d206020830187615c31565b8181036040830152615d328186615ca0565b9050615d416060830185614e94565b615d4e6080830184614a08565b9695505050505050565b600060c082019050615d6d6000830189614e94565b615d7a6020830188614a08565b615d876040830187615c31565b615d946060830186615c31565b615da16080830185614e94565b615dae60a0830184614a08565b979650505050505050565b600081519050615dc881614c2d565b92915050565b600080600060608486031215615de757615de6614a32565b5b6000615df586828701615db9565b9350506020615e0686828701615db9565b9250506040615e1786828701615db9565b9150509250925092565b7f42455032303a20616d6f756e7420657863656564206d617820686f6c64696e6760008201527f206c696d69740000000000000000000000000000000000000000000000000000602082015250565b6000615e7d602683614b03565b9150615e8882615e21565b604082019050919050565b60006020820190508181036000830152615eac81615e70565b905091905056fe546f6b656e3a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f546f6b656e3a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212204e0c5ea04ee6a57c2d48352decd3d798a166fb2e1a986f6327f66906904ca79864736f6c634300080a0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000305ca5675f7431fdb51ad40527e41a16477226d5
-----Decoded View---------------
Arg [0] : _marketWallet (address): 0x305cA5675F7431FDB51AD40527e41A16477226d5
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000305ca5675f7431fdb51ad40527e41a16477226d5
Deployed Bytecode Sourcemap
5927:25146:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7997:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13333:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10032:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6919:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11074:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6513:40;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17842:170;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10309:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7173:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11275:639;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14844:329;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10218:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7835:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20568:250;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11922:300;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7603:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13814:428;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14250:586;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7505:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12956:101;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18240:148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13129:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15243:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7932:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10412:253;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7091:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3262:94;;;;;;;;;;;;;:::i;:::-;;13585:174;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8092:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12742:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15489:174;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7280:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2953:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7633:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10123:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16084:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8144:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16496:386;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12230:400;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10865:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17338:381;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18099:93;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7335:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15922:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15713:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7881:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16249:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7788:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10673:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20826:166;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7024:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8045:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16941:160;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17153:104;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6975:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3512:229;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7678:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7997:41;;;;:::o;13333:176::-;13435:4;13464:27;:37;13492:8;13464:37;;;;;;;;;;;;;;;;;;;;;;;;;13457:44;;13333:176;;;:::o;10032:83::-;10069:13;10102:5;10095:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10032:83;:::o;6919:27::-;;;;;;;;;;;;;:::o;11074:193::-;11176:4;11198:39;11207:12;:10;:12::i;:::-;11221:7;11230:6;11198:8;:39::i;:::-;11255:4;11248:11;;11074:193;;;;:::o;6513:40::-;;;;;;;;;;;;;;;;;;;;;;:::o;17842:170::-;3185:12;:10;:12::i;:::-;3174:23;;:7;:5;:7::i;:::-;:23;;;3166:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17946:6:::1;17922:21;;:30;;;;;;;;;;;;;;;;;;17968:36;17997:6;17968:36;;;;;;:::i;:::-;;;;;;;;17842:170:::0;:::o;10309:95::-;10362:7;10389;;10382:14;;10309:95;:::o;7173:45::-;;;;:::o;11275:639::-;11407:4;11433:8;:16;11442:6;11433:16;;;;;;;;;;;;;;;;;;;;;;;;;11432:17;11424:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;11489:8;:19;11498:9;11489:19;;;;;;;;;;;;;;;;;;;;;;;;;11488:20;11480:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;11548:18;;;;;;;;;;;11547:19;11539:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;11617:36;11627:6;11635:9;11646:6;11617:9;:36::i;:::-;11664:220;11687:6;11708:12;:10;:12::i;:::-;11735:138;11791:6;11735:138;;;;;;;;;;;;;;;;;:11;:19;11747:6;11735:19;;;;;;;;;;;;;;;:33;11755:12;:10;:12::i;:::-;11735:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;11664:8;:220::i;:::-;11902:4;11895:11;;11275:639;;;;;:::o;14844:329::-;14938:7;14996;;14985;:18;;14963:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;15091:19;15113:10;:8;:10::i;:::-;15091:32;;15141:24;15153:11;15141:7;:11;;:24;;;;:::i;:::-;15134:31;;;14844:329;;;:::o;10218:83::-;10259:5;10284:9;;;;;;;;;;;10277:16;;10218:83;:::o;7835:39::-;;;;:::o;20568:250::-;3185:12;:10;:12::i;:::-;3174:23;;:7;:5;:7::i;:::-;:23;;;3166:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20669:9:::1;;;;;;;;;;;20649:30;;:8;:30;;;;20641:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;20731:8;:18;20740:8;20731:18;;;;;;;;;;;;;;;;;;;;;;;;;20730:19;20722:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;20806:4;20785:8;:18;20794:8;20785:18;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;20568:250:::0;:::o;11922:300::-;12037:4;12059:133;12082:12;:10;:12::i;:::-;12109:7;12131:50;12170:10;12131:11;:25;12143:12;:10;:12::i;:::-;12131:25;;;;;;;;;;;;;;;:34;12157:7;12131:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;12059:8;:133::i;:::-;12210:4;12203:11;;11922:300;;;;:::o;7603:23::-;;;;;;;;;;;;;:::o;13814:428::-;13866:14;13883:12;:10;:12::i;:::-;13866:29;;13929:21;:29;13951:6;13929:29;;;;;;;;;;;;;;;;;;;;;;;;;13928:30;13906:131;;;;;;;;;;;;:::i;:::-;;;;;;;;;14048:15;14066:23;14078:10;:8;:10::i;:::-;14066:7;:11;;:23;;;;:::i;:::-;14048:41;;14118:28;14138:7;14118;:15;14126:6;14118:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;14100:7;:15;14108:6;14100:15;;;;;;;;;;;;;;;:46;;;;14167:20;14179:7;14167;;:11;;:20;;;;:::i;:::-;14157:7;:30;;;;14211:23;14226:7;14211:10;;:14;;:23;;;;:::i;:::-;14198:10;:36;;;;13855:387;;13814:428;:::o;14250:586::-;14368:7;14412;;14401;:18;;14393:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;14478:17;14473:356;;14512:15;14530:23;14542:10;:8;:10::i;:::-;14530:7;:11;;:23;;;;:::i;:::-;14512:41;;14575:7;14568:14;;;;;14473:356;14615:15;14633:23;14645:10;:8;:10::i;:::-;14633:7;:11;;:23;;;;:::i;:::-;14615:41;;14671:23;14697:83;14727:38;14754:10;:8;:10::i;:::-;14727:22;14741:7;14727:13;:22::i;:::-;:26;;:38;;;;:::i;:::-;14697:7;:11;;:83;;;;:::i;:::-;14671:109;;14802:15;14795:22;;;;14250:586;;;;;:::o;7505:40::-;;;;;;;;;;;;;:::o;12956:101::-;13012:7;13039:10;;13032:17;;12956:101;:::o;18240:148::-;3185:12;:10;:12::i;:::-;3174:23;;:7;:5;:7::i;:::-;:23;;;3166:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18369:11:::1;18354:12;;:26;;;;;;;;;;;;;;;;;;18240:148:::0;:::o;13129:126::-;13195:4;13219:18;:28;13238:8;13219:28;;;;;;;;;;;;;;;;;;;;;;;;;13212:35;;13129:126;;;:::o;15243:176::-;3185:12;:10;:12::i;:::-;3174:23;;:7;:5;:7::i;:::-;:23;;;3166:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15406:5:::1;15366:27;:37;15394:8;15366:37;;;;;;;;;;;;;;;;:45;;;;;;;;;;;;;;;;;;15243:176:::0;;:::o;7932:35::-;;;;:::o;10412:253::-;10515:7;10544:21;:31;10566:8;10544:31;;;;;;;;;;;;;;;;;;;;;;;;;10540:61;;;10584:7;:17;10592:8;10584:17;;;;;;;;;;;;;;;;10577:24;;;;10540:61;10619:38;10639:7;:17;10647:8;10639:17;;;;;;;;;;;;;;;;10619:19;:38::i;:::-;10612:45;;10412:253;;;;:::o;7091:73::-;;;;;;;;;;;;;:::o;3262:94::-;3185:12;:10;:12::i;:::-;3174:23;;:7;:5;:7::i;:::-;:23;;;3166:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3327:21:::1;3345:1;3327:9;:21::i;:::-;3262:94::o:0;13585:174::-;13686:4;13715:26;:36;13742:8;13715:36;;;;;;;;;;;;;;;;;;;;;;;;;13708:43;;13585:174;;;:::o;8092:45::-;;;;:::o;12742:132::-;12811:4;12835:21;:31;12857:8;12835:31;;;;;;;;;;;;;;;;;;;;;;;;;12828:38;;12742:132;;;:::o;15489:174::-;3185:12;:10;:12::i;:::-;3174:23;;:7;:5;:7::i;:::-;:23;;;3166:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15650:5:::1;15611:26;:36;15638:8;15611:36;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;15489:174:::0;;:::o;7280:48::-;;;;:::o;2953:87::-;2999:7;3026:6;;;;;;;;;;;3019:13;;2953:87;:::o;7633:38::-;;;;;;;;;;;;;:::o;10123:87::-;10162:13;10195:7;10188:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10123:87;:::o;16084:98::-;3185:12;:10;:12::i;:::-;3174:23;;:7;:5;:7::i;:::-;:23;;;3166:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16167:7:::1;16153:11;:21;;;;16084:98:::0;:::o;8144:36::-;;;;:::o;16496:386::-;3185:12;:10;:12::i;:::-;3174:23;;:7;:5;:7::i;:::-;:23;;;3166:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16716:18:::1;16691:22;:43;;;;16769:13;16745:21;:37;;;;16820:16;16793:24;:43;;;;16866:8;16847:16;:27;;;;16496:386:::0;;;;:::o;12230:400::-;12350:4;12372:228;12395:12;:10;:12::i;:::-;12422:7;12444:145;12501:15;12444:145;;;;;;;;;;;;;;;;;:11;:25;12456:12;:10;:12::i;:::-;12444:25;;;;;;;;;;;;;;;:34;12470:7;12444:34;;;;;;;;;;;;;;;;:38;;:145;;;;;:::i;:::-;12372:8;:228::i;:::-;12618:4;12611:11;;12230:400;;;;:::o;10865:199::-;10970:4;10992:42;11002:12;:10;:12::i;:::-;11016:9;11027:6;10992:9;:42::i;:::-;11052:4;11045:11;;10865:199;;;;:::o;17338:381::-;3185:12;:10;:12::i;:::-;3174:23;;:7;:5;:7::i;:::-;:23;;;3166:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17556:18:::1;17532:21;:42;;;;17608:13;17585:20;:36;;;;17658:16;17632:23;:42;;;;17703:8;17685:15;:26;;;;17338:381:::0;;;;:::o;18099:93::-;3185:12;:10;:12::i;:::-;3174:23;;:7;:5;:7::i;:::-;:23;;;3166:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18178:6:::1;18171:4;;:13;;;;;;;;;;;;;;;;;;18099:93:::0;:::o;7335:43::-;;;;:::o;15922:108::-;3185:12;:10;:12::i;:::-;3174:23;;:7;:5;:7::i;:::-;:23;;;3166:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16015:7:::1;15996:16;:26;;;;15922:108:::0;:::o;15713:155::-;3185:12;:10;:12::i;:::-;3174:23;;:7;:5;:7::i;:::-;:23;;;3166:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15806:6:::1;15785:18;;:27;;;;;;;;;;;;;;;;;;15828:32;15853:6;15828:32;;;;;;:::i;:::-;;;;;;;;15713:155:::0;:::o;7881:44::-;;;;:::o;16249:161::-;3185:12;:10;:12::i;:::-;3174:23;;:7;:5;:7::i;:::-;:23;;;3166:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16368:6:::1;16361:23;;;16385:7;:5;:7::i;:::-;16394;16361:41;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16249:161:::0;;:::o;7788:40::-;;;;:::o;10673:184::-;10790:7;10822:11;:18;10834:5;10822:18;;;;;;;;;;;;;;;:27;10841:7;10822:27;;;;;;;;;;;;;;;;10815:34;;10673:184;;;;:::o;20826:166::-;3185:12;:10;:12::i;:::-;3174:23;;:7;:5;:7::i;:::-;:23;;;3166:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20912:8:::1;:18;20921:8;20912:18;;;;;;;;;;;;;;;;;;;;;;;;;20904:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;20979:5;20958:8;:18;20967:8;20958:18;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;20826:166:::0;:::o;7024:35::-;;;;;;;;;;;;;:::o;8045:40::-;;;;:::o;16941:160::-;3185:12;:10;:12::i;:::-;3174:23;;:7;:5;:7::i;:::-;:23;;;3166:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17087:6:::1;17056:18;:28;17075:8;17056:28;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;16941:160:::0;;:::o;17153:104::-;3185:12;:10;:12::i;:::-;3174:23;;:7;:5;:7::i;:::-;:23;;;3166:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17242:7:::1;17225:14;:24;;;;17153:104:::0;:::o;6975:22::-;;;;;;;;;;;;;:::o;3512:229::-;3185:12;:10;:12::i;:::-;3174:23;;:7;:5;:7::i;:::-;:23;;;3166:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3635:1:::1;3615:22;;:8;:22;;;;3593:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;3714:19;3724:8;3714:9;:19::i;:::-;3512:229:::0;:::o;7678:38::-;;;;;;;;;;;;;:::o;2311:98::-;2364:7;2391:10;2384:17;;2311:98;:::o;21000:371::-;21144:1;21127:19;;:5;:19;;;;21119:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21225:1;21206:21;;:7;:21;;;;21198:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21309:6;21279:11;:18;21291:5;21279:18;;;;;;;;;;;;;;;:27;21298:7;21279:27;;;;;;;;;;;;;;;:36;;;;21347:7;21331:32;;21340:5;21331:32;;;21356:6;21331:32;;;;;;:::i;:::-;;;;;;;;21000:371;;;:::o;21420:839::-;21558:1;21542:18;;:4;:18;;;;21534:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21635:1;21621:16;;:2;:16;;;;21613:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;21705:1;21696:6;:10;21688:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;21809:24;21824:4;21830:2;21809:14;:24::i;:::-;21907:12;21922:4;21907:19;;22029:18;:24;22048:4;22029:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;22057:18;:22;22076:2;22057:22;;;;;;;;;;;;;;;;;;;;;;;;;22029:50;:59;;;;22084:4;;;;;;;;;;;22083:5;22029:59;22025:107;;;22115:5;22105:15;;22025:107;22210:41;22225:4;22231:2;22235:6;22243:7;22210:14;:41::i;:::-;21523:736;21420:839;;;:::o;4409:226::-;4529:7;4562:1;4557;:6;;4565:12;4549:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;4589:9;4605:1;4601;:5;;;;:::i;:::-;4589:17;;4626:1;4619:8;;;4409:226;;;;;:::o;19321:164::-;19363:7;19384:15;19401;19420:19;:17;:19::i;:::-;19383:56;;;;19457:20;19469:7;19457;:11;;:20;;;;:::i;:::-;19450:27;;;;19321:164;:::o;5122:132::-;5180:7;5207:39;5211:1;5214;5207:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;5200:46;;5122:132;;;;:::o;4076:181::-;4134:7;4154:9;4170:1;4166;:5;;;;:::i;:::-;4154:17;;4195:1;4190;:6;;4182:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;4248:1;4241:8;;;4076:181;;;;:::o;4643:471::-;4701:7;4951:1;4946;:6;4942:47;;;4976:1;4969:8;;;;4942:47;5001:9;5017:1;5013;:5;;;;:::i;:::-;5001:17;;5046:1;5041;5037;:5;;;;:::i;:::-;:10;5029:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;5105:1;5098:8;;;4643:471;;;;;:::o;4265:136::-;4323:7;4350:43;4354:1;4357;4350:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;4343:50;;4265:136;;;;:::o;18530:359::-;18593:7;18613:18;18634:219;18849:3;18634:196;18678:137;18752:44;18780:15;;18752:23;;:27;;:44;;;;:::i;:::-;18678:47;18704:20;;18678:21;;:25;;:47;;;;:::i;:::-;:51;;:137;;;;:::i;:::-;18634:7;:25;;:196;;;;:::i;:::-;:214;;:219;;;;:::i;:::-;18613:240;;18871:10;18864:17;;;18530:359;;;:::o;3870:173::-;3926:16;3945:6;;;;;;;;;;;3926:25;;3971:8;3962:6;;:17;;;;;;;;;;;;;;;;;;4026:8;3995:40;;4016:8;3995:40;;;;;;;;;;;;3915:128;3870:173;:::o;28835:2235::-;29182:28;29213:24;29231:4;29213:9;:24::i;:::-;29182:55;;29250:15;29292:14;;29268:20;:38;;29250:56;;29337:10;:42;;;;;29372:7;;;;;;;;;;;29364:15;;:4;:15;;;;29337:42;:80;;;;;29396:21;;;;;;;;;;;29337:80;:147;;;;;29452:4;29436:21;;:4;:21;;;:47;;;;;29475:7;;;;;;;;;;;29461:22;;:2;:22;;;29436:47;29434:50;29337:147;29319:1744;;;29559:65;29576:4;29591:9;;;;;;;;;;;29603:20;29559:8;:65::i;:::-;29641:18;29662:28;29688:1;29662:21;;:25;;:28;;;;:::i;:::-;29641:49;;29705:23;29731:37;29757:10;29731:21;;:25;;:37;;;;:::i;:::-;29705:63;;29785:30;29818:73;29861:15;29818:20;:24;;:73;;;;:::i;:::-;29785:106;;29958:66;29989:9;;;;;;;;;;;30001:22;29958;:66::i;:::-;30041:20;30064:21;30041:44;;30100:31;30134:56;30167:22;30134:28;30151:10;30134:12;:16;;:28;;;;:::i;:::-;:32;;:56;;;;:::i;:::-;30100:90;;30205:26;30234:41;30251:23;30234:12;:16;;:41;;;;:::i;:::-;30205:70;;30367:1;30346:18;:22;30343:85;;;30387:12;;;;;;;;;;;:21;;:41;30409:18;30387:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30343:85;30512:1;30486:23;:27;30483:434;;;30533:192;30582:9;;;;;;;;;;;30615:7;:5;:7::i;:::-;30645:15;30683:23;30533:18;:192::i;:::-;30751:150;30788:10;30821:23;30867:15;30751:150;;;;;;;;:::i;:::-;;;;;;;;30483:434;31006:1;30982:21;:25;;;;31050:1;31023:24;:28;;;;29511:1552;;;;;;29319:1744;28893:2177;;28835:2235;;:::o;22340:1522::-;22527:8;:16;22536:6;22527:16;;;;;;;;;;;;;;;;;;;;;;;;;22526:17;22518:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;22583:8;:19;22592:9;22583:19;;;;;;;;;;;;;;;;;;;;;;;;;22582:20;22574:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;22642:18;;;;;;;;;;;22641:19;22633:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;22715:26;:37;22742:9;22715:37;;;;;;;;;;;;;;;;;;;;;;;;;22711:148;;22786:11;;22776:6;:21;;22768:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;22711:148;22883:7;;;;;;;;;;;22873:17;;:6;:17;;;:28;;;;;22894:7;22873:28;22869:286;;;22918:11;:9;:11::i;:::-;22869:286;;;23001:7;;;;;;;;;;;22988:20;;:9;:20;;;:31;;;;;23012:7;22988:31;22984:171;;;23036:12;:10;:12::i;:::-;22984:171;;;23129:14;:12;:14::i;:::-;22984:171;22869:286;23274:21;:29;23296:6;23274:29;;;;;;;;;;;;;;;;;;;;;;;;;:66;;;;;23308:21;:32;23330:9;23308:32;;;;;;;;;;;;;;;;;;;;;;;;;23307:33;23274:66;23256:599;;;23367:48;23389:6;23397:9;23408:6;23367:21;:48::i;:::-;23256:599;;;23452:21;:29;23474:6;23452:29;;;;;;;;;;;;;;;;;;;;;;;;;23451:30;:66;;;;;23485:21;:32;23507:9;23485:32;;;;;;;;;;;;;;;;;;;;;;;;;23451:66;23433:422;;;23544:46;23564:6;23572:9;23583:6;23544:19;:46::i;:::-;23433:422;;;23626:21;:29;23648:6;23626:29;;;;;;;;;;;;;;;;;;;;;;;;;:65;;;;;23659:21;:32;23681:9;23659:32;;;;;;;;;;;;;;;;;;;;;;;;;23626:65;23608:247;;;23718:48;23740:6;23748:9;23759:6;23718:21;:48::i;:::-;23608:247;;;23799:44;23817:6;23825:9;23836:6;23799:17;:44::i;:::-;23608:247;23433:422;23256:599;22340:1522;;;;:::o;19753:355::-;19804:7;19813;19833:15;19851:7;;19833:25;;19869:15;19887:7;;19869:25;;19915:28;19927:15;;19915:7;:11;;:28;;;;:::i;:::-;19905:38;;19964:28;19976:15;;19964:7;:11;;:28;;;;:::i;:::-;19954:38;;20017:20;20029:7;;20017;;:11;;:20;;;;:::i;:::-;20007:7;:30;20003:61;;;20047:7;;20056;;20039:25;;;;;;;;20003:61;20083:7;20092;20075:25;;;;;;19753:355;;;:::o;5262:312::-;5382:7;5414:1;5410;:5;5417:12;5402:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;5441:9;5457:1;5453;:5;;;;:::i;:::-;5441:17;;5565:1;5558:8;;;5262:312;;;;;:::o;31169:603::-;31273:20;31307:13;31273:48;;31390:21;31428:1;31414:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31390:40;;31459:4;31441;31446:1;31441:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;31485:9;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31475:4;31480:1;31475:7;;;;;;;;:::i;:::-;;;;;;;:26;;;;;;;;;;;31540:9;:60;;;31615:11;31641:1;31685:4;31712;31750:3;31732:15;:21;;;;:::i;:::-;31540:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31262:510;;31169:603;;:::o;31780:512::-;31943:20;31977:13;31943:48;;32034:9;:25;;;32067:9;32100:4;32120:11;32146:1;32189;32232:5;32270:3;32252:15;:21;;;;:::i;:::-;32034:250;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;31932:360;31780:512;;;;:::o;19493:252::-;19557:21;;19533;:45;;;;19612:20;;19589;:43;;;;19669:23;;19643;:49;;;;19721:15;;19703;:33;;;;19493:252::o;20303:256::-;20368:22;;20344:21;:46;;;;20424:21;;20401:20;:44;;;;20482:24;;20456:23;:50;;;;20535:16;;20517:15;:34;;;;20303:256::o;20116:179::-;20183:1;20159:21;:25;;;;20218:1;20195:20;:24;;;;20256:1;20230:23;:27;;;;20286:1;20268:15;:19;;;;20116:179::o;24777:855::-;24913:19;24935:10;:8;:10::i;:::-;24913:32;;24956:23;24982:35;24994:22;25008:7;24994:13;:22::i;:::-;24982:7;:11;;:35;;;;:::i;:::-;24956:61;;25028:15;25046:24;25058:11;25046:7;:11;;:24;;;;:::i;:::-;25028:42;;25081:23;25107:76;25133:39;25160:11;25133:22;25147:7;25133:13;:22::i;:::-;:26;;:39;;;;:::i;:::-;25107:7;:11;;:76;;;;:::i;:::-;25081:102;;25194:49;25216:9;25227:15;25194:21;:49::i;:::-;25272:28;25292:7;25272;:15;25280:6;25272:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;25254:7;:15;25262:6;25254:15;;;;;;;;;;;;;;;:46;;;;25329:28;25349:7;25329:15;;:19;;:28;;;;:::i;:::-;25311:15;:46;;;;25389:39;25412:15;25389:7;:18;25397:9;25389:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;25368:7;:18;25376:9;25368:18;;;;;;;;;;;;;;;:60;;;;25439:40;25451:6;25458:7;25467:11;25439;:40::i;:::-;25490:41;25503:6;25510:7;25519:11;25490:12;:41::i;:::-;25542:20;25554:7;25542:11;:20::i;:::-;25597:9;25580:44;;25589:6;25580:44;;;25608:15;25580:44;;;;;;:::i;:::-;;;;;;;;24902:730;;;;24777:855;;;:::o;26499:740::-;26633:19;26655:10;:8;:10::i;:::-;26633:32;;26676:23;26702:35;26714:22;26728:7;26714:13;:22::i;:::-;26702:7;:11;;:35;;;;:::i;:::-;26676:61;;26748:15;26766:24;26778:11;26766:7;:11;;:24;;;;:::i;:::-;26748:42;;26801:49;26823:9;26834:15;26801:21;:49::i;:::-;26879:28;26899:7;26879;:15;26887:6;26879:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;26861:7;:15;26869:6;26861:15;;;;;;;;;;;;;;;:46;;;;26939:39;26962:15;26939:7;:18;26947:9;26939:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;26918:7;:18;26926:9;26918:18;;;;;;;;;;;;;;;:60;;;;27007:28;27027:7;27007:15;;:19;;:28;;;;:::i;:::-;26989:15;:46;;;;27046:40;27058:6;27065:7;27074:11;27046;:40::i;:::-;27097:41;27110:6;27117:7;27126:11;27097:12;:41::i;:::-;27149:20;27161:7;27149:11;:20::i;:::-;27204:9;27187:44;;27196:6;27187:44;;;27215:15;27187:44;;;;;;:::i;:::-;;;;;;;;26622:617;;;26499:740;;;:::o;25701:746::-;25837:19;25859:10;:8;:10::i;:::-;25837:32;;25880:23;25906:35;25918:22;25932:7;25918:13;:22::i;:::-;25906:7;:11;;:35;;;;:::i;:::-;25880:61;;25952:49;25974:9;25985:15;25952:21;:49::i;:::-;26030:28;26050:7;26030;:15;26038:6;26030:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;26012:7;:15;26020:6;26012:15;;;;;;;;;;;;;;;:46;;;;26087:28;26107:7;26087:15;;:19;;:28;;;;:::i;:::-;26069:15;:46;;;;26147:39;26170:15;26147:7;:18;26155:9;26147:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;26126:7;:18;26134:9;26126:18;;;;;;;;;;;;;;;:60;;;;26215:28;26235:7;26215:15;;:19;;:28;;;;:::i;:::-;26197:15;:46;;;;26254:40;26266:6;26273:7;26282:11;26254;:40::i;:::-;26305:41;26318:6;26325:7;26334:11;26305:12;:41::i;:::-;26357:20;26369:7;26357:11;:20::i;:::-;26412:9;26395:44;;26404:6;26395:44;;;26423:15;26395:44;;;;;;:::i;:::-;;;;;;;;25826:621;;25701:746;;;:::o;23935:792::-;24067:19;24089:10;:8;:10::i;:::-;24067:32;;24110:23;24136:35;24148:22;24162:7;24148:13;:22::i;:::-;24136:7;:11;;:35;;;;:::i;:::-;24110:61;;24182:15;24200:24;24212:11;24200:7;:11;;:24;;;;:::i;:::-;24182:42;;24235:23;24261:76;24287:39;24314:11;24287:22;24301:7;24287:13;:22::i;:::-;:26;;:39;;;;:::i;:::-;24261:7;:11;;:76;;;;:::i;:::-;24235:102;;24348:49;24370:9;24381:15;24348:21;:49::i;:::-;24426:28;24446:7;24426;:15;24434:6;24426:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;24408:7;:15;24416:6;24408:15;;;;;;;;;;;;;;;:46;;;;24486:39;24509:15;24486:7;:18;24494:9;24486:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;24465:7;:18;24473:9;24465:18;;;;;;;;;;;;;;;:60;;;;24536:40;24548:6;24555:7;24564:11;24536;:40::i;:::-;24587:41;24600:6;24607:7;24616:11;24587:12;:41::i;:::-;24639:20;24651:7;24639:11;:20::i;:::-;24692:9;24675:44;;24684:6;24675:44;;;24703:15;24675:44;;;;;;:::i;:::-;;;;;;;;24056:671;;;;23935:792;;;:::o;18897:414::-;18998:27;:31;19026:2;18998:31;;;;;;;;;;;;;;;;;;;;;;;;;18979:325;;19080:19;;;;;;;;;;;19076:217;;;19179:16;;19150:25;19168:6;19150:13;19160:2;19150:9;:13::i;:::-;:17;;:25;;;;:::i;:::-;:45;;19120:157;;;;;;;;;;;;:::i;:::-;;;;;;;;;19076:217;18979:325;18897:414;;:::o;27617:863::-;27711:12;27726:99;27821:3;27726:76;27752:49;27777:23;;27752:20;;:24;;:49;;;;:::i;:::-;27726:7;:25;;:76;;;;:::i;:::-;:94;;:99;;;;:::i;:::-;27711:114;;27849:1;27842:4;:8;27838:635;;;27891:101;27935:42;27973:3;27935:33;27947:20;;27935:7;:11;;:33;;;;:::i;:::-;:37;;:42;;;;:::i;:::-;27891:21;;:25;;:101;;;;:::i;:::-;27867:21;:125;;;;28034:107;28081:45;28122:3;28081:36;28093:23;;28081:7;:11;;:36;;;;:::i;:::-;:40;;:45;;;;:::i;:::-;28034:24;;:28;;:107;;;;:::i;:::-;28007:24;:134;;;;28158:12;28173:21;28182:11;28173:4;:8;;:21;;;;:::i;:::-;28158:36;;28213:21;:36;28243:4;28213:36;;;;;;;;;;;;;;;;;;;;;;;;;28209:193;;;28293:32;28320:4;28293:7;:22;28309:4;28293:22;;;;;;;;;;;;;;;;:26;;:32;;;;:::i;:::-;28268:7;:22;28284:4;28268:22;;;;;;;;;;;;;;;:57;;;;28209:193;;;28370:32;28397:4;28370:7;:22;28386:4;28370:22;;;;;;;;;;;;;;;;:26;;:32;;;;:::i;:::-;28345:7;:22;28361:4;28345:22;;;;;;;;;;;;;;;:57;;;;28209:193;28449:4;28424:37;;28433:6;28424:37;;;28456:4;28424:37;;;;;;:::i;:::-;;;;;;;;27852:621;27838:635;27700:780;27617:863;;;:::o;28485:336::-;28580:15;28598:37;28631:3;28598:28;28610:15;;28598:7;:11;;:28;;;;:::i;:::-;:32;;:37;;;;:::i;:::-;28580:55;;28646:16;28665:24;28677:11;28665:7;:11;;:24;;;;:::i;:::-;28646:43;;28723:34;28748:8;28723:7;:20;28731:11;;;;;;;;;;;28723:20;;;;;;;;;;;;;;;;:24;;:34;;;;:::i;:::-;28700:7;:20;28708:11;;;;;;;;;;;28700:20;;;;;;;;;;;;;;;:57;;;;28792:11;;;;;;;;;;;28775:38;;28784:6;28775:38;;;28805:7;28775:38;;;;;;:::i;:::-;;;;;;;;28569:252;;28485:336;;;:::o;27313:251::-;27370:12;27385:43;27424:3;27385:34;27397:21;;27385:7;:11;;:34;;;;:::i;:::-;:38;;:43;;;;:::i;:::-;27370:58;;27439:12;27454:20;27463:10;:8;:10::i;:::-;27454:4;:8;;:20;;;;:::i;:::-;27439:35;;27495:17;27507:4;27495:7;;:11;;:17;;;;:::i;:::-;27485:7;:27;;;;27536:20;27551:4;27536:10;;:14;;:20;;;;:::i;:::-;27523:10;:33;;;;27359:205;;27313:251;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;523:117::-;632:1;629;622:12;769:126;806:7;846:42;839:5;835:54;824:65;;769:126;;;:::o;901:96::-;938:7;967:24;985:5;967:24;:::i;:::-;956:35;;901:96;;;:::o;1003:122::-;1076:24;1094:5;1076:24;:::i;:::-;1069:5;1066:35;1056:63;;1115:1;1112;1105:12;1056:63;1003:122;:::o;1131:139::-;1177:5;1215:6;1202:20;1193:29;;1231:33;1258:5;1231:33;:::i;:::-;1131:139;;;;:::o;1276:329::-;1335:6;1384:2;1372:9;1363:7;1359:23;1355:32;1352:119;;;1390:79;;:::i;:::-;1352:119;1510:1;1535:53;1580:7;1571:6;1560:9;1556:22;1535:53;:::i;:::-;1525:63;;1481:117;1276:329;;;;:::o;1611:90::-;1645:7;1688:5;1681:13;1674:21;1663:32;;1611:90;;;:::o;1707:109::-;1788:21;1803:5;1788:21;:::i;:::-;1783:3;1776:34;1707:109;;:::o;1822:210::-;1909:4;1947:2;1936:9;1932:18;1924:26;;1960:65;2022:1;2011:9;2007:17;1998:6;1960:65;:::i;:::-;1822:210;;;;:::o;2038:99::-;2090:6;2124:5;2118:12;2108:22;;2038:99;;;:::o;2143:169::-;2227:11;2261:6;2256:3;2249:19;2301:4;2296:3;2292:14;2277:29;;2143:169;;;;:::o;2318:307::-;2386:1;2396:113;2410:6;2407:1;2404:13;2396:113;;;2495:1;2490:3;2486:11;2480:18;2476:1;2471:3;2467:11;2460:39;2432:2;2429:1;2425:10;2420:15;;2396:113;;;2527:6;2524:1;2521:13;2518:101;;;2607:1;2598:6;2593:3;2589:16;2582:27;2518:101;2367:258;2318:307;;;:::o;2631:102::-;2672:6;2723:2;2719:7;2714:2;2707:5;2703:14;2699:28;2689:38;;2631:102;;;:::o;2739:364::-;2827:3;2855:39;2888:5;2855:39;:::i;:::-;2910:71;2974:6;2969:3;2910:71;:::i;:::-;2903:78;;2990:52;3035:6;3030:3;3023:4;3016:5;3012:16;2990:52;:::i;:::-;3067:29;3089:6;3067:29;:::i;:::-;3062:3;3058:39;3051:46;;2831:272;2739:364;;;;:::o;3109:313::-;3222:4;3260:2;3249:9;3245:18;3237:26;;3309:9;3303:4;3299:20;3295:1;3284:9;3280:17;3273:47;3337:78;3410:4;3401:6;3337:78;:::i;:::-;3329:86;;3109:313;;;;:::o;3428:60::-;3456:3;3477:5;3470:12;;3428:60;;;:::o;3494:142::-;3544:9;3577:53;3595:34;3604:24;3622:5;3604:24;:::i;:::-;3595:34;:::i;:::-;3577:53;:::i;:::-;3564:66;;3494:142;;;:::o;3642:126::-;3692:9;3725:37;3756:5;3725:37;:::i;:::-;3712:50;;3642:126;;;:::o;3774:144::-;3842:9;3875:37;3906:5;3875:37;:::i;:::-;3862:50;;3774:144;;;:::o;3924:167::-;4029:55;4078:5;4029:55;:::i;:::-;4024:3;4017:68;3924:167;;:::o;4097:258::-;4208:4;4246:2;4235:9;4231:18;4223:26;;4259:89;4345:1;4334:9;4330:17;4321:6;4259:89;:::i;:::-;4097:258;;;;:::o;4361:122::-;4434:24;4452:5;4434:24;:::i;:::-;4427:5;4424:35;4414:63;;4473:1;4470;4463:12;4414:63;4361:122;:::o;4489:139::-;4535:5;4573:6;4560:20;4551:29;;4589:33;4616:5;4589:33;:::i;:::-;4489:139;;;;:::o;4634:474::-;4702:6;4710;4759:2;4747:9;4738:7;4734:23;4730:32;4727:119;;;4765:79;;:::i;:::-;4727:119;4885:1;4910:53;4955:7;4946:6;4935:9;4931:22;4910:53;:::i;:::-;4900:63;;4856:117;5012:2;5038:53;5083:7;5074:6;5063:9;5059:22;5038:53;:::i;:::-;5028:63;;4983:118;4634:474;;;;;:::o;5114:116::-;5184:21;5199:5;5184:21;:::i;:::-;5177:5;5174:32;5164:60;;5220:1;5217;5210:12;5164:60;5114:116;:::o;5236:133::-;5279:5;5317:6;5304:20;5295:29;;5333:30;5357:5;5333:30;:::i;:::-;5236:133;;;;:::o;5375:323::-;5431:6;5480:2;5468:9;5459:7;5455:23;5451:32;5448:119;;;5486:79;;:::i;:::-;5448:119;5606:1;5631:50;5673:7;5664:6;5653:9;5649:22;5631:50;:::i;:::-;5621:60;;5577:114;5375:323;;;;:::o;5704:619::-;5781:6;5789;5797;5846:2;5834:9;5825:7;5821:23;5817:32;5814:119;;;5852:79;;:::i;:::-;5814:119;5972:1;5997:53;6042:7;6033:6;6022:9;6018:22;5997:53;:::i;:::-;5987:63;;5943:117;6099:2;6125:53;6170:7;6161:6;6150:9;6146:22;6125:53;:::i;:::-;6115:63;;6070:118;6227:2;6253:53;6298:7;6289:6;6278:9;6274:22;6253:53;:::i;:::-;6243:63;;6198:118;5704:619;;;;;:::o;6329:329::-;6388:6;6437:2;6425:9;6416:7;6412:23;6408:32;6405:119;;;6443:79;;:::i;:::-;6405:119;6563:1;6588:53;6633:7;6624:6;6613:9;6609:22;6588:53;:::i;:::-;6578:63;;6534:117;6329:329;;;;:::o;6664:86::-;6699:7;6739:4;6732:5;6728:16;6717:27;;6664:86;;;:::o;6756:112::-;6839:22;6855:5;6839:22;:::i;:::-;6834:3;6827:35;6756:112;;:::o;6874:214::-;6963:4;7001:2;6990:9;6986:18;6978:26;;7014:67;7078:1;7067:9;7063:17;7054:6;7014:67;:::i;:::-;6874:214;;;;:::o;7094:468::-;7159:6;7167;7216:2;7204:9;7195:7;7191:23;7187:32;7184:119;;;7222:79;;:::i;:::-;7184:119;7342:1;7367:53;7412:7;7403:6;7392:9;7388:22;7367:53;:::i;:::-;7357:63;;7313:117;7469:2;7495:50;7537:7;7528:6;7517:9;7513:22;7495:50;:::i;:::-;7485:60;;7440:115;7094:468;;;;;:::o;7568:104::-;7613:7;7642:24;7660:5;7642:24;:::i;:::-;7631:35;;7568:104;;;:::o;7678:138::-;7759:32;7785:5;7759:32;:::i;:::-;7752:5;7749:43;7739:71;;7806:1;7803;7796:12;7739:71;7678:138;:::o;7822:155::-;7876:5;7914:6;7901:20;7892:29;;7930:41;7965:5;7930:41;:::i;:::-;7822:155;;;;:::o;7983:345::-;8050:6;8099:2;8087:9;8078:7;8074:23;8070:32;8067:119;;;8105:79;;:::i;:::-;8067:119;8225:1;8250:61;8303:7;8294:6;8283:9;8279:22;8250:61;:::i;:::-;8240:71;;8196:125;7983:345;;;;:::o;8334:468::-;8399:6;8407;8456:2;8444:9;8435:7;8431:23;8427:32;8424:119;;;8462:79;;:::i;:::-;8424:119;8582:1;8607:53;8652:7;8643:6;8632:9;8628:22;8607:53;:::i;:::-;8597:63;;8553:117;8709:2;8735:50;8777:7;8768:6;8757:9;8753:22;8735:50;:::i;:::-;8725:60;;8680:115;8334:468;;;;;:::o;8808:118::-;8895:24;8913:5;8895:24;:::i;:::-;8890:3;8883:37;8808:118;;:::o;8932:222::-;9025:4;9063:2;9052:9;9048:18;9040:26;;9076:71;9144:1;9133:9;9129:17;9120:6;9076:71;:::i;:::-;8932:222;;;;:::o;9160:765::-;9246:6;9254;9262;9270;9319:3;9307:9;9298:7;9294:23;9290:33;9287:120;;;9326:79;;:::i;:::-;9287:120;9446:1;9471:53;9516:7;9507:6;9496:9;9492:22;9471:53;:::i;:::-;9461:63;;9417:117;9573:2;9599:53;9644:7;9635:6;9624:9;9620:22;9599:53;:::i;:::-;9589:63;;9544:118;9701:2;9727:53;9772:7;9763:6;9752:9;9748:22;9727:53;:::i;:::-;9717:63;;9672:118;9829:2;9855:53;9900:7;9891:6;9880:9;9876:22;9855:53;:::i;:::-;9845:63;;9800:118;9160:765;;;;;;;:::o;9931:474::-;9999:6;10007;10056:2;10044:9;10035:7;10031:23;10027:32;10024:119;;;10062:79;;:::i;:::-;10024:119;10182:1;10207:53;10252:7;10243:6;10232:9;10228:22;10207:53;:::i;:::-;10197:63;;10153:117;10309:2;10335:53;10380:7;10371:6;10360:9;10356:22;10335:53;:::i;:::-;10325:63;;10280:118;9931:474;;;;;:::o;10411:142::-;10514:32;10540:5;10514:32;:::i;:::-;10509:3;10502:45;10411:142;;:::o;10559:254::-;10668:4;10706:2;10695:9;10691:18;10683:26;;10719:87;10803:1;10792:9;10788:17;10779:6;10719:87;:::i;:::-;10559:254;;;;:::o;10819:180::-;10867:77;10864:1;10857:88;10964:4;10961:1;10954:15;10988:4;10985:1;10978:15;11005:320;11049:6;11086:1;11080:4;11076:12;11066:22;;11133:1;11127:4;11123:12;11154:18;11144:81;;11210:4;11202:6;11198:17;11188:27;;11144:81;11272:2;11264:6;11261:14;11241:18;11238:38;11235:84;;;11291:18;;:::i;:::-;11235:84;11056:269;11005:320;;;:::o;11331:182::-;11471:34;11467:1;11459:6;11455:14;11448:58;11331:182;:::o;11519:366::-;11661:3;11682:67;11746:2;11741:3;11682:67;:::i;:::-;11675:74;;11758:93;11847:3;11758:93;:::i;:::-;11876:2;11871:3;11867:12;11860:19;;11519:366;;;:::o;11891:419::-;12057:4;12095:2;12084:9;12080:18;12072:26;;12144:9;12138:4;12134:20;12130:1;12119:9;12115:17;12108:47;12172:131;12298:4;12172:131;:::i;:::-;12164:139;;11891:419;;;:::o;12316:165::-;12456:17;12452:1;12444:6;12440:14;12433:41;12316:165;:::o;12487:366::-;12629:3;12650:67;12714:2;12709:3;12650:67;:::i;:::-;12643:74;;12726:93;12815:3;12726:93;:::i;:::-;12844:2;12839:3;12835:12;12828:19;;12487:366;;;:::o;12859:419::-;13025:4;13063:2;13052:9;13048:18;13040:26;;13112:9;13106:4;13102:20;13098:1;13087:9;13083:17;13076:47;13140:131;13266:4;13140:131;:::i;:::-;13132:139;;12859:419;;;:::o;13284:220::-;13424:34;13420:1;13412:6;13408:14;13401:58;13493:3;13488:2;13480:6;13476:15;13469:28;13284:220;:::o;13510:366::-;13652:3;13673:67;13737:2;13732:3;13673:67;:::i;:::-;13666:74;;13749:93;13838:3;13749:93;:::i;:::-;13867:2;13862:3;13858:12;13851:19;;13510:366;;;:::o;13882:419::-;14048:4;14086:2;14075:9;14071:18;14063:26;;14135:9;14129:4;14125:20;14121:1;14110:9;14106:17;14099:47;14163:131;14289:4;14163:131;:::i;:::-;14155:139;;13882:419;;;:::o;14307:236::-;14447:34;14443:1;14435:6;14431:14;14424:58;14516:19;14511:2;14503:6;14499:15;14492:44;14307:236;:::o;14549:366::-;14691:3;14712:67;14776:2;14771:3;14712:67;:::i;:::-;14705:74;;14788:93;14877:3;14788:93;:::i;:::-;14906:2;14901:3;14897:12;14890:19;;14549:366;;;:::o;14921:419::-;15087:4;15125:2;15114:9;15110:18;15102:26;;15174:9;15168:4;15164:20;15160:1;15149:9;15145:17;15138:47;15202:131;15328:4;15202:131;:::i;:::-;15194:139;;14921:419;;;:::o;15346:177::-;15486:29;15482:1;15474:6;15470:14;15463:53;15346:177;:::o;15529:366::-;15671:3;15692:67;15756:2;15751:3;15692:67;:::i;:::-;15685:74;;15768:93;15857:3;15768:93;:::i;:::-;15886:2;15881:3;15877:12;15870:19;;15529:366;;;:::o;15901:419::-;16067:4;16105:2;16094:9;16090:18;16082:26;;16154:9;16148:4;16144:20;16140:1;16129:9;16125:17;16118:47;16182:131;16308:4;16182:131;:::i;:::-;16174:139;;15901:419;;;:::o;16326:170::-;16466:22;16462:1;16454:6;16450:14;16443:46;16326:170;:::o;16502:366::-;16644:3;16665:67;16729:2;16724:3;16665:67;:::i;:::-;16658:74;;16741:93;16830:3;16741:93;:::i;:::-;16859:2;16854:3;16850:12;16843:19;;16502:366;;;:::o;16874:419::-;17040:4;17078:2;17067:9;17063:18;17055:26;;17127:9;17121:4;17117:20;17113:1;17102:9;17098:17;17091:47;17155:131;17281:4;17155:131;:::i;:::-;17147:139;;16874:419;;;:::o;17299:238::-;17439:34;17435:1;17427:6;17423:14;17416:58;17508:21;17503:2;17495:6;17491:15;17484:46;17299:238;:::o;17543:366::-;17685:3;17706:67;17770:2;17765:3;17706:67;:::i;:::-;17699:74;;17782:93;17871:3;17782:93;:::i;:::-;17900:2;17895:3;17891:12;17884:19;;17543:366;;;:::o;17915:419::-;18081:4;18119:2;18108:9;18104:18;18096:26;;18168:9;18162:4;18158:20;18154:1;18143:9;18139:17;18132:47;18196:131;18322:4;18196:131;:::i;:::-;18188:139;;17915:419;;;:::o;18340:225::-;18480:34;18476:1;18468:6;18464:14;18457:58;18549:8;18544:2;18536:6;18532:15;18525:33;18340:225;:::o;18571:366::-;18713:3;18734:67;18798:2;18793:3;18734:67;:::i;:::-;18727:74;;18810:93;18899:3;18810:93;:::i;:::-;18928:2;18923:3;18919:12;18912:19;;18571:366;;;:::o;18943:419::-;19109:4;19147:2;19136:9;19132:18;19124:26;;19196:9;19190:4;19186:20;19182:1;19171:9;19167:17;19160:47;19224:131;19350:4;19224:131;:::i;:::-;19216:139;;18943:419;;;:::o;19368:332::-;19489:4;19527:2;19516:9;19512:18;19504:26;;19540:71;19608:1;19597:9;19593:17;19584:6;19540:71;:::i;:::-;19621:72;19689:2;19678:9;19674:18;19665:6;19621:72;:::i;:::-;19368:332;;;;;:::o;19706:137::-;19760:5;19791:6;19785:13;19776:22;;19807:30;19831:5;19807:30;:::i;:::-;19706:137;;;;:::o;19849:345::-;19916:6;19965:2;19953:9;19944:7;19940:23;19936:32;19933:119;;;19971:79;;:::i;:::-;19933:119;20091:1;20116:61;20169:7;20160:6;20149:9;20145:22;20116:61;:::i;:::-;20106:71;;20062:125;19849:345;;;;:::o;20200:162::-;20340:14;20336:1;20328:6;20324:14;20317:38;20200:162;:::o;20368:366::-;20510:3;20531:67;20595:2;20590:3;20531:67;:::i;:::-;20524:74;;20607:93;20696:3;20607:93;:::i;:::-;20725:2;20720:3;20716:12;20709:19;;20368:366;;;:::o;20740:419::-;20906:4;20944:2;20933:9;20929:18;20921:26;;20993:9;20987:4;20983:20;20979:1;20968:9;20964:17;20957:47;21021:131;21147:4;21021:131;:::i;:::-;21013:139;;20740:419;;;:::o;21165:225::-;21305:34;21301:1;21293:6;21289:14;21282:58;21374:8;21369:2;21361:6;21357:15;21350:33;21165:225;:::o;21396:366::-;21538:3;21559:67;21623:2;21618:3;21559:67;:::i;:::-;21552:74;;21635:93;21724:3;21635:93;:::i;:::-;21753:2;21748:3;21744:12;21737:19;;21396:366;;;:::o;21768:419::-;21934:4;21972:2;21961:9;21957:18;21949:26;;22021:9;22015:4;22011:20;22007:1;21996:9;21992:17;21985:47;22049:131;22175:4;22049:131;:::i;:::-;22041:139;;21768:419;;;:::o;22193:223::-;22333:34;22329:1;22321:6;22317:14;22310:58;22402:6;22397:2;22389:6;22385:15;22378:31;22193:223;:::o;22422:366::-;22564:3;22585:67;22649:2;22644:3;22585:67;:::i;:::-;22578:74;;22661:93;22750:3;22661:93;:::i;:::-;22779:2;22774:3;22770:12;22763:19;;22422:366;;;:::o;22794:419::-;22960:4;22998:2;22987:9;22983:18;22975:26;;23047:9;23041:4;23037:20;23033:1;23022:9;23018:17;23011:47;23075:131;23201:4;23075:131;:::i;:::-;23067:139;;22794:419;;;:::o;23219:221::-;23359:34;23355:1;23347:6;23343:14;23336:58;23428:4;23423:2;23415:6;23411:15;23404:29;23219:221;:::o;23446:366::-;23588:3;23609:67;23673:2;23668:3;23609:67;:::i;:::-;23602:74;;23685:93;23774:3;23685:93;:::i;:::-;23803:2;23798:3;23794:12;23787:19;;23446:366;;;:::o;23818:419::-;23984:4;24022:2;24011:9;24007:18;23999:26;;24071:9;24065:4;24061:20;24057:1;24046:9;24042:17;24035:47;24099:131;24225:4;24099:131;:::i;:::-;24091:139;;23818:419;;;:::o;24243:224::-;24383:34;24379:1;24371:6;24367:14;24360:58;24452:7;24447:2;24439:6;24435:15;24428:32;24243:224;:::o;24473:366::-;24615:3;24636:67;24700:2;24695:3;24636:67;:::i;:::-;24629:74;;24712:93;24801:3;24712:93;:::i;:::-;24830:2;24825:3;24821:12;24814:19;;24473:366;;;:::o;24845:419::-;25011:4;25049:2;25038:9;25034:18;25026:26;;25098:9;25092:4;25088:20;25084:1;25073:9;25069:17;25062:47;25126:131;25252:4;25126:131;:::i;:::-;25118:139;;24845:419;;;:::o;25270:222::-;25410:34;25406:1;25398:6;25394:14;25387:58;25479:5;25474:2;25466:6;25462:15;25455:30;25270:222;:::o;25498:366::-;25640:3;25661:67;25725:2;25720:3;25661:67;:::i;:::-;25654:74;;25737:93;25826:3;25737:93;:::i;:::-;25855:2;25850:3;25846:12;25839:19;;25498:366;;;:::o;25870:419::-;26036:4;26074:2;26063:9;26059:18;26051:26;;26123:9;26117:4;26113:20;26109:1;26098:9;26094:17;26087:47;26151:131;26277:4;26151:131;:::i;:::-;26143:139;;25870:419;;;:::o;26295:235::-;26435:34;26431:1;26423:6;26419:14;26412:58;26504:18;26499:2;26491:6;26487:15;26480:43;26295:235;:::o;26536:366::-;26678:3;26699:67;26763:2;26758:3;26699:67;:::i;:::-;26692:74;;26775:93;26864:3;26775:93;:::i;:::-;26893:2;26888:3;26884:12;26877:19;;26536:366;;;:::o;26908:419::-;27074:4;27112:2;27101:9;27097:18;27089:26;;27161:9;27155:4;27151:20;27147:1;27136:9;27132:17;27125:47;27189:131;27315:4;27189:131;:::i;:::-;27181:139;;26908:419;;;:::o;27333:180::-;27381:77;27378:1;27371:88;27478:4;27475:1;27468:15;27502:4;27499:1;27492:15;27519:191;27559:4;27579:20;27597:1;27579:20;:::i;:::-;27574:25;;27613:20;27631:1;27613:20;:::i;:::-;27608:25;;27652:1;27649;27646:8;27643:34;;;27657:18;;:::i;:::-;27643:34;27702:1;27699;27695:9;27687:17;;27519:191;;;;:::o;27716:305::-;27756:3;27775:20;27793:1;27775:20;:::i;:::-;27770:25;;27809:20;27827:1;27809:20;:::i;:::-;27804:25;;27963:1;27895:66;27891:74;27888:1;27885:81;27882:107;;;27969:18;;:::i;:::-;27882:107;28013:1;28010;28006:9;27999:16;;27716:305;;;;:::o;28027:177::-;28167:29;28163:1;28155:6;28151:14;28144:53;28027:177;:::o;28210:366::-;28352:3;28373:67;28437:2;28432:3;28373:67;:::i;:::-;28366:74;;28449:93;28538:3;28449:93;:::i;:::-;28567:2;28562:3;28558:12;28551:19;;28210:366;;;:::o;28582:419::-;28748:4;28786:2;28775:9;28771:18;28763:26;;28835:9;28829:4;28825:20;28821:1;28810:9;28806:17;28799:47;28863:131;28989:4;28863:131;:::i;:::-;28855:139;;28582:419;;;:::o;29007:348::-;29047:7;29070:20;29088:1;29070:20;:::i;:::-;29065:25;;29104:20;29122:1;29104:20;:::i;:::-;29099:25;;29292:1;29224:66;29220:74;29217:1;29214:81;29209:1;29202:9;29195:17;29191:105;29188:131;;;29299:18;;:::i;:::-;29188:131;29347:1;29344;29340:9;29329:20;;29007:348;;;;:::o;29361:180::-;29409:77;29406:1;29399:88;29506:4;29503:1;29496:15;29530:4;29527:1;29520:15;29547:185;29587:1;29604:20;29622:1;29604:20;:::i;:::-;29599:25;;29638:20;29656:1;29638:20;:::i;:::-;29633:25;;29677:1;29667:35;;29682:18;;:::i;:::-;29667:35;29724:1;29721;29717:9;29712:14;;29547:185;;;;:::o;29738:220::-;29878:34;29874:1;29866:6;29862:14;29855:58;29947:3;29942:2;29934:6;29930:15;29923:28;29738:220;:::o;29964:366::-;30106:3;30127:67;30191:2;30186:3;30127:67;:::i;:::-;30120:74;;30203:93;30292:3;30203:93;:::i;:::-;30321:2;30316:3;30312:12;30305:19;;29964:366;;;:::o;30336:419::-;30502:4;30540:2;30529:9;30525:18;30517:26;;30589:9;30583:4;30579:20;30575:1;30564:9;30560:17;30553:47;30617:131;30743:4;30617:131;:::i;:::-;30609:139;;30336:419;;;:::o;30761:442::-;30910:4;30948:2;30937:9;30933:18;30925:26;;30961:71;31029:1;31018:9;31014:17;31005:6;30961:71;:::i;:::-;31042:72;31110:2;31099:9;31095:18;31086:6;31042:72;:::i;:::-;31124;31192:2;31181:9;31177:18;31168:6;31124:72;:::i;:::-;30761:442;;;;;;:::o;31209:232::-;31349:34;31345:1;31337:6;31333:14;31326:58;31418:15;31413:2;31405:6;31401:15;31394:40;31209:232;:::o;31447:366::-;31589:3;31610:67;31674:2;31669:3;31610:67;:::i;:::-;31603:74;;31686:93;31775:3;31686:93;:::i;:::-;31804:2;31799:3;31795:12;31788:19;;31447:366;;;:::o;31819:419::-;31985:4;32023:2;32012:9;32008:18;32000:26;;32072:9;32066:4;32062:20;32058:1;32047:9;32043:17;32036:47;32100:131;32226:4;32100:131;:::i;:::-;32092:139;;31819:419;;;:::o;32244:180::-;32292:77;32289:1;32282:88;32389:4;32386:1;32379:15;32413:4;32410:1;32403:15;32430:180;32478:77;32475:1;32468:88;32575:4;32572:1;32565:15;32599:4;32596:1;32589:15;32616:143;32673:5;32704:6;32698:13;32689:22;;32720:33;32747:5;32720:33;:::i;:::-;32616:143;;;;:::o;32765:351::-;32835:6;32884:2;32872:9;32863:7;32859:23;32855:32;32852:119;;;32890:79;;:::i;:::-;32852:119;33010:1;33035:64;33091:7;33082:6;33071:9;33067:22;33035:64;:::i;:::-;33025:74;;32981:128;32765:351;;;;:::o;33122:85::-;33167:7;33196:5;33185:16;;33122:85;;;:::o;33213:158::-;33271:9;33304:61;33322:42;33331:32;33357:5;33331:32;:::i;:::-;33322:42;:::i;:::-;33304:61;:::i;:::-;33291:74;;33213:158;;;:::o;33377:147::-;33472:45;33511:5;33472:45;:::i;:::-;33467:3;33460:58;33377:147;;:::o;33530:114::-;33597:6;33631:5;33625:12;33615:22;;33530:114;;;:::o;33650:184::-;33749:11;33783:6;33778:3;33771:19;33823:4;33818:3;33814:14;33799:29;;33650:184;;;;:::o;33840:132::-;33907:4;33930:3;33922:11;;33960:4;33955:3;33951:14;33943:22;;33840:132;;;:::o;33978:108::-;34055:24;34073:5;34055:24;:::i;:::-;34050:3;34043:37;33978:108;;:::o;34092:179::-;34161:10;34182:46;34224:3;34216:6;34182:46;:::i;:::-;34260:4;34255:3;34251:14;34237:28;;34092:179;;;;:::o;34277:113::-;34347:4;34379;34374:3;34370:14;34362:22;;34277:113;;;:::o;34426:732::-;34545:3;34574:54;34622:5;34574:54;:::i;:::-;34644:86;34723:6;34718:3;34644:86;:::i;:::-;34637:93;;34754:56;34804:5;34754:56;:::i;:::-;34833:7;34864:1;34849:284;34874:6;34871:1;34868:13;34849:284;;;34950:6;34944:13;34977:63;35036:3;35021:13;34977:63;:::i;:::-;34970:70;;35063:60;35116:6;35063:60;:::i;:::-;35053:70;;34909:224;34896:1;34893;34889:9;34884:14;;34849:284;;;34853:14;35149:3;35142:10;;34550:608;;;34426:732;;;;:::o;35164:831::-;35427:4;35465:3;35454:9;35450:19;35442:27;;35479:71;35547:1;35536:9;35532:17;35523:6;35479:71;:::i;:::-;35560:80;35636:2;35625:9;35621:18;35612:6;35560:80;:::i;:::-;35687:9;35681:4;35677:20;35672:2;35661:9;35657:18;35650:48;35715:108;35818:4;35809:6;35715:108;:::i;:::-;35707:116;;35833:72;35901:2;35890:9;35886:18;35877:6;35833:72;:::i;:::-;35915:73;35983:3;35972:9;35968:19;35959:6;35915:73;:::i;:::-;35164:831;;;;;;;;:::o;36001:807::-;36250:4;36288:3;36277:9;36273:19;36265:27;;36302:71;36370:1;36359:9;36355:17;36346:6;36302:71;:::i;:::-;36383:72;36451:2;36440:9;36436:18;36427:6;36383:72;:::i;:::-;36465:80;36541:2;36530:9;36526:18;36517:6;36465:80;:::i;:::-;36555;36631:2;36620:9;36616:18;36607:6;36555:80;:::i;:::-;36645:73;36713:3;36702:9;36698:19;36689:6;36645:73;:::i;:::-;36728;36796:3;36785:9;36781:19;36772:6;36728:73;:::i;:::-;36001:807;;;;;;;;;:::o;36814:143::-;36871:5;36902:6;36896:13;36887:22;;36918:33;36945:5;36918:33;:::i;:::-;36814:143;;;;:::o;36963:663::-;37051:6;37059;37067;37116:2;37104:9;37095:7;37091:23;37087:32;37084:119;;;37122:79;;:::i;:::-;37084:119;37242:1;37267:64;37323:7;37314:6;37303:9;37299:22;37267:64;:::i;:::-;37257:74;;37213:128;37380:2;37406:64;37462:7;37453:6;37442:9;37438:22;37406:64;:::i;:::-;37396:74;;37351:129;37519:2;37545:64;37601:7;37592:6;37581:9;37577:22;37545:64;:::i;:::-;37535:74;;37490:129;36963:663;;;;;:::o;37632:225::-;37772:34;37768:1;37760:6;37756:14;37749:58;37841:8;37836:2;37828:6;37824:15;37817:33;37632:225;:::o;37863:366::-;38005:3;38026:67;38090:2;38085:3;38026:67;:::i;:::-;38019:74;;38102:93;38191:3;38102:93;:::i;:::-;38220:2;38215:3;38211:12;38204:19;;37863:366;;;:::o;38235:419::-;38401:4;38439:2;38428:9;38424:18;38416:26;;38488:9;38482:4;38478:20;38474:1;38463:9;38459:17;38452:47;38516:131;38642:4;38516:131;:::i;:::-;38508:139;;38235:419;;;:::o
Swarm Source
ipfs://4e0c5ea04ee6a57c2d48352decd3d798a166fb2e1a986f6327f66906904ca798
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.