Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
1,000,000,000 OYA
Holders
17
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
1.213199566320345171 OYAValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
OYABUN
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-08-06 */ //OYABUN LEGACY - YAKUZA// //ZERO TAX// pragma solidity ^0.6.12; // SPDX-License-Identifier: MIT interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the token decimals. */ function decimals() external view returns (uint8); /** * @dev Returns the token symbol. */ function symbol() external view returns (string memory); /** * @dev Returns the token name. */ function name() external view returns (string memory); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address _owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval( address indexed owner, address indexed spender, uint256 value ); } /* * @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 GSN 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. */ contract Context { // Empty internal constructor, to prevent people from mistakenly deploying // an instance of this contract, which should be used via inheritance. constructor() internal {} function _msgSender() internal view returns (address payable) { return msg.sender; } function _msgData() internal view returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @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) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @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 sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @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) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts 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) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts 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) { // Solidity only automatically asserts when dividing by 0 require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts 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 mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message 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, string memory errorMessage ) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() internal { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public onlyOwner { _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). */ function _transferOwnership(address newOwner) internal { require( newOwner != address(0), "Ownable: new owner is the zero address" ); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } pragma solidity >=0.6.2; interface IUniswapRouter01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function removeLiquidity( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETH( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountToken, uint256 amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETHWithPermit( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountToken, uint256 amountETH); function swapExactTokensForTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapTokensForExactTokens( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactETHForTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function swapTokensForExactETH( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactTokensForETH( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapETHForExactTokens( uint256 amountOut, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function quote( uint256 amountA, uint256 reserveA, uint256 reserveB ) external pure returns (uint256 amountB); function getAmountOut( uint256 amountIn, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountOut); function getAmountIn( uint256 amountOut, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountIn); function getAmountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts); function getAmountsIn(uint256 amountOut, address[] calldata path) external view returns (uint256[] memory amounts); } // File: contracts\interfaces\IUniswapRouter02.sol pragma solidity >=0.6.2; interface IUniswapRouter02 is IUniswapRouter01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } pragma solidity >=0.5.0; interface IUniswapFactory { event PairCreated( address indexed token0, address indexed token1, address pair, uint256 ); 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(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; function INIT_CODE_PAIR_HASH() external view returns (bytes32); } pragma solidity >=0.5.0; interface IUniswapPair { event Approval( address indexed owner, address indexed spender, uint256 value ); event Transfer(address indexed from, address indexed to, uint256 value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint256); function balanceOf(address owner) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom( address from, address to, uint256 value ) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint256); function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; event Burn( address indexed sender, uint256 amount0, uint256 amount1, address indexed to ); event Swap( address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint256); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns ( uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast ); function price0CumulativeLast() external view returns (uint256); function price1CumulativeLast() external view returns (uint256); function kLast() external view returns (uint256); function swap( uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data ) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } contract OYABUN is Context, IERC20, Ownable { using SafeMath for uint256; 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 _isExcludedFromLimitHolder; mapping(address => bool) private blackList; address[] private _excluded; uint256 private constant MAX = ~uint256(0); bool inSwapAndLiquify; uint256 private constant _tTotal = 10 * 10**8 * 10**18; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; uint256 public _taxFee = 0; uint256 public _marketFee = 0; uint256 public _liquidityFee = 0; uint256 public _previousTaxFee = _taxFee; uint256 public _previousMarketFee = _marketFee; uint256 public _previousLiquidityFee = _liquidityFee; uint256 public _maxTxAmount = 70 * 10**6 * 10**18; // uint256 public _numTokensSellToAddToLiquidity = 50 * 10**6 * 10**18; uint256 public _maxWalletToken = 100 * 10**6 * 10**18; // IUniswapRouter02 public immutable pcsV2Router; address public immutable pcsV2Pair; string private _name = "Oyabun Legacy"; string private _symbol = "OYA"; uint8 private _decimals = 18; uint256 public totalUnlockedToken; uint256 public totalTransferredUnlockedToken; address public marketingWallet = 0x9D3F1cD810b2eF4d96bE07e53eD9e2CB9036C69f; address public devWallet = 0x9D3F1cD810b2eF4d96bE07e53eD9e2CB9036C69f; address public teamWallet = 0x9D3F1cD810b2eF4d96bE07e53eD9e2CB9036C69f; // address public ceoWallet = 0x9CfdbB2657413eAa36b9e1a1C7249b8F9473d67c; event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity, uint256 contractTokenBalance ); constructor() public { _rOwned[_msgSender()] = _rTotal; _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[marketingWallet] = true; _isExcludedFromFee[teamWallet] = true; _isExcludedFromFee[devWallet] = true; _isExcludedFromLimitHolder[owner()] = true; _isExcludedFromLimitHolder[address(this)] = true; _isExcludedFromLimitHolder[marketingWallet] = true; _isExcludedFromLimitHolder[teamWallet] = true; _isExcludedFromLimitHolder[devWallet] = true; IUniswapRouter02 _UniswapswapV2Router = IUniswapRouter02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // Create a uniswap pair for this new token pcsV2Pair = IUniswapFactory(_UniswapswapV2Router.factory()).createPair( address(this), _UniswapswapV2Router.WETH() ); pcsV2Router = _UniswapswapV2Router; emit Transfer(address(0), _msgSender(), _tTotal); } // modifier onlyCeo() { // require(ceoWallet == _msgSender(), "Ownable: caller is not the CEO"); // _; // } modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } 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) { 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 totalFees() public view returns (uint256) { return _tFeeTotal; } function reflect(uint256 tAmount) public { address sender = _msgSender(); (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, "Amount 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, "Amount must be less than total reflections" ); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function _approve( address owner, address spender, uint256 amount ) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function openTrading(bool _isOpenTrading) external { inSwapAndLiquify = _isOpenTrading; } function addBlackList (address[] memory blackAddresses) external onlyOwner { for (uint256 i = 0; i < blackAddresses.length; i++) { blackList[blackAddresses[i]] = true; } } function _transfer( address sender, address recipient, uint256 amount ) private { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); require (!blackList[sender], "Sender address is in black list"); require (!blackList[recipient], "Recipient address is in black list"); if ( sender != owner() && recipient != owner() && recipient != address(1) && recipient != pcsV2Pair && !_isExcludedFromLimitHolder[recipient] && !_isExcludedFromLimitHolder[sender] ) { require( amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount." ); uint256 contractBalanceRecepient = balanceOf(recipient); require( contractBalanceRecepient + amount <= _maxWalletToken, "Exceeds maximum wallet token amount (100,000,000)" ); } // is the token balance of this contract address over the min number of // tokens that we need to initiate a swap + liquidity lock? // also, don't get caught in a circular liquidity event. // also, don't swap & liquify if sender is uniswap pair. uint256 contractTokenBalance = balanceOf(address(this)); if (contractTokenBalance >= _maxTxAmount) { contractTokenBalance = _maxTxAmount; } bool overMinTokenBalance = contractTokenBalance >= _numTokensSellToAddToLiquidity; if (overMinTokenBalance && !inSwapAndLiquify && sender != pcsV2Pair) { contractTokenBalance = _numTokensSellToAddToLiquidity; swapAndLiquify(contractTokenBalance); } bool takeFee = true; //if any account belongs to _isExcludedFromFee account then remove the fee if ( _isExcludedFromFee[sender] || _isExcludedFromFee[recipient] || sender == pcsV2Pair ) { takeFee = false; } _transferStandard(sender, recipient, amount); } function _transferStandard( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity ) = _getValues(tAmount); uint256 mFee = rAmount.div(10**2).mul(_marketFee); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[marketingWallet] = _rOwned[marketingWallet].add(mFee); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } 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 = tAmount.div(10**2).mul(_taxFee); uint256 tLiquidity = tAmount.div(10**2).mul(_liquidityFee); uint256 mFee = tAmount.div(10**2).mul(_marketFee); uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity).sub(mFee); 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); } function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap { // 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); // 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, contractTokenBalance); } 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] = pcsV2Router.WETH(); _approve(address(this), address(pcsV2Router), tokenAmount); // make the swap pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(pcsV2Router), tokenAmount); // add the liquidity pcsV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable owner(), block.timestamp ); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":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"},{"indexed":false,"internalType":"uint256","name":"contractTokenBalance","type":"uint256"}],"name":"SwapAndLiquify","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":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_numTokensSellToAddToLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_previousLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_previousMarketFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_previousTaxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"blackAddresses","type":"address[]"}],"name":"addBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"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":"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":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_isOpenTrading","type":"bool"}],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pcsV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pcsV2Router","outputs":[{"internalType":"contract IUniswapRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"reflect","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":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"totalTransferredUnlockedToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalUnlockedToken","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"}]
Contract Creation Code
60c06040526b033b2e3c9fd0803ce8000000600019816200001c57fe5b06600019036009556000600b556000600c556000600d55600b54600e55600c54600f55600d546010556a39e7139a8c08fa060000006011556a295be96e640669720000006012556a52b7d2dcc80cd2e40000006013556040518060400160405280600d81526020017f4f796162756e204c65676163790000000000000000000000000000000000000081525060149080519060200190620000bf92919062000aa0565b506040518060400160405280600381526020017f4f59410000000000000000000000000000000000000000000000000000000000815250601590805190602001906200010d92919062000aa0565b506012601660006101000a81548160ff021916908360ff160217905550739d3f1cd810b2ef4d96be07e53ed9e2cb9036c69f601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550739d3f1cd810b2ef4d96be07e53ed9e2cb9036c69f601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550739d3f1cd810b2ef4d96be07e53ed9e2cb9036c69f601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200023657600080fd5b5060006200024962000a6f60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060095460016000620002fe62000a6f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600460006200035262000a7760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560006200057f62000a7760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620007f657600080fd5b505afa1580156200080b573d6000803e3d6000fd5b505050506040513d60208110156200082257600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200089657600080fd5b505afa158015620008ab573d6000803e3d6000fd5b505050506040513d6020811015620008c257600080fd5b81019080805190602001909291905050506040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1580156200093d57600080fd5b505af115801562000952573d6000803e3d6000fd5b505050506040513d60208110156200096957600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b81525050620009f762000a6f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6b033b2e3c9fd0803ce80000006040518082815260200191505060405180910390a35062000b46565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1062000ae357805160ff191683800117855562000b14565b8280016001018555821562000b14579182015b8281111562000b1357825182559160200191906001019062000af6565b5b50905062000b23919062000b27565b5090565b5b8082111562000b4257600081600090555060010162000b28565b5090565b60805160601c60a05160601c6133d162000b9860003980610fe75280611d905280611fa052806120b2525080610da85280612d4b5280612e375280612e5e5280612f695280612f9052506133d16000f3fe608060405234801561001057600080fd5b506004361061021c5760003560e01c80636bc87c3a116101255780638ea5220f116100ad578063a9059cbb1161007c578063a9059cbb146108e8578063b3f22ce31461094c578063d338faf31461096a578063dd62ed3e14610a22578063f2fde38b14610a9a5761021c565b80638ea5220f146107af578063909ef733146107e357806395d89b4114610801578063a457c2d7146108845761021c565b806375f0a874116100f457806375f0a874146106ed57806378109e54146107215780637d1db4a51461073f57806384d6ff2f1461075d5780638da5cb5b1461077b5761021c565b80636bc87c3a1461064f57806370a082311461066d578063715018a6146106c557806374c7b41c146106cf5761021c565b80632d838119116101a857806344aa2fc61161017757806344aa2fc61461055d5780634549b0391461057b57806352143290146105c957806359927044146105fd57806363aef729146106315761021c565b80632d83811914610478578063313ce567146104ba57806339509351146104db5780633b124fe71461053f5761021c565b806318160ddd116101ef57806318160ddd1461035457806323b872dd146103725780632701a4f2146103f65780632a9b8072146104145780632d6abf87146104445761021c565b8063053ab1821461022157806306fdde031461024f578063095ea7b3146102d257806313114a9d14610336575b600080fd5b61024d6004803603602081101561023757600080fd5b8101908080359060200190929190505050610ade565b005b610257610bcc565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561029757808201518184015260208101905061027c565b50505050905090810190601f1680156102c45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61031e600480360360408110156102e857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c6e565b60405180821515815260200191505060405180910390f35b61033e610c8c565b6040518082815260200191505060405180910390f35b61035c610c96565b6040518082815260200191505060405180910390f35b6103de6004803603606081101561038857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610caa565b60405180821515815260200191505060405180910390f35b6103fe610d83565b6040518082815260200191505060405180910390f35b6104426004803603602081101561042a57600080fd5b81019080803515159060200190929190505050610d89565b005b61044c610da6565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104a46004803603602081101561048e57600080fd5b8101908080359060200190929190505050610dca565b6040518082815260200191505060405180910390f35b6104c2610e4e565b604051808260ff16815260200191505060405180910390f35b610527600480360360408110156104f157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e65565b60405180821515815260200191505060405180910390f35b610547610f18565b6040518082815260200191505060405180910390f35b610565610f1e565b6040518082815260200191505060405180910390f35b6105b36004803603604081101561059157600080fd5b8101908080359060200190929190803515159060200190929190505050610f24565b6040518082815260200191505060405180910390f35b6105d1610fe5565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610605611009565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61063961102f565b6040518082815260200191505060405180910390f35b610657611035565b6040518082815260200191505060405180910390f35b6106af6004803603602081101561068357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061103b565b6040518082815260200191505060405180910390f35b6106cd61108c565b005b6106d7611212565b6040518082815260200191505060405180910390f35b6106f5611218565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61072961123e565b6040518082815260200191505060405180910390f35b610747611244565b6040518082815260200191505060405180910390f35b61076561124a565b6040518082815260200191505060405180910390f35b610783611250565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6107b7611279565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6107eb61129f565b6040518082815260200191505060405180910390f35b6108096112a5565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561084957808201518184015260208101905061082e565b50505050905090810190601f1680156108765780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6108d06004803603604081101561089a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611347565b60405180821515815260200191505060405180910390f35b610934600480360360408110156108fe57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611414565b60405180821515815260200191505060405180910390f35b610954611432565b6040518082815260200191505060405180910390f35b610a206004803603602081101561098057600080fd5b810190808035906020019064010000000081111561099d57600080fd5b8201836020820111156109af57600080fd5b803590602001918460208302840111640100000000831117156109d157600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050611438565b005b610a8460048036036040811015610a3857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611588565b6040518082815260200191505060405180910390f35b610adc60048036036020811015610ab057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061160f565b005b6000610ae86116e3565b90506000610af5836116eb565b50505050509050610b4e81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461174790919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610ba68160095461174790919063ffffffff16565b600981905550610bc183600a5461179190919063ffffffff16565b600a81905550505050565b606060148054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610c645780601f10610c3957610100808354040283529160200191610c64565b820191906000526020600020905b815481529060010190602001808311610c4757829003601f168201915b5050505050905090565b6000610c82610c7b6116e3565b8484611819565b6001905092915050565b6000600a54905090565b60006b033b2e3c9fd0803ce8000000905090565b6000610cb7848484611a10565b610d7884610cc36116e3565b610d73856040518060600160405280602881526020016132ac60289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d296116e3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461211d9092919063ffffffff16565b611819565b600190509392505050565b60105481565b80600860006101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600954821115610e27576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806131cf602a913960400191505060405180910390fd5b6000610e316121dd565b9050610e46818461220890919063ffffffff16565b915050919050565b6000601660009054906101000a900460ff16905090565b6000610f0e610e726116e3565b84610f098560036000610e836116e3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461179190919063ffffffff16565b611819565b6001905092915050565b600b5481565b60185481565b60006b033b2e3c9fd0803ce8000000831115610fa8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f416d6f756e74206d757374206265206c657373207468616e20737570706c790081525060200191505060405180910390fd5b81610fc8576000610fb8846116eb565b5050505050905080915050610fdf565b6000610fd3846116eb565b50505050915050809150505b92915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f5481565b600d5481565b6000611085600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610dca565b9050919050565b6110946116e3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611154576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600e5481565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60135481565b60115481565b600c5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60175481565b606060158054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561133d5780601f106113125761010080835404028352916020019161133d565b820191906000526020600020905b81548152906001019060200180831161132057829003601f168201915b5050505050905090565b600061140a6113546116e3565b8461140585604051806060016040528060258152602001613377602591396003600061137e6116e3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461211d9092919063ffffffff16565b611819565b6001905092915050565b60006114286114216116e3565b8484611a10565b6001905092915050565b60125481565b6114406116e3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611500576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60005b81518110156115845760016006600084848151811061151e57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080600101915050611503565b5050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6116176116e3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6116e081612252565b50565b600033905090565b60008060008060008060008060006117028a612395565b92509250925060008060006117208d868661171b6121dd565b61246c565b9250925092508282828888889b509b509b509b509b509b5050505050505091939550919395565b600061178983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061211d565b905092915050565b60008082840190508381101561180f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561189f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806133226024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611925576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061321f6022913960400191505060405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611a96576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806132fd6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b1c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806131ac6023913960400191505060405180910390fd5b60008111611b75576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806132d46029913960400191505060405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611c35576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f53656e646572206164647265737320697320696e20626c61636b206c6973740081525060200191505060405180910390fd5b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611cd8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806132696022913960400191505060405180910390fd5b611ce0611250565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611d4e5750611d1e611250565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611d875750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611ddf57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611e355750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611e8b5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611f5757601154811115611eeb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806132416028913960400191505060405180910390fd5b6000611ef68361103b565b90506013548282011115611f55576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806133466031913960400191505060405180910390fd5b505b6000611f623061103b565b90506011548110611f735760115490505b60006012548210159050808015611f975750600860009054906101000a900460ff16155b8015611fef57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15612003576012549150612002826124f5565b5b600060019050600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806120aa5750600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061210057507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b1561210a57600090505b6121158686866125df565b505050505050565b60008383111582906121ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561218f578082015181840152602081019050612174565b50505050905090810190601f1680156121bc5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008060006121ea6128b0565b91509150612201818361220890919063ffffffff16565b9250505090565b600061224a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612b69565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156122d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806131f96026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000806000806123c3600b546123b560648861220890919063ffffffff16565b612c2f90919063ffffffff16565b905060006123ef600d546123e160648961220890919063ffffffff16565b612c2f90919063ffffffff16565b9050600061241b600c5461240d60648a61220890919063ffffffff16565b612c2f90919063ffffffff16565b90506000612456826124488561243a888d61174790919063ffffffff16565b61174790919063ffffffff16565b61174790919063ffffffff16565b9050808484965096509650505050509193909250565b6000806000806124858589612c2f90919063ffffffff16565b9050600061249c8689612c2f90919063ffffffff16565b905060006124b38789612c2f90919063ffffffff16565b905060006124dc826124ce858761174790919063ffffffff16565b61174790919063ffffffff16565b9050838184965096509650505050509450945094915050565b6001600860006101000a81548160ff021916908315150217905550600061252660028361220890919063ffffffff16565b9050600061253d828461174790919063ffffffff16565b9050600047905061254d83612cb5565b6000612562824761174790919063ffffffff16565b905061256e8382612f63565b7f93efcf28fbf701a930e0ad258987a2e4f08eb3aa99f9c02029e7ba049f69405f848285886040518085815260200184815260200183815260200182815260200194505050505060405180910390a1505050506000600860006101000a81548160ff02191690831515021790555050565b6000806000806000806125f1876116eb565b9550955095509550955095506000612627600c5461261960648a61220890919063ffffffff16565b612c2f90919063ffffffff16565b905061267b87600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461174790919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506127328160016000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461179190919063ffffffff16565b60016000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506127e986600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461179190919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612835826130b4565b61283f8584613171565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a350505050505050505050565b6000806000600954905060006b033b2e3c9fd0803ce8000000905060005b600780549050811015612b18578260016000600784815481106128ed57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411806129d4575081600260006007848154811061296c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b156129f5576009546b033b2e3c9fd0803ce800000094509450505050612b65565b612a7e6001600060078481548110612a0957fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461174790919063ffffffff16565b9250612b096002600060078481548110612a9457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361174790919063ffffffff16565b915080806001019150506128ce565b50612b3a6b033b2e3c9fd0803ce800000060095461220890919063ffffffff16565b821015612b5c576009546b033b2e3c9fd0803ce8000000935093505050612b65565b81819350935050505b9091565b60008083118290612c15576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612bda578082015181840152602081019050612bbf565b50505050905090810190601f168015612c075780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581612c2157fe5b049050809150509392505050565b600080831415612c425760009050612caf565b6000828402905082848281612c5357fe5b0414612caa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061328b6021913960400191505060405180910390fd5b809150505b92915050565b6060600267ffffffffffffffff81118015612ccf57600080fd5b50604051908082528060200260200182016040528015612cfe5781602001602082028036833780820191505090505b5090503081600081518110612d0f57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612daf57600080fd5b505afa158015612dc3573d6000803e3d6000fd5b505050506040513d6020811015612dd957600080fd5b810190808051906020019092919050505081600181518110612df757fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612e5c307f000000000000000000000000000000000000000000000000000000000000000084611819565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015612f1e578082015181840152602081019050612f03565b505050509050019650505050505050600060405180830381600087803b158015612f4757600080fd5b505af1158015612f5b573d6000803e3d6000fd5b505050505050565b612f8e307f000000000000000000000000000000000000000000000000000000000000000084611819565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080612fd8611250565b426040518863ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200196505050505050506060604051808303818588803b15801561305d57600080fd5b505af1158015613071573d6000803e3d6000fd5b50505050506040513d606081101561308857600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050505050505050565b60006130be6121dd565b905060006130d58284612c2f90919063ffffffff16565b905061312981600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461179190919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6131868260095461174790919063ffffffff16565b6009819055506131a181600a5461179190919063ffffffff16565b600a81905550505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573735472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e526563697069656e74206164647265737320697320696e20626c61636b206c697374536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f756e7420283130302c3030302c3030302945524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220e1651a796d1226b6eb50c2adcc905dfef0a06497c52d3c7c20ee2d5149d9c17f64736f6c634300060c0033
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061021c5760003560e01c80636bc87c3a116101255780638ea5220f116100ad578063a9059cbb1161007c578063a9059cbb146108e8578063b3f22ce31461094c578063d338faf31461096a578063dd62ed3e14610a22578063f2fde38b14610a9a5761021c565b80638ea5220f146107af578063909ef733146107e357806395d89b4114610801578063a457c2d7146108845761021c565b806375f0a874116100f457806375f0a874146106ed57806378109e54146107215780637d1db4a51461073f57806384d6ff2f1461075d5780638da5cb5b1461077b5761021c565b80636bc87c3a1461064f57806370a082311461066d578063715018a6146106c557806374c7b41c146106cf5761021c565b80632d838119116101a857806344aa2fc61161017757806344aa2fc61461055d5780634549b0391461057b57806352143290146105c957806359927044146105fd57806363aef729146106315761021c565b80632d83811914610478578063313ce567146104ba57806339509351146104db5780633b124fe71461053f5761021c565b806318160ddd116101ef57806318160ddd1461035457806323b872dd146103725780632701a4f2146103f65780632a9b8072146104145780632d6abf87146104445761021c565b8063053ab1821461022157806306fdde031461024f578063095ea7b3146102d257806313114a9d14610336575b600080fd5b61024d6004803603602081101561023757600080fd5b8101908080359060200190929190505050610ade565b005b610257610bcc565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561029757808201518184015260208101905061027c565b50505050905090810190601f1680156102c45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61031e600480360360408110156102e857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c6e565b60405180821515815260200191505060405180910390f35b61033e610c8c565b6040518082815260200191505060405180910390f35b61035c610c96565b6040518082815260200191505060405180910390f35b6103de6004803603606081101561038857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610caa565b60405180821515815260200191505060405180910390f35b6103fe610d83565b6040518082815260200191505060405180910390f35b6104426004803603602081101561042a57600080fd5b81019080803515159060200190929190505050610d89565b005b61044c610da6565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104a46004803603602081101561048e57600080fd5b8101908080359060200190929190505050610dca565b6040518082815260200191505060405180910390f35b6104c2610e4e565b604051808260ff16815260200191505060405180910390f35b610527600480360360408110156104f157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e65565b60405180821515815260200191505060405180910390f35b610547610f18565b6040518082815260200191505060405180910390f35b610565610f1e565b6040518082815260200191505060405180910390f35b6105b36004803603604081101561059157600080fd5b8101908080359060200190929190803515159060200190929190505050610f24565b6040518082815260200191505060405180910390f35b6105d1610fe5565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610605611009565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61063961102f565b6040518082815260200191505060405180910390f35b610657611035565b6040518082815260200191505060405180910390f35b6106af6004803603602081101561068357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061103b565b6040518082815260200191505060405180910390f35b6106cd61108c565b005b6106d7611212565b6040518082815260200191505060405180910390f35b6106f5611218565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61072961123e565b6040518082815260200191505060405180910390f35b610747611244565b6040518082815260200191505060405180910390f35b61076561124a565b6040518082815260200191505060405180910390f35b610783611250565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6107b7611279565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6107eb61129f565b6040518082815260200191505060405180910390f35b6108096112a5565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561084957808201518184015260208101905061082e565b50505050905090810190601f1680156108765780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6108d06004803603604081101561089a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611347565b60405180821515815260200191505060405180910390f35b610934600480360360408110156108fe57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611414565b60405180821515815260200191505060405180910390f35b610954611432565b6040518082815260200191505060405180910390f35b610a206004803603602081101561098057600080fd5b810190808035906020019064010000000081111561099d57600080fd5b8201836020820111156109af57600080fd5b803590602001918460208302840111640100000000831117156109d157600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050611438565b005b610a8460048036036040811015610a3857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611588565b6040518082815260200191505060405180910390f35b610adc60048036036020811015610ab057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061160f565b005b6000610ae86116e3565b90506000610af5836116eb565b50505050509050610b4e81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461174790919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610ba68160095461174790919063ffffffff16565b600981905550610bc183600a5461179190919063ffffffff16565b600a81905550505050565b606060148054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610c645780601f10610c3957610100808354040283529160200191610c64565b820191906000526020600020905b815481529060010190602001808311610c4757829003601f168201915b5050505050905090565b6000610c82610c7b6116e3565b8484611819565b6001905092915050565b6000600a54905090565b60006b033b2e3c9fd0803ce8000000905090565b6000610cb7848484611a10565b610d7884610cc36116e3565b610d73856040518060600160405280602881526020016132ac60289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d296116e3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461211d9092919063ffffffff16565b611819565b600190509392505050565b60105481565b80600860006101000a81548160ff02191690831515021790555050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600954821115610e27576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806131cf602a913960400191505060405180910390fd5b6000610e316121dd565b9050610e46818461220890919063ffffffff16565b915050919050565b6000601660009054906101000a900460ff16905090565b6000610f0e610e726116e3565b84610f098560036000610e836116e3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461179190919063ffffffff16565b611819565b6001905092915050565b600b5481565b60185481565b60006b033b2e3c9fd0803ce8000000831115610fa8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f416d6f756e74206d757374206265206c657373207468616e20737570706c790081525060200191505060405180910390fd5b81610fc8576000610fb8846116eb565b5050505050905080915050610fdf565b6000610fd3846116eb565b50505050915050809150505b92915050565b7f000000000000000000000000a2689610d144e0a954a29dd0ec3f99e39d61d35b81565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f5481565b600d5481565b6000611085600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610dca565b9050919050565b6110946116e3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611154576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600e5481565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60135481565b60115481565b600c5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60175481565b606060158054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561133d5780601f106113125761010080835404028352916020019161133d565b820191906000526020600020905b81548152906001019060200180831161132057829003601f168201915b5050505050905090565b600061140a6113546116e3565b8461140585604051806060016040528060258152602001613377602591396003600061137e6116e3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461211d9092919063ffffffff16565b611819565b6001905092915050565b60006114286114216116e3565b8484611a10565b6001905092915050565b60125481565b6114406116e3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611500576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60005b81518110156115845760016006600084848151811061151e57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080600101915050611503565b5050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6116176116e3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6116e081612252565b50565b600033905090565b60008060008060008060008060006117028a612395565b92509250925060008060006117208d868661171b6121dd565b61246c565b9250925092508282828888889b509b509b509b509b509b5050505050505091939550919395565b600061178983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061211d565b905092915050565b60008082840190508381101561180f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561189f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806133226024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611925576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061321f6022913960400191505060405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611a96576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806132fd6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b1c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806131ac6023913960400191505060405180910390fd5b60008111611b75576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806132d46029913960400191505060405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611c35576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f53656e646572206164647265737320697320696e20626c61636b206c6973740081525060200191505060405180910390fd5b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611cd8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806132696022913960400191505060405180910390fd5b611ce0611250565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611d4e5750611d1e611250565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611d875750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611ddf57507f000000000000000000000000a2689610d144e0a954a29dd0ec3f99e39d61d35b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611e355750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611e8b5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611f5757601154811115611eeb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806132416028913960400191505060405180910390fd5b6000611ef68361103b565b90506013548282011115611f55576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806133466031913960400191505060405180910390fd5b505b6000611f623061103b565b90506011548110611f735760115490505b60006012548210159050808015611f975750600860009054906101000a900460ff16155b8015611fef57507f000000000000000000000000a2689610d144e0a954a29dd0ec3f99e39d61d35b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15612003576012549150612002826124f5565b5b600060019050600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806120aa5750600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061210057507f000000000000000000000000a2689610d144e0a954a29dd0ec3f99e39d61d35b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b1561210a57600090505b6121158686866125df565b505050505050565b60008383111582906121ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561218f578082015181840152602081019050612174565b50505050905090810190601f1680156121bc5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008060006121ea6128b0565b91509150612201818361220890919063ffffffff16565b9250505090565b600061224a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612b69565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156122d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806131f96026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000806000806123c3600b546123b560648861220890919063ffffffff16565b612c2f90919063ffffffff16565b905060006123ef600d546123e160648961220890919063ffffffff16565b612c2f90919063ffffffff16565b9050600061241b600c5461240d60648a61220890919063ffffffff16565b612c2f90919063ffffffff16565b90506000612456826124488561243a888d61174790919063ffffffff16565b61174790919063ffffffff16565b61174790919063ffffffff16565b9050808484965096509650505050509193909250565b6000806000806124858589612c2f90919063ffffffff16565b9050600061249c8689612c2f90919063ffffffff16565b905060006124b38789612c2f90919063ffffffff16565b905060006124dc826124ce858761174790919063ffffffff16565b61174790919063ffffffff16565b9050838184965096509650505050509450945094915050565b6001600860006101000a81548160ff021916908315150217905550600061252660028361220890919063ffffffff16565b9050600061253d828461174790919063ffffffff16565b9050600047905061254d83612cb5565b6000612562824761174790919063ffffffff16565b905061256e8382612f63565b7f93efcf28fbf701a930e0ad258987a2e4f08eb3aa99f9c02029e7ba049f69405f848285886040518085815260200184815260200183815260200182815260200194505050505060405180910390a1505050506000600860006101000a81548160ff02191690831515021790555050565b6000806000806000806125f1876116eb565b9550955095509550955095506000612627600c5461261960648a61220890919063ffffffff16565b612c2f90919063ffffffff16565b905061267b87600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461174790919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506127328160016000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461179190919063ffffffff16565b60016000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506127e986600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461179190919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612835826130b4565b61283f8584613171565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a350505050505050505050565b6000806000600954905060006b033b2e3c9fd0803ce8000000905060005b600780549050811015612b18578260016000600784815481106128ed57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411806129d4575081600260006007848154811061296c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b156129f5576009546b033b2e3c9fd0803ce800000094509450505050612b65565b612a7e6001600060078481548110612a0957fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461174790919063ffffffff16565b9250612b096002600060078481548110612a9457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361174790919063ffffffff16565b915080806001019150506128ce565b50612b3a6b033b2e3c9fd0803ce800000060095461220890919063ffffffff16565b821015612b5c576009546b033b2e3c9fd0803ce8000000935093505050612b65565b81819350935050505b9091565b60008083118290612c15576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612bda578082015181840152602081019050612bbf565b50505050905090810190601f168015612c075780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581612c2157fe5b049050809150509392505050565b600080831415612c425760009050612caf565b6000828402905082848281612c5357fe5b0414612caa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061328b6021913960400191505060405180910390fd5b809150505b92915050565b6060600267ffffffffffffffff81118015612ccf57600080fd5b50604051908082528060200260200182016040528015612cfe5781602001602082028036833780820191505090505b5090503081600081518110612d0f57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612daf57600080fd5b505afa158015612dc3573d6000803e3d6000fd5b505050506040513d6020811015612dd957600080fd5b810190808051906020019092919050505081600181518110612df757fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612e5c307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611819565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015612f1e578082015181840152602081019050612f03565b505050509050019650505050505050600060405180830381600087803b158015612f4757600080fd5b505af1158015612f5b573d6000803e3d6000fd5b505050505050565b612f8e307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611819565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080612fd8611250565b426040518863ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200196505050505050506060604051808303818588803b15801561305d57600080fd5b505af1158015613071573d6000803e3d6000fd5b50505050506040513d606081101561308857600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050505050505050565b60006130be6121dd565b905060006130d58284612c2f90919063ffffffff16565b905061312981600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461179190919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6131868260095461174790919063ffffffff16565b6009819055506131a181600a5461179190919063ffffffff16565b600a81905550505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573735472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e526563697069656e74206164647265737320697320696e20626c61636b206c697374536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f756e7420283130302c3030302c3030302945524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220e1651a796d1226b6eb50c2adcc905dfef0a06497c52d3c7c20ee2d5149d9c17f64736f6c634300060c0033
Deployed Bytecode Sourcemap
24321:17525:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30787:318;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;27981:100;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29085:221;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;30676:95;;;:::i;:::-;;;;;;;;;;;;;;;;;;;28333:103;;;:::i;:::-;;;;;;;;;;;;;;;;;;;29322:506;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;25328:52;;;:::i;:::-;;;;;;;;;;;;;;;;;;;32477:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;25606:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;31668:366;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;28217:100;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;29844:344;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;25100:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;25896:44;;;:::i;:::-;;;;;;;;;;;;;;;;;;;31121:531;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;25662:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;26127:70;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;25271:46;;;:::i;:::-;;;;;;;;;;;;;;;;;;;25177:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;28452:146;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12714:152;;;:::i;:::-;;25220:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;25961:75;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;25533:53;;;:::i;:::-;;;;;;;;;;;;;;;;;;;25391:49;;;:::i;:::-;;;;;;;;;;;;;;;;;;;25137:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11996:87;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;26047:69;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;25852:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;28097:104;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30204:456;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;28614:227;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;25455:67;;;:::i;:::-;;;;;;;;;;;;;;;;;;;32600:223;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;28857:212;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13045:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;30787:318;30843:14;30860:12;:10;:12::i;:::-;30843:29;;30888:15;30917:19;30928:7;30917:10;:19::i;:::-;30887:49;;;;;;;30969:28;30989:7;30969;:15;30977:6;30969:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;30951:7;:15;30959:6;30951:15;;;;;;;;;;;;;;;:46;;;;31022:20;31034:7;31022;;:11;;:20;;;;:::i;:::-;31012:7;:30;;;;31070:23;31085:7;31070:10;;:14;;:23;;;;:::i;:::-;31057:10;:36;;;;30787:318;;;:::o;27981:100::-;28027:13;28064:5;28057:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27981:100;:::o;29085:221::-;29199:4;29229:39;29238:12;:10;:12::i;:::-;29252:7;29261:6;29229:8;:39::i;:::-;29290:4;29283:11;;29085:221;;;;:::o;30676:95::-;30718:7;30749:10;;30742:17;;30676:95;:::o;28333:103::-;28386:7;24972:19;28410:14;;28333:103;:::o;29322:506::-;29470:4;29491:36;29501:6;29509:9;29520:6;29491:9;:36::i;:::-;29542:248;29569:6;29594:12;:10;:12::i;:::-;29625:150;29685:6;29625:150;;;;;;;;;;;;;;;;;:11;:19;29637:6;29625:19;;;;;;;;;;;;;;;:33;29645:12;:10;:12::i;:::-;29625:33;;;;;;;;;;;;;;;;:37;;:150;;;;;:::i;:::-;29542:8;:248::i;:::-;29812:4;29805:11;;29322:506;;;;;:::o;25328:52::-;;;;:::o;32477:111::-;32562:14;32543:16;;:33;;;;;;;;;;;;;;;;;;32477:111;:::o;25606:45::-;;;:::o;31668:366::-;31774:7;31844;;31833;:18;;31807:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31944:19;31966:10;:8;:10::i;:::-;31944:32;;31998:24;32010:11;31998:7;:11;;:24;;;;:::i;:::-;31991:31;;;31668:366;;;:::o;28217:100::-;28267:5;28296:9;;;;;;;;;;;28289:16;;28217:100;:::o;29844:344::-;29971:4;30001:149;30028:12;:10;:12::i;:::-;30059:7;30085:50;30124:10;30085:11;:25;30097:12;:10;:12::i;:::-;30085:25;;;;;;;;;;;;;;;:34;30111:7;30085:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;30001:8;:149::i;:::-;30172:4;30165:11;;29844:344;;;;:::o;25100:26::-;;;;:::o;25896:44::-;;;;:::o;31121:531::-;31251:7;24972:19;31292:7;:18;;31284:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31366:17;31361:280;;31405:15;31434:19;31445:7;31434:10;:19::i;:::-;31404:49;;;;;;;31479:7;31472:14;;;;;31361:280;31530:23;31565:19;31576:7;31565:10;:19::i;:::-;31527:57;;;;;;;31610:15;31603:22;;;31121:531;;;;;:::o;25662:34::-;;;:::o;26127:70::-;;;;;;;;;;;;;:::o;25271:46::-;;;;:::o;25177:32::-;;;;:::o;28452:146::-;28518:7;28549:37;28569:7;:16;28577:7;28569:16;;;;;;;;;;;;;;;;28549:19;:37::i;:::-;28542:44;;28452:146;;;:::o;12714:152::-;12250:12;:10;:12::i;:::-;12240:22;;:6;;;;;;;;;;:22;;;12232:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12817:1:::1;12780:40;;12801:6;::::0;::::1;;;;;;;;12780:40;;;;;;;;;;;;12852:1;12835:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;12714:152::o:0;25220:40::-;;;;:::o;25961:75::-;;;;;;;;;;;;;:::o;25533:53::-;;;;:::o;25391:49::-;;;;:::o;25137:29::-;;;;:::o;11996:87::-;12034:7;12065:6;;;;;;;;;;;12058:13;;11996:87;:::o;26047:69::-;;;;;;;;;;;;;:::o;25852:33::-;;;;:::o;28097:104::-;28145:13;28182:7;28175:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28097:104;:::o;30204:456::-;30336:4;30366:256;30393:12;:10;:12::i;:::-;30424:7;30450:157;30511:15;30450:157;;;;;;;;;;;;;;;;;:11;:25;30462:12;:10;:12::i;:::-;30450:25;;;;;;;;;;;;;;;:34;30476:7;30450:34;;;;;;;;;;;;;;;;:38;;:157;;;;;:::i;:::-;30366:8;:256::i;:::-;30644:4;30637:11;;30204:456;;;;:::o;28614:227::-;28731:4;28761:42;28771:12;:10;:12::i;:::-;28785:9;28796:6;28761:9;:42::i;:::-;28825:4;28818:11;;28614:227;;;;:::o;25455:67::-;;;;:::o;32600:223::-;12250:12;:10;:12::i;:::-;12240:22;;:6;;;;;;;;;;:22;;;12232:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32695:9:::1;32690:122;32714:14;:21;32710:1;:25;32690:122;;;32792:4;32761:9;:28;32771:14;32786:1;32771:17;;;;;;;;;;;;;;32761:28;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;32737:3;;;;;;;32690:122;;;;32600:223:::0;:::o;28857:212::-;28990:7;29030:11;:18;29042:5;29030:18;;;;;;;;;;;;;;;:27;29049:7;29030:27;;;;;;;;;;;;;;;;29023:34;;28857:212;;;;:::o;13045:117::-;12250:12;:10;:12::i;:::-;12240:22;;:6;;;;;;;;;;:22;;;12232:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13122:28:::1;13141:8;13122:18;:28::i;:::-;13045:117:::0;:::o;4409:106::-;4454:15;4493:10;4486:17;;4409:106;:::o;36449:751::-;36565:7;36591;36617;36643;36669;36695;36743:23;36768:12;36782:18;36821:20;36833:7;36821:11;:20::i;:::-;36742:99;;;;;;36857:15;36874:23;36899:12;36932:50;36944:7;36953:4;36959:10;36971;:8;:10::i;:::-;36932:11;:50::i;:::-;36856:126;;;;;;37023:7;37049:15;37083:4;37106:15;37140:4;37163:10;36997:191;;;;;;;;;;;;;;;;;;36449:751;;;;;;;:::o;6231:144::-;6289:7;6320:43;6324:1;6327;6320:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;6313:50;;6231:144;;;;:::o;5711:201::-;5769:7;5793:9;5809:1;5805;:5;5793:17;;5838:1;5833;:6;;5825:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5899:1;5892:8;;;5711:201;;;;:::o;32050:411::-;32214:1;32197:19;;:5;:19;;;;32189:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32299:1;32280:21;;:7;:21;;;;32272:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32391:6;32361:11;:18;32373:5;32361:18;;;;;;;;;;;;;;;:27;32380:7;32361:27;;;;;;;;;;;;;;;:36;;;;32433:7;32417:32;;32426:5;32417:32;;;32442:6;32417:32;;;;;;;;;;;;;;;;;;32050:411;;;:::o;32835:2570::-;33004:1;32986:20;;:6;:20;;;;32978:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33092:1;33071:23;;:9;:23;;;;33063:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33166:1;33157:6;:10;33149:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33238:9;:17;33248:6;33238:17;;;;;;;;;;;;;;;;;;;;;;;;;33237:18;33228:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33316:9;:20;33326:9;33316:20;;;;;;;;;;;;;;;;;;;;;;;;;33315:21;33306:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33424:7;:5;:7::i;:::-;33414:17;;:6;:17;;;;:58;;;;;33465:7;:5;:7::i;:::-;33452:20;;:9;:20;;;;33414:58;:102;;;;;33514:1;33493:23;;:9;:23;;;;33414:102;:145;;;;;33550:9;33537:22;;:9;:22;;;;33414:145;:204;;;;;33581:26;:37;33608:9;33581:37;;;;;;;;;;;;;;;;;;;;;;;;;33580:38;33414:204;:261;;;;;33641:26;:34;33668:6;33641:34;;;;;;;;;;;;;;;;;;;;;;;;;33640:35;33414:261;33392:740;;;33752:12;;33742:6;:22;;33712:136;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33867:32;33902:20;33912:9;33902;:20::i;:::-;33867:55;;34008:15;;33998:6;33971:24;:33;:52;;33941:175;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33392:740;;34450:28;34481:24;34499:4;34481:9;:24::i;:::-;34450:55;;34554:12;;34530:20;:36;34526:112;;34610:12;;34587:35;;34526:112;34658:24;34726:30;;34702:20;:54;;34658:98;;34775:19;:40;;;;;34799:16;;;;;;;;;;;34798:17;34775:40;:63;;;;;34829:9;34819:19;;:6;:19;;;;34775:63;34771:212;;;34882:30;;34859:53;;34931:36;34946:20;34931:14;:36::i;:::-;34771:212;35003:12;35018:4;35003:19;;35153:18;:26;35172:6;35153:26;;;;;;;;;;;;;;;;;;;;;;;;;:76;;;;35200:18;:29;35219:9;35200:29;;;;;;;;;;;;;;;;;;;;;;;;;35153:76;:116;;;;35260:9;35250:19;;:6;:19;;;35153:116;35131:204;;;35314:5;35304:15;;35131:204;35349:44;35367:6;35375:9;35386:6;35349:17;:44::i;:::-;32835:2570;;;;;;:::o;6714:262::-;6850:7;6887:1;6882;:6;;6890:12;6874:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6918:9;6934:1;6930;:5;6918:17;;6963:1;6956:8;;;6714:262;;;;;:::o;38453:176::-;38495:7;38520:15;38537;38556:19;:17;:19::i;:::-;38519:56;;;;38597:20;38609:7;38597;:11;;:20;;;;:::i;:::-;38590:27;;;;38453:176;:::o;8310:140::-;8368:7;8399:39;8403:1;8406;8399:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;8392:46;;8310:140;;;;:::o;13288:294::-;13404:1;13384:22;;:8;:22;;;;13358:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13529:8;13500:38;;13521:6;;;;;;;;;;13500:38;;;;;;;;;;;;13562:8;13553:6;;:17;;;;;;;;;;;;;;;;;;13288:294;:::o;37222:569::-;37339:7;37365;37391;37438:12;37453:31;37476:7;;37453:18;37465:5;37453:7;:11;;:18;;;;:::i;:::-;:22;;:31;;;;:::i;:::-;37438:46;;37499:18;37537:37;37560:13;;37537:18;37549:5;37537:7;:11;;:18;;;;:::i;:::-;:22;;:37;;;;:::i;:::-;37499:75;;37589:12;37604:34;37627:10;;37604:18;37616:5;37604:7;:11;;:18;;;;:::i;:::-;:22;;:34;;;;:::i;:::-;37589:49;;37653:23;37679:43;37717:4;37679:33;37701:10;37679:17;37691:4;37679:7;:11;;:17;;;;:::i;:::-;:21;;:33;;;;:::i;:::-;:37;;:43;;;;:::i;:::-;37653:69;;37745:15;37762:4;37768:10;37737:42;;;;;;;;;;37222:569;;;;;:::o;37807:630::-;38042:7;38068;38094;38141:15;38159:24;38171:11;38159:7;:11;;:24;;;;:::i;:::-;38141:42;;38198:12;38213:21;38222:11;38213:4;:8;;:21;;;;:::i;:::-;38198:36;;38249:18;38270:27;38285:11;38270:10;:14;;:27;;;;:::i;:::-;38249:48;;38312:23;38338:33;38360:10;38338:17;38350:4;38338:7;:11;;:17;;;;:::i;:::-;:21;;:33;;;;:::i;:::-;38312:59;;38394:7;38403:15;38420:4;38386:39;;;;;;;;;;37807:630;;;;;;;;:::o;39586:1013::-;27890:4;27871:16;;:23;;;;;;;;;;;;;;;;;;39730:12:::1;39745:27;39770:1;39745:20;:24;;:27;;;;:::i;:::-;39730:42;;39787:17;39807:30;39832:4;39807:20;:24;;:30;;;;:::i;:::-;39787:50;;40139:22;40164:21;40139:46;;40242:22;40259:4;40242:16;:22::i;:::-;40337:18;40358:41;40384:14;40358:21;:25;;:41;;;;:::i;:::-;40337:62;;40461:35;40474:9;40485:10;40461:12;:35::i;:::-;40522:65;40537:4;40543:10;40555:9;40566:20;40522:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27909:1;;;;27944:5:::0;27925:16;;:24;;;;;;;;;;;;;;;;;;39586:1013;:::o;35421:837::-;35592:15;35626:23;35668:12;35699:23;35741:12;35772:18;35808:19;35819:7;35808:10;:19::i;:::-;35573:254;;;;;;;;;;;;35842:12;35857:34;35880:10;;35857:18;35869:5;35857:7;:11;;:18;;;;:::i;:::-;:22;;:34;;;;:::i;:::-;35842:49;;35924:28;35944:7;35924;:15;35932:6;35924:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;35906:7;:15;35914:6;35906:15;;;;;;;;;;;;;;;:46;;;;35994:34;36023:4;35994:7;:24;36002:15;;;;;;;;;;;35994:24;;;;;;;;;;;;;;;;:28;;:34;;;;:::i;:::-;35967:7;:24;35975:15;;;;;;;;;;;35967:24;;;;;;;;;;;;;;;:61;;;;36064:39;36087:15;36064:7;:18;36072:9;36064:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;36043:7;:18;36051:9;36043:18;;;;;;;;;;;;;;;:60;;;;36118:26;36133:10;36118:14;:26::i;:::-;36159:23;36171:4;36177;36159:11;:23::i;:::-;36219:9;36202:44;;36211:6;36202:44;;;36230:15;36202:44;;;;;;;;;;;;;;;;;;35421:837;;;;;;;;;;:::o;38645:657::-;38696:7;38705;38729:15;38747:7;;38729:25;;38769:15;24972:19;38769:25;;38814:9;38809:366;38833:9;:16;;;;38829:1;:20;38809:366;;;38925:7;38901;:21;38909:9;38919:1;38909:12;;;;;;;;;;;;;;;;;;;;;;;;;38901:21;;;;;;;;;;;;;;;;:31;:87;;;;38981:7;38957;:21;38965:9;38975:1;38965:12;;;;;;;;;;;;;;;;;;;;;;;;;38957:21;;;;;;;;;;;;;;;;:31;38901:87;38875:158;;;39016:7;;24972:19;39008:25;;;;;;;;;38875:158;39062:34;39074:7;:21;39082:9;39092:1;39082:12;;;;;;;;;;;;;;;;;;;;;;;;;39074:21;;;;;;;;;;;;;;;;39062:7;:11;;:34;;;;:::i;:::-;39052:44;;39125:34;39137:7;:21;39145:9;39155:1;39145:12;;;;;;;;;;;;;;;;;;;;;;;;;39137:21;;;;;;;;;;;;;;;;39125:7;:11;;:34;;;;:::i;:::-;39115:44;;38851:3;;;;;;;38809:366;;;;39203:20;24972:19;39203:7;;:11;;:20;;;;:::i;:::-;39193:7;:30;39189:61;;;39233:7;;24972:19;39225:25;;;;;;;;39189:61;39273:7;39282;39265:25;;;;;;38645:657;;;:::o;8990:423::-;9126:7;9233:1;9229;:5;9236:12;9221:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9264:9;9280:1;9276;:5;;;;;;9264:17;;9400:1;9393:8;;;8990:423;;;;;:::o;7271:519::-;7329:7;7595:1;7590;:6;7586:55;;;7624:1;7617:8;;;;7586:55;7661:9;7677:1;7673;:5;7661:17;;7710:1;7705;7701;:5;;;;;;:10;7693:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7777:1;7770:8;;;7271:519;;;;;:::o;40615:641::-;40749:21;40787:1;40773:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40749:40;;40822:4;40804;40809:1;40804:7;;;;;;;;;;;;;:23;;;;;;;;;;;40852:11;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40842:4;40847:1;40842:7;;;;;;;;;;;;;:28;;;;;;;;;;;40891:58;40908:4;40923:11;40937;40891:8;:58::i;:::-;41000:11;:62;;;41081:11;41111:1;41159:4;41190;41214:15;41000:244;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40615:641;;:::o;41272:557::-;41428:58;41445:4;41460:11;41474;41428:8;:58::i;:::-;41541:11;:27;;;41576:9;41613:4;41637:11;41667:1;41714;41761:7;:5;:7::i;:::-;41787:15;41541:276;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41272:557;;:::o;39318:252::-;39385:19;39407:10;:8;:10::i;:::-;39385:32;;39432:18;39453:27;39468:11;39453:10;:14;;:27;;;;:::i;:::-;39432:48;;39520:38;39547:10;39520:7;:22;39536:4;39520:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;39495:7;:22;39511:4;39495:22;;;;;;;;;;;;;;;:63;;;;39318:252;;;:::o;36274:159::-;36356:17;36368:4;36356:7;;:11;;:17;;;;:::i;:::-;36346:7;:27;;;;36401:20;36416:4;36401:10;;:14;;:20;;;;:::i;:::-;36388:10;:33;;;;36274:159;;:::o
Swarm Source
ipfs://e1651a796d1226b6eb50c2adcc905dfef0a06497c52d3c7c20ee2d5149d9c17f
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.