ERC-20
Deflationary Token
Overview
Max Total Supply
69,000,000,000 LARP
Holders
61 (0.00%)
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
18,293,430.309302683 LARPValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Larp
Compiler Version
v0.8.9+commit.e5eed63a
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-07-14 */ // File: @uniswap/v2-core/contracts/interfaces/IUniswapV2Factory.sol pragma solidity >=0.5.0; interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } // File: @uniswap/v2-periphery/contracts/interfaces/IERC20.sol pragma solidity >=0.5.0; interface IERC20 { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); } // File: @uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router01.sol pragma solidity >=0.6.2; interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } // File: @uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router02.sol pragma solidity >=0.6.2; interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File: contracts/ERC20Ownable.sol pragma solidity ^0.8.0; abstract contract ERC20Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "ERC20Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "ERC20Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } // File: @openzeppelin/contracts/utils/math/SafeMath.sol // OpenZeppelin Contracts (last updated v4.6.0) (utils/math/SafeMath.sol) pragma solidity ^0.8.0; // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the subtraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // 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 (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } // File: contracts/Larp.sol // Larp Finance - a throwback to the simpler days of memecoins // // https://larp.finance/ // pragma solidity ^0.8.0; contract Larp is IERC20, ERC20Ownable { using SafeMath for uint256; address dead = 0x000000000000000000000000000000000000dEaD; address zero = address(0); uint8 public maxLiqFee = 10; uint8 public maxTaxFee = 10; uint8 public maxBurnFee = 10; uint8 public maxWalletFee = 10; uint8 public maxBuybackFee = 10; uint8 public minMxTxPercentage = 1; uint8 public minMxWalletPercentage = 1; 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 _isExcluded; address[] private _excluded; uint256 private constant MAX = ~uint256(0); uint256 public _tTotal; uint256 private _rTotal; uint256 private _tFeeTotal; string public _name; string public _symbol; uint8 private _decimals = 18; uint8 public _taxFee = 0; // Fee for Reflection uint8 private _previousTaxFee = _taxFee; uint8 public _liquidityFee = 0; // Fee for Liquidity uint8 private _previousLiquidityFee = _liquidityFee; uint8 public _burnFee = 0; // Fee for burning uint8 private _previousBurnFee = _burnFee; uint8 public _walletFee = 0; // Fee to marketing/charity wallet uint8 private _previousWalletFee = _walletFee; uint8 public _buybackFee = 0; // Fee for buyback of tokens uint8 private _previousBuybackFee = _buybackFee; IUniswapV2Router02 public immutable uniV2Router; address public immutable uniV2Pair; address payable public feeWallet; bool inSwapAndLiquify; bool public swapAndLiquifyEnabled = true; uint256 public numTokensSellToAddToLiquidity; uint256 private buyBackUpperLimit = 1 * 10**18; event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapAndLiquify(uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity); modifier lockTheSwap() { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor( string memory token_name, string memory token_symbol, uint8 token_decimals, uint256 initial, address router, uint8 tax_reflection, uint8 tax_wallet, uint8 tax_burn, uint8 tax_liquidity, uint8 tax_buyback ) { _name = token_name; _symbol = token_symbol; _decimals = token_decimals; _tTotal = initial; _rTotal = (MAX - (MAX % _tTotal)); buyBackUpperLimit = initial.mul(1).div(10000); _rOwned[_msgSender()] = _rTotal; feeWallet = payable(_msgSender()); numTokensSellToAddToLiquidity = initial.mul(1).div(1000); IUniswapV2Router02 _uniV2Router = IUniswapV2Router02(router); // Create a uniswap pair for this new token uniV2Pair = IUniswapV2Factory(_uniV2Router.factory()).createPair(address(this), _uniV2Router.WETH()); // set the rest of the contract variables uniV2Router = _uniV2Router; _isExcludedFromFee[_msgSender()] = true; _isExcludedFromFee[address(this)] = true; _taxFee = tax_reflection; _liquidityFee = tax_liquidity; _burnFee = tax_burn; _buybackFee = tax_buyback; _walletFee = tax_wallet; emit Transfer(address(0), _msgSender(), _tTotal); } function name() public view override returns (string memory) { return _name; } function symbol() public view override returns (string memory) { return _symbol; } function decimals() public view override returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { if (_isExcluded[account]) return _tOwned[account]; return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } 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) { _transfer(sender, recipient, amount); _approve( sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: 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, "ERC20: decreased allowance below zero") ); return true; } function isExcludedFromReward(address account) public view returns (bool) { return _isExcluded[account]; } function totalFees() public view returns (uint256) { return _tFeeTotal; } function deliver(uint256 tAmount) public { address sender = _msgSender(); require(!_isExcluded[sender], "Excluded addresses cannot call this function"); (uint256 rAmount, , , , , ) = _getValues(tAmount); _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, "Amt must be less than supply"); if (!deductTransferFee) { (uint256 rAmount, , , , , ) = _getValues(tAmount); return rAmount; } else { (, uint256 rTransferAmount, , , , ) = _getValues(tAmount); return rTransferAmount; } } function tokenFromReflection(uint256 rAmount) public view returns (uint256) { require(rAmount <= _rTotal, "Amt must be less than tot refl"); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function excludeFromReward(address account) public onlyOwner { if (!_isExcluded[account]) { if (_rOwned[account] > 0) { _tOwned[account] = tokenFromReflection(_rOwned[account]); } _isExcluded[account] = true; _excluded.push(account); } } function includeInReward(address account) external onlyOwner { require(_isExcluded[account], "Already excluded"); for (uint256 i = 0; i < _excluded.length; i++) { if (_excluded[i] == account) { _excluded[i] = _excluded[_excluded.length - 1]; _tOwned[account] = 0; _isExcluded[account] = false; _excluded.pop(); break; } } } function excludeFromFee(address account) public onlyOwner { _isExcludedFromFee[account] = true; } function includeInFee(address account) public onlyOwner { _isExcludedFromFee[account] = false; } function setAllFeePercent( uint8 taxFee, uint8 liquidityFee, uint8 burnFee, uint8 walletFee, uint8 buybackFee ) external onlyOwner { require(taxFee >= 0 && taxFee <= maxTaxFee, "TF error"); require(liquidityFee >= 0 && liquidityFee <= maxLiqFee, "LF error"); require(burnFee >= 0 && burnFee <= maxBurnFee, "BF error"); require(walletFee >= 0 && walletFee <= maxWalletFee, "WF error"); require(buybackFee >= 0 && buybackFee <= maxBuybackFee, "BBF error"); _taxFee = taxFee; _liquidityFee = liquidityFee; _burnFee = burnFee; _buybackFee = buybackFee; _walletFee = walletFee; } function buyBackUpperLimitAmount() public view returns (uint256) { return buyBackUpperLimit; } function setBuybackUpperLimit(uint256 buyBackLimit) external onlyOwner { buyBackUpperLimit = buyBackLimit * 10**_decimals; } function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner { swapAndLiquifyEnabled = _enabled; emit SwapAndLiquifyEnabledUpdated(_enabled); } function setFeeWallet(address payable newFeeWallet) external onlyOwner { require(newFeeWallet != address(0), "ZERO ADDRESS"); excludeFromReward(newFeeWallet); feeWallet = newFeeWallet; } //to recieve ETH from uniV2Router when swaping receive() external payable {} function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } function _getValues(uint256 tAmount) private view returns ( uint256, uint256, uint256, uint256, uint256, uint256 ) { (uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getTValues(tAmount); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tLiquidity, _getRate()); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tLiquidity); } function _getTValues(uint256 tAmount) private view returns ( uint256, uint256, uint256 ) { uint256 tFee = calculateTaxFee(tAmount); uint256 tLiquidity = calculateLiquidityFee(tAmount); uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity); return (tTransferAmount, tFee, tLiquidity); } function _getRValues( uint256 tAmount, uint256 tFee, uint256 tLiquidity, uint256 currentRate ) private pure returns ( uint256, uint256, uint256 ) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rLiquidity = tLiquidity.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rLiquidity); return (rAmount, rTransferAmount, rFee); } function _getRate() private view returns (uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(tSupply); } function _getCurrentSupply() private view returns (uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; for (uint256 i = 0; i < _excluded.length; i++) { if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal); rSupply = rSupply.sub(_rOwned[_excluded[i]]); tSupply = tSupply.sub(_tOwned[_excluded[i]]); } if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } function _takeLiquidity(uint256 tLiquidity) private { uint256 currentRate = _getRate(); uint256 rLiquidity = tLiquidity.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity); if (_isExcluded[address(this)]) _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity); } function calculateTaxFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_taxFee).div(10**2); } function calculateLiquidityFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_liquidityFee + _burnFee + _walletFee + _buybackFee).div(10**2); } function removeAllFee() private { if (_taxFee == 0 && _liquidityFee == 0 && _burnFee == 0 && _walletFee == 0 && _buybackFee == 0) return; _previousTaxFee = _taxFee; _previousLiquidityFee = _liquidityFee; _previousBurnFee = _burnFee; _previousWalletFee = _walletFee; _previousBuybackFee = _buybackFee; _taxFee = 0; _liquidityFee = 0; _burnFee = 0; _walletFee = 0; _buybackFee = 0; } function restoreAllFee() private { _taxFee = _previousTaxFee; _liquidityFee = _previousLiquidityFee; _burnFee = _previousBurnFee; _walletFee = _previousWalletFee; _buybackFee = _previousBuybackFee; } function isExcludedFromFee(address account) public view returns (bool) { return _isExcludedFromFee[account]; } function _approve( address owner, address spender, uint256 amount ) private { require(owner != address(0), "ERC20: approve from zero address"); require(spender != address(0), "ERC20: approve to zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer( address from, address to, uint256 amount ) private { require(from != address(0), "ERC20: transfer from zero address"); require(to != address(0), "ERC20: transfer to zero address"); require(amount > 0, "Transfer amount must be greater than zero"); uint256 contractTokenBalance = balanceOf(address(this)); if (!inSwapAndLiquify && to == uniV2Pair && swapAndLiquifyEnabled) { if (contractTokenBalance >= numTokensSellToAddToLiquidity) { contractTokenBalance = numTokensSellToAddToLiquidity; //add liquidity swapAndLiquify(contractTokenBalance); } if (_buybackFee != 0) { uint256 balance = address(this).balance; if (balance > uint256(1 * 10**_decimals)) { if (balance > buyBackUpperLimit) { balance = buyBackUpperLimit; } buyBackTokens(balance.mul(50).div(100)); } } } //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]) { takeFee = false; } //transfer amount, it will take tax, burn, liquidity fee _tokenTransfer(from, to, amount, takeFee); } function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap { //This needs to be distributed among burn, wallet and liquidity //burn uint8 totFee = _burnFee + _walletFee + _liquidityFee + _buybackFee; uint256 spentAmount = 0; uint256 totSpentAmount = 0; if (_burnFee != 0) { spentAmount = contractTokenBalance.div(totFee).mul(_burnFee); _tokenTransferNoFee(address(this), dead, spentAmount); totSpentAmount = spentAmount; } if (_walletFee != 0) { spentAmount = contractTokenBalance.div(totFee).mul(_walletFee); _tokenTransferNoFee(address(this), feeWallet, spentAmount); totSpentAmount = totSpentAmount + spentAmount; } if (_buybackFee != 0) { spentAmount = contractTokenBalance.div(totFee).mul(_buybackFee); swapTokensForETH(spentAmount); totSpentAmount = totSpentAmount + spentAmount; } if (_liquidityFee != 0) { contractTokenBalance = contractTokenBalance.sub(totSpentAmount); // split the contract balance into halves uint256 half = contractTokenBalance.div(2); uint256 otherHalf = contractTokenBalance.sub(half); // capture the contract's current ETH balance. // this is so that we can capture exactly the amount of ETH that the // swap creates, and not make the liquidity event include any ETH that // has been manually sent to the contract uint256 initialBalance = address(this).balance; // swap tokens for ETH swapTokensForETH(half); // <- this breaks the ETH -> HATE swap when swap+liquify is triggered // how much ETH did we just swap into? uint256 newBalance = address(this).balance.sub(initialBalance); // add liquidity to uniswap addLiquidity(otherHalf, newBalance); emit SwapAndLiquify(half, newBalance, otherHalf); } } function buyBackTokens(uint256 amount) private lockTheSwap { if (amount > 0) { swapETHForTokens(amount); } } function swapTokensForETH(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniV2Router.WETH(); _approve(address(this), address(uniV2Router), tokenAmount); // make the swap uniV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp.add(300) ); } function swapETHForTokens(uint256 amount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = uniV2Router.WETH(); path[1] = address(this); // make the swap uniV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}( 0, // accept any amount of Tokens path, dead, // Burn address block.timestamp.add(300) ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniV2Router), tokenAmount); // add the liquidity uniV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable dead, block.timestamp.add(300) ); } //this method is responsible for taking all fee, if takeFee is true function _tokenTransfer( address sender, address recipient, uint256 amount, bool takeFee ) private { if (!takeFee) removeAllFee(); if (_isExcluded[sender] && !_isExcluded[recipient]) { _transferFromExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && _isExcluded[recipient]) { _transferToExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && !_isExcluded[recipient]) { _transferStandard(sender, recipient, amount); } else if (_isExcluded[sender] && _isExcluded[recipient]) { _transferBothExcluded(sender, recipient, amount); } else { _transferStandard(sender, recipient, amount); } if (!takeFee) restoreAllFee(); } function _transferStandard( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity ) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferToExcluded( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity ) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferFromExcluded( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity ) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferBothExcluded( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity ) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _tokenTransferNoFee( address sender, address recipient, uint256 amount ) private { _rOwned[sender] = _rOwned[sender].sub(amount); _rOwned[recipient] = _rOwned[recipient].add(amount); if (_isExcluded[sender]) { _tOwned[sender] = _tOwned[sender].sub(amount); } if (_isExcluded[recipient]) { _tOwned[recipient] = _tOwned[recipient].add(amount); } emit Transfer(sender, recipient, amount); } function recoverToken(address tokenAddress, uint256 tokenAmount) public onlyOwner { // do not allow recovering self token require(tokenAddress != address(this), "Self withdraw"); IERC20(tokenAddress).transfer(owner(), tokenAmount); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"token_name","type":"string"},{"internalType":"string","name":"token_symbol","type":"string"},{"internalType":"uint8","name":"token_decimals","type":"uint8"},{"internalType":"uint256","name":"initial","type":"uint256"},{"internalType":"address","name":"router","type":"address"},{"internalType":"uint8","name":"tax_reflection","type":"uint8"},{"internalType":"uint8","name":"tax_wallet","type":"uint8"},{"internalType":"uint8","name":"tax_burn","type":"uint8"},{"internalType":"uint8","name":"tax_liquidity","type":"uint8"},{"internalType":"uint8","name":"tax_buyback","type":"uint8"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","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":"_burnFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buybackFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_tTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBackUpperLimitAmount","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":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","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":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBurnFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuybackFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxLiqFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTaxFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minMxTxPercentage","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minMxWalletPercentage","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numTokensSellToAddToLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"recoverToken","outputs":[],"stateMutability":"nonpayable","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":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"taxFee","type":"uint8"},{"internalType":"uint8","name":"liquidityFee","type":"uint8"},{"internalType":"uint8","name":"burnFee","type":"uint8"},{"internalType":"uint8","name":"walletFee","type":"uint8"},{"internalType":"uint8","name":"buybackFee","type":"uint8"}],"name":"setAllFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyBackLimit","type":"uint256"}],"name":"setBuybackUpperLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newFeeWallet","type":"address"}],"name":"setFeeWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","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":"totalFees","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"},{"inputs":[],"name":"uniV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c06040526001805461dead600160a060020a0319909116178155600280547fffffffffff000000000000000000000000000000000000000000000000000000167a01010a0a0a0a0a0000000000000000000000000000000000000000179055600e80546affffffff000000000000001966ffffffff0000001962ffffff19831660ff610100601261ffff19909616861704811662010000029190911790931790811666ffff000000000019630100000063ff00000019841604851664010000000002908116919091176501000000000065ffffff0000001990931665ff000000000019929092169190911791909104831666010000000000000217908116604860020a61ffff0219670100000000000000603860020a60ff02198416048416680100000000000000000290811691909117690100000000000000000069ffffff0000000000000019909316604860020a60ff02199290921691909117919091049091166a010000000000000000000002179055600f805460ff19169091179055670de0b6b3a76400006011553480156200019957600080fd5b50604051620041af380380620041af833981016040819052620001bc916200087d565b6000620001d16401000000006200069b810204565b60008054600160a060020a031916600160a060020a0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35089516200023090600c9060208d0190620006c2565b5088516200024690600d9060208c0190620006c2565b50600e805460ff191660ff8a1617905560098790556200026987600019620009a4565b6200027790600019620009ea565b600a55620002b16127106200029c896001640100000000620019de6200069f82021704565b90640100000000620019ea620006b482021704565b601155600a5460036000620002ce6401000000006200069b810204565b600160a060020a03168152602081019190915260400160002055620002fb6401000000006200069b810204565b600e8054600160a060020a03929092166b010000000000000000000000027fff0000000000000000000000000000000000000000ffffffffffffffffffffff909216919091179055620003656103e86200029c896001640100000000620019de6200069f82021704565b601081905550600086905080600160a060020a031663c45a01556040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b158015620003c657600080fd5b505afa158015620003db573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000401919062000a04565b600160a060020a031663c9c653963083600160a060020a031663ad5c46486040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b1580156200046657600080fd5b505afa1580156200047b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004a1919062000a04565b6040517c010000000000000000000000000000000000000000000000000000000063ffffffff8516028152600160a060020a03928316600482015291166024820152604401602060405180830381600087803b1580156200050157600080fd5b505af115801562000516573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200053c919062000a04565b600160a060020a0390811660a0528116608052600160066000620005686401000000006200069b810204565b600160a060020a0316815260208082019290925260409081016000908120805460ff199081169515159590951790553081526006909252902080549091166001179055600e805463ff00ff00191661010060ff8981169190910263ff0000001916919091176301000000868316021769ff000000ff000000000019166501000000000087831602604860020a60ff0219161769010000000000000000008583160217603860020a60ff021916670100000000000000918816919091021790556200063a6401000000006200069b810204565b600160a060020a03166000600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009546040516200068291815260200190565b60405180910390a3505050505050505050505062000ab1565b3390565b6000620006ad828462000a22565b9392505050565b6000620006ad828462000a44565b828054620006d09062000a5b565b90600052602060002090601f016020900481019282620006f457600085556200073f565b82601f106200070f57805160ff19168380011785556200073f565b828001600101855582156200073f579182015b828111156200073f57825182559160200191906001019062000722565b506200074d92915062000751565b5090565b5b808211156200074d576000815560010162000752565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112620007a957600080fd5b81516001604060020a0380821115620007c657620007c662000768565b604051601f8301601f19908116603f01168101908282118183101715620007f157620007f162000768565b816040528381526020925086838588010111156200080e57600080fd5b600091505b8382101562000832578582018301518183018401529082019062000813565b83821115620008445760008385830101525b9695505050505050565b805160ff811681146200086057600080fd5b919050565b8051600160a060020a03811681146200086057600080fd5b6000806000806000806000806000806101408b8d0312156200089e57600080fd5b8a516001604060020a0380821115620008b657600080fd5b620008c48e838f0162000797565b9b5060208d0151915080821115620008db57600080fd5b50620008ea8d828e0162000797565b995050620008fb60408c016200084e565b975060608b015196506200091260808c0162000865565b95506200092260a08c016200084e565b94506200093260c08c016200084e565b93506200094260e08c016200084e565b9250620009536101008c016200084e565b9150620009646101208c016200084e565b90509295989b9194979a5092959850565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082620009b657620009b662000975565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015620009ff57620009ff620009bb565b500390565b60006020828403121562000a1757600080fd5b620006ad8262000865565b600081600019048311821515161562000a3f5762000a3f620009bb565b500290565b60008262000a565762000a5662000975565b500490565b60028104600182168062000a7057607f821691505b6020821081141562000aab577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60805160a0516136a062000b0f600039600081816107570152611c800152600081816107e1015281816126f6015281816127c1015281816127f001528181612885015281816128b7015281816129b90152612aad01526136a06000f3fe6080604052600436106102d15760003560e060020a9004806370a0823111610179578063b09f1266116100e0578063d12a768811610099578063ea2f0b3711610073578063ea2f0b371461099f578063f25f4b56146109bf578063f2fde38b146109ee578063f6a3c9a914610a0e57600080fd5b8063d12a76881461092e578063d28d885214610944578063dd62ed3e1461095957600080fd5b8063b09f12661461086e578063b29a814014610883578063bdc653ef146108a3578063c0b0fda2146108b8578063c49b9a80146108db578063c7992f9a146108fb57600080fd5b806390d49b9d1161013257806390d49b9d146107af578063958c2e52146107cf57806395d89b4114610803578063a457c2d714610818578063a9059cbb14610838578063af465a271461085857600080fd5b806370a08231146106b7578063715018a6146106d757806382d2a4bb146106ec57806388f820201461070c5780638bcea939146107455780638da5cb5b1461079157600080fd5b80633b124fe7116102385780634a74bb02116101f15780635342acb4116101cb5780635342acb41461060057806354ce6578146106395780636bc87c3a1461065e57806370690b111461067f57600080fd5b80634a74bb021461059157806351330a19146105ab57806352390c02146105e057600080fd5b80633b124fe7146104ac5780633bd5d173146104cb5780633c81385c146104eb578063430ca0901461051f578063437823ec146105515780634549b0391461057157600080fd5b806323b872dd1161028a57806323b872dd146103db5780632d838119146103fb578063313ce5671461041b578063324f8dbf146104335780633685d4191461046a578063395093511461048c57600080fd5b806306fdde03146102dd578063095ea7b31461030857806313114a9d1461033857806315fa749a1461035757806318160ddd1461039f57806319de79ab146103b457600080fd5b366102d857005b600080fd5b3480156102e957600080fd5b506102f2610a2e565b6040516102ff9190613060565b60405180910390f35b34801561031457600080fd5b506103286103233660046130ca565b610ac0565b60405190151581526020016102ff565b34801561034457600080fd5b50600b545b6040519081526020016102ff565b34801561036357600080fd5b5060025461038d907801000000000000000000000000000000000000000000000000900460ff1681565b60405160ff90911681526020016102ff565b3480156103ab57600080fd5b50600954610349565b3480156103c057600080fd5b50600e5461038d906901000000000000000000900460ff1681565b3480156103e757600080fd5b506103286103f63660046130f6565b610ad7565b34801561040757600080fd5b50610349610416366004613137565b610b40565b34801561042757600080fd5b50600e5460ff1661038d565b34801561043f57600080fd5b5060025461038d90790100000000000000000000000000000000000000000000000000900460ff1681565b34801561047657600080fd5b5061048a610485366004613150565b610bb9565b005b34801561049857600080fd5b506103286104a73660046130ca565b610d90565b3480156104b857600080fd5b50600e5461038d90610100900460ff1681565b3480156104d757600080fd5b5061048a6104e6366004613137565b610dc6565b3480156104f757600080fd5b5060025461038d90760100000000000000000000000000000000000000000000900460ff1681565b34801561052b57600080fd5b5060025461038d9074010000000000000000000000000000000000000000900460ff1681565b34801561055d57600080fd5b5061048a61056c366004613150565b610ec4565b34801561057d57600080fd5b5061034961058c36600461317b565b610f15565b34801561059d57600080fd5b50600f546103289060ff1681565b3480156105b757600080fd5b5060025461038d9077010000000000000000000000000000000000000000000000900460ff1681565b3480156105ec57600080fd5b5061048a6105fb366004613150565b610fa5565b34801561060c57600080fd5b5061032861061b366004613150565b600160a060020a031660009081526006602052604090205460ff1690565b34801561064557600080fd5b50600e5461038d90670100000000000000900460ff1681565b34801561066a57600080fd5b50600e5461038d906301000000900460ff1681565b34801561068b57600080fd5b5060025461038d907a010000000000000000000000000000000000000000000000000000900460ff1681565b3480156106c357600080fd5b506103496106d2366004613150565b6110c2565b3480156106e357600080fd5b5061048a611121565b3480156106f857600080fd5b5061048a610707366004613137565b6111a5565b34801561071857600080fd5b50610328610727366004613150565b600160a060020a031660009081526007602052604090205460ff1690565b34801561075157600080fd5b506107797f000000000000000000000000000000000000000000000000000000000000000081565b604051600160a060020a0390911681526020016102ff565b34801561079d57600080fd5b50600054600160a060020a0316610779565b3480156107bb57600080fd5b5061048a6107ca366004613150565b6111f3565b3480156107db57600080fd5b506107797f000000000000000000000000000000000000000000000000000000000000000081565b34801561080f57600080fd5b506102f26112cb565b34801561082457600080fd5b506103286108333660046130ca565b6112da565b34801561084457600080fd5b506103286108533660046130ca565b611329565b34801561086457600080fd5b5061034960095481565b34801561087a57600080fd5b506102f2611336565b34801561088f57600080fd5b5061048a61089e3660046130ca565b6113c4565b3480156108af57600080fd5b50601154610349565b3480156108c457600080fd5b50600e5461038d9065010000000000900460ff1681565b3480156108e757600080fd5b5061048a6108f63660046131ab565b6114f1565b34801561090757600080fd5b5060025461038d907501000000000000000000000000000000000000000000900460ff1681565b34801561093a57600080fd5b5061034960105481565b34801561095057600080fd5b506102f2611565565b34801561096557600080fd5b506103496109743660046131c8565b600160a060020a03918216600090815260056020908152604080832093909416825291909152205490565b3480156109ab57600080fd5b5061048a6109ba366004613150565b611572565b3480156109cb57600080fd5b50600e54610779906b0100000000000000000000009004600160a060020a031681565b3480156109fa57600080fd5b5061048a610a09366004613150565b6115c0565b348015610a1a57600080fd5b5061048a610a2936600461320c565b6116d4565b6060600c8054610a3d90613271565b80601f0160208091040260200160405190810160405280929190818152602001828054610a6990613271565b8015610ab65780601f10610a8b57610100808354040283529160200191610ab6565b820191906000526020600020905b815481529060010190602001808311610a9957829003601f168201915b5050505050905090565b6000610acd3384846119f6565b5060015b92915050565b6000610ae4848484611b0a565b610b368433610b318560405180606001604052806028815260200161361e60289139600160a060020a038a1660009081526005602090815260408083203384529091529020549190611da8565b6119f6565b5060019392505050565b6000600a54821115610b9c5760405160e560020a62461bcd02815260206004820152601e60248201527f416d74206d757374206265206c657373207468616e20746f74207265666c000060448201526064015b60405180910390fd5b6000610ba6611dd7565b9050610bb283826119ea565b9392505050565b600054600160a060020a03163314610be65760405160e560020a62461bcd028152600401610b93906132af565b600160a060020a03811660009081526007602052604090205460ff16610c515760405160e560020a62461bcd02815260206004820152601060248201527f416c7265616479206578636c75646564000000000000000000000000000000006044820152606401610b93565b60005b600854811015610d8c5781600160a060020a031660088281548110610c7b57610c7b61330c565b600091825260209091200154600160a060020a03161415610d7a5760088054610ca69060019061333e565b81548110610cb657610cb661330c565b60009182526020909120015460088054600160a060020a039092169183908110610ce257610ce261330c565b6000918252602080832091909101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039485161790559184168152600482526040808220829055600790925220805460ff191690556008805480610d4757610d47613355565b6000828152602090208101600019908101805473ffffffffffffffffffffffffffffffffffffffff191690550190555050565b80610d848161336e565b915050610c54565b5050565b336000818152600560209081526040808320600160a060020a03871684529091528120549091610acd918590610b319086611dfa565b3360008181526007602052604090205460ff1615610e4f5760405160e560020a62461bcd02815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201527f6869732066756e6374696f6e00000000000000000000000000000000000000006064820152608401610b93565b6000610e5a83611e06565b50505050600160a060020a038416600090815260036020526040902054919250610e8691905082611e55565b600160a060020a038316600090815260036020526040902055600a54610eac9082611e55565b600a55600b54610ebc9084611dfa565b600b55505050565b600054600160a060020a03163314610ef15760405160e560020a62461bcd028152600401610b93906132af565b600160a060020a03166000908152600660205260409020805460ff19166001179055565b6000600954831115610f6c5760405160e560020a62461bcd02815260206004820152601c60248201527f416d74206d757374206265206c657373207468616e20737570706c79000000006044820152606401610b93565b81610f8b576000610f7c84611e06565b50939550610ad1945050505050565b6000610f9684611e06565b50929550610ad1945050505050565b600054600160a060020a03163314610fd25760405160e560020a62461bcd028152600401610b93906132af565b600160a060020a03811660009081526007602052604090205460ff166110bf57600160a060020a0381166000908152600360205260409020541561104c57600160a060020a03811660009081526003602052604090205461103290610b40565b600160a060020a0382166000908152600460205260409020555b600160a060020a0381166000818152600760205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee301805473ffffffffffffffffffffffffffffffffffffffff191690911790555b50565b600160a060020a03811660009081526007602052604081205460ff16156110ff5750600160a060020a031660009081526004602052604090205490565b600160a060020a038216600090815260036020526040902054610ad190610b40565b600054600160a060020a0316331461114e5760405160e560020a62461bcd028152600401610b93906132af565b60008054604051600160a060020a03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36000805473ffffffffffffffffffffffffffffffffffffffff19169055565b600054600160a060020a031633146111d25760405160e560020a62461bcd028152600401610b93906132af565b600e546111e39060ff16600a613470565b6111ed908261347f565b60115550565b600054600160a060020a031633146112205760405160e560020a62461bcd028152600401610b93906132af565b600160a060020a0381166112795760405160e560020a62461bcd02815260206004820152600c60248201527f5a45524f204144445245535300000000000000000000000000000000000000006044820152606401610b93565b61128281610fa5565b600e8054600160a060020a039092166b010000000000000000000000027fff0000000000000000000000000000000000000000ffffffffffffffffffffff909216919091179055565b6060600d8054610a3d90613271565b6000610acd3384610b318560405180606001604052806025815260200161364660259139336000908152600560209081526040808320600160a060020a038d1684529091529020549190611da8565b6000610acd338484611b0a565b600d805461134390613271565b80601f016020809104026020016040519081016040528092919081815260200182805461136f90613271565b80156113bc5780601f10611391576101008083540402835291602001916113bc565b820191906000526020600020905b81548152906001019060200180831161139f57829003601f168201915b505050505081565b600054600160a060020a031633146113f15760405160e560020a62461bcd028152600401610b93906132af565b600160a060020a03821630141561144d5760405160e560020a62461bcd02815260206004820152600d60248201527f53656c66207769746864726177000000000000000000000000000000000000006044820152606401610b93565b81600160a060020a031663a9059cbb61146e600054600160a060020a031690565b60405160e060020a63ffffffff8416028152600160a060020a03909116600482015260248101849052604401602060405180830381600087803b1580156114b457600080fd5b505af11580156114c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ec919061349e565b505050565b600054600160a060020a0316331461151e5760405160e560020a62461bcd028152600401610b93906132af565b600f805460ff19168215159081179091556040519081527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599060200160405180910390a150565b600c805461134390613271565b600054600160a060020a0316331461159f5760405160e560020a62461bcd028152600401610b93906132af565b600160a060020a03166000908152600660205260409020805460ff19169055565b600054600160a060020a031633146115ed5760405160e560020a62461bcd028152600401610b93906132af565b600160a060020a03811661166c5760405160e560020a62461bcd02815260206004820152602b60248201527f45524332304f776e61626c653a206e6577206f776e657220697320746865207a60448201527f65726f20616464726573730000000000000000000000000000000000000000006064820152608401610b93565b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600054600160a060020a031633146117015760405160e560020a62461bcd028152600401610b93906132af565b60025460ff7501000000000000000000000000000000000000000000909104811690861611156117765760405160e560020a62461bcd02815260206004820152600860248201527f5446206572726f720000000000000000000000000000000000000000000000006044820152606401610b93565b60025460ff74010000000000000000000000000000000000000000909104811690851611156117ea5760405160e560020a62461bcd02815260206004820152600860248201527f4c46206572726f720000000000000000000000000000000000000000000000006044820152606401610b93565b60025460ff760100000000000000000000000000000000000000000000909104811690841611156118605760405160e560020a62461bcd02815260206004820152600860248201527f4246206572726f720000000000000000000000000000000000000000000000006044820152606401610b93565b60025460ff77010000000000000000000000000000000000000000000000909104811690831611156118d75760405160e560020a62461bcd02815260206004820152600860248201527f5746206572726f720000000000000000000000000000000000000000000000006044820152606401610b93565b60025460ff78010000000000000000000000000000000000000000000000009091048116908216111561194f5760405160e560020a62461bcd02815260206004820152600960248201527f424246206572726f7200000000000000000000000000000000000000000000006044820152606401610b93565b600e805463ff00ff00191661010060ff9788160263ff0000001916176301000000958716959095029490941769ff000000ff00000000001916650100000000009386169390930269ff0000000000000000001916929092176901000000000000000000928516929092029190911767ff0000000000000019166701000000000000009190931602919091179055565b6000610bb2828461347f565b6000610bb282846134bb565b600160a060020a038316611a4f5760405160e560020a62461bcd02815260206004820181905260248201527f45524332303a20617070726f76652066726f6d207a65726f20616464726573736044820152606401610b93565b600160a060020a038216611aa85760405160e560020a62461bcd02815260206004820152601e60248201527f45524332303a20617070726f766520746f207a65726f206164647265737300006044820152606401610b93565b600160a060020a0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600160a060020a038316611b895760405160e560020a62461bcd02815260206004820152602160248201527f45524332303a207472616e736665722066726f6d207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610b93565b600160a060020a038216611be25760405160e560020a62461bcd02815260206004820152601f60248201527f45524332303a207472616e7366657220746f207a65726f2061646472657373006044820152606401610b93565b60008111611c5b5760405160e560020a62461bcd02815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610b93565b6000611c66306110c2565b600e5490915060f860020a900460ff16158015611cb457507f0000000000000000000000000000000000000000000000000000000000000000600160a060020a031683600160a060020a0316145b8015611cc25750600f5460ff165b15611d4a576010548110611cdd5750601054611cdd81611e61565b600e546901000000000000000000900460ff1615611d4a57600e54303190611d099060ff16600a613470565b611d1490600161347f565b811115611d4857601154811115611d2a57506011545b611d48611d436064611d3d8460326119de565b906119ea565b6120ac565b505b600160a060020a03841660009081526006602052604090205460019060ff1680611d8c5750600160a060020a03841660009081526006602052604090205460ff165b15611d95575060005b611da1858585846120e2565b5050505050565b60008184841115611dcf5760405160e560020a62461bcd028152600401610b939190613060565b505050900390565b6000806000611de4612325565b9092509050611df382826119ea565b9250505090565b6000610bb282846134e0565b6000806000806000806000806000611e1d8a6124a7565b9250925092506000806000611e3b8d8686611e36611dd7565b6124e9565b919f909e50909c50959a5093985091965092945050505050565b6000610bb2828461333e565b600e8054600160f860020a031660f860020a17908190556000906901000000000000000000810460ff9081169163010000008104821691611eba91670100000000000000810482169165010000000000909104166134f8565b611ec491906134f8565b611ece91906134f8565b600e54909150600090819065010000000000900460ff1615611f3157600e54611f139060ff65010000000000909104811690611f0d90879087166119ea565b906119de565b600154909250611f2e903090600160a060020a031684612539565b50805b600e54670100000000000000900460ff1615611f9b57600e54611f6c9060ff670100000000000000909104811690611f0d90879087166119ea565b9150611f8e30600e600b9054906101000a9004600160a060020a031684612539565b611f9882826134e0565b90505b600e546901000000000000000000900460ff1615611ff257600e54611fda9060ff6901000000000000000000909104811690611f0d90879087166119ea565b9150611fe58261269f565b611fef82826134e0565b90505b600e546301000000900460ff16156120975761200e8482611e55565b9350600061201d8560026119ea565b9050600061202b8683611e55565b905030316120388361269f565b6000612045303183611e55565b9050612051838261287f565b60408051858152602081018390529081018490527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a1505050505b5050600e8054600160f860020a031690555050565b600e8054600160f860020a031660f860020a17905580156120d0576120d081612996565b50600e8054600160f860020a03169055565b806120ef576120ef612b41565b600160a060020a03841660009081526007602052604090205460ff1680156121305750600160a060020a03831660009081526007602052604090205460ff16155b1561214557612140848484612ca1565b612243565b600160a060020a03841660009081526007602052604090205460ff161580156121865750600160a060020a03831660009081526007602052604090205460ff165b1561219657612140848484612dc7565b600160a060020a03841660009081526007602052604090205460ff161580156121d85750600160a060020a03831660009081526007602052604090205460ff16155b156121e857612140848484612e70565b600160a060020a03841660009081526007602052604090205460ff1680156122285750600160a060020a03831660009081526007602052604090205460ff165b1561223857612140848484612eb4565b612243848484612e70565b8061231f57600e805469ff0000000000000000001967ff00ff00000000001963ff00ff0019831663ff0000001961010062010000860460ff908116919091029182169290921764010000000061ff00199096169091179490940481166301000000029390931790811667ff00000000000000196601000000000000830485166501000000000002908116919091176801000000000000000065ff00000000001990931690911791909104831667010000000000000002179081166a01000000000000000000009091049091166901000000000000000000021790555b50505050565b600a546009546000918291825b600854811015612477578260036000600884815481106123545761235461330c565b6000918252602080832090910154600160a060020a0316835282019290925260400190205411806123bf57508160046000600884815481106123985761239861330c565b6000918252602080832090910154600160a060020a03168352820192909252604001902054115b156123d557600a54600954945094505050509091565b61241b60036000600884815481106123ef576123ef61330c565b6000918252602080832090910154600160a060020a031683528201929092526040019020548490611e55565b925061246360046000600884815481106124375761243761330c565b6000918252602080832090910154600160a060020a031683528201929092526040019020548390611e55565b91508061246f8161336e565b915050612332565b50600954600a54612487916119ea565b82101561249e57600a546009549350935050509091565b90939092509050565b6000806000806124b685612f27565b905060006124c386612f47565b905060006124db826124d58986611e55565b90611e55565b979296509094509092505050565b60008080806124f888866119de565b9050600061250688876119de565b9050600061251488886119de565b90506000612526826124d58686611e55565b939b939a50919850919650505050505050565b600160a060020a03831660009081526003602052604090205461255c9082611e55565b600160a060020a03808516600090815260036020526040808220939093559084168152205461258b9082611dfa565b600160a060020a0380841660009081526003602090815260408083209490945591861681526007909152205460ff16156125fc57600160a060020a0383166000908152600460205260409020546125e29082611e55565b600160a060020a0384166000908152600460205260409020555b600160a060020a03821660009081526007602052604090205460ff161561265a57600160a060020a0382166000908152600460205260409020546126409082611dfa565b600160a060020a0383166000908152600460205260409020555b81600160a060020a031683600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611afd91815260200190565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106126d4576126d461330c565b6020026020010190600160a060020a03169081600160a060020a0316815250507f0000000000000000000000000000000000000000000000000000000000000000600160a060020a031663ad5c46486040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561275057600080fd5b505afa158015612764573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612788919061351d565b8160018151811061279b5761279b61330c565b6020026020010190600160a060020a03169081600160a060020a0316815250506127e6307f0000000000000000000000000000000000000000000000000000000000000000846119f6565b600160a060020a037f00000000000000000000000000000000000000000000000000000000000000001663791ac94783600084306128264261012c611dfa565b6040518663ffffffff1660e060020a02815260040161284995949392919061357e565b600060405180830381600087803b15801561286357600080fd5b505af1158015612877573d6000803e3d6000fd5b505050505050565b6128aa307f0000000000000000000000000000000000000000000000000000000000000000846119f6565b600154600160a060020a037f000000000000000000000000000000000000000000000000000000000000000081169163f305d719918491309187916000918291166128f74261012c611dfa565b60405163ffffffff891660e060020a028152600160a060020a039687166004820152602481019590955260448501939093526064840191909152909216608482015260a481019190915260c4016060604051808303818588803b15801561295d57600080fd5b505af1158015612971573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611da191906135ba565b6040805160028082526060820183526000926020830190803683370190505090507f0000000000000000000000000000000000000000000000000000000000000000600160a060020a031663ad5c46486040518163ffffffff1660e060020a02815260040160206040518083038186803b158015612a1357600080fd5b505afa158015612a27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a4b919061351d565b81600081518110612a5e57612a5e61330c565b6020026020010190600160a060020a03169081600160a060020a0316815250503081600181518110612a9257612a9261330c565b600160a060020a0392831660209182029290920101526001547f000000000000000000000000000000000000000000000000000000000000000082169163b6f9de95918591600091869116612ae94261012c611dfa565b6040518663ffffffff1660e060020a028152600401612b0b94939291906135e8565b6000604051808303818588803b158015612b2457600080fd5b505af1158015612b38573d6000803e3d6000fd5b50505050505050565b600e54610100900460ff16158015612b635750600e546301000000900460ff16155b8015612b7b5750600e5465010000000000900460ff16155b8015612b955750600e54670100000000000000900460ff16155b8015612bb15750600e546901000000000000000000900460ff16155b15612bb857565b600e80546affff00ff00ff00ff00ff001968ff00ff0000000000001964ff00ff000019831664ff0000000019610100850460ff908116620100000291821692909217630100000062ff000019909616909117949094048116640100000000029390931790811668ff00000000000000001965010000000000830485166601000000000000029081169190911767010000000000000066ff0000000000001990931690911791909104831668010000000000000000021790811669010000000000000000009091049091166a01000000000000000000000269ff00ff00ff00ff00ff001916179055565b600080600080600080612cb387611e06565b600160a060020a038f16600090815260046020526040902054959b50939950919750955093509150612ce59088611e55565b600160a060020a038a16600090815260046020908152604080832093909355600390522054612d149087611e55565b600160a060020a03808b1660009081526003602052604080822093909355908a1681522054612d439086611dfa565b600160a060020a038916600090815260036020526040902055612d6581612fb4565b612d6f848361303c565b87600160a060020a031689600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612db491815260200190565b60405180910390a3505050505050505050565b600080600080600080612dd987611e06565b600160a060020a038f16600090815260036020526040902054959b50939950919750955093509150612e0b9087611e55565b600160a060020a03808b16600090815260036020908152604080832094909455918b16815260049091522054612e419084611dfa565b600160a060020a038916600090815260046020908152604080832093909355600390522054612d439086611dfa565b600080600080600080612e8287611e06565b600160a060020a038f16600090815260036020526040902054959b50939950919750955093509150612d149087611e55565b600080600080600080612ec687611e06565b600160a060020a038f16600090815260046020526040902054959b50939950919750955093509150612ef89088611e55565b600160a060020a038a16600090815260046020908152604080832093909355600390522054612e0b9087611e55565b600e54600090610ad190606490611d3d908590610100900460ff166119de565b600e54600090610ad190606490611d3d9060ff690100000000000000000082048116916701000000000000008104821691612f96916501000000000081048216916301000000909104166134f8565b612fa091906134f8565b612faa91906134f8565b859060ff166119de565b6000612fbe611dd7565b90506000612fcc83836119de565b30600090815260036020526040902054909150612fe99082611dfa565b3060009081526003602090815260408083209390935560079052205460ff16156114ec57306000908152600460205260409020546130279084611dfa565b30600090815260046020526040902055505050565b600a546130499083611e55565b600a55600b546130599082611dfa565b600b555050565b600060208083528351808285015260005b8181101561308d57858101830151858201604001528201613071565b8181111561309f576000604083870101525b50601f01601f1916929092016040019392505050565b600160a060020a03811681146110bf57600080fd5b600080604083850312156130dd57600080fd5b82356130e8816130b5565b946020939093013593505050565b60008060006060848603121561310b57600080fd5b8335613116816130b5565b92506020840135613126816130b5565b929592945050506040919091013590565b60006020828403121561314957600080fd5b5035919050565b60006020828403121561316257600080fd5b8135610bb2816130b5565b80151581146110bf57600080fd5b6000806040838503121561318e57600080fd5b8235915060208301356131a08161316d565b809150509250929050565b6000602082840312156131bd57600080fd5b8135610bb28161316d565b600080604083850312156131db57600080fd5b82356131e6816130b5565b915060208301356131a0816130b5565b803560ff8116811461320757600080fd5b919050565b600080600080600060a0868803121561322457600080fd5b61322d866131f6565b945061323b602087016131f6565b9350613249604087016131f6565b9250613257606087016131f6565b9150613265608087016131f6565b90509295509295909350565b60028104600182168061328557607f821691505b602082108114156132a95760e060020a634e487b7102600052602260045260246000fd5b50919050565b60208082526025908201527f45524332304f776e61626c653a2063616c6c6572206973206e6f74207468652060408201527f6f776e6572000000000000000000000000000000000000000000000000000000606082015260800190565b60e060020a634e487b7102600052603260045260246000fd5b60e060020a634e487b7102600052601160045260246000fd5b60008282101561335057613350613325565b500390565b60e060020a634e487b7102600052603160045260246000fd5b600060001982141561338257613382613325565b5060010190565b600181815b808511156133c65781600019048211156133aa576133aa613325565b808516156133b757918102915b6002909404939080029061338e565b509250929050565b6000826133dd57506001610ad1565b816133ea57506000610ad1565b8160018114613400576002811461340a57613427565b6001915050610ad1565b60ff84111561341b5761341b613325565b8360020a915050610ad1565b5060208310610133831016604e8410600b841016171561344a575081810a610ad1565b6134548383613389565b806000190482111561346857613468613325565b029392505050565b6000610bb260ff8416836133ce565b600081600019048311821515161561349957613499613325565b500290565b6000602082840312156134b057600080fd5b8151610bb28161316d565b6000826134db5760e060020a634e487b7102600052601260045260246000fd5b500490565b600082198211156134f3576134f3613325565b500190565b600060ff821660ff84168060ff0382111561351557613515613325565b019392505050565b60006020828403121561352f57600080fd5b8151610bb2816130b5565b600081518084526020808501945080840160005b83811015613573578151600160a060020a03168752958201959082019060010161354e565b509495945050505050565b85815284602082015260a06040820152600061359d60a083018661353a565b600160a060020a0394909416606083015250608001529392505050565b6000806000606084860312156135cf57600080fd5b8351925060208401519150604084015190509250925092565b848152608060208201526000613601608083018661353a565b600160a060020a0394909416604083015250606001529291505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212200db40866963bcc0799caa2f4078b609d7a030c251c0f09fe33fa59eb17e5132564736f6c63430008090033000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000009000000000000000000000000000000000000000000000003bd913e6c1df400000000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c6172702046696e616e6365000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044c41525000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x6080604052600436106102d15760003560e060020a9004806370a0823111610179578063b09f1266116100e0578063d12a768811610099578063ea2f0b3711610073578063ea2f0b371461099f578063f25f4b56146109bf578063f2fde38b146109ee578063f6a3c9a914610a0e57600080fd5b8063d12a76881461092e578063d28d885214610944578063dd62ed3e1461095957600080fd5b8063b09f12661461086e578063b29a814014610883578063bdc653ef146108a3578063c0b0fda2146108b8578063c49b9a80146108db578063c7992f9a146108fb57600080fd5b806390d49b9d1161013257806390d49b9d146107af578063958c2e52146107cf57806395d89b4114610803578063a457c2d714610818578063a9059cbb14610838578063af465a271461085857600080fd5b806370a08231146106b7578063715018a6146106d757806382d2a4bb146106ec57806388f820201461070c5780638bcea939146107455780638da5cb5b1461079157600080fd5b80633b124fe7116102385780634a74bb02116101f15780635342acb4116101cb5780635342acb41461060057806354ce6578146106395780636bc87c3a1461065e57806370690b111461067f57600080fd5b80634a74bb021461059157806351330a19146105ab57806352390c02146105e057600080fd5b80633b124fe7146104ac5780633bd5d173146104cb5780633c81385c146104eb578063430ca0901461051f578063437823ec146105515780634549b0391461057157600080fd5b806323b872dd1161028a57806323b872dd146103db5780632d838119146103fb578063313ce5671461041b578063324f8dbf146104335780633685d4191461046a578063395093511461048c57600080fd5b806306fdde03146102dd578063095ea7b31461030857806313114a9d1461033857806315fa749a1461035757806318160ddd1461039f57806319de79ab146103b457600080fd5b366102d857005b600080fd5b3480156102e957600080fd5b506102f2610a2e565b6040516102ff9190613060565b60405180910390f35b34801561031457600080fd5b506103286103233660046130ca565b610ac0565b60405190151581526020016102ff565b34801561034457600080fd5b50600b545b6040519081526020016102ff565b34801561036357600080fd5b5060025461038d907801000000000000000000000000000000000000000000000000900460ff1681565b60405160ff90911681526020016102ff565b3480156103ab57600080fd5b50600954610349565b3480156103c057600080fd5b50600e5461038d906901000000000000000000900460ff1681565b3480156103e757600080fd5b506103286103f63660046130f6565b610ad7565b34801561040757600080fd5b50610349610416366004613137565b610b40565b34801561042757600080fd5b50600e5460ff1661038d565b34801561043f57600080fd5b5060025461038d90790100000000000000000000000000000000000000000000000000900460ff1681565b34801561047657600080fd5b5061048a610485366004613150565b610bb9565b005b34801561049857600080fd5b506103286104a73660046130ca565b610d90565b3480156104b857600080fd5b50600e5461038d90610100900460ff1681565b3480156104d757600080fd5b5061048a6104e6366004613137565b610dc6565b3480156104f757600080fd5b5060025461038d90760100000000000000000000000000000000000000000000900460ff1681565b34801561052b57600080fd5b5060025461038d9074010000000000000000000000000000000000000000900460ff1681565b34801561055d57600080fd5b5061048a61056c366004613150565b610ec4565b34801561057d57600080fd5b5061034961058c36600461317b565b610f15565b34801561059d57600080fd5b50600f546103289060ff1681565b3480156105b757600080fd5b5060025461038d9077010000000000000000000000000000000000000000000000900460ff1681565b3480156105ec57600080fd5b5061048a6105fb366004613150565b610fa5565b34801561060c57600080fd5b5061032861061b366004613150565b600160a060020a031660009081526006602052604090205460ff1690565b34801561064557600080fd5b50600e5461038d90670100000000000000900460ff1681565b34801561066a57600080fd5b50600e5461038d906301000000900460ff1681565b34801561068b57600080fd5b5060025461038d907a010000000000000000000000000000000000000000000000000000900460ff1681565b3480156106c357600080fd5b506103496106d2366004613150565b6110c2565b3480156106e357600080fd5b5061048a611121565b3480156106f857600080fd5b5061048a610707366004613137565b6111a5565b34801561071857600080fd5b50610328610727366004613150565b600160a060020a031660009081526007602052604090205460ff1690565b34801561075157600080fd5b506107797f0000000000000000000000002cec7300a1fc72da4835d340d28682f3f4d246b481565b604051600160a060020a0390911681526020016102ff565b34801561079d57600080fd5b50600054600160a060020a0316610779565b3480156107bb57600080fd5b5061048a6107ca366004613150565b6111f3565b3480156107db57600080fd5b506107797f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b34801561080f57600080fd5b506102f26112cb565b34801561082457600080fd5b506103286108333660046130ca565b6112da565b34801561084457600080fd5b506103286108533660046130ca565b611329565b34801561086457600080fd5b5061034960095481565b34801561087a57600080fd5b506102f2611336565b34801561088f57600080fd5b5061048a61089e3660046130ca565b6113c4565b3480156108af57600080fd5b50601154610349565b3480156108c457600080fd5b50600e5461038d9065010000000000900460ff1681565b3480156108e757600080fd5b5061048a6108f63660046131ab565b6114f1565b34801561090757600080fd5b5060025461038d907501000000000000000000000000000000000000000000900460ff1681565b34801561093a57600080fd5b5061034960105481565b34801561095057600080fd5b506102f2611565565b34801561096557600080fd5b506103496109743660046131c8565b600160a060020a03918216600090815260056020908152604080832093909416825291909152205490565b3480156109ab57600080fd5b5061048a6109ba366004613150565b611572565b3480156109cb57600080fd5b50600e54610779906b0100000000000000000000009004600160a060020a031681565b3480156109fa57600080fd5b5061048a610a09366004613150565b6115c0565b348015610a1a57600080fd5b5061048a610a2936600461320c565b6116d4565b6060600c8054610a3d90613271565b80601f0160208091040260200160405190810160405280929190818152602001828054610a6990613271565b8015610ab65780601f10610a8b57610100808354040283529160200191610ab6565b820191906000526020600020905b815481529060010190602001808311610a9957829003601f168201915b5050505050905090565b6000610acd3384846119f6565b5060015b92915050565b6000610ae4848484611b0a565b610b368433610b318560405180606001604052806028815260200161361e60289139600160a060020a038a1660009081526005602090815260408083203384529091529020549190611da8565b6119f6565b5060019392505050565b6000600a54821115610b9c5760405160e560020a62461bcd02815260206004820152601e60248201527f416d74206d757374206265206c657373207468616e20746f74207265666c000060448201526064015b60405180910390fd5b6000610ba6611dd7565b9050610bb283826119ea565b9392505050565b600054600160a060020a03163314610be65760405160e560020a62461bcd028152600401610b93906132af565b600160a060020a03811660009081526007602052604090205460ff16610c515760405160e560020a62461bcd02815260206004820152601060248201527f416c7265616479206578636c75646564000000000000000000000000000000006044820152606401610b93565b60005b600854811015610d8c5781600160a060020a031660088281548110610c7b57610c7b61330c565b600091825260209091200154600160a060020a03161415610d7a5760088054610ca69060019061333e565b81548110610cb657610cb661330c565b60009182526020909120015460088054600160a060020a039092169183908110610ce257610ce261330c565b6000918252602080832091909101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039485161790559184168152600482526040808220829055600790925220805460ff191690556008805480610d4757610d47613355565b6000828152602090208101600019908101805473ffffffffffffffffffffffffffffffffffffffff191690550190555050565b80610d848161336e565b915050610c54565b5050565b336000818152600560209081526040808320600160a060020a03871684529091528120549091610acd918590610b319086611dfa565b3360008181526007602052604090205460ff1615610e4f5760405160e560020a62461bcd02815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201527f6869732066756e6374696f6e00000000000000000000000000000000000000006064820152608401610b93565b6000610e5a83611e06565b50505050600160a060020a038416600090815260036020526040902054919250610e8691905082611e55565b600160a060020a038316600090815260036020526040902055600a54610eac9082611e55565b600a55600b54610ebc9084611dfa565b600b55505050565b600054600160a060020a03163314610ef15760405160e560020a62461bcd028152600401610b93906132af565b600160a060020a03166000908152600660205260409020805460ff19166001179055565b6000600954831115610f6c5760405160e560020a62461bcd02815260206004820152601c60248201527f416d74206d757374206265206c657373207468616e20737570706c79000000006044820152606401610b93565b81610f8b576000610f7c84611e06565b50939550610ad1945050505050565b6000610f9684611e06565b50929550610ad1945050505050565b600054600160a060020a03163314610fd25760405160e560020a62461bcd028152600401610b93906132af565b600160a060020a03811660009081526007602052604090205460ff166110bf57600160a060020a0381166000908152600360205260409020541561104c57600160a060020a03811660009081526003602052604090205461103290610b40565b600160a060020a0382166000908152600460205260409020555b600160a060020a0381166000818152600760205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee301805473ffffffffffffffffffffffffffffffffffffffff191690911790555b50565b600160a060020a03811660009081526007602052604081205460ff16156110ff5750600160a060020a031660009081526004602052604090205490565b600160a060020a038216600090815260036020526040902054610ad190610b40565b600054600160a060020a0316331461114e5760405160e560020a62461bcd028152600401610b93906132af565b60008054604051600160a060020a03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36000805473ffffffffffffffffffffffffffffffffffffffff19169055565b600054600160a060020a031633146111d25760405160e560020a62461bcd028152600401610b93906132af565b600e546111e39060ff16600a613470565b6111ed908261347f565b60115550565b600054600160a060020a031633146112205760405160e560020a62461bcd028152600401610b93906132af565b600160a060020a0381166112795760405160e560020a62461bcd02815260206004820152600c60248201527f5a45524f204144445245535300000000000000000000000000000000000000006044820152606401610b93565b61128281610fa5565b600e8054600160a060020a039092166b010000000000000000000000027fff0000000000000000000000000000000000000000ffffffffffffffffffffff909216919091179055565b6060600d8054610a3d90613271565b6000610acd3384610b318560405180606001604052806025815260200161364660259139336000908152600560209081526040808320600160a060020a038d1684529091529020549190611da8565b6000610acd338484611b0a565b600d805461134390613271565b80601f016020809104026020016040519081016040528092919081815260200182805461136f90613271565b80156113bc5780601f10611391576101008083540402835291602001916113bc565b820191906000526020600020905b81548152906001019060200180831161139f57829003601f168201915b505050505081565b600054600160a060020a031633146113f15760405160e560020a62461bcd028152600401610b93906132af565b600160a060020a03821630141561144d5760405160e560020a62461bcd02815260206004820152600d60248201527f53656c66207769746864726177000000000000000000000000000000000000006044820152606401610b93565b81600160a060020a031663a9059cbb61146e600054600160a060020a031690565b60405160e060020a63ffffffff8416028152600160a060020a03909116600482015260248101849052604401602060405180830381600087803b1580156114b457600080fd5b505af11580156114c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ec919061349e565b505050565b600054600160a060020a0316331461151e5760405160e560020a62461bcd028152600401610b93906132af565b600f805460ff19168215159081179091556040519081527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599060200160405180910390a150565b600c805461134390613271565b600054600160a060020a0316331461159f5760405160e560020a62461bcd028152600401610b93906132af565b600160a060020a03166000908152600660205260409020805460ff19169055565b600054600160a060020a031633146115ed5760405160e560020a62461bcd028152600401610b93906132af565b600160a060020a03811661166c5760405160e560020a62461bcd02815260206004820152602b60248201527f45524332304f776e61626c653a206e6577206f776e657220697320746865207a60448201527f65726f20616464726573730000000000000000000000000000000000000000006064820152608401610b93565b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600054600160a060020a031633146117015760405160e560020a62461bcd028152600401610b93906132af565b60025460ff7501000000000000000000000000000000000000000000909104811690861611156117765760405160e560020a62461bcd02815260206004820152600860248201527f5446206572726f720000000000000000000000000000000000000000000000006044820152606401610b93565b60025460ff74010000000000000000000000000000000000000000909104811690851611156117ea5760405160e560020a62461bcd02815260206004820152600860248201527f4c46206572726f720000000000000000000000000000000000000000000000006044820152606401610b93565b60025460ff760100000000000000000000000000000000000000000000909104811690841611156118605760405160e560020a62461bcd02815260206004820152600860248201527f4246206572726f720000000000000000000000000000000000000000000000006044820152606401610b93565b60025460ff77010000000000000000000000000000000000000000000000909104811690831611156118d75760405160e560020a62461bcd02815260206004820152600860248201527f5746206572726f720000000000000000000000000000000000000000000000006044820152606401610b93565b60025460ff78010000000000000000000000000000000000000000000000009091048116908216111561194f5760405160e560020a62461bcd02815260206004820152600960248201527f424246206572726f7200000000000000000000000000000000000000000000006044820152606401610b93565b600e805463ff00ff00191661010060ff9788160263ff0000001916176301000000958716959095029490941769ff000000ff00000000001916650100000000009386169390930269ff0000000000000000001916929092176901000000000000000000928516929092029190911767ff0000000000000019166701000000000000009190931602919091179055565b6000610bb2828461347f565b6000610bb282846134bb565b600160a060020a038316611a4f5760405160e560020a62461bcd02815260206004820181905260248201527f45524332303a20617070726f76652066726f6d207a65726f20616464726573736044820152606401610b93565b600160a060020a038216611aa85760405160e560020a62461bcd02815260206004820152601e60248201527f45524332303a20617070726f766520746f207a65726f206164647265737300006044820152606401610b93565b600160a060020a0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600160a060020a038316611b895760405160e560020a62461bcd02815260206004820152602160248201527f45524332303a207472616e736665722066726f6d207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610b93565b600160a060020a038216611be25760405160e560020a62461bcd02815260206004820152601f60248201527f45524332303a207472616e7366657220746f207a65726f2061646472657373006044820152606401610b93565b60008111611c5b5760405160e560020a62461bcd02815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610b93565b6000611c66306110c2565b600e5490915060f860020a900460ff16158015611cb457507f0000000000000000000000002cec7300a1fc72da4835d340d28682f3f4d246b4600160a060020a031683600160a060020a0316145b8015611cc25750600f5460ff165b15611d4a576010548110611cdd5750601054611cdd81611e61565b600e546901000000000000000000900460ff1615611d4a57600e54303190611d099060ff16600a613470565b611d1490600161347f565b811115611d4857601154811115611d2a57506011545b611d48611d436064611d3d8460326119de565b906119ea565b6120ac565b505b600160a060020a03841660009081526006602052604090205460019060ff1680611d8c5750600160a060020a03841660009081526006602052604090205460ff165b15611d95575060005b611da1858585846120e2565b5050505050565b60008184841115611dcf5760405160e560020a62461bcd028152600401610b939190613060565b505050900390565b6000806000611de4612325565b9092509050611df382826119ea565b9250505090565b6000610bb282846134e0565b6000806000806000806000806000611e1d8a6124a7565b9250925092506000806000611e3b8d8686611e36611dd7565b6124e9565b919f909e50909c50959a5093985091965092945050505050565b6000610bb2828461333e565b600e8054600160f860020a031660f860020a17908190556000906901000000000000000000810460ff9081169163010000008104821691611eba91670100000000000000810482169165010000000000909104166134f8565b611ec491906134f8565b611ece91906134f8565b600e54909150600090819065010000000000900460ff1615611f3157600e54611f139060ff65010000000000909104811690611f0d90879087166119ea565b906119de565b600154909250611f2e903090600160a060020a031684612539565b50805b600e54670100000000000000900460ff1615611f9b57600e54611f6c9060ff670100000000000000909104811690611f0d90879087166119ea565b9150611f8e30600e600b9054906101000a9004600160a060020a031684612539565b611f9882826134e0565b90505b600e546901000000000000000000900460ff1615611ff257600e54611fda9060ff6901000000000000000000909104811690611f0d90879087166119ea565b9150611fe58261269f565b611fef82826134e0565b90505b600e546301000000900460ff16156120975761200e8482611e55565b9350600061201d8560026119ea565b9050600061202b8683611e55565b905030316120388361269f565b6000612045303183611e55565b9050612051838261287f565b60408051858152602081018390529081018490527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a1505050505b5050600e8054600160f860020a031690555050565b600e8054600160f860020a031660f860020a17905580156120d0576120d081612996565b50600e8054600160f860020a03169055565b806120ef576120ef612b41565b600160a060020a03841660009081526007602052604090205460ff1680156121305750600160a060020a03831660009081526007602052604090205460ff16155b1561214557612140848484612ca1565b612243565b600160a060020a03841660009081526007602052604090205460ff161580156121865750600160a060020a03831660009081526007602052604090205460ff165b1561219657612140848484612dc7565b600160a060020a03841660009081526007602052604090205460ff161580156121d85750600160a060020a03831660009081526007602052604090205460ff16155b156121e857612140848484612e70565b600160a060020a03841660009081526007602052604090205460ff1680156122285750600160a060020a03831660009081526007602052604090205460ff165b1561223857612140848484612eb4565b612243848484612e70565b8061231f57600e805469ff0000000000000000001967ff00ff00000000001963ff00ff0019831663ff0000001961010062010000860460ff908116919091029182169290921764010000000061ff00199096169091179490940481166301000000029390931790811667ff00000000000000196601000000000000830485166501000000000002908116919091176801000000000000000065ff00000000001990931690911791909104831667010000000000000002179081166a01000000000000000000009091049091166901000000000000000000021790555b50505050565b600a546009546000918291825b600854811015612477578260036000600884815481106123545761235461330c565b6000918252602080832090910154600160a060020a0316835282019290925260400190205411806123bf57508160046000600884815481106123985761239861330c565b6000918252602080832090910154600160a060020a03168352820192909252604001902054115b156123d557600a54600954945094505050509091565b61241b60036000600884815481106123ef576123ef61330c565b6000918252602080832090910154600160a060020a031683528201929092526040019020548490611e55565b925061246360046000600884815481106124375761243761330c565b6000918252602080832090910154600160a060020a031683528201929092526040019020548390611e55565b91508061246f8161336e565b915050612332565b50600954600a54612487916119ea565b82101561249e57600a546009549350935050509091565b90939092509050565b6000806000806124b685612f27565b905060006124c386612f47565b905060006124db826124d58986611e55565b90611e55565b979296509094509092505050565b60008080806124f888866119de565b9050600061250688876119de565b9050600061251488886119de565b90506000612526826124d58686611e55565b939b939a50919850919650505050505050565b600160a060020a03831660009081526003602052604090205461255c9082611e55565b600160a060020a03808516600090815260036020526040808220939093559084168152205461258b9082611dfa565b600160a060020a0380841660009081526003602090815260408083209490945591861681526007909152205460ff16156125fc57600160a060020a0383166000908152600460205260409020546125e29082611e55565b600160a060020a0384166000908152600460205260409020555b600160a060020a03821660009081526007602052604090205460ff161561265a57600160a060020a0382166000908152600460205260409020546126409082611dfa565b600160a060020a0383166000908152600460205260409020555b81600160a060020a031683600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611afd91815260200190565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106126d4576126d461330c565b6020026020010190600160a060020a03169081600160a060020a0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d600160a060020a031663ad5c46486040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561275057600080fd5b505afa158015612764573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612788919061351d565b8160018151811061279b5761279b61330c565b6020026020010190600160a060020a03169081600160a060020a0316815250506127e6307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846119f6565b600160a060020a037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d1663791ac94783600084306128264261012c611dfa565b6040518663ffffffff1660e060020a02815260040161284995949392919061357e565b600060405180830381600087803b15801561286357600080fd5b505af1158015612877573d6000803e3d6000fd5b505050505050565b6128aa307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846119f6565b600154600160a060020a037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81169163f305d719918491309187916000918291166128f74261012c611dfa565b60405163ffffffff891660e060020a028152600160a060020a039687166004820152602481019590955260448501939093526064840191909152909216608482015260a481019190915260c4016060604051808303818588803b15801561295d57600080fd5b505af1158015612971573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611da191906135ba565b6040805160028082526060820183526000926020830190803683370190505090507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d600160a060020a031663ad5c46486040518163ffffffff1660e060020a02815260040160206040518083038186803b158015612a1357600080fd5b505afa158015612a27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a4b919061351d565b81600081518110612a5e57612a5e61330c565b6020026020010190600160a060020a03169081600160a060020a0316815250503081600181518110612a9257612a9261330c565b600160a060020a0392831660209182029290920101526001547f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d82169163b6f9de95918591600091869116612ae94261012c611dfa565b6040518663ffffffff1660e060020a028152600401612b0b94939291906135e8565b6000604051808303818588803b158015612b2457600080fd5b505af1158015612b38573d6000803e3d6000fd5b50505050505050565b600e54610100900460ff16158015612b635750600e546301000000900460ff16155b8015612b7b5750600e5465010000000000900460ff16155b8015612b955750600e54670100000000000000900460ff16155b8015612bb15750600e546901000000000000000000900460ff16155b15612bb857565b600e80546affff00ff00ff00ff00ff001968ff00ff0000000000001964ff00ff000019831664ff0000000019610100850460ff908116620100000291821692909217630100000062ff000019909616909117949094048116640100000000029390931790811668ff00000000000000001965010000000000830485166601000000000000029081169190911767010000000000000066ff0000000000001990931690911791909104831668010000000000000000021790811669010000000000000000009091049091166a01000000000000000000000269ff00ff00ff00ff00ff001916179055565b600080600080600080612cb387611e06565b600160a060020a038f16600090815260046020526040902054959b50939950919750955093509150612ce59088611e55565b600160a060020a038a16600090815260046020908152604080832093909355600390522054612d149087611e55565b600160a060020a03808b1660009081526003602052604080822093909355908a1681522054612d439086611dfa565b600160a060020a038916600090815260036020526040902055612d6581612fb4565b612d6f848361303c565b87600160a060020a031689600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612db491815260200190565b60405180910390a3505050505050505050565b600080600080600080612dd987611e06565b600160a060020a038f16600090815260036020526040902054959b50939950919750955093509150612e0b9087611e55565b600160a060020a03808b16600090815260036020908152604080832094909455918b16815260049091522054612e419084611dfa565b600160a060020a038916600090815260046020908152604080832093909355600390522054612d439086611dfa565b600080600080600080612e8287611e06565b600160a060020a038f16600090815260036020526040902054959b50939950919750955093509150612d149087611e55565b600080600080600080612ec687611e06565b600160a060020a038f16600090815260046020526040902054959b50939950919750955093509150612ef89088611e55565b600160a060020a038a16600090815260046020908152604080832093909355600390522054612e0b9087611e55565b600e54600090610ad190606490611d3d908590610100900460ff166119de565b600e54600090610ad190606490611d3d9060ff690100000000000000000082048116916701000000000000008104821691612f96916501000000000081048216916301000000909104166134f8565b612fa091906134f8565b612faa91906134f8565b859060ff166119de565b6000612fbe611dd7565b90506000612fcc83836119de565b30600090815260036020526040902054909150612fe99082611dfa565b3060009081526003602090815260408083209390935560079052205460ff16156114ec57306000908152600460205260409020546130279084611dfa565b30600090815260046020526040902055505050565b600a546130499083611e55565b600a55600b546130599082611dfa565b600b555050565b600060208083528351808285015260005b8181101561308d57858101830151858201604001528201613071565b8181111561309f576000604083870101525b50601f01601f1916929092016040019392505050565b600160a060020a03811681146110bf57600080fd5b600080604083850312156130dd57600080fd5b82356130e8816130b5565b946020939093013593505050565b60008060006060848603121561310b57600080fd5b8335613116816130b5565b92506020840135613126816130b5565b929592945050506040919091013590565b60006020828403121561314957600080fd5b5035919050565b60006020828403121561316257600080fd5b8135610bb2816130b5565b80151581146110bf57600080fd5b6000806040838503121561318e57600080fd5b8235915060208301356131a08161316d565b809150509250929050565b6000602082840312156131bd57600080fd5b8135610bb28161316d565b600080604083850312156131db57600080fd5b82356131e6816130b5565b915060208301356131a0816130b5565b803560ff8116811461320757600080fd5b919050565b600080600080600060a0868803121561322457600080fd5b61322d866131f6565b945061323b602087016131f6565b9350613249604087016131f6565b9250613257606087016131f6565b9150613265608087016131f6565b90509295509295909350565b60028104600182168061328557607f821691505b602082108114156132a95760e060020a634e487b7102600052602260045260246000fd5b50919050565b60208082526025908201527f45524332304f776e61626c653a2063616c6c6572206973206e6f74207468652060408201527f6f776e6572000000000000000000000000000000000000000000000000000000606082015260800190565b60e060020a634e487b7102600052603260045260246000fd5b60e060020a634e487b7102600052601160045260246000fd5b60008282101561335057613350613325565b500390565b60e060020a634e487b7102600052603160045260246000fd5b600060001982141561338257613382613325565b5060010190565b600181815b808511156133c65781600019048211156133aa576133aa613325565b808516156133b757918102915b6002909404939080029061338e565b509250929050565b6000826133dd57506001610ad1565b816133ea57506000610ad1565b8160018114613400576002811461340a57613427565b6001915050610ad1565b60ff84111561341b5761341b613325565b8360020a915050610ad1565b5060208310610133831016604e8410600b841016171561344a575081810a610ad1565b6134548383613389565b806000190482111561346857613468613325565b029392505050565b6000610bb260ff8416836133ce565b600081600019048311821515161561349957613499613325565b500290565b6000602082840312156134b057600080fd5b8151610bb28161316d565b6000826134db5760e060020a634e487b7102600052601260045260246000fd5b500490565b600082198211156134f3576134f3613325565b500190565b600060ff821660ff84168060ff0382111561351557613515613325565b019392505050565b60006020828403121561352f57600080fd5b8151610bb2816130b5565b600081518084526020808501945080840160005b83811015613573578151600160a060020a03168752958201959082019060010161354e565b509495945050505050565b85815284602082015260a06040820152600061359d60a083018661353a565b600160a060020a0394909416606083015250608001529392505050565b6000806000606084860312156135cf57600080fd5b8351925060208401519150604084015190509250925092565b848152608060208201526000613601608083018661353a565b600160a060020a0394909416604083015250606001529291505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212200db40866963bcc0799caa2f4078b609d7a030c251c0f09fe33fa59eb17e5132564736f6c63430008090033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000009000000000000000000000000000000000000000000000003bd913e6c1df400000000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c6172702046696e616e6365000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044c41525000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : token_name (string): Larp Finance
Arg [1] : token_symbol (string): LARP
Arg [2] : token_decimals (uint8): 9
Arg [3] : initial (uint256): 69000000000000000000
Arg [4] : router (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
Arg [5] : tax_reflection (uint8): 0
Arg [6] : tax_wallet (uint8): 0
Arg [7] : tax_burn (uint8): 0
Arg [8] : tax_liquidity (uint8): 0
Arg [9] : tax_buyback (uint8): 0
-----Encoded View---------------
14 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000140
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000180
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000009
Arg [3] : 000000000000000000000000000000000000000000000003bd913e6c1df40000
Arg [4] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [10] : 000000000000000000000000000000000000000000000000000000000000000c
Arg [11] : 4c6172702046696e616e63650000000000000000000000000000000000000000
Arg [12] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [13] : 4c41525000000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
15916:23770:0:-:0;;;;;;;;;;-1:-1:-1;;;15916:23770:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19461:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20400:161;;;;;;;;;;-1:-1:-1;20400:161:0;;;;;:::i;:::-;;:::i;:::-;;;1260:14:1;;1253:22;1235:41;;1223:2;1208:18;20400:161:0;1095:187:1;21655:87:0;;;;;;;;;;-1:-1:-1;21724:10:0;;21655:87;;;1433:25:1;;;1421:2;1406:18;21655:87:0;1287:177:1;16234:31:0;;;;;;;;;;-1:-1:-1;16234:31:0;;;;;;;;;;;;;;1641:4:1;1629:17;;;1611:36;;1599:2;1584:18;16234:31:0;1469:184:1;19765:95:0;;;;;;;;;;-1:-1:-1;19845:7:0;;19765:95;;17360:28;;;;;;;;;;-1:-1:-1;17360:28:0;;;;;;;;;;;20569:397;;;;;;;;;;-1:-1:-1;20569:397:0;;;;;:::i;:::-;;:::i;22592:241::-;;;;;;;;;;-1:-1:-1;22592:241:0;;;;;:::i;:::-;;:::i;19665:92::-;;;;;;;;;;-1:-1:-1;19740:9:0;;;;19665:92;;16272:34;;;;;;;;;;-1:-1:-1;16272:34:0;;;;;;;;;;;23178:466;;;;;;;;;;-1:-1:-1;23178:466:0;;;;;:::i;:::-;;:::i;:::-;;20974:218;;;;;;;;;;-1:-1:-1;20974:218:0;;;;;:::i;:::-;;:::i;16917:24::-;;;;;;;;;;-1:-1:-1;16917:24:0;;;;;;;;;;;21750:382;;;;;;;;;;-1:-1:-1;21750:382:0;;;;;:::i;:::-;;:::i;16162:28::-;;;;;;;;;;-1:-1:-1;16162:28:0;;;;;;;;;;;16094:27;;;;;;;;;;-1:-1:-1;16094:27:0;;;;;;;;;;;23652:111;;;;;;;;;;-1:-1:-1;23652:111:0;;;;;:::i;:::-;;:::i;22140:444::-;;;;;;;;;;-1:-1:-1;22140:444:0;;;;;:::i;:::-;;:::i;17644:40::-;;;;;;;;;;-1:-1:-1;17644:40:0;;;;;;;;16197:30;;;;;;;;;;-1:-1:-1;16197:30:0;;;;;;;;;;;22841:329;;;;;;;;;;-1:-1:-1;22841:329:0;;;;;:::i;:::-;;:::i;29223:124::-;;;;;;;;;;-1:-1:-1;29223:124:0;;;;;:::i;:::-;-1:-1:-1;;;;;29312:27:0;29288:4;29312:27;;;:18;:27;;;;;;;;;29223:124;17237:27;;;;;;;;;;-1:-1:-1;17237:27:0;;;;;;;;;;;17018:30;;;;;;;;;;-1:-1:-1;17018:30:0;;;;;;;;;;;16313:38;;;;;;;;;;-1:-1:-1;16313:38:0;;;;;;;;;;;19868:198;;;;;;;;;;-1:-1:-1;19868:198:0;;;;;:::i;:::-;;:::i;8259:148::-;;;;;;;;;;;;;:::i;24732:138::-;;;;;;;;;;-1:-1:-1;24732:138:0;;;;;:::i;:::-;;:::i;21527:120::-;;;;;;;;;;-1:-1:-1;21527:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;21619:20:0;21595:4;21619:20;;;:11;:20;;;;;;;;;21527:120;17534:34;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3157:55:1;;;3139:74;;3127:2;3112:18;17534:34:0;2993:226:1;8031:87:0;;;;;;;;;;-1:-1:-1;8077:7:0;8104:6;-1:-1:-1;;;;;8104:6:0;8031:87;;25057:218;;;;;;;;;;-1:-1:-1;25057:218:0;;;;;:::i;:::-;;:::i;17480:47::-;;;;;;;;;;;;;;;19561:96;;;;;;;;;;;;;:::i;21200:319::-;;;;;;;;;;-1:-1:-1;21200:319:0;;;;;:::i;:::-;;:::i;20074:167::-;;;;;;;;;;-1:-1:-1;20074:167:0;;;;;:::i;:::-;;:::i;16732:22::-;;;;;;;;;;;;;;;;16852:21;;;;;;;;;;;;;:::i;39418:265::-;;;;;;;;;;-1:-1:-1;39418:265:0;;;;;:::i;:::-;;:::i;24616:108::-;;;;;;;;;;-1:-1:-1;24699:17:0;;24616:108;;17136:25;;;;;;;;;;-1:-1:-1;17136:25:0;;;;;;;;;;;24878:171;;;;;;;;;;-1:-1:-1;24878:171:0;;;;;:::i;:::-;;:::i;16128:27::-;;;;;;;;;;-1:-1:-1;16128:27:0;;;;;;;;;;;17693:44;;;;;;;;;;;;;;;;16826:19;;;;;;;;;;;;;:::i;20249:143::-;;;;;;;;;;-1:-1:-1;20249:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;20357:18:0;;;20330:7;20357:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;20249:143;23771:110;;;;;;;;;;-1:-1:-1;23771:110:0;;;;;:::i;:::-;;:::i;17575:32::-;;;;;;;;;;-1:-1:-1;17575:32:0;;;;;;;-1:-1:-1;;;;;17575:32:0;;;8415:249;;;;;;;;;;-1:-1:-1;8415:249:0;;;;;:::i;:::-;;:::i;23889:719::-;;;;;;;;;;-1:-1:-1;23889:719:0;;;;;:::i;:::-;;:::i;19461:92::-;19507:13;19540:5;19533:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19461:92;:::o;20400:161::-;20475:4;20492:39;7494:10;20515:7;20524:6;20492:8;:39::i;:::-;-1:-1:-1;20549:4:0;20400:161;;;;;:::o;20569:397::-;20701:4;20718:36;20728:6;20736:9;20747:6;20718:9;:36::i;:::-;20765:171;20788:6;7494:10;20836:89;20874:6;20836:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20836:19:0;;;;;;:11;:19;;;;;;;;7494:10;20836:33;;;;;;;;;;:37;:89::i;:::-;20765:8;:171::i;:::-;-1:-1:-1;20954:4:0;20569:397;;;;;:::o;22592:241::-;22659:7;22698;;22687;:18;;22679:61;;;;-1:-1:-1;;;;;22679:61:0;;5901:2:1;22679:61:0;;;5883:21:1;5940:2;5920:18;;;5913:30;5979:32;5959:18;;;5952:60;6029:18;;22679:61:0;;;;;;;;;22751:19;22773:10;:8;:10::i;:::-;22751:32;-1:-1:-1;22801:24:0;:7;22751:32;22801:11;:24::i;:::-;22794:31;22592:241;-1:-1:-1;;;22592:241:0:o;23178:466::-;8077:7;8104:6;-1:-1:-1;;;;;8104:6:0;7494:10;8166:23;8158:73;;;;-1:-1:-1;;;;;8158:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23258:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;23250:49;;;::::0;-1:-1:-1;;;;;23250:49:0;;6666:2:1;23250:49:0::1;::::0;::::1;6648:21:1::0;6705:2;6685:18;;;6678:30;6744:18;6724;;;6717:46;6780:18;;23250:49:0::1;6464:340:1::0;23250:49:0::1;23315:9;23310:327;23334:9;:16:::0;23330:20;::::1;23310:327;;;23392:7;-1:-1:-1::0;;;;;23376:23:0::1;:9;23386:1;23376:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;23376:12:0::1;:23;23372:254;;;23435:9;23445:16:::0;;:20:::1;::::0;23464:1:::1;::::0;23445:20:::1;:::i;:::-;23435:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;23420:9:::1;:12:::0;;-1:-1:-1;;;;;23435:31:0;;::::1;::::0;23430:1;;23420:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;23420:46:0::1;-1:-1:-1::0;;;;;23420:46:0;;::::1;;::::0;;23485:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;23524:11:::1;:20:::0;;;;:28;;-1:-1:-1;;23524:28:0::1;::::0;;23571:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;23571:15:0;;;;;-1:-1:-1;;23571:15:0::1;::::0;;;;;23310:327:::1;23178:466:::0;:::o;23372:254::-:1;23352:3:::0;::::1;::::0;::::1;:::i;:::-;;;;23310:327;;;;23178:466:::0;:::o;20974:218::-;7494:10;21062:4;21111:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;21111:34:0;;;;;;;;;;21062:4;;21079:83;;21102:7;;21111:50;;21150:10;21111:38;:50::i;21750:382::-;7494:10;21802:14;21851:19;;;:11;:19;;;;;;;;21850:20;21842:77;;;;-1:-1:-1;;;;;21842:77:0;;7848:2:1;21842:77:0;;;7830:21:1;7887:2;7867:18;;;7860:30;7926:34;7906:18;;;7899:62;7997:14;7977:18;;;7970:42;8029:19;;21842:77:0;7646:408:1;21842:77:0;21931:15;21960:19;21971:7;21960:10;:19::i;:::-;-1:-1:-1;;;;;;;;;22008:15:0;;;;;;:7;:15;;;;;;21930:49;;-1:-1:-1;22008:28:0;;:15;-1:-1:-1;21930:49:0;22008:19;:28::i;:::-;-1:-1:-1;;;;;21990:15:0;;;;;;:7;:15;;;;;:46;22057:7;;:20;;22069:7;22057:11;:20::i;:::-;22047:7;:30;22101:10;;:23;;22116:7;22101:14;:23::i;:::-;22088:10;:36;-1:-1:-1;;;21750:382:0:o;23652:111::-;8077:7;8104:6;-1:-1:-1;;;;;8104:6:0;7494:10;8166:23;8158:73;;;;-1:-1:-1;;;;;8158:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23721:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;23721:34:0::1;23751:4;23721:34;::::0;;23652:111::o;22140:444::-;22231:7;22270;;22259;:18;;22251:59;;;;-1:-1:-1;;;;;22251:59:0;;8261:2:1;22251:59:0;;;8243:21:1;8300:2;8280:18;;;8273:30;8339;8319:18;;;8312:58;8387:18;;22251:59:0;8059:352:1;22251:59:0;22326:17;22321:256;;22361:15;22390:19;22401:7;22390:10;:19::i;:::-;-1:-1:-1;22360:49:0;;-1:-1:-1;22424:14:0;;-1:-1:-1;;;;;22424:14:0;22321:256;22474:23;22509:19;22520:7;22509:10;:19::i;:::-;-1:-1:-1;22471:57:0;;-1:-1:-1;22543:22:0;;-1:-1:-1;;;;;22543:22:0;22841:329;8077:7;8104:6;-1:-1:-1;;;;;8104:6:0;7494:10;8166:23;8158:73;;;;-1:-1:-1;;;;;8158:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22918:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;22913:250;;-1:-1:-1::0;;;;;22959:16:0;::::1;22978:1;22959:16:::0;;;:7:::1;:16;::::0;;;;;:20;22955:117:::1;;-1:-1:-1::0;;;;;23039:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;23019:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;23000:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;22955:117:::1;-1:-1:-1::0;;;;;23086:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;23086:27:0::1;23109:4;23086:27:::0;;::::1;::::0;;;23128:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;23128:23:0::1;::::0;;::::1;::::0;;22913:250:::1;22841:329:::0;:::o;19868:198::-;-1:-1:-1;;;;;19958:20:0;;19934:7;19958:20;;;:11;:20;;;;;;;;19954:49;;;-1:-1:-1;;;;;;19987:16:0;;;;;:7;:16;;;;;;;19868:198::o;19954:49::-;-1:-1:-1;;;;;20041:16:0;;;;;;:7;:16;;;;;;20021:37;;:19;:37::i;8259:148::-;8077:7;8104:6;-1:-1:-1;;;;;8104:6:0;7494:10;8166:23;8158:73;;;;-1:-1:-1;;;;;8158:73:0;;;;;;;:::i;:::-;8366:1:::1;8350:6:::0;;8329:40:::1;::::0;-1:-1:-1;;;;;8350:6:0;;::::1;::::0;8329:40:::1;::::0;8366:1;;8329:40:::1;8397:1;8380:19:::0;;-1:-1:-1;;8380:19:0::1;::::0;;8259:148::o;24732:138::-;8077:7;8104:6;-1:-1:-1;;;;;8104:6:0;7494:10;8166:23;8158:73;;;;-1:-1:-1;;;;;8158:73:0;;;;;;;:::i;:::-;24853:9:::1;::::0;24849:13:::1;::::0;24853:9:::1;;24849:2;:13;:::i;:::-;24834:28;::::0;:12;:28:::1;:::i;:::-;24814:17;:48:::0;-1:-1:-1;24732:138:0:o;25057:218::-;8077:7;8104:6;-1:-1:-1;;;;;8104:6:0;7494:10;8166:23;8158:73;;;;-1:-1:-1;;;;;8158:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25147:26:0;::::1;25139:51;;;::::0;-1:-1:-1;;;;;25139:51:0;;10171:2:1;25139:51:0::1;::::0;::::1;10153:21:1::0;10210:2;10190:18;;;10183:30;10249:14;10229:18;;;10222:42;10281:18;;25139:51:0::1;9969:336:1::0;25139:51:0::1;25201:31;25219:12;25201:17;:31::i;:::-;25243:9;:24:::0;;-1:-1:-1;;;;;25243:24:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;25057:218::o;19561:96::-;19609:13;19642:7;19635:14;;;;;:::i;21200:319::-;21293:4;21310:179;7494:10;21360:7;21382:96;21421:15;21382:96;;;;;;;;;;;;;;;;;7494:10;21382:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;21382:34:0;;;;;;;;;;;;:38;:96::i;20074:167::-;20152:4;20169:42;7494:10;20193:9;20204:6;20169:9;:42::i;16852:21::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;39418:265::-;8077:7;8104:6;-1:-1:-1;;;;;8104:6:0;7494:10;8166:23;8158:73;;;;-1:-1:-1;;;;;8158:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;39566:29:0;::::1;39590:4;39566:29;;39558:55;;;::::0;-1:-1:-1;;;;;39558:55:0;;10512:2:1;39558:55:0::1;::::0;::::1;10494:21:1::0;10551:2;10531:18;;;10524:30;10590:15;10570:18;;;10563:43;10623:18;;39558:55:0::1;10310:337:1::0;39558:55:0::1;39631:12;-1:-1:-1::0;;;;;39624:29:0::1;;39654:7;8077::::0;8104:6;-1:-1:-1;;;;;8104:6:0;;8031:87;39654:7:::1;39624:51;::::0;-1:-1:-1;;;39624:51:0::1;::::0;::::1;;::::0;;-1:-1:-1;;;;;10844:55:1;;;39624:51:0::1;::::0;::::1;10826:74:1::0;10916:18;;;10909:34;;;10799:18;;39624:51:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;39418:265:::0;;:::o;24878:171::-;8077:7;8104:6;-1:-1:-1;;;;;8104:6:0;7494:10;8166:23;8158:73;;;;-1:-1:-1;;;;;8158:73:0;;;;;;;:::i;:::-;24955:21:::1;:32:::0;;-1:-1:-1;;24955:32:0::1;::::0;::::1;;::::0;;::::1;::::0;;;25003:38:::1;::::0;1235:41:1;;;25003:38:0::1;::::0;1223:2:1;1208:18;25003:38:0::1;;;;;;;24878:171:::0;:::o;16826:19::-;;;;;;;:::i;23771:110::-;8077:7;8104:6;-1:-1:-1;;;;;8104:6:0;7494:10;8166:23;8158:73;;;;-1:-1:-1;;;;;8158:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23838:27:0::1;23868:5;23838:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;23838:35:0::1;::::0;;23771:110::o;8415:249::-;8077:7;8104:6;-1:-1:-1;;;;;8104:6:0;7494:10;8166:23;8158:73;;;;-1:-1:-1;;;;;8158:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8504:22:0;::::1;8496:78;;;::::0;-1:-1:-1;;;;;8496:78:0;;11406:2:1;8496:78:0::1;::::0;::::1;11388:21:1::0;11445:2;11425:18;;;11418:30;11484:34;11464:18;;;11457:62;11555:13;11535:18;;;11528:41;11586:19;;8496:78:0::1;11204:407:1::0;8496:78:0::1;8611:6;::::0;;8590:38:::1;::::0;-1:-1:-1;;;;;8590:38:0;;::::1;::::0;8611:6;::::1;::::0;8590:38:::1;::::0;::::1;8639:6;:17:::0;;-1:-1:-1;;8639:17:0::1;-1:-1:-1::0;;;;;8639:17:0;;;::::1;::::0;;;::::1;::::0;;8415:249::o;23889:719::-;8077:7;8104:6;-1:-1:-1;;;;;8104:6:0;7494:10;8166:23;8158:73;;;;-1:-1:-1;;;;;8158:73:0;;;;;;;:::i;:::-;24114:9:::1;::::0;::::1;::::0;;;::::1;::::0;::::1;24104:19:::0;;::::1;;;24081:55;;;::::0;-1:-1:-1;;;;;24081:55:0;;11818:2:1;24081:55:0::1;::::0;::::1;11800:21:1::0;11857:1;11837:18;;;11830:29;11895:10;11875:18;;;11868:38;11923:18;;24081:55:0::1;11616:331:1::0;24081:55:0::1;24192:9;::::0;::::1;::::0;;;::::1;::::0;::::1;24176:25:::0;;::::1;;;24147:67;;;::::0;-1:-1:-1;;;;;24147:67:0;;12154:2:1;24147:67:0::1;::::0;::::1;12136:21:1::0;12193:1;12173:18;;;12166:29;12231:10;12211:18;;;12204:38;12259:18;;24147:67:0::1;11952:331:1::0;24147:67:0::1;24260:10;::::0;::::1;::::0;;;::::1;::::0;::::1;24249:21:::0;;::::1;;;24225:58;;;::::0;-1:-1:-1;;;;;24225:58:0;;12490:2:1;24225:58:0::1;::::0;::::1;12472:21:1::0;12529:1;12509:18;;;12502:29;12567:10;12547:18;;;12540:38;12595:18;;24225:58:0::1;12288:331:1::0;24225:58:0::1;24333:12;::::0;::::1;::::0;;;::::1;::::0;::::1;24320:25:::0;;::::1;;;24294:64;;;::::0;-1:-1:-1;;;;;24294:64:0;;12826:2:1;24294:64:0::1;::::0;::::1;12808:21:1::0;12865:1;12845:18;;;12838:29;12903:10;12883:18;;;12876:38;12931:18;;24294:64:0::1;12624:331:1::0;24294:64:0::1;24410:13;::::0;::::1;::::0;;;::::1;::::0;::::1;24396:27:::0;;::::1;;;24369:68;;;::::0;-1:-1:-1;;;;;24369:68:0;;13162:2:1;24369:68:0::1;::::0;::::1;13144:21:1::0;13201:1;13181:18;;;13174:29;13239:11;13219:18;;;13212:39;13268:18;;24369:68:0::1;12960:332:1::0;24369:68:0::1;24448:7;:16:::0;;-1:-1:-1;;24475:28:0;24448:16:::1;;::::0;;::::1;;-1:-1:-1::0;;24475:28:0;;;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;24543:24:0;24514:18;;;::::1;::::0;;;::::1;-1:-1:-1::0;;24543:24:0;;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;24578:22:0::1;::::0;;;;::::1;;::::0;;;::::1;::::0;;23889:719::o;12283:98::-;12341:7;12368:5;12372:1;12368;:5;:::i;12682:98::-;12740:7;12767:5;12771:1;12767;:5;:::i;29355:363::-;-1:-1:-1;;;;;29482:19:0;;29474:64;;;;-1:-1:-1;;;;;29474:64:0;;13778:2:1;29474:64:0;;;13760:21:1;;;13797:18;;;13790:30;13856:34;13836:18;;;13829:62;13908:18;;29474:64:0;13576:356:1;29474:64:0;-1:-1:-1;;;;;29557:21:0;;29549:64;;;;-1:-1:-1;;;;;29549:64:0;;14139:2:1;29549:64:0;;;14121:21:1;14178:2;14158:18;;;14151:30;14217:32;14197:18;;;14190:60;14267:18;;29549:64:0;13937:354:1;29549:64:0;-1:-1:-1;;;;;29626:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;29678:32;;1433:25:1;;;29678:32:0;;1406:18:1;29678:32:0;;;;;;;;29355:363;;;:::o;29726:1533::-;-1:-1:-1;;;;;29848:18:0;;29840:64;;;;-1:-1:-1;;;;;29840:64:0;;14498:2:1;29840:64:0;;;14480:21:1;14537:2;14517:18;;;14510:30;14576:34;14556:18;;;14549:62;14647:3;14627:18;;;14620:31;14668:19;;29840:64:0;14296:397:1;29840:64:0;-1:-1:-1;;;;;29923:16:0;;29915:60;;;;-1:-1:-1;;;;;29915:60:0;;14900:2:1;29915:60:0;;;14882:21:1;14939:2;14919:18;;;14912:30;14978:33;14958:18;;;14951:61;15029:18;;29915:60:0;14698:355:1;29915:60:0;30003:1;29994:6;:10;29986:64;;;;-1:-1:-1;;;;;29986:64:0;;15260:2:1;29986:64:0;;;15242:21:1;15299:2;15279:18;;;15272:30;15338:34;15318:18;;;15311:62;15409:11;15389:18;;;15382:39;15438:19;;29986:64:0;15058:405:1;29986:64:0;30063:28;30094:24;30112:4;30094:9;:24::i;:::-;30136:16;;30063:55;;-1:-1:-1;;;;30136:16:0;;;;30135:17;:36;;;;;30162:9;-1:-1:-1;;;;;30156:15:0;:2;-1:-1:-1;;;;;30156:15:0;;30135:36;:61;;;;-1:-1:-1;30175:21:0;;;;30135:61;30131:714;;;30241:29;;30217:20;:53;30213:234;;-1:-1:-1;30314:29:0;;30395:36;30314:29;30395:14;:36::i;:::-;30465:11;;;;;;;:16;30461:373;;30590:9;;30528:4;30520:21;;30586:13;;30590:9;;30586:2;:13;:::i;:::-;30582:17;;:1;:17;:::i;:::-;30564:7;:36;30560:259;;;30639:17;;30629:7;:27;30625:111;;;-1:-1:-1;30695:17:0;;30625:111;30760:39;30774:24;30794:3;30774:15;:7;30786:2;30774:11;:15::i;:::-;:19;;:24::i;:::-;30760:13;:39::i;:::-;30483:351;30461:373;-1:-1:-1;;;;;31038:24:0;;30918:12;31038:24;;;:18;:24;;;;;;30933:4;;31038:24;;;:50;;-1:-1:-1;;;;;;31066:22:0;;;;;;:18;:22;;;;;;;;31038:50;31034:98;;;-1:-1:-1;31115:5:0;31034:98;31210:41;31225:4;31231:2;31235:6;31243:7;31210:14;:41::i;:::-;29829:1430;;29726:1533;;;:::o;13824:240::-;13944:7;14005:12;13997:6;;;;13989:29;;;;-1:-1:-1;;;;;13989:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;14040:5:0;;;13824:240::o;27057:164::-;27099:7;27120:15;27137;27156:19;:17;:19::i;:::-;27119:56;;-1:-1:-1;27119:56:0;-1:-1:-1;27193:20:0;27119:56;;27193:11;:20::i;:::-;27186:27;;;;27057:164;:::o;11545:98::-;11603:7;11630:5;11634:1;11630;:5;:::i;25527:540::-;25627:7;25649;25671;25693;25715;25737;25773:23;25798:12;25812:18;25834:20;25846:7;25834:11;:20::i;:::-;25772:82;;;;;;25866:15;25883:23;25908:12;25924:50;25936:7;25945:4;25951:10;25963;:8;:10::i;:::-;25924:11;:50::i;:::-;25865:109;;;;-1:-1:-1;25865:109:0;;-1:-1:-1;26025:15:0;;-1:-1:-1;26042:4:0;;-1:-1:-1;26048:10:0;;-1:-1:-1;25527:540:0;;-1:-1:-1;;;;;25527:540:0:o;11926:98::-;11984:7;12011:5;12015:1;12011;:5;:::i;31267:2112::-;17989:16;:23;;-1:-1:-1;;;;;17989:23:0;-1:-1:-1;;;17989:23:0;;;;;;;31496:11;;::::1;17989:23:::0;31496:11;;::::1;::::0;31480:13;;::::1;::::0;::::1;::::0;31456:21:::1;::::0;31467:10;;::::1;::::0;::::1;::::0;31456:8;;;::::1;;:21;:::i;:::-;:37;;;;:::i;:::-;:51;;;;:::i;:::-;31593:8;::::0;31441:66;;-1:-1:-1;31518:19:0::1;::::0;;;31593:8;;::::1;;;:13:::0;31589:217:::1;;31674:8;::::0;31637:46:::1;::::0;31674:8:::1;::::0;;;::::1;::::0;::::1;::::0;31637:32:::1;::::0;:20;;:32;::::1;:24;:32::i;:::-;:36:::0;::::1;:46::i;:::-;31733:4;::::0;31623:60;;-1:-1:-1;31698:53:0::1;::::0;31726:4:::1;::::0;-1:-1:-1;;;;;31733:4:0::1;31623:60:::0;31698:19:::1;:53::i;:::-;-1:-1:-1::0;31783:11:0;31589:217:::1;31822:10;::::0;;;::::1;;;:15:::0;31818:243:::1;;31905:10;::::0;31868:48:::1;::::0;31905:10:::1;::::0;;;::::1;::::0;::::1;::::0;31868:32:::1;::::0;:20;;:32;::::1;:24;:32::i;:48::-;31854:62;;31931:58;31959:4;31966:9;;;;;;;;;-1:-1:-1::0;;;;;31966:9:0::1;31977:11;31931:19;:58::i;:::-;32021:28;32038:11:::0;32021:14;:28:::1;:::i;:::-;32004:45;;31818:243;32077:11;::::0;;;::::1;;;:16:::0;32073:216:::1;;32161:11;::::0;32124:49:::1;::::0;32161:11:::1;::::0;;;::::1;::::0;::::1;::::0;32124:32:::1;::::0;:20;;:32;::::1;:24;:32::i;:49::-;32110:63;;32188:29;32205:11;32188:16;:29::i;:::-;32249:28;32266:11:::0;32249:14;:28:::1;:::i;:::-;32232:45;;32073:216;32305:13;::::0;;;::::1;;;:18:::0;32301:1071:::1;;32363:40;:20:::0;32388:14;32363:24:::1;:40::i;:::-;32340:63:::0;-1:-1:-1;32475:12:0::1;32490:27;32340:63:::0;32515:1:::1;32490:24;:27::i;:::-;32475:42:::0;-1:-1:-1;32532:17:0::1;32552:30;:20:::0;32475:42;32552:24:::1;:30::i;:::-;32532:50:::0;-1:-1:-1;32913:4:0::1;32905:21;32979:22;32996:4:::0;32979:16:::1;:22::i;:::-;33140:18;33161:41;33169:4;33161:21;33187:14:::0;33161:25:::1;:41::i;:::-;33140:62;;33260:35;33273:9;33284:10;33260:12;:35::i;:::-;33317:43;::::0;;16012:25:1;;;16068:2;16053:18;;16046:34;;;16096:18;;;16089:34;;;33317:43:0::1;::::0;16000:2:1;15985:18;33317:43:0::1;;;;;;;32325:1047;;;;32301:1071;-1:-1:-1::0;;18035:16:0;:24;;-1:-1:-1;;;;;18035:24:0;;;-1:-1:-1;;31267:2112:0:o;33387:144::-;17989:16;:23;;-1:-1:-1;;;;;17989:23:0;-1:-1:-1;;;17989:23:0;;;33461:10;;33457:67:::1;;33488:24;33505:6;33488:16;:24::i;:::-;-1:-1:-1::0;18035:16:0;:24;;-1:-1:-1;;;;;18035:24:0;;;33387:144::o;35242:838::-;35398:7;35393:28;;35407:14;:12;:14::i;:::-;-1:-1:-1;;;;;35438:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;35462:22:0;;;;;;:11;:22;;;;;;;;35461:23;35438:46;35434:597;;;35501:48;35523:6;35531:9;35542:6;35501:21;:48::i;:::-;35434:597;;;-1:-1:-1;;;;;35572:19:0;;;;;;:11;:19;;;;;;;;35571:20;:46;;;;-1:-1:-1;;;;;;35595:22:0;;;;;;:11;:22;;;;;;;;35571:46;35567:464;;;35634:46;35654:6;35662:9;35673:6;35634:19;:46::i;35567:464::-;-1:-1:-1;;;;;35703:19:0;;;;;;:11;:19;;;;;;;;35702:20;:47;;;;-1:-1:-1;;;;;;35727:22:0;;;;;;:11;:22;;;;;;;;35726:23;35702:47;35698:333;;;35766:44;35784:6;35792:9;35803:6;35766:17;:44::i;35698:333::-;-1:-1:-1;;;;;35832:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;35855:22:0;;;;;;:11;:22;;;;;;;;35832:45;35828:203;;;35894:48;35916:6;35924:9;35935:6;35894:21;:48::i;35828:203::-;35975:44;35993:6;36001:9;36012:6;35975:17;:44::i;:::-;36048:7;36043:29;;29020:15;;;-1:-1:-1;;;;;;29046:37:0;;-1:-1:-1;;29020:15:0;;;;;;;;29010:25;;;;29046:37;;;;;;;29062:21;-1:-1:-1;;29010:25:0;;;;;;29062:21;;;;;;29046:37;;;;;;29132:31;;;-1:-1:-1;;29105:16:0;;;;;29094:27;;29132:31;;;;;;;29145:18;-1:-1:-1;;29094:27:0;;;;;;29145:18;;;;;;29132:31;;;29174:33;;;29188:19;;;;;;;29174:33;;;;;36057:15;35242:838;;;;:::o;27229:556::-;27327:7;;27363;;27280;;;;;27381:289;27405:9;:16;27401:20;;27381:289;;;27471:7;27447;:21;27455:9;27465:1;27455:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;27455:12:0;27447:21;;;;;;;;;;;;;:31;;:66;;;27506:7;27482;:21;27490:9;27500:1;27490:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;27490:12:0;27482:21;;;;;;;;;;;;;:31;27447:66;27443:97;;;27523:7;;27532;;27515:25;;;;;;;27229:556;;:::o;27443:97::-;27565:34;27577:7;:21;27585:9;27595:1;27585:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;27585:12:0;27577:21;;;;;;;;;;;;;27565:7;;:11;:34::i;:::-;27555:44;;27624:34;27636:7;:21;27644:9;27654:1;27644:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;27644:12:0;27636:21;;;;;;;;;;;;;27624:7;;:11;:34::i;:::-;27614:44;-1:-1:-1;27423:3:0;;;;:::i;:::-;;;;27381:289;;;-1:-1:-1;27706:7:0;;27694;;:20;;:11;:20::i;:::-;27684:7;:30;27680:61;;;27724:7;;27733;;27716:25;;;;;;27229:556;;:::o;27680:61::-;27760:7;;27769;;-1:-1:-1;27229:556:0;-1:-1:-1;27229:556:0:o;26075:412::-;26176:7;26198;26220;26255:12;26270:24;26286:7;26270:15;:24::i;:::-;26255:39;;26305:18;26326:30;26348:7;26326:21;:30::i;:::-;26305:51;-1:-1:-1;26367:23:0;26393:33;26305:51;26393:17;:7;26405:4;26393:11;:17::i;:::-;:21;;:33::i;:::-;26367:59;26462:4;;-1:-1:-1;26468:10:0;;-1:-1:-1;26075:412:0;;-1:-1:-1;;;26075:412:0:o;26495:554::-;26694:7;;;;26791:24;:7;26803:11;26791;:24::i;:::-;26773:42;-1:-1:-1;26826:12:0;26841:21;:4;26850:11;26841:8;:21::i;:::-;26826:36;-1:-1:-1;26873:18:0;26894:27;:10;26909:11;26894:14;:27::i;:::-;26873:48;-1:-1:-1;26932:23:0;26958:33;26873:48;26958:17;:7;26970:4;26958:11;:17::i;:33::-;27010:7;;;;-1:-1:-1;27036:4:0;;-1:-1:-1;26495:554:0;;-1:-1:-1;;;;;;;26495:554:0:o;38886:524::-;-1:-1:-1;;;;;39037:15:0;;;;;;:7;:15;;;;;;:27;;39057:6;39037:19;:27::i;:::-;-1:-1:-1;;;;;39019:15:0;;;;;;;:7;:15;;;;;;:45;;;;39096:18;;;;;;;:30;;39119:6;39096:22;:30::i;:::-;-1:-1:-1;;;;;39075:18:0;;;;;;;:7;:18;;;;;;;;:51;;;;39143:19;;;;;:11;:19;;;;;;;39139:97;;;-1:-1:-1;;;;;39197:15:0;;;;;;:7;:15;;;;;;:27;;39217:6;39197:19;:27::i;:::-;-1:-1:-1;;;;;39179:15:0;;;;;;:7;:15;;;;;:45;39139:97;-1:-1:-1;;;;;39250:22:0;;;;;;:11;:22;;;;;;;;39246:106;;;-1:-1:-1;;;;;39310:18:0;;;;;;:7;:18;;;;;;:30;;39333:6;39310:22;:30::i;:::-;-1:-1:-1;;;;;39289:18:0;;;;;;:7;:18;;;;;:51;39246:106;39384:9;-1:-1:-1;;;;;39367:35:0;39376:6;-1:-1:-1;;;;;39367:35:0;;39395:6;39367:35;;;;1433:25:1;;1421:2;1406:18;;1287:177;33539:586:0;33689:16;;;33703:1;33689:16;;;;;;;;33665:21;;33689:16;;;;;;;;;;-1:-1:-1;33689:16:0;33665:40;;33734:4;33716;33721:1;33716:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;33716:23:0;;;-1:-1:-1;;;;;33716:23:0;;;;;33760:11;-1:-1:-1;;;;;33760:16:0;;:18;;;;;-1:-1:-1;;;33760:18:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33750:4;33755:1;33750:7;;;;;;;;:::i;:::-;;;;;;:28;-1:-1:-1;;;;;33750:28:0;;;-1:-1:-1;;;;;33750:28:0;;;;;33791:58;33808:4;33823:11;33837;33791:8;:58::i;:::-;-1:-1:-1;;;;;33888:11:0;:62;;33965:11;33991:1;34035:4;34062;34082:24;:15;34102:3;34082:19;:24::i;:::-;33888:229;;;;;-1:-1:-1;;;33888:229:0;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33594:531;33539:586;:::o;34650:511::-;34798:58;34815:4;34830:11;34844;34798:8;:58::i;:::-;35099:4;;-1:-1:-1;;;;;34899:11:0;:27;;;;;34934:9;;34967:4;;34987:11;;35013:1;;;;35099:4;35118:24;:15;35138:3;35118:19;:24::i;:::-;34899:254;;;;;-1:-1:-1;;;34899:254:0;;;-1:-1:-1;;;;;18060:15:1;;;34899:254:0;;;18042:34:1;18092:18;;;18085:34;;;;18135:18;;;18128:34;;;;18178:18;;;18171:34;;;;18242:15;;;18221:19;;;18214:44;18274:19;;;18267:35;;;;17953:19;;34899:254:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;34133:509::-;34278:16;;;34292:1;34278:16;;;;;;;;34254:21;;34278:16;;;;;;;;;;-1:-1:-1;34278:16:0;34254:40;;34315:11;-1:-1:-1;;;;;34315:16:0;;:18;;;;;-1:-1:-1;;;34315:18:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34305:4;34310:1;34305:7;;;;;;;;:::i;:::-;;;;;;:28;-1:-1:-1;;;;;34305:28:0;;;-1:-1:-1;;;;;34305:28:0;;;;;34362:4;34344;34349:1;34344:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;34344:23:0;;;:7;;;;;;;;;:23;34564:4;;34406:11;:62;;;;;34476:6;;34498:1;;34545:4;;34564;34599:24;:15;34619:3;34599:19;:24::i;:::-;34406:228;;;;;-1:-1:-1;;;34406:228:0;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34183:459;34133:509;:::o;28469:489::-;28516:7;;;;;;;:12;:34;;;;-1:-1:-1;28532:13:0;;;;;;;:18;28516:34;:51;;;;-1:-1:-1;28554:8:0;;;;;;;:13;28516:51;:70;;;;-1:-1:-1;28571:10:0;;;;;;;:15;28516:70;:90;;;;-1:-1:-1;28590:11:0;;;;;;;:16;28516:90;28512:103;;;28469:489::o;28512:103::-;28645:7;;;-1:-1:-1;;;;;;28663:37:0;;-1:-1:-1;;28645:7:0;;;;;;;28627:25;;28663:37;;;;;;;28687:13;-1:-1:-1;;28627:25:0;;;;;;28687:13;;;;;;28663:37;;;;;;28749:31;;;-1:-1:-1;;28730:8:0;;;;;28711:27;;28749:31;;;;;;;28770:10;-1:-1:-1;;28711:27:0;;;;;;28770:10;;;;;;28749:31;;;28935:15;;;28813:11;;;;;;;28791:33;;-1:-1:-1;;28935:15:0;;;;28469:489::o;37427:686::-;37578:15;37608:23;37646:12;37673:23;37711:12;37738:18;37770:19;37781:7;37770:10;:19::i;:::-;-1:-1:-1;;;;;37818:15:0;;;;;;:7;:15;;;;;;37563:226;;-1:-1:-1;37563:226:0;;-1:-1:-1;37563:226:0;;-1:-1:-1;37563:226:0;-1:-1:-1;37563:226:0;-1:-1:-1;37563:226:0;-1:-1:-1;37818:28:0;;37838:7;37818:19;:28::i;:::-;-1:-1:-1;;;;;37800:15:0;;;;;;:7;:15;;;;;;;;:46;;;;37875:7;:15;;;;:28;;37895:7;37875:19;:28::i;:::-;-1:-1:-1;;;;;37857:15:0;;;;;;;:7;:15;;;;;;:46;;;;37935:18;;;;;;;:39;;37958:15;37935:22;:39::i;:::-;-1:-1:-1;;;;;37914:18:0;;;;;;:7;:18;;;;;:60;37985:26;38000:10;37985:14;:26::i;:::-;38022:23;38034:4;38040;38022:11;:23::i;:::-;38078:9;-1:-1:-1;;;;;38061:44:0;38070:6;-1:-1:-1;;;;;38061:44:0;;38089:15;38061:44;;;;1433:25:1;;1421:2;1406:18;;1287:177;38061:44:0;;;;;;;;37552:561;;;;;;37427:686;;;:::o;36721:698::-;36870:15;36900:23;36938:12;36965:23;37003:12;37030:18;37062:19;37073:7;37062:10;:19::i;:::-;-1:-1:-1;;;;;37110:15:0;;;;;;:7;:15;;;;;;36855:226;;-1:-1:-1;36855:226:0;;-1:-1:-1;36855:226:0;;-1:-1:-1;36855:226:0;-1:-1:-1;36855:226:0;-1:-1:-1;36855:226:0;-1:-1:-1;37110:28:0;;36855:226;37110:19;:28::i;:::-;-1:-1:-1;;;;;37092:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;37170:18;;;;;:7;:18;;;;;:39;;37193:15;37170:22;:39::i;:::-;-1:-1:-1;;;;;37149:18:0;;;;;;:7;:18;;;;;;;;:60;;;;37241:7;:18;;;;:39;;37264:15;37241:22;:39::i;36088:625::-;36235:15;36265:23;36303:12;36330:23;36368:12;36395:18;36427:19;36438:7;36427:10;:19::i;:::-;-1:-1:-1;;;;;36475:15:0;;;;;;:7;:15;;;;;;36220:226;;-1:-1:-1;36220:226:0;;-1:-1:-1;36220:226:0;;-1:-1:-1;36220:226:0;-1:-1:-1;36220:226:0;-1:-1:-1;36220:226:0;-1:-1:-1;36475:28:0;;36220:226;36475:19;:28::i;38121:757::-;38272:15;38302:23;38340:12;38367:23;38405:12;38432:18;38464:19;38475:7;38464:10;:19::i;:::-;-1:-1:-1;;;;;38512:15:0;;;;;;:7;:15;;;;;;38257:226;;-1:-1:-1;38257:226:0;;-1:-1:-1;38257:226:0;;-1:-1:-1;38257:226:0;-1:-1:-1;38257:226:0;-1:-1:-1;38257:226:0;-1:-1:-1;38512:28:0;;38532:7;38512:19;:28::i;:::-;-1:-1:-1;;;;;38494:15:0;;;;;;:7;:15;;;;;;;;:46;;;;38569:7;:15;;;;:28;;38589:7;38569:19;:28::i;28143:130::-;28246:7;;28207;;28234:31;;28259:5;;28234:20;;:7;;28246;;;;;28234:11;:20::i;28281:180::-;28430:11;;28351:7;;28378:75;;28447:5;;28378:64;;28430:11;;;;;;;28417:10;;;;;;28390:24;;28406:8;;;;;;28390:13;;;;;:24;:::i;:::-;:37;;;;:::i;:::-;:51;;;;:::i;:::-;28378:7;;:64;;:11;:64::i;27793:342::-;27856:19;27878:10;:8;:10::i;:::-;27856:32;-1:-1:-1;27899:18:0;27920:27;:10;27856:32;27920:14;:27::i;:::-;27999:4;27983:22;;;;:7;:22;;;;;;27899:48;;-1:-1:-1;27983:38:0;;27899:48;27983:26;:38::i;:::-;27974:4;27958:22;;;;:7;:22;;;;;;;;:63;;;;28036:11;:26;;;;;;28032:95;;;28105:4;28089:22;;;;:7;:22;;;;;;:38;;28116:10;28089:26;:38::i;:::-;28080:4;28064:22;;;;:7;:22;;;;;:63;27845:290;;27793:342;:::o;25372:147::-;25450:7;;:17;;25462:4;25450:11;:17::i;:::-;25440:7;:27;25491:10;;:20;;25506:4;25491:14;:20::i;:::-;25478:10;:33;-1:-1:-1;;25372:147:0:o;14:597:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:154::-;-1:-1:-1;;;;;695:5:1;691:54;684:5;681:65;671:93;;760:1;757;750:12;775:315;843:6;851;904:2;892:9;883:7;879:23;875:32;872:52;;;920:1;917;910:12;872:52;959:9;946:23;978:31;1003:5;978:31;:::i;:::-;1028:5;1080:2;1065:18;;;;1052:32;;-1:-1:-1;;;775:315:1:o;1658:456::-;1735:6;1743;1751;1804:2;1792:9;1783:7;1779:23;1775:32;1772:52;;;1820:1;1817;1810:12;1772:52;1859:9;1846:23;1878:31;1903:5;1878:31;:::i;:::-;1928:5;-1:-1:-1;1985:2:1;1970:18;;1957:32;1998:33;1957:32;1998:33;:::i;:::-;1658:456;;2050:7;;-1:-1:-1;;;2104:2:1;2089:18;;;;2076:32;;1658:456::o;2119:180::-;2178:6;2231:2;2219:9;2210:7;2206:23;2202:32;2199:52;;;2247:1;2244;2237:12;2199:52;-1:-1:-1;2270:23:1;;2119:180;-1:-1:-1;2119:180:1:o;2304:247::-;2363:6;2416:2;2404:9;2395:7;2391:23;2387:32;2384:52;;;2432:1;2429;2422:12;2384:52;2471:9;2458:23;2490:31;2515:5;2490:31;:::i;2556:118::-;2642:5;2635:13;2628:21;2621:5;2618:32;2608:60;;2664:1;2661;2654:12;2679:309;2744:6;2752;2805:2;2793:9;2784:7;2780:23;2776:32;2773:52;;;2821:1;2818;2811:12;2773:52;2857:9;2844:23;2834:33;;2917:2;2906:9;2902:18;2889:32;2930:28;2952:5;2930:28;:::i;:::-;2977:5;2967:15;;;2679:309;;;;;:::o;3741:241::-;3797:6;3850:2;3838:9;3829:7;3825:23;3821:32;3818:52;;;3866:1;3863;3856:12;3818:52;3905:9;3892:23;3924:28;3946:5;3924:28;:::i;3987:388::-;4055:6;4063;4116:2;4104:9;4095:7;4091:23;4087:32;4084:52;;;4132:1;4129;4122:12;4084:52;4171:9;4158:23;4190:31;4215:5;4190:31;:::i;:::-;4240:5;-1:-1:-1;4297:2:1;4282:18;;4269:32;4310:33;4269:32;4310:33;:::i;4627:156::-;4693:20;;4753:4;4742:16;;4732:27;;4722:55;;4773:1;4770;4763:12;4722:55;4627:156;;;:::o;4788:464::-;4873:6;4881;4889;4897;4905;4958:3;4946:9;4937:7;4933:23;4929:33;4926:53;;;4975:1;4972;4965:12;4926:53;4998:27;5015:9;4998:27;:::i;:::-;4988:37;;5044:36;5076:2;5065:9;5061:18;5044:36;:::i;:::-;5034:46;;5099:36;5131:2;5120:9;5116:18;5099:36;:::i;:::-;5089:46;;5154:36;5186:2;5175:9;5171:18;5154:36;:::i;:::-;5144:46;;5209:37;5241:3;5230:9;5226:19;5209:37;:::i;:::-;5199:47;;4788:464;;;;;;;;:::o;5257:437::-;5342:1;5332:12;;5389:1;5379:12;;;5400:61;;5454:4;5446:6;5442:17;5432:27;;5400:61;5507:2;5499:6;5496:14;5476:18;5473:38;5470:218;;;-1:-1:-1;;;;;5541:1:1;5534:88;5645:4;5642:1;5635:15;5673:4;5670:1;5663:15;5470:218;;5257:437;;;:::o;6058:401::-;6260:2;6242:21;;;6299:2;6279:18;;;6272:30;6338:34;6333:2;6318:18;;6311:62;6409:7;6404:2;6389:18;;6382:35;6449:3;6434:19;;6058:401::o;6809:184::-;-1:-1:-1;;;;;6858:1:1;6851:88;6958:4;6955:1;6948:15;6982:4;6979:1;6972:15;6998:184;-1:-1:-1;;;;;7047:1:1;7040:88;7147:4;7144:1;7137:15;7171:4;7168:1;7161:15;7187:125;7227:4;7255:1;7252;7249:8;7246:34;;;7260:18;;:::i;:::-;-1:-1:-1;7297:9:1;;7187:125::o;7317:184::-;-1:-1:-1;;;;;7366:1:1;7359:88;7466:4;7463:1;7456:15;7490:4;7487:1;7480:15;7506:135;7545:3;-1:-1:-1;;7566:17:1;;7563:43;;;7586:18;;:::i;:::-;-1:-1:-1;7633:1:1;7622:13;;7506:135::o;8416:419::-;8505:1;8548:5;8505:1;8562:267;8583:7;8573:8;8570:21;8562:267;;;8642:4;8638:1;8634:6;8630:17;8624:4;8621:27;8618:53;;;8651:18;;:::i;:::-;8701:7;8691:8;8687:22;8684:55;;;8721:16;;;;8684:55;8814:4;8800:19;;;;8760:15;;;;8562:267;;;8566:3;8416:419;;;;;:::o;8840:806::-;8889:5;8919:8;8909:80;;-1:-1:-1;8960:1:1;8974:5;;8909:80;9008:4;8998:76;;-1:-1:-1;9045:1:1;9059:5;;8998:76;9090:4;9108:1;9103:59;;;;9176:1;9171:130;;;;9083:218;;9103:59;9133:1;9124:10;;9147:5;;;9171:130;9208:3;9198:8;9195:17;9192:43;;;9215:18;;:::i;:::-;9264:8;9261:1;9257:16;9248:25;;9286:5;;;9083:218;;9385:2;9375:8;9372:16;9366:3;9360:4;9357:13;9353:36;9347:2;9337:8;9334:16;9329:2;9323:4;9320:12;9316:35;9313:77;9310:159;;;-1:-1:-1;9422:19:1;;;9454:5;;9310:159;9501:34;9526:8;9520:4;9501:34;:::i;:::-;9571:6;9567:1;9563:6;9559:19;9550:7;9547:32;9544:58;;;9582:18;;:::i;:::-;9620:20;;8840:806;-1:-1:-1;;;8840:806:1:o;9651:140::-;9709:5;9738:47;9779:4;9769:8;9765:19;9759:4;9738:47;:::i;9796:168::-;9836:7;9902:1;9898;9894:6;9890:14;9887:1;9884:21;9879:1;9872:9;9865:17;9861:45;9858:71;;;9909:18;;:::i;:::-;-1:-1:-1;9949:9:1;;9796:168::o;10954:245::-;11021:6;11074:2;11062:9;11053:7;11049:23;11045:32;11042:52;;;11090:1;11087;11080:12;11042:52;11122:9;11116:16;11141:28;11163:5;11141:28;:::i;13297:274::-;13337:1;13363;13353:189;;-1:-1:-1;;;;;13395:1:1;13388:88;13499:4;13496:1;13489:15;13527:4;13524:1;13517:15;13353:189;-1:-1:-1;13556:9:1;;13297:274::o;15468:128::-;15508:3;15539:1;15535:6;15532:1;15529:13;15526:39;;;15545:18;;:::i;:::-;-1:-1:-1;15581:9:1;;15468:128::o;15601:204::-;15639:3;15675:4;15672:1;15668:12;15707:4;15704:1;15700:12;15742:3;15736:4;15732:14;15727:3;15724:23;15721:49;;;15750:18;;:::i;:::-;15786:13;;15601:204;-1:-1:-1;;;15601:204:1:o;16323:251::-;16393:6;16446:2;16434:9;16425:7;16421:23;16417:32;16414:52;;;16462:1;16459;16452:12;16414:52;16494:9;16488:16;16513:31;16538:5;16513:31;:::i;16579:484::-;16632:3;16670:5;16664:12;16697:6;16692:3;16685:19;16723:4;16752:2;16747:3;16743:12;16736:19;;16789:2;16782:5;16778:14;16810:1;16820:218;16834:6;16831:1;16828:13;16820:218;;;16899:13;;-1:-1:-1;;;;;16895:62:1;16883:75;;16978:12;;;;17013:15;;;;16856:1;16849:9;16820:218;;;-1:-1:-1;17054:3:1;;16579:484;-1:-1:-1;;;;;16579:484:1:o;17068:605::-;17367:6;17356:9;17349:25;17410:6;17405:2;17394:9;17390:18;17383:34;17453:3;17448:2;17437:9;17433:18;17426:31;17330:4;17474:57;17526:3;17515:9;17511:19;17503:6;17474:57;:::i;:::-;-1:-1:-1;;;;;17567:55:1;;;;17562:2;17547:18;;17540:83;-1:-1:-1;17654:3:1;17639:19;17632:35;17466:65;17068:605;-1:-1:-1;;;17068:605:1:o;18313:306::-;18401:6;18409;18417;18470:2;18458:9;18449:7;18445:23;18441:32;18438:52;;;18486:1;18483;18476:12;18438:52;18515:9;18509:16;18499:26;;18565:2;18554:9;18550:18;18544:25;18534:35;;18609:2;18598:9;18594:18;18588:25;18578:35;;18313:306;;;;;:::o;18624:533::-;18895:6;18884:9;18877:25;18938:3;18933:2;18922:9;18918:18;18911:31;18858:4;18959:57;19011:3;19000:9;18996:19;18988:6;18959:57;:::i;:::-;-1:-1:-1;;;;;19052:55:1;;;;19047:2;19032:18;;19025:83;-1:-1:-1;19139:2:1;19124:18;19117:34;18951:65;18624:533;-1:-1:-1;;18624:533:1:o
Swarm Source
ipfs://0db40866963bcc0799caa2f4078b609d7a030c251c0f09fe33fa59eb17e51325
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.