Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 70 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer | 18870414 | 387 days ago | IN | 0 ETH | 0.00304574 | ||||
Approve | 12712473 | 1300 days ago | IN | 0 ETH | 0.00199725 | ||||
Approve | 12711920 | 1300 days ago | IN | 0 ETH | 0.00035828 | ||||
Approve | 12711912 | 1300 days ago | IN | 0 ETH | 0.0004653 | ||||
Approve | 12711912 | 1300 days ago | IN | 0 ETH | 0.0004653 | ||||
Approve | 12711910 | 1300 days ago | IN | 0 ETH | 0.0004653 | ||||
Approve | 12711909 | 1300 days ago | IN | 0 ETH | 0.0004653 | ||||
Approve | 12711909 | 1300 days ago | IN | 0 ETH | 0.0004653 | ||||
Approve | 12711909 | 1300 days ago | IN | 0 ETH | 0.0004653 | ||||
Approve | 12711909 | 1300 days ago | IN | 0 ETH | 0.0004653 | ||||
Approve | 12711906 | 1300 days ago | IN | 0 ETH | 0.00051183 | ||||
Approve | 12711906 | 1300 days ago | IN | 0 ETH | 0.0013959 | ||||
Approve | 12711905 | 1300 days ago | IN | 0 ETH | 0.00055836 | ||||
Approve | 12711904 | 1300 days ago | IN | 0 ETH | 0.00060489 | ||||
Approve | 12711903 | 1300 days ago | IN | 0 ETH | 0.00055836 | ||||
Approve | 12711903 | 1300 days ago | IN | 0 ETH | 0.00055836 | ||||
Approve | 12711903 | 1300 days ago | IN | 0 ETH | 0.00055836 | ||||
Approve | 12711903 | 1300 days ago | IN | 0 ETH | 0.00055836 | ||||
Approve | 12711903 | 1300 days ago | IN | 0 ETH | 0.00055836 | ||||
Approve | 12711903 | 1300 days ago | IN | 0 ETH | 0.00060489 | ||||
Approve | 12711903 | 1300 days ago | IN | 0 ETH | 0.00060489 | ||||
Approve | 12711903 | 1300 days ago | IN | 0 ETH | 0.00069795 | ||||
Approve | 12711901 | 1300 days ago | IN | 0 ETH | 0.00055836 | ||||
Approve | 12711900 | 1300 days ago | IN | 0 ETH | 0.00046064 | ||||
Approve | 12711900 | 1300 days ago | IN | 0 ETH | 0.0004653 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
BLINU
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-06-26 */ /** *Submitted for verification at Etherscan.io on 2021-06-03 */ /** *Submitted for verification at Etherscan.io on 2021-06-01 */ /** Telegram: https://t.me/BlackLabInuETH **/ //SPDX-License-Identifier: GPL-3.0-or-later pragma solidity ^0.6.12; abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @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); } 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) { 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; } } library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain`call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } contract Ownable is Context { address private _owner; address private _previousOwner; uint256 private _lockTime; 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 virtual 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 virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint 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 (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); 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 (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } // Contract implementation contract BLINU is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; mapping (address => uint256) private _rOwned; mapping (address => uint256) private _tOwned; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _isExcludedFromFee; mapping (address => bool) private _isExcluded; // excluded from reward address[] private _excluded; mapping (address => bool) private _isBlackListedBot; address[] private _blackListedBots; mapping (address => bool) private _isExludedFromTx; mapping (address => bool) private presaleAddresses; uint256 private constant MAX = ~uint256(0); uint256 private _tTotal = 100_000_000_000_000 * 10**9; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; string private _name = 'BLINU'; string private _symbol = 'BLINU'; uint8 private _decimals = 9; uint256 private _taxFee = 2; // 1% reflection fee for every holder and 1% burn for deflation because we love an asset that deflates uint256 private _marketingFee = 0; // 0% marketing uint256 private _liquidityFee = 0; // 0% into liquidity uint256 private _previousTaxFee = _taxFee; uint256 private _previousMarketingFee = _marketingFee; uint256 private _previousLiquidityFee = _liquidityFee; address payable private _marketingWalletAddress = payable(0x13869e8C357a2F257c91d832a70E90B43977b36c); IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; bool inSwapAndLiquify = false; bool public swapAndLiquifyEnabled = true; // Max fee is 1% of the total supply. uint256 private _maxTxAmount = _tTotal / 100; // We will set a minimum amount of tokens to be swapped uint256 private _numTokensSellToAddToLiquidity = 1000000000 * 10**9; event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap); event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor () public { _rOwned[_msgSender()] = _rTotal; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // UniswapV2 for Ethereum network // Create a uniswap pair for this new token uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); // set the rest of the contract variables uniswapV2Router = _uniswapV2Router; // Exclude owner and this contract from fee _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[_marketingWalletAddress] = true; _isExludedFromTx[owner()] = true; // BLACKLIST _isBlackListedBot[address(0xE031b36b53E53a292a20c5F08fd1658CDdf74fce)] = true; _blackListedBots.push(address(0xE031b36b53E53a292a20c5F08fd1658CDdf74fce)); _isBlackListedBot[address(0xe516bDeE55b0b4e9bAcaF6285130De15589B1345)] = true; _blackListedBots.push(address(0xe516bDeE55b0b4e9bAcaF6285130De15589B1345)); _isBlackListedBot[address(0xa1ceC245c456dD1bd9F2815a6955fEf44Eb4191b)] = true; _blackListedBots.push(address(0xa1ceC245c456dD1bd9F2815a6955fEf44Eb4191b)); _isBlackListedBot[address(0xd7d3EE77D35D0a56F91542D4905b1a2b1CD7cF95)] = true; _blackListedBots.push(address(0xd7d3EE77D35D0a56F91542D4905b1a2b1CD7cF95)); _isBlackListedBot[address(0xFe76f05dc59fEC04184fA0245AD0C3CF9a57b964)] = true; _blackListedBots.push(address(0xFe76f05dc59fEC04184fA0245AD0C3CF9a57b964)); _isBlackListedBot[address(0xDC81a3450817A58D00f45C86d0368290088db848)] = true; _blackListedBots.push(address(0xDC81a3450817A58D00f45C86d0368290088db848)); _isBlackListedBot[address(0x45fD07C63e5c316540F14b2002B085aEE78E3881)] = true; _blackListedBots.push(address(0x45fD07C63e5c316540F14b2002B085aEE78E3881)); _isBlackListedBot[address(0x27F9Adb26D532a41D97e00206114e429ad58c679)] = true; _blackListedBots.push(address(0x27F9Adb26D532a41D97e00206114e429ad58c679)); emit Transfer(address(0), _msgSender(), _tTotal); } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { if (_isExcluded[account]) return _tOwned[account]; return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function isExcludedFromReward(address account) public view returns (bool) { return _isExcluded[account]; } function setExcludeFromFee(address account, bool excluded) public onlyOwner() { _isExcludedFromFee[account] = excluded; } function totalFees() public view returns (uint256) { return _tFeeTotal; } function deliver(uint256 tAmount) public { address sender = _msgSender(); require(!_isExcluded[sender], "Excluded addresses cannot call this function"); (uint256 rAmount,,,,,) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rTotal = _rTotal.sub(rAmount); _tFeeTotal = _tFeeTotal.add(tAmount); } function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256) { require(tAmount <= _tTotal, "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 excludeFromReward(address account) public onlyOwner() { require(account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We can not exclude Uniswap router.'); require(!_isExcluded[account], "Account is already excluded"); if(_rOwned[account] > 0) { _tOwned[account] = tokenFromReflection(_rOwned[account]); } _isExcluded[account] = true; _excluded.push(account); } function includeInReward(address account) public onlyOwner() { require(_isExcluded[account], "Account is already excluded"); for (uint256 i = 0; i < _excluded.length; i++) { if (_excluded[i] == account) { _excluded[i] = _excluded[_excluded.length - 1]; _tOwned[account] = 0; _isExcluded[account] = false; _excluded.pop(); break; } } } function addBotToBlackList(address account) external onlyOwner() { require(account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We can not blacklist Uniswap router.'); require(account != address(this)); require(!_isBlackListedBot[account], "Account is already blacklisted"); _isBlackListedBot[account] = true; _blackListedBots.push(account); } function removeBotFromBlackList(address account) external onlyOwner() { require(_isBlackListedBot[account], "Account is not blacklisted"); for (uint256 i = 0; i < _blackListedBots.length; i++) { if (_blackListedBots[i] == account) { _blackListedBots[i] = _blackListedBots[_blackListedBots.length - 1]; _isBlackListedBot[account] = false; _blackListedBots.pop(); break; } } } function removeAllFee() private { if(_taxFee == 0 && _marketingFee == 0 && _liquidityFee == 0) return; _previousTaxFee = _taxFee; _previousMarketingFee = _marketingFee; _previousLiquidityFee = _liquidityFee; _taxFee = 0; _marketingFee = 0; _liquidityFee = 0; } function restoreAllFee() private { _taxFee = _previousTaxFee; _marketingFee = _previousMarketingFee; _liquidityFee = _previousLiquidityFee; } function isExcludedFromFee(address account) public view returns(bool) { return _isExcludedFromFee[account]; } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } 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(!_isBlackListedBot[sender], "You have no power here!"); require(!_isBlackListedBot[recipient], "You have no power here!"); require(!_isBlackListedBot[tx.origin], "You have no power here!"); if(!_isExludedFromTx[sender] && !_isExludedFromTx[recipient]) { require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount."); } // 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 (!inSwapAndLiquify && swapAndLiquifyEnabled && overMinTokenBalance && sender != uniswapV2Pair && !presaleAddresses[sender] && !presaleAddresses[recipient] ) { contractTokenBalance = _numTokensSellToAddToLiquidity; //add liquidity swapAndLiquify(contractTokenBalance); } //indicates if fee should be deducted from transfer bool takeFee = true; //if any account belongs to _isExcludedFromFee account then remove the fee if(_isExcludedFromFee[sender] || _isExcludedFromFee[recipient]){ takeFee = false; } //transfer amount, it will take tax and charity fee _tokenTransfer(sender, recipient, amount, takeFee); } function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap { uint256 toMarketing = contractTokenBalance.mul(_marketingFee).div(_marketingFee.add(_liquidityFee)); uint256 toLiquify = contractTokenBalance.sub(toMarketing); // split the contract balance into halves uint256 half = toLiquify.div(2); uint256 otherHalf = toLiquify.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 uint256 toSwapForEth = half.add(toMarketing); swapTokensForEth(toSwapForEth); // <- this breaks the ETH -> HATE swap when swap+liquify is triggered // how much ETH did we just swap into? uint256 fromSwap = address(this).balance.sub(initialBalance); uint256 newBalance = fromSwap.mul(half).div(toSwapForEth); // add liquidity to uniswap addLiquidity(otherHalf, newBalance); emit SwapAndLiquify(half, newBalance, otherHalf); sendETHToMarketing(fromSwap.sub(newBalance)); } 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] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.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(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable owner(), block.timestamp ); } function sendETHToMarketing(uint256 amount) private { _marketingWalletAddress.transfer(amount); } // We are exposing these functions to be able to manual swap and send // in case the token is highly valued and 5M becomes too much function manualSwap() external onlyOwner() { uint256 contractBalance = balanceOf(address(this)); swapTokensForEth(contractBalance); } function manualSend() public onlyOwner() { uint256 contractETHBalance = address(this).balance; sendETHToMarketing(contractETHBalance); } function setSwapAndLiquifyEnabled(bool _swapAndLiquifyEnabled) external onlyOwner(){ swapAndLiquifyEnabled = _swapAndLiquifyEnabled; } function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee) private { if(!takeFee) removeAllFee(); if (_isExcluded[sender] && !_isExcluded[recipient]) { _transferFromExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && _isExcluded[recipient]) { _transferToExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && !_isExcluded[recipient]) { _transferStandard(sender, recipient, amount); } else if (_isExcluded[sender] && _isExcluded[recipient]) { _transferBothExcluded(sender, recipient, amount); } else { _transferStandard(sender, recipient, amount); } if(!takeFee) restoreAllFee(); } function _transferStandard(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tMarketingLiquidity) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeMarketingLiquidity(tMarketingLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferToExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tMarketingLiquidity) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeMarketingLiquidity(tMarketingLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tMarketingLiquidity) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeMarketingLiquidity(tMarketingLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tMarketingLiquidity) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeMarketingLiquidity(tMarketingLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _takeMarketingLiquidity(uint256 tMarketingLiquidity) private { uint256 currentRate = _getRate(); uint256 rMarketingLiquidity = tMarketingLiquidity.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rMarketingLiquidity); if(_isExcluded[address(this)]) _tOwned[address(this)] = _tOwned[address(this)].add(tMarketingLiquidity); } function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } //to recieve ETH from uniswapV2Router when swapping receive() external payable {} function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) { (uint256 tTransferAmount, uint256 tFee, uint256 tMarketingLiquidityFee) = _getTValues(tAmount, _taxFee, _marketingFee.add(_liquidityFee)); uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, currentRate); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tMarketingLiquidityFee); } function _getTValues(uint256 tAmount, uint256 taxFee, uint256 marketingLiquidityFee) private pure returns (uint256, uint256, uint256) { uint256 tFee = tAmount.mul(taxFee).div(100); uint256 tMarketingLiquidityFee = tAmount.mul(marketingLiquidityFee).div(100); uint256 tTransferAmount = tAmount.sub(tFee).sub(marketingLiquidityFee); return (tTransferAmount, tFee, tMarketingLiquidityFee); } function _getRValues(uint256 tAmount, uint256 tFee, uint256 currentRate) private pure returns (uint256, uint256, uint256) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee); 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 _getTaxFee() external view returns(uint256) { return _taxFee; } function _getMaxTxAmount() external view returns(uint256) { return _maxTxAmount; } function _getETHBalance() public view returns(uint256 balance) { return address(this).balance; } function _setTaxFee(uint256 taxFee) external onlyOwner() { require(taxFee >= 1 && taxFee <= 49, 'taxFee should be in 1 - 49'); _taxFee = taxFee; } function _setMarketingFee(uint256 marketingFee) external onlyOwner() { require(marketingFee >= 1 && marketingFee <= 49, 'marketingFee should be in 1 - 11'); _marketingFee = marketingFee; } function _setLiquidityFee(uint256 liquidityFee) external onlyOwner() { require(liquidityFee >= 1 && liquidityFee <= 49, 'liquidityFee should be in 1 - 11'); _liquidityFee = liquidityFee; } function _setNumTokensSellToAddToLiquidity(uint256 numTokensSellToAddToLiquidity) external onlyOwner() { require(numTokensSellToAddToLiquidity >= 10**9 , 'numTokensSellToAddToLiquidity should be greater than total 1e9'); _numTokensSellToAddToLiquidity = numTokensSellToAddToLiquidity; } // Adjusted to allow for smaller than 1%'s, as low as 0.1% function setMaxTxPercent(uint256 maxTxPercent) external onlyOwner() { _maxTxAmount = _tTotal.mul(maxTxPercent).div( 10**3 // Division by 1000, set to 20 for 2%, set to 2 for 0.2% ); } function recoverTokens(uint256 tokenAmount) external virtual onlyOwner() { _approve(address(this), owner(), tokenAmount); _transfer(address(this), owner(), tokenAmount); } function excludePresaleAddresses(address router, address presale) external onlyOwner { _isExludedFromTx[router] = true; _isExludedFromTx[presale] = true; presaleAddresses[router] = true; presaleAddresses[presale] = true; excludeFromReward(router); excludeFromReward(presale); setExcludeFromFee(router, true); setExcludeFromFee(presale, true); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_getETHBalance","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_getMaxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_getTaxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"}],"name":"_setLiquidityFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketingFee","type":"uint256"}],"name":"_setMarketingFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"numTokensSellToAddToLiquidity","type":"uint256"}],"name":"_setNumTokensSellToAddToLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"_setTaxFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addBotToBlackList","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":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"router","type":"address"},{"internalType":"address","name":"presale","type":"address"}],"name":"excludePresaleAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"recoverTokens","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":[{"internalType":"address","name":"account","type":"address"}],"name":"removeBotFromBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxPercent","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapAndLiquifyEnabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
69152d02c7e14af6800000600d5569085afffa6ff50bffffff19600e55610100604052600560c081905264424c494e5560d81b60e0908152620000469160109190620006df565b5060408051808201909152600580825264424c494e5560d81b60209092019182526200007591601191620006df565b506012805460ff191660091790556002601381905560006014819055601581905560169190915560178190556018556019805461ffff60a01b196001600160a01b03199091167313869e8c357a2f257c91d832a70e90b43977b36c1716600160a81b179055600d5460649004601a55670de0b6b3a7640000601b55348015620000fd57600080fd5b5060006200010a620006cc565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600e546003600062000165620006cc565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620001dc57600080fd5b505afa158015620001f1573d6000803e3d6000fd5b505050506040513d60208110156200020857600080fd5b5051604080516315ab88c960e31b815290516001600160a01b039283169263c9c653969230929186169163ad5c464891600480820192602092909190829003018186803b1580156200025957600080fd5b505afa1580156200026e573d6000803e3d6000fd5b505050506040513d60208110156200028557600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301525160448083019260209291908290030181600087803b158015620002d857600080fd5b505af1158015620002ed573d6000803e3d6000fd5b505050506040513d60208110156200030457600080fd5b50516001600160601b0319606091821b811660a0529082901b1660805260016006600062000331620006d0565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553081526006909352818320805485166001908117909155601954909116835290822080549093168117909255600b9062000398620006d0565b6001600160a01b031681526020808201929092526040016000908120805493151560ff1994851617905560099091527f1f039d7054c60544da001ada2885c2098966bf59108af37aa0047e53180c227d805483166001908117909155600a805480830182557fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a890810180546001600160a01b031990811673e031b36b53e53a292a20c5f08fd1658cddf74fce179091557ff4b93d2837107f43e5b3215c8cfd55bc8f0ec1fef4e888737a6685e72730fd0e80548716851790558254808501845582018054821673e516bdee55b0b4e9bacaf6285130de15589b13451790557f404b5b762e8059f6055e90a7bf5e88e1e2f628911a8da7857df40bf26352e21280548716851790558254808501845582018054821673a1cec245c456dd1bd9f2815a6955fef44eb4191b1790557fd06f72f8dd06466bcc52a7fc6bddce65222c1efb674ce288f26d72607f32c02680548716851790558254808501845582018054821673d7d3ee77d35d0a56f91542d4905b1a2b1cd7cf951790557fb180cbdf50fc8306102fae658ae8eddf6673addd522d5a575c2b6924f832977480548716851790558254808501845582018054821673fe76f05dc59fec04184fa0245ad0c3cf9a57b9641790557fd74310044b3dfbf8c3bb19b279a8662cf43f021fe4e68d5726f62fc6b584af7980548716851790558254808501845582018054821673dc81a3450817a58d00f45c86d0368290088db8481790557f72b3a1de74eb1a0841083ea090998865c5194ff1fc7be394ec133e28cacbdd9d8054871685179055825480850184558201805482167345fd07c63e5c316540f14b2002b085aee78e38811790557f82951a08c86bbc382122443ed556bc8073b7e0bdf3bbfb811f503389aad35bfc805490961684179095558154928301825592520180549091167327f9adb26d532a41d97e00206114e429ad58c67917905562000678620006cc565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600d546040518082815260200191505060405180910390a3506200077b565b3390565b6000546001600160a01b031690565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200072257805160ff191683800117855562000752565b8280016001018555821562000752579182015b828111156200075257825182559160200191906001019062000735565b506200076092915062000764565b5090565b5b8082111562000760576000815560010162000765565b60805160601c60a05160601c613363620007c36000398061127152806121bb525080610b1b528061250b52806125c352806125ea5280612c3a5280612c6152506133636000f3fe60806040526004361061024a5760003560e01c806352390c0211610139578063a52fe9bb116100b6578063d543dbeb1161007a578063d543dbeb146108a7578063dd62ed3e146108d1578063f2fde38b1461090c578063f42938901461093f578063f7a9159114610954578063f815a8421461096957610251565b8063a52fe9bb146107b3578063a9059cbb146107dd578063af9549e014610816578063bcd6d44614610851578063c49b9a801461087b57610251565b80637ded4d6a116100fd5780637ded4d6a146106ea57806388f820201461071d5780638da5cb5b1461075057806395d89b4114610765578063a457c2d71461077a57610251565b806352390c02146106125780635342acb4146106455780635880b8731461067857806370a08231146106a2578063715018a6146106d557610251565b806330599fc5116101c75780634303443d1161018b5780634303443d1461056e5780634549b039146105a157806349bd5a5e146105d35780634a74bb02146105e857806351bc3c85146105fd57610251565b806330599fc514610483578063313ce567146104ad5780633685d419146104d8578063395093511461050b5780633bd5d1731461054457610251565b806318160ddd1161020e57806318160ddd146103c25780631decaadc146103d757806323b872dd146104015780632d838119146104445780632fbff0301461046e57610251565b806306fdde0314610256578063095ea7b3146102e057806313114a9d1461032d57806313b4a7f4146103545780631694505e1461039157610251565b3661025157005b600080fd5b34801561026257600080fd5b5061026b61097e565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102a557818101518382015260200161028d565b50505050905090810190601f1680156102d25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102ec57600080fd5b506103196004803603604081101561030357600080fd5b506001600160a01b038135169060200135610a14565b604080519115158252519081900360200190f35b34801561033957600080fd5b50610342610a32565b60408051918252519081900360200190f35b34801561036057600080fd5b5061038f6004803603604081101561037757600080fd5b506001600160a01b0381358116916020013516610a38565b005b34801561039d57600080fd5b506103a6610b19565b604080516001600160a01b039092168252519081900360200190f35b3480156103ce57600080fd5b50610342610b3d565b3480156103e357600080fd5b5061038f600480360360208110156103fa57600080fd5b5035610b43565b34801561040d57600080fd5b506103196004803603606081101561042457600080fd5b506001600160a01b03813581169160208101359091169060400135610be3565b34801561045057600080fd5b506103426004803603602081101561046757600080fd5b5035610c6a565b34801561047a57600080fd5b50610342610ccc565b34801561048f57600080fd5b5061038f600480360360208110156104a657600080fd5b5035610cd2565b3480156104b957600080fd5b506104c2610d51565b6040805160ff9092168252519081900360200190f35b3480156104e457600080fd5b5061038f600480360360208110156104fb57600080fd5b50356001600160a01b0316610d5a565b34801561051757600080fd5b506103196004803603604081101561052e57600080fd5b506001600160a01b038135169060200135610f17565b34801561055057600080fd5b5061038f6004803603602081101561056757600080fd5b5035610f65565b34801561057a57600080fd5b5061038f6004803603602081101561059157600080fd5b50356001600160a01b031661103f565b3480156105ad57600080fd5b50610342600480360360408110156105c457600080fd5b508035906020013515156111dd565b3480156105df57600080fd5b506103a661126f565b3480156105f457600080fd5b50610319611293565b34801561060957600080fd5b5061038f6112a3565b34801561061e57600080fd5b5061038f6004803603602081101561063557600080fd5b50356001600160a01b0316611311565b34801561065157600080fd5b506103196004803603602081101561066857600080fd5b50356001600160a01b03166114f3565b34801561068457600080fd5b5061038f6004803603602081101561069b57600080fd5b5035611511565b3480156106ae57600080fd5b50610342600480360360208110156106c557600080fd5b50356001600160a01b03166115d1565b3480156106e157600080fd5b5061038f611633565b3480156106f657600080fd5b5061038f6004803603602081101561070d57600080fd5b50356001600160a01b03166116d5565b34801561072957600080fd5b506103196004803603602081101561074057600080fd5b50356001600160a01b0316611862565b34801561075c57600080fd5b506103a6611880565b34801561077157600080fd5b5061026b61188f565b34801561078657600080fd5b506103196004803603604081101561079d57600080fd5b506001600160a01b0381351690602001356118f0565b3480156107bf57600080fd5b5061038f600480360360208110156107d657600080fd5b5035611958565b3480156107e957600080fd5b506103196004803603604081101561080057600080fd5b506001600160a01b038135169060200135611a18565b34801561082257600080fd5b5061038f6004803603604081101561083957600080fd5b506001600160a01b0381351690602001351515611a2c565b34801561085d57600080fd5b5061038f6004803603602081101561087457600080fd5b5035611aaf565b34801561088757600080fd5b5061038f6004803603602081101561089e57600080fd5b50351515611b6f565b3480156108b357600080fd5b5061038f600480360360208110156108ca57600080fd5b5035611be5565b3480156108dd57600080fd5b50610342600480360360408110156108f457600080fd5b506001600160a01b0381358116916020013516611c64565b34801561091857600080fd5b5061038f6004803603602081101561092f57600080fd5b50356001600160a01b0316611c8f565b34801561094b57600080fd5b5061038f611d87565b34801561096057600080fd5b50610342611de9565b34801561097557600080fd5b50610342611def565b60108054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610a0a5780601f106109df57610100808354040283529160200191610a0a565b820191906000526020600020905b8154815290600101906020018083116109ed57829003601f168201915b5050505050905090565b6000610a28610a21611df3565b8484611df7565b5060015b92915050565b600f5490565b610a40611df3565b6000546001600160a01b03908116911614610a90576040805162461bcd60e51b815260206004820181905260248201526000805160206131c7833981519152604482015290519081900360640190fd5b6001600160a01b038281166000818152600b602090815260408083208054600160ff1991821681179092559587168085528285208054881683179055948452600c90925280832080548616831790559282529190208054909216179055610af682611311565b610aff81611311565b610b0a826001611a2c565b610b15816001611a2c565b5050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600d5490565b610b4b611df3565b6000546001600160a01b03908116911614610b9b576040805162461bcd60e51b815260206004820181905260248201526000805160206131c7833981519152604482015290519081900360640190fd5b633b9aca00811015610bde5760405162461bcd60e51b815260040180806020018281038252603e81526020018061327d603e913960400191505060405180910390fd5b601b55565b6000610bf0848484611ee3565b610c6084610bfc611df3565b610c5b8560405180606001604052806028815260200161319f602891396001600160a01b038a16600090815260056020526040812090610c3a611df3565b6001600160a01b0316815260208101919091526040016000205491906122ac565b611df7565b5060019392505050565b6000600e54821115610cad5760405162461bcd60e51b815260040180806020018281038252602a8152602001806130e4602a913960400191505060405180910390fd5b6000610cb7612343565b9050610cc38382612366565b9150505b919050565b60135490565b610cda611df3565b6000546001600160a01b03908116911614610d2a576040805162461bcd60e51b815260206004820181905260248201526000805160206131c7833981519152604482015290519081900360640190fd5b610d3c30610d36611880565b83611df7565b610d4e30610d48611880565b83611ee3565b50565b60125460ff1690565b610d62611df3565b6000546001600160a01b03908116911614610db2576040805162461bcd60e51b815260206004820181905260248201526000805160206131c7833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526007602052604090205460ff16610e1f576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b60005b600854811015610b1557816001600160a01b031660088281548110610e4357fe5b6000918252602090912001546001600160a01b03161415610f0f57600880546000198101908110610e7057fe5b600091825260209091200154600880546001600160a01b039092169183908110610e9657fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600482526040808220829055600790925220805460ff191690556008805480610ee857fe5b600082815260209020810160001990810180546001600160a01b0319169055019055610b15565b600101610e22565b6000610a28610f24611df3565b84610c5b8560056000610f35611df3565b6001600160a01b03908116825260208083019390935260409182016000908120918c1681529252902054906123af565b6000610f6f611df3565b6001600160a01b03811660009081526007602052604090205490915060ff1615610fca5760405162461bcd60e51b815260040180806020018281038252602c8152602001806132dd602c913960400191505060405180910390fd5b6000610fd583612409565b505050506001600160a01b03841660009081526003602052604090205491925061100191905082612479565b6001600160a01b038316600090815260036020526040902055600e546110279082612479565b600e55600f5461103790846123af565b600f55505050565b611047611df3565b6000546001600160a01b03908116911614611097576040805162461bcd60e51b815260206004820181905260248201526000805160206131c7833981519152604482015290519081900360640190fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03821614156110f35760405162461bcd60e51b81526004018080602001828103825260248152602001806132106024913960400191505060405180910390fd5b6001600160a01b03811630141561110957600080fd5b6001600160a01b03811660009081526009602052604090205460ff1615611177576040805162461bcd60e51b815260206004820152601e60248201527f4163636f756e7420697320616c726561647920626c61636b6c69737465640000604482015290519081900360640190fd5b6001600160a01b03166000818152600960205260408120805460ff19166001908117909155600a805491820181559091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b0319169091179055565b6000600d54831115611236576040805162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604482015290519081900360640190fd5b8161125557600061124684612409565b50939550610a2c945050505050565b600061126084612409565b50929550610a2c945050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b601954600160a81b900460ff1681565b6112ab611df3565b6000546001600160a01b039081169116146112fb576040805162461bcd60e51b815260206004820181905260248201526000805160206131c7833981519152604482015290519081900360640190fd5b6000611306306115d1565b9050610d4e816124bb565b611319611df3565b6000546001600160a01b03908116911614611369576040805162461bcd60e51b815260206004820181905260248201526000805160206131c7833981519152604482015290519081900360640190fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03821614156113c55760405162461bcd60e51b81526004018080602001828103825260228152602001806132bb6022913960400191505060405180910390fd5b6001600160a01b03811660009081526007602052604090205460ff1615611433576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b6001600160a01b0381166000908152600360205260409020541561148d576001600160a01b03811660009081526003602052604090205461147390610c6a565b6001600160a01b0382166000908152600460205260409020555b6001600160a01b03166000818152600760205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b6001600160a01b031660009081526006602052604090205460ff1690565b611519611df3565b6000546001600160a01b03908116911614611569576040805162461bcd60e51b815260206004820181905260248201526000805160206131c7833981519152604482015290519081900360640190fd5b6001811015801561157b575060318111155b6115cc576040805162461bcd60e51b815260206004820152601a60248201527f7461784665652073686f756c6420626520696e2031202d203439000000000000604482015290519081900360640190fd5b601355565b6001600160a01b03811660009081526007602052604081205460ff161561161157506001600160a01b038116600090815260046020526040902054610cc7565b6001600160a01b038216600090815260036020526040902054610a2c90610c6a565b61163b611df3565b6000546001600160a01b0390811691161461168b576040805162461bcd60e51b815260206004820181905260248201526000805160206131c7833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6116dd611df3565b6000546001600160a01b0390811691161461172d576040805162461bcd60e51b815260206004820181905260248201526000805160206131c7833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526009602052604090205460ff1661179a576040805162461bcd60e51b815260206004820152601a60248201527f4163636f756e74206973206e6f7420626c61636b6c6973746564000000000000604482015290519081900360640190fd5b60005b600a54811015610b1557816001600160a01b0316600a82815481106117be57fe5b6000918252602090912001546001600160a01b0316141561185a57600a805460001981019081106117eb57fe5b600091825260209091200154600a80546001600160a01b03909216918390811061181157fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600990915260409020805460ff19169055600a805480610ee857fe5b60010161179d565b6001600160a01b031660009081526007602052604090205460ff1690565b6000546001600160a01b031690565b60118054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610a0a5780601f106109df57610100808354040283529160200191610a0a565b6000610a286118fd611df3565b84610c5b856040518060600160405280602581526020016133096025913960056000611927611df3565b6001600160a01b03908116825260208083019390935260409182016000908120918d168152925290205491906122ac565b611960611df3565b6000546001600160a01b039081169116146119b0576040805162461bcd60e51b815260206004820181905260248201526000805160206131c7833981519152604482015290519081900360640190fd5b600181101580156119c2575060318111155b611a13576040805162461bcd60e51b815260206004820181905260248201527f6d61726b6574696e674665652073686f756c6420626520696e2031202d203131604482015290519081900360640190fd5b601455565b6000610a28611a25611df3565b8484611ee3565b611a34611df3565b6000546001600160a01b03908116911614611a84576040805162461bcd60e51b815260206004820181905260248201526000805160206131c7833981519152604482015290519081900360640190fd5b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b611ab7611df3565b6000546001600160a01b03908116911614611b07576040805162461bcd60e51b815260206004820181905260248201526000805160206131c7833981519152604482015290519081900360640190fd5b60018110158015611b19575060318111155b611b6a576040805162461bcd60e51b815260206004820181905260248201527f6c69717569646974794665652073686f756c6420626520696e2031202d203131604482015290519081900360640190fd5b601555565b611b77611df3565b6000546001600160a01b03908116911614611bc7576040805162461bcd60e51b815260206004820181905260248201526000805160206131c7833981519152604482015290519081900360640190fd5b60198054911515600160a81b0260ff60a81b19909216919091179055565b611bed611df3565b6000546001600160a01b03908116911614611c3d576040805162461bcd60e51b815260206004820181905260248201526000805160206131c7833981519152604482015290519081900360640190fd5b611c5e6103e8611c5883600d546126ca90919063ffffffff16565b90612366565b601a5550565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b611c97611df3565b6000546001600160a01b03908116911614611ce7576040805162461bcd60e51b815260206004820181905260248201526000805160206131c7833981519152604482015290519081900360640190fd5b6001600160a01b038116611d2c5760405162461bcd60e51b815260040180806020018281038252602681526020018061310e6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b611d8f611df3565b6000546001600160a01b03908116911614611ddf576040805162461bcd60e51b815260206004820181905260248201526000805160206131c7833981519152604482015290519081900360640190fd5b47610d4e81612723565b601a5490565b4790565b3390565b6001600160a01b038316611e3c5760405162461bcd60e51b81526004018080602001828103825260248152602001806132596024913960400191505060405180910390fd5b6001600160a01b038216611e815760405162461bcd60e51b81526004018080602001828103825260228152602001806131346022913960400191505060405180910390fd5b6001600160a01b03808416600081815260056020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316611f285760405162461bcd60e51b81526004018080602001828103825260258152602001806132346025913960400191505060405180910390fd5b6001600160a01b038216611f6d5760405162461bcd60e51b81526004018080602001828103825260238152602001806130c16023913960400191505060405180910390fd5b60008111611fac5760405162461bcd60e51b81526004018080602001828103825260298152602001806131e76029913960400191505060405180910390fd5b6001600160a01b03831660009081526009602052604090205460ff1615612014576040805162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b604482015290519081900360640190fd5b6001600160a01b03821660009081526009602052604090205460ff161561207c576040805162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b604482015290519081900360640190fd5b3260009081526009602052604090205460ff16156120db576040805162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b604482015290519081900360640190fd5b6001600160a01b0383166000908152600b602052604090205460ff1615801561211d57506001600160a01b0382166000908152600b602052604090205460ff16155b1561216357601a548111156121635760405162461bcd60e51b81526004018080602001828103825260288152602001806131566028913960400191505060405180910390fd5b600061216e306115d1565b9050601a54811061217e5750601a545b601b546019549082101590600160a01b900460ff161580156121a95750601954600160a81b900460ff165b80156121b25750805b80156121f057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614155b801561221557506001600160a01b0385166000908152600c602052604090205460ff16155b801561223a57506001600160a01b0384166000908152600c602052604090205460ff16155b1561224d57601b54915061224d8261275d565b6001600160a01b03851660009081526006602052604090205460019060ff168061228f57506001600160a01b03851660009081526006602052604090205460ff165b15612298575060005b6122a48686868461286d565b505050505050565b6000818484111561233b5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156123005781810151838201526020016122e8565b50505050905090810190601f16801561232d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008060006123506129e1565b909250905061235f8282612366565b9250505090565b60006123a883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612b44565b9392505050565b6000828201838110156123a8576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600080600080600080600080600061243a8a6013546124356015546014546123af90919063ffffffff16565b612ba9565b925092509250600061244a612343565b9050600080600061245c8e8786612bf8565b919e509c509a509598509396509194505050505091939550919395565b60006123a883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506122ac565b604080516002808252606080830184529260208301908036833701905050905030816000815181106124e957fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561256257600080fd5b505afa158015612576573d6000803e3d6000fd5b505050506040513d602081101561258c57600080fd5b505181518290600190811061259d57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506125e8307f000000000000000000000000000000000000000000000000000000000000000084611df7565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663791ac9478360008430426040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b8381101561268d578181015183820152602001612675565b505050509050019650505050505050600060405180830381600087803b1580156126b657600080fd5b505af11580156122a4573d6000803e3d6000fd5b6000826126d957506000610a2c565b828202828482816126e657fe5b04146123a85760405162461bcd60e51b815260040180806020018281038252602181526020018061317e6021913960400191505060405180910390fd5b6019546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610b15573d6000803e3d6000fd5b6019805460ff60a01b1916600160a01b17905560155460145460009161279491612786916123af565b601454611c589085906126ca565b905060006127a28383612479565b905060006127b1826002612366565b905060006127bf8383612479565b90504760006127ce84876123af565b90506127d9816124bb565b60006127e54784612479565b905060006127f783611c5884896126ca565b90506128038582612c34565b604080518781526020810183905280820187905290517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a16128556128508383612479565b612723565b50506019805460ff60a01b1916905550505050505050565b8061287a5761287a612d32565b6001600160a01b03841660009081526007602052604090205460ff1680156128bb57506001600160a01b03831660009081526007602052604090205460ff16155b156128d0576128cb848484612d7b565b6129ce565b6001600160a01b03841660009081526007602052604090205460ff1615801561291157506001600160a01b03831660009081526007602052604090205460ff165b15612921576128cb848484612e9f565b6001600160a01b03841660009081526007602052604090205460ff1615801561296357506001600160a01b03831660009081526007602052604090205460ff16155b15612973576128cb848484612f48565b6001600160a01b03841660009081526007602052604090205460ff1680156129b357506001600160a01b03831660009081526007602052604090205460ff165b156129c3576128cb848484612f8c565b6129ce848484612f48565b806129db576129db612fff565b50505050565b600e54600d546000918291825b600854811015612b1257826003600060088481548110612a0a57fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612a6f5750816004600060088481548110612a4857fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612a8657600e54600d5494509450505050612b40565b612ac66003600060088481548110612a9a57fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020548490612479565b9250612b086004600060088481548110612adc57fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020548390612479565b91506001016129ee565b50600d54600e54612b2291612366565b821015612b3a57600e54600d54935093505050612b40565b90925090505b9091565b60008183612b935760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156123005781810151838201526020016122e8565b506000838581612b9f57fe5b0495945050505050565b6000808080612bbd6064611c5889896126ca565b90506000612bd06064611c588a896126ca565b90506000612be887612be28b86612479565b90612479565b9992985090965090945050505050565b6000808080612c0787866126ca565b90506000612c1587876126ca565b90506000612c238383612479565b929992985090965090945050505050565b612c5f307f000000000000000000000000000000000000000000000000000000000000000084611df7565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f305d719823085600080612c9c611880565b426040518863ffffffff1660e01b815260040180876001600160a01b03168152602001868152602001858152602001848152602001836001600160a01b0316815260200182815260200196505050505050506060604051808303818588803b158015612d0757600080fd5b505af1158015612d1b573d6000803e3d6000fd5b50505050506040513d60608110156129db57600080fd5b601354158015612d425750601454155b8015612d4e5750601554155b15612d5857612d79565b60138054601655601480546017556015805460185560009283905590829055555b565b600080600080600080612d8d87612409565b6001600160a01b038f16600090815260046020526040902054959b50939950919750955093509150612dbf9088612479565b6001600160a01b038a16600090815260046020908152604080832093909355600390522054612dee9087612479565b6001600160a01b03808b1660009081526003602052604080822093909355908a1681522054612e1d90866123af565b6001600160a01b038916600090815260036020526040902055612e3f81613013565b612e49848361309c565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080612eb187612409565b6001600160a01b038f16600090815260036020526040902054959b50939950919750955093509150612ee39087612479565b6001600160a01b03808b16600090815260036020908152604080832094909455918b16815260049091522054612f1990846123af565b6001600160a01b038916600090815260046020908152604080832093909355600390522054612e1d90866123af565b600080600080600080612f5a87612409565b6001600160a01b038f16600090815260036020526040902054959b50939950919750955093509150612dee9087612479565b600080600080600080612f9e87612409565b6001600160a01b038f16600090815260046020526040902054959b50939950919750955093509150612fd09088612479565b6001600160a01b038a16600090815260046020908152604080832093909355600390522054612ee39087612479565b601654601355601754601455601854601555565b600061301d612343565b9050600061302b83836126ca565b3060009081526003602052604090205490915061304890826123af565b3060009081526003602090815260408083209390935560079052205460ff1615613097573060009081526004602052604090205461308690846123af565b306000908152600460205260409020555b505050565b600e546130a99083612479565b600e55600f546130b990826123af565b600f55505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573735472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f57652063616e206e6f7420626c61636b6c69737420556e697377617020726f757465722e45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573736e756d546f6b656e7353656c6c546f416464546f4c69717569646974792073686f756c642062652067726561746572207468616e20746f74616c2031653957652063616e206e6f74206578636c75646520556e697377617020726f757465722e4578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122093dfa777934e90faa7aaa9eef35db3de8dd723c650a655d3b86c220eb0c67afe64736f6c634300060c0033
Deployed Bytecode
0x60806040526004361061024a5760003560e01c806352390c0211610139578063a52fe9bb116100b6578063d543dbeb1161007a578063d543dbeb146108a7578063dd62ed3e146108d1578063f2fde38b1461090c578063f42938901461093f578063f7a9159114610954578063f815a8421461096957610251565b8063a52fe9bb146107b3578063a9059cbb146107dd578063af9549e014610816578063bcd6d44614610851578063c49b9a801461087b57610251565b80637ded4d6a116100fd5780637ded4d6a146106ea57806388f820201461071d5780638da5cb5b1461075057806395d89b4114610765578063a457c2d71461077a57610251565b806352390c02146106125780635342acb4146106455780635880b8731461067857806370a08231146106a2578063715018a6146106d557610251565b806330599fc5116101c75780634303443d1161018b5780634303443d1461056e5780634549b039146105a157806349bd5a5e146105d35780634a74bb02146105e857806351bc3c85146105fd57610251565b806330599fc514610483578063313ce567146104ad5780633685d419146104d8578063395093511461050b5780633bd5d1731461054457610251565b806318160ddd1161020e57806318160ddd146103c25780631decaadc146103d757806323b872dd146104015780632d838119146104445780632fbff0301461046e57610251565b806306fdde0314610256578063095ea7b3146102e057806313114a9d1461032d57806313b4a7f4146103545780631694505e1461039157610251565b3661025157005b600080fd5b34801561026257600080fd5b5061026b61097e565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102a557818101518382015260200161028d565b50505050905090810190601f1680156102d25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102ec57600080fd5b506103196004803603604081101561030357600080fd5b506001600160a01b038135169060200135610a14565b604080519115158252519081900360200190f35b34801561033957600080fd5b50610342610a32565b60408051918252519081900360200190f35b34801561036057600080fd5b5061038f6004803603604081101561037757600080fd5b506001600160a01b0381358116916020013516610a38565b005b34801561039d57600080fd5b506103a6610b19565b604080516001600160a01b039092168252519081900360200190f35b3480156103ce57600080fd5b50610342610b3d565b3480156103e357600080fd5b5061038f600480360360208110156103fa57600080fd5b5035610b43565b34801561040d57600080fd5b506103196004803603606081101561042457600080fd5b506001600160a01b03813581169160208101359091169060400135610be3565b34801561045057600080fd5b506103426004803603602081101561046757600080fd5b5035610c6a565b34801561047a57600080fd5b50610342610ccc565b34801561048f57600080fd5b5061038f600480360360208110156104a657600080fd5b5035610cd2565b3480156104b957600080fd5b506104c2610d51565b6040805160ff9092168252519081900360200190f35b3480156104e457600080fd5b5061038f600480360360208110156104fb57600080fd5b50356001600160a01b0316610d5a565b34801561051757600080fd5b506103196004803603604081101561052e57600080fd5b506001600160a01b038135169060200135610f17565b34801561055057600080fd5b5061038f6004803603602081101561056757600080fd5b5035610f65565b34801561057a57600080fd5b5061038f6004803603602081101561059157600080fd5b50356001600160a01b031661103f565b3480156105ad57600080fd5b50610342600480360360408110156105c457600080fd5b508035906020013515156111dd565b3480156105df57600080fd5b506103a661126f565b3480156105f457600080fd5b50610319611293565b34801561060957600080fd5b5061038f6112a3565b34801561061e57600080fd5b5061038f6004803603602081101561063557600080fd5b50356001600160a01b0316611311565b34801561065157600080fd5b506103196004803603602081101561066857600080fd5b50356001600160a01b03166114f3565b34801561068457600080fd5b5061038f6004803603602081101561069b57600080fd5b5035611511565b3480156106ae57600080fd5b50610342600480360360208110156106c557600080fd5b50356001600160a01b03166115d1565b3480156106e157600080fd5b5061038f611633565b3480156106f657600080fd5b5061038f6004803603602081101561070d57600080fd5b50356001600160a01b03166116d5565b34801561072957600080fd5b506103196004803603602081101561074057600080fd5b50356001600160a01b0316611862565b34801561075c57600080fd5b506103a6611880565b34801561077157600080fd5b5061026b61188f565b34801561078657600080fd5b506103196004803603604081101561079d57600080fd5b506001600160a01b0381351690602001356118f0565b3480156107bf57600080fd5b5061038f600480360360208110156107d657600080fd5b5035611958565b3480156107e957600080fd5b506103196004803603604081101561080057600080fd5b506001600160a01b038135169060200135611a18565b34801561082257600080fd5b5061038f6004803603604081101561083957600080fd5b506001600160a01b0381351690602001351515611a2c565b34801561085d57600080fd5b5061038f6004803603602081101561087457600080fd5b5035611aaf565b34801561088757600080fd5b5061038f6004803603602081101561089e57600080fd5b50351515611b6f565b3480156108b357600080fd5b5061038f600480360360208110156108ca57600080fd5b5035611be5565b3480156108dd57600080fd5b50610342600480360360408110156108f457600080fd5b506001600160a01b0381358116916020013516611c64565b34801561091857600080fd5b5061038f6004803603602081101561092f57600080fd5b50356001600160a01b0316611c8f565b34801561094b57600080fd5b5061038f611d87565b34801561096057600080fd5b50610342611de9565b34801561097557600080fd5b50610342611def565b60108054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610a0a5780601f106109df57610100808354040283529160200191610a0a565b820191906000526020600020905b8154815290600101906020018083116109ed57829003601f168201915b5050505050905090565b6000610a28610a21611df3565b8484611df7565b5060015b92915050565b600f5490565b610a40611df3565b6000546001600160a01b03908116911614610a90576040805162461bcd60e51b815260206004820181905260248201526000805160206131c7833981519152604482015290519081900360640190fd5b6001600160a01b038281166000818152600b602090815260408083208054600160ff1991821681179092559587168085528285208054881683179055948452600c90925280832080548616831790559282529190208054909216179055610af682611311565b610aff81611311565b610b0a826001611a2c565b610b15816001611a2c565b5050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b600d5490565b610b4b611df3565b6000546001600160a01b03908116911614610b9b576040805162461bcd60e51b815260206004820181905260248201526000805160206131c7833981519152604482015290519081900360640190fd5b633b9aca00811015610bde5760405162461bcd60e51b815260040180806020018281038252603e81526020018061327d603e913960400191505060405180910390fd5b601b55565b6000610bf0848484611ee3565b610c6084610bfc611df3565b610c5b8560405180606001604052806028815260200161319f602891396001600160a01b038a16600090815260056020526040812090610c3a611df3565b6001600160a01b0316815260208101919091526040016000205491906122ac565b611df7565b5060019392505050565b6000600e54821115610cad5760405162461bcd60e51b815260040180806020018281038252602a8152602001806130e4602a913960400191505060405180910390fd5b6000610cb7612343565b9050610cc38382612366565b9150505b919050565b60135490565b610cda611df3565b6000546001600160a01b03908116911614610d2a576040805162461bcd60e51b815260206004820181905260248201526000805160206131c7833981519152604482015290519081900360640190fd5b610d3c30610d36611880565b83611df7565b610d4e30610d48611880565b83611ee3565b50565b60125460ff1690565b610d62611df3565b6000546001600160a01b03908116911614610db2576040805162461bcd60e51b815260206004820181905260248201526000805160206131c7833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526007602052604090205460ff16610e1f576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b60005b600854811015610b1557816001600160a01b031660088281548110610e4357fe5b6000918252602090912001546001600160a01b03161415610f0f57600880546000198101908110610e7057fe5b600091825260209091200154600880546001600160a01b039092169183908110610e9657fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600482526040808220829055600790925220805460ff191690556008805480610ee857fe5b600082815260209020810160001990810180546001600160a01b0319169055019055610b15565b600101610e22565b6000610a28610f24611df3565b84610c5b8560056000610f35611df3565b6001600160a01b03908116825260208083019390935260409182016000908120918c1681529252902054906123af565b6000610f6f611df3565b6001600160a01b03811660009081526007602052604090205490915060ff1615610fca5760405162461bcd60e51b815260040180806020018281038252602c8152602001806132dd602c913960400191505060405180910390fd5b6000610fd583612409565b505050506001600160a01b03841660009081526003602052604090205491925061100191905082612479565b6001600160a01b038316600090815260036020526040902055600e546110279082612479565b600e55600f5461103790846123af565b600f55505050565b611047611df3565b6000546001600160a01b03908116911614611097576040805162461bcd60e51b815260206004820181905260248201526000805160206131c7833981519152604482015290519081900360640190fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03821614156110f35760405162461bcd60e51b81526004018080602001828103825260248152602001806132106024913960400191505060405180910390fd5b6001600160a01b03811630141561110957600080fd5b6001600160a01b03811660009081526009602052604090205460ff1615611177576040805162461bcd60e51b815260206004820152601e60248201527f4163636f756e7420697320616c726561647920626c61636b6c69737465640000604482015290519081900360640190fd5b6001600160a01b03166000818152600960205260408120805460ff19166001908117909155600a805491820181559091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b0319169091179055565b6000600d54831115611236576040805162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604482015290519081900360640190fd5b8161125557600061124684612409565b50939550610a2c945050505050565b600061126084612409565b50929550610a2c945050505050565b7f000000000000000000000000abafb9713885cb8fe6a333d2555bfa9f189c5bd181565b601954600160a81b900460ff1681565b6112ab611df3565b6000546001600160a01b039081169116146112fb576040805162461bcd60e51b815260206004820181905260248201526000805160206131c7833981519152604482015290519081900360640190fd5b6000611306306115d1565b9050610d4e816124bb565b611319611df3565b6000546001600160a01b03908116911614611369576040805162461bcd60e51b815260206004820181905260248201526000805160206131c7833981519152604482015290519081900360640190fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03821614156113c55760405162461bcd60e51b81526004018080602001828103825260228152602001806132bb6022913960400191505060405180910390fd5b6001600160a01b03811660009081526007602052604090205460ff1615611433576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b6001600160a01b0381166000908152600360205260409020541561148d576001600160a01b03811660009081526003602052604090205461147390610c6a565b6001600160a01b0382166000908152600460205260409020555b6001600160a01b03166000818152600760205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b6001600160a01b031660009081526006602052604090205460ff1690565b611519611df3565b6000546001600160a01b03908116911614611569576040805162461bcd60e51b815260206004820181905260248201526000805160206131c7833981519152604482015290519081900360640190fd5b6001811015801561157b575060318111155b6115cc576040805162461bcd60e51b815260206004820152601a60248201527f7461784665652073686f756c6420626520696e2031202d203439000000000000604482015290519081900360640190fd5b601355565b6001600160a01b03811660009081526007602052604081205460ff161561161157506001600160a01b038116600090815260046020526040902054610cc7565b6001600160a01b038216600090815260036020526040902054610a2c90610c6a565b61163b611df3565b6000546001600160a01b0390811691161461168b576040805162461bcd60e51b815260206004820181905260248201526000805160206131c7833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6116dd611df3565b6000546001600160a01b0390811691161461172d576040805162461bcd60e51b815260206004820181905260248201526000805160206131c7833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526009602052604090205460ff1661179a576040805162461bcd60e51b815260206004820152601a60248201527f4163636f756e74206973206e6f7420626c61636b6c6973746564000000000000604482015290519081900360640190fd5b60005b600a54811015610b1557816001600160a01b0316600a82815481106117be57fe5b6000918252602090912001546001600160a01b0316141561185a57600a805460001981019081106117eb57fe5b600091825260209091200154600a80546001600160a01b03909216918390811061181157fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600990915260409020805460ff19169055600a805480610ee857fe5b60010161179d565b6001600160a01b031660009081526007602052604090205460ff1690565b6000546001600160a01b031690565b60118054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610a0a5780601f106109df57610100808354040283529160200191610a0a565b6000610a286118fd611df3565b84610c5b856040518060600160405280602581526020016133096025913960056000611927611df3565b6001600160a01b03908116825260208083019390935260409182016000908120918d168152925290205491906122ac565b611960611df3565b6000546001600160a01b039081169116146119b0576040805162461bcd60e51b815260206004820181905260248201526000805160206131c7833981519152604482015290519081900360640190fd5b600181101580156119c2575060318111155b611a13576040805162461bcd60e51b815260206004820181905260248201527f6d61726b6574696e674665652073686f756c6420626520696e2031202d203131604482015290519081900360640190fd5b601455565b6000610a28611a25611df3565b8484611ee3565b611a34611df3565b6000546001600160a01b03908116911614611a84576040805162461bcd60e51b815260206004820181905260248201526000805160206131c7833981519152604482015290519081900360640190fd5b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b611ab7611df3565b6000546001600160a01b03908116911614611b07576040805162461bcd60e51b815260206004820181905260248201526000805160206131c7833981519152604482015290519081900360640190fd5b60018110158015611b19575060318111155b611b6a576040805162461bcd60e51b815260206004820181905260248201527f6c69717569646974794665652073686f756c6420626520696e2031202d203131604482015290519081900360640190fd5b601555565b611b77611df3565b6000546001600160a01b03908116911614611bc7576040805162461bcd60e51b815260206004820181905260248201526000805160206131c7833981519152604482015290519081900360640190fd5b60198054911515600160a81b0260ff60a81b19909216919091179055565b611bed611df3565b6000546001600160a01b03908116911614611c3d576040805162461bcd60e51b815260206004820181905260248201526000805160206131c7833981519152604482015290519081900360640190fd5b611c5e6103e8611c5883600d546126ca90919063ffffffff16565b90612366565b601a5550565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b611c97611df3565b6000546001600160a01b03908116911614611ce7576040805162461bcd60e51b815260206004820181905260248201526000805160206131c7833981519152604482015290519081900360640190fd5b6001600160a01b038116611d2c5760405162461bcd60e51b815260040180806020018281038252602681526020018061310e6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b611d8f611df3565b6000546001600160a01b03908116911614611ddf576040805162461bcd60e51b815260206004820181905260248201526000805160206131c7833981519152604482015290519081900360640190fd5b47610d4e81612723565b601a5490565b4790565b3390565b6001600160a01b038316611e3c5760405162461bcd60e51b81526004018080602001828103825260248152602001806132596024913960400191505060405180910390fd5b6001600160a01b038216611e815760405162461bcd60e51b81526004018080602001828103825260228152602001806131346022913960400191505060405180910390fd5b6001600160a01b03808416600081815260056020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316611f285760405162461bcd60e51b81526004018080602001828103825260258152602001806132346025913960400191505060405180910390fd5b6001600160a01b038216611f6d5760405162461bcd60e51b81526004018080602001828103825260238152602001806130c16023913960400191505060405180910390fd5b60008111611fac5760405162461bcd60e51b81526004018080602001828103825260298152602001806131e76029913960400191505060405180910390fd5b6001600160a01b03831660009081526009602052604090205460ff1615612014576040805162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b604482015290519081900360640190fd5b6001600160a01b03821660009081526009602052604090205460ff161561207c576040805162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b604482015290519081900360640190fd5b3260009081526009602052604090205460ff16156120db576040805162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b604482015290519081900360640190fd5b6001600160a01b0383166000908152600b602052604090205460ff1615801561211d57506001600160a01b0382166000908152600b602052604090205460ff16155b1561216357601a548111156121635760405162461bcd60e51b81526004018080602001828103825260288152602001806131566028913960400191505060405180910390fd5b600061216e306115d1565b9050601a54811061217e5750601a545b601b546019549082101590600160a01b900460ff161580156121a95750601954600160a81b900460ff165b80156121b25750805b80156121f057507f000000000000000000000000abafb9713885cb8fe6a333d2555bfa9f189c5bd16001600160a01b0316856001600160a01b031614155b801561221557506001600160a01b0385166000908152600c602052604090205460ff16155b801561223a57506001600160a01b0384166000908152600c602052604090205460ff16155b1561224d57601b54915061224d8261275d565b6001600160a01b03851660009081526006602052604090205460019060ff168061228f57506001600160a01b03851660009081526006602052604090205460ff165b15612298575060005b6122a48686868461286d565b505050505050565b6000818484111561233b5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156123005781810151838201526020016122e8565b50505050905090810190601f16801561232d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008060006123506129e1565b909250905061235f8282612366565b9250505090565b60006123a883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612b44565b9392505050565b6000828201838110156123a8576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600080600080600080600080600061243a8a6013546124356015546014546123af90919063ffffffff16565b612ba9565b925092509250600061244a612343565b9050600080600061245c8e8786612bf8565b919e509c509a509598509396509194505050505091939550919395565b60006123a883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506122ac565b604080516002808252606080830184529260208301908036833701905050905030816000815181106124e957fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561256257600080fd5b505afa158015612576573d6000803e3d6000fd5b505050506040513d602081101561258c57600080fd5b505181518290600190811061259d57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506125e8307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611df7565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663791ac9478360008430426040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b8381101561268d578181015183820152602001612675565b505050509050019650505050505050600060405180830381600087803b1580156126b657600080fd5b505af11580156122a4573d6000803e3d6000fd5b6000826126d957506000610a2c565b828202828482816126e657fe5b04146123a85760405162461bcd60e51b815260040180806020018281038252602181526020018061317e6021913960400191505060405180910390fd5b6019546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610b15573d6000803e3d6000fd5b6019805460ff60a01b1916600160a01b17905560155460145460009161279491612786916123af565b601454611c589085906126ca565b905060006127a28383612479565b905060006127b1826002612366565b905060006127bf8383612479565b90504760006127ce84876123af565b90506127d9816124bb565b60006127e54784612479565b905060006127f783611c5884896126ca565b90506128038582612c34565b604080518781526020810183905280820187905290517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a16128556128508383612479565b612723565b50506019805460ff60a01b1916905550505050505050565b8061287a5761287a612d32565b6001600160a01b03841660009081526007602052604090205460ff1680156128bb57506001600160a01b03831660009081526007602052604090205460ff16155b156128d0576128cb848484612d7b565b6129ce565b6001600160a01b03841660009081526007602052604090205460ff1615801561291157506001600160a01b03831660009081526007602052604090205460ff165b15612921576128cb848484612e9f565b6001600160a01b03841660009081526007602052604090205460ff1615801561296357506001600160a01b03831660009081526007602052604090205460ff16155b15612973576128cb848484612f48565b6001600160a01b03841660009081526007602052604090205460ff1680156129b357506001600160a01b03831660009081526007602052604090205460ff165b156129c3576128cb848484612f8c565b6129ce848484612f48565b806129db576129db612fff565b50505050565b600e54600d546000918291825b600854811015612b1257826003600060088481548110612a0a57fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612a6f5750816004600060088481548110612a4857fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612a8657600e54600d5494509450505050612b40565b612ac66003600060088481548110612a9a57fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020548490612479565b9250612b086004600060088481548110612adc57fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020548390612479565b91506001016129ee565b50600d54600e54612b2291612366565b821015612b3a57600e54600d54935093505050612b40565b90925090505b9091565b60008183612b935760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156123005781810151838201526020016122e8565b506000838581612b9f57fe5b0495945050505050565b6000808080612bbd6064611c5889896126ca565b90506000612bd06064611c588a896126ca565b90506000612be887612be28b86612479565b90612479565b9992985090965090945050505050565b6000808080612c0787866126ca565b90506000612c1587876126ca565b90506000612c238383612479565b929992985090965090945050505050565b612c5f307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611df7565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663f305d719823085600080612c9c611880565b426040518863ffffffff1660e01b815260040180876001600160a01b03168152602001868152602001858152602001848152602001836001600160a01b0316815260200182815260200196505050505050506060604051808303818588803b158015612d0757600080fd5b505af1158015612d1b573d6000803e3d6000fd5b50505050506040513d60608110156129db57600080fd5b601354158015612d425750601454155b8015612d4e5750601554155b15612d5857612d79565b60138054601655601480546017556015805460185560009283905590829055555b565b600080600080600080612d8d87612409565b6001600160a01b038f16600090815260046020526040902054959b50939950919750955093509150612dbf9088612479565b6001600160a01b038a16600090815260046020908152604080832093909355600390522054612dee9087612479565b6001600160a01b03808b1660009081526003602052604080822093909355908a1681522054612e1d90866123af565b6001600160a01b038916600090815260036020526040902055612e3f81613013565b612e49848361309c565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080612eb187612409565b6001600160a01b038f16600090815260036020526040902054959b50939950919750955093509150612ee39087612479565b6001600160a01b03808b16600090815260036020908152604080832094909455918b16815260049091522054612f1990846123af565b6001600160a01b038916600090815260046020908152604080832093909355600390522054612e1d90866123af565b600080600080600080612f5a87612409565b6001600160a01b038f16600090815260036020526040902054959b50939950919750955093509150612dee9087612479565b600080600080600080612f9e87612409565b6001600160a01b038f16600090815260046020526040902054959b50939950919750955093509150612fd09088612479565b6001600160a01b038a16600090815260046020908152604080832093909355600390522054612ee39087612479565b601654601355601754601455601854601555565b600061301d612343565b9050600061302b83836126ca565b3060009081526003602052604090205490915061304890826123af565b3060009081526003602090815260408083209390935560079052205460ff1615613097573060009081526004602052604090205461308690846123af565b306000908152600460205260409020555b505050565b600e546130a99083612479565b600e55600f546130b990826123af565b600f55505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573735472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f57652063616e206e6f7420626c61636b6c69737420556e697377617020726f757465722e45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573736e756d546f6b656e7353656c6c546f416464546f4c69717569646974792073686f756c642062652067726561746572207468616e20746f74616c2031653957652063616e206e6f74206578636c75646520556e697377617020726f757465722e4578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122093dfa777934e90faa7aaa9eef35db3de8dd723c650a655d3b86c220eb0c67afe64736f6c634300060c0033
Deployed Bytecode Sourcemap
23632:24221:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28215:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29127:161;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;29127:161:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;30391:87;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;47429:421;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;47429:421:0;;;;;;;;;;:::i;:::-;;25169:51;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;25169:51:0;;;;;;;;;;;;;;28492:95;;;;;;;;;;;;;:::i;46619:309::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;46619:309:0;;:::i;29296:313::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;29296:313:0;;;;;;;;;;;;;;;;;:::i;31315:253::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31315:253:0;;:::i;45688:86::-;;;;;;;;;;;;;:::i;47227:194::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;47227:194:0;;:::i;28401:83::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;32028:477;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32028:477:0;-1:-1:-1;;;;;32028:477:0;;:::i;29617:218::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;29617:218:0;;;;;;;;:::i;30486:377::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30486:377:0;;:::i;32513:396::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32513:396:0;-1:-1:-1;;;;;32513:396:0;;:::i;30871:436::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30871:436:0;;;;;;;;;:::i;25227:38::-;;;;;;;;;;;;;:::i;25310:40::-;;;;;;;;;;;;;:::i;39256:156::-;;;;;;;;;;;;;:::i;31576:444::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31576:444:0;-1:-1:-1;;;;;31576:444:0;;:::i;33946:123::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;33946:123:0;-1:-1:-1;;;;;33946:123:0;;:::i;46004:169::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;46004:169:0;;:::i;28595:198::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28595:198:0;-1:-1:-1;;;;;28595:198:0;;:::i;15124:148::-;;;;;;;;;;;;;:::i;32917:500::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32917:500:0;-1:-1:-1;;;;;32917:500:0;;:::i;30120:120::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30120:120:0;-1:-1:-1;;;;;30120:120:0;;:::i;14490:79::-;;;;;;;;;;;;;:::i;28306:87::-;;;;;;;;;;;;;:::i;29843:269::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;29843:269:0;;;;;;;;:::i;46181:211::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;46181:211:0;;:::i;28801:167::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;28801:167:0;;;;;;;;:::i;30248:135::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;30248:135:0;;;;;;;;;;:::i;46400:211::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;46400:211:0;;:::i;39587:148::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;39587:148:0;;;;:::i;47000:219::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;47000:219:0;;:::i;28976:143::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;28976:143:0;;;;;;;;;;:::i;15424:244::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15424:244:0;-1:-1:-1;;;;;15424:244:0;;:::i;39420:159::-;;;;;;;;;;;;;:::i;45782:96::-;;;;;;;;;;;;;:::i;45886:110::-;;;;;;;;;;;;;:::i;28215:83::-;28285:5;28278:12;;;;;;;;-1:-1:-1;;28278:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28252:13;;28278:12;;28285:5;;28278:12;;28285:5;28278:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28215:83;:::o;29127:161::-;29202:4;29219:39;29228:12;:10;:12::i;:::-;29242:7;29251:6;29219:8;:39::i;:::-;-1:-1:-1;29276:4:0;29127:161;;;;;:::o;30391:87::-;30460:10;;30391:87;:::o;47429:421::-;14710:12;:10;:12::i;:::-;14700:6;;-1:-1:-1;;;;;14700:6:0;;;:22;;;14692:67;;;;;-1:-1:-1;;;14692:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;14692:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;47525:24:0;;::::1;;::::0;;;:16:::1;:24;::::0;;;;;;;:31;;47552:4:::1;-1:-1:-1::0;;47525:31:0;;::::1;::::0;::::1;::::0;;;47567:25;;::::1;::::0;;;;;;:32;;;::::1;::::0;::::1;::::0;;47610:24;;;:16:::1;:24:::0;;;;;;:31;;;::::1;::::0;::::1;::::0;;47652:25;;;;;;:32;;;;::::1;;::::0;;47695:25:::1;47525:24:::0;47695:17:::1;:25::i;:::-;47731:26;47749:7;47731:17;:26::i;:::-;47768:31;47786:6;47794:4;47768:17;:31::i;:::-;47810:32;47828:7;47837:4;47810:17;:32::i;:::-;47429:421:::0;;:::o;25169:51::-;;;:::o;28492:95::-;28572:7;;28492:95;:::o;46619:309::-;14710:12;:10;:12::i;:::-;14700:6;;-1:-1:-1;;;;;14700:6:0;;;:22;;;14692:67;;;;;-1:-1:-1;;;14692:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;14692:67:0;;;;;;;;;;;;;;;46774:5:::1;46741:29;:38;;46733:114;;;;-1:-1:-1::0;;;46733:114:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46858:30;:62:::0;46619:309::o;29296:313::-;29394:4;29411:36;29421:6;29429:9;29440:6;29411:9;:36::i;:::-;29458:121;29467:6;29475:12;:10;:12::i;:::-;29489:89;29527:6;29489:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;29489:19:0;;;;;;:11;:19;;;;;;29509:12;:10;:12::i;:::-;-1:-1:-1;;;;;29489:33:0;;;;;;;;;;;;-1:-1:-1;29489:33:0;;;:89;:37;:89::i;:::-;29458:8;:121::i;:::-;-1:-1:-1;29597:4:0;29296:313;;;;;:::o;31315:253::-;31381:7;31420;;31409;:18;;31401:73;;;;-1:-1:-1;;;31401:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31485:19;31508:10;:8;:10::i;:::-;31485:33;-1:-1:-1;31536:24:0;:7;31485:33;31536:11;:24::i;:::-;31529:31;;;31315:253;;;;:::o;45688:86::-;45759:7;;45688:86;:::o;47227:194::-;14710:12;:10;:12::i;:::-;14700:6;;-1:-1:-1;;;;;14700:6:0;;;:22;;;14692:67;;;;;-1:-1:-1;;;14692:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;14692:67:0;;;;;;;;;;;;;;;47311:45:::1;47328:4;47335:7;:5;:7::i;:::-;47344:11;47311:8;:45::i;:::-;47367:46;47385:4;47392:7;:5;:7::i;:::-;47401:11;47367:9;:46::i;:::-;47227:194:::0;:::o;28401:83::-;28467:9;;;;28401:83;:::o;32028:477::-;14710:12;:10;:12::i;:::-;14700:6;;-1:-1:-1;;;;;14700:6:0;;;:22;;;14692:67;;;;;-1:-1:-1;;;14692:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;14692:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;32108:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;32100:60;;;::::0;;-1:-1:-1;;;32100:60:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;32176:9;32171:327;32195:9;:16:::0;32191:20;::::1;32171:327;;;32253:7;-1:-1:-1::0;;;;;32237:23:0::1;:9;32247:1;32237:12;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;32237:12:0::1;:23;32233:254;;;32296:9;32306:16:::0;;-1:-1:-1;;32306:20:0;;;32296:31;::::1;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;32281:9:::1;:12:::0;;-1:-1:-1;;;;;32296:31:0;;::::1;::::0;32291:1;;32281:12;::::1;;;;;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;32281:46:0::1;-1:-1:-1::0;;;;;32281:46:0;;::::1;;::::0;;32346:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;32385:11:::1;:20:::0;;;;:28;;-1:-1:-1;;32385:28:0::1;::::0;;32432:9:::1;:15:::0;;;::::1;;;;;::::0;;;::::1;::::0;;;;-1:-1:-1;;32432:15:0;;;;;-1:-1:-1;;;;;;32432:15:0::1;::::0;;;;;32466:5:::1;;32233:254;32213:3;;32171:327;;29617:218:::0;29705:4;29722:83;29731:12;:10;:12::i;:::-;29745:7;29754:50;29793:10;29754:11;:25;29766:12;:10;:12::i;:::-;-1:-1:-1;;;;;29754:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;29754:25:0;;;:34;;;;;;;;;;;:38;:50::i;30486:377::-;30538:14;30555:12;:10;:12::i;:::-;-1:-1:-1;;;;;30587:19:0;;;;;;:11;:19;;;;;;30538:29;;-1:-1:-1;30587:19:0;;30586:20;30578:77;;;;-1:-1:-1;;;30578:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30667:15;30691:19;30702:7;30691:10;:19::i;:::-;-1:-1:-1;;;;;;;;;30739:15:0;;;;;;:7;:15;;;;;;30666:44;;-1:-1:-1;30739:28:0;;:15;-1:-1:-1;30666:44:0;30739:19;:28::i;:::-;-1:-1:-1;;;;;30721:15:0;;;;;;:7;:15;;;;;:46;30788:7;;:20;;30800:7;30788:11;:20::i;:::-;30778:7;:30;30832:10;;:23;;30847:7;30832:14;:23::i;:::-;30819:10;:36;-1:-1:-1;;;30486:377:0:o;32513:396::-;14710:12;:10;:12::i;:::-;14700:6;;-1:-1:-1;;;;;14700:6:0;;;:22;;;14692:67;;;;;-1:-1:-1;;;14692:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;14692:67:0;;;;;;;;;;;;;;;32608:42:::1;-1:-1:-1::0;;;;;32597:53:0;::::1;;;32589:102;;;;-1:-1:-1::0;;;32589:102:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;32710:24:0;::::1;32729:4;32710:24;;32702:33;;;::::0;::::1;;-1:-1:-1::0;;;;;32755:26:0;::::1;;::::0;;;:17:::1;:26;::::0;;;;;::::1;;32754:27;32746:70;;;::::0;;-1:-1:-1;;;32746:70:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;32827:26:0::1;;::::0;;;:17:::1;:26;::::0;;;;:33;;-1:-1:-1;;32827:33:0::1;32856:4;32827:33:::0;;::::1;::::0;;;32871:16:::1;:30:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;32871:30:0::1;::::0;;::::1;::::0;;32513:396::o;30871:436::-;30961:7;31000;;30989;:18;;30981:62;;;;;-1:-1:-1;;;30981:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;31059:17;31054:246;;31094:15;31118:19;31129:7;31118:10;:19::i;:::-;-1:-1:-1;31093:44:0;;-1:-1:-1;31152:14:0;;-1:-1:-1;;;;;31152:14:0;31054:246;31201:23;31232:19;31243:7;31232:10;:19::i;:::-;-1:-1:-1;31199:52:0;;-1:-1:-1;31266:22:0;;-1:-1:-1;;;;;31266:22:0;25227:38;;;:::o;25310:40::-;;;-1:-1:-1;;;25310:40:0;;;;;:::o;39256:156::-;14710:12;:10;:12::i;:::-;14700:6;;-1:-1:-1;;;;;14700:6:0;;;:22;;;14692:67;;;;;-1:-1:-1;;;14692:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;14692:67:0;;;;;;;;;;;;;;;39310:23:::1;39336:24;39354:4;39336:9;:24::i;:::-;39310:50;;39371:33;39388:15;39371:16;:33::i;31576:444::-:0;14710:12;:10;:12::i;:::-;14700:6;;-1:-1:-1;;;;;14700:6:0;;;:22;;;14692:67;;;;;-1:-1:-1;;;14692:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;14692:67:0;;;;;;;;;;;;;;;31669:42:::1;-1:-1:-1::0;;;;;31658:53:0;::::1;;;31650:100;;;;-1:-1:-1::0;;;31650:100:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;31770:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;31769:21;31761:61;;;::::0;;-1:-1:-1;;;31761:61:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;31836:16:0;::::1;31855:1;31836:16:::0;;;:7:::1;:16;::::0;;;;;:20;31833:108:::1;;-1:-1:-1::0;;;;;31912:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;31892:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;31873:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;31833:108:::1;-1:-1:-1::0;;;;;31951:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;31951:27:0::1;31974:4;31951:27:::0;;::::1;::::0;;;31989:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;31989:23:0::1;::::0;;::::1;::::0;;31576:444::o;33946:123::-;-1:-1:-1;;;;;34034:27:0;34010:4;34034:27;;;:18;:27;;;;;;;;;33946:123::o;46004:169::-;14710:12;:10;:12::i;:::-;14700:6;;-1:-1:-1;;;;;14700:6:0;;;:22;;;14692:67;;;;;-1:-1:-1;;;14692:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;14692:67:0;;;;;;;;;;;;;;;46090:1:::1;46080:6;:11;;:27;;;;;46105:2;46095:6;:12;;46080:27;46072:66;;;::::0;;-1:-1:-1;;;46072:66:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;46149:7;:16:::0;46004:169::o;28595:198::-;-1:-1:-1;;;;;28685:20:0;;28661:7;28685:20;;;:11;:20;;;;;;;;28681:49;;;-1:-1:-1;;;;;;28714:16:0;;;;;;:7;:16;;;;;;28707:23;;28681:49;-1:-1:-1;;;;;28768:16:0;;;;;;:7;:16;;;;;;28748:37;;:19;:37::i;15124:148::-;14710:12;:10;:12::i;:::-;14700:6;;-1:-1:-1;;;;;14700:6:0;;;:22;;;14692:67;;;;;-1:-1:-1;;;14692:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;14692:67:0;;;;;;;;;;;;;;;15231:1:::1;15215:6:::0;;15194:40:::1;::::0;-1:-1:-1;;;;;15215:6:0;;::::1;::::0;15194:40:::1;::::0;15231:1;;15194:40:::1;15262:1;15245:19:::0;;-1:-1:-1;;;;;;15245:19:0::1;::::0;;15124:148::o;32917:500::-;14710:12;:10;:12::i;:::-;14700:6;;-1:-1:-1;;;;;14700:6:0;;;:22;;;14692:67;;;;;-1:-1:-1;;;14692:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;14692:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;33006:26:0;::::1;;::::0;;;:17:::1;:26;::::0;;;;;::::1;;32998:65;;;::::0;;-1:-1:-1;;;32998:65:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;33079:9;33074:336;33098:16;:23:::0;33094:27;::::1;33074:336;;;33170:7;-1:-1:-1::0;;;;;33147:30:0::1;:16;33164:1;33147:19;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;33147:19:0::1;:30;33143:256;;;33220:16;33237:23:::0;;-1:-1:-1;;33237:27:0;;;33220:45;::::1;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;33198:16:::1;:19:::0;;-1:-1:-1;;;;;33220:45:0;;::::1;::::0;33215:1;;33198:19;::::1;;;;;;::::0;;;::::1;::::0;;;;;;::::1;:67:::0;;-1:-1:-1;;;;;;33198:67:0::1;-1:-1:-1::0;;;;;33198:67:0;;::::1;;::::0;;33284:26;;::::1;::::0;;:17:::1;:26:::0;;;;;;:34;;-1:-1:-1;;33284:34:0::1;::::0;;33337:16:::1;:22:::0;;;::::1;;;33143:256;33123:3;;33074:336;;30120:120:::0;-1:-1:-1;;;;;30212:20:0;30188:4;30212:20;;;:11;:20;;;;;;;;;30120:120::o;14490:79::-;14528:7;14555:6;-1:-1:-1;;;;;14555:6:0;14490:79;:::o;28306:87::-;28378:7;28371:14;;;;;;;;-1:-1:-1;;28371:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28345:13;;28371:14;;28378:7;;28371:14;;28378:7;28371:14;;;;;;;;;;;;;;;;;;;;;;;;29843:269;29936:4;29953:129;29962:12;:10;:12::i;:::-;29976:7;29985:96;30024:15;29985:96;;;;;;;;;;;;;;;;;:11;:25;29997:12;:10;:12::i;:::-;-1:-1:-1;;;;;29985:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;29985:25:0;;;:34;;;;;;;;;;;:96;:38;:96::i;46181:211::-;14710:12;:10;:12::i;:::-;14700:6;;-1:-1:-1;;;;;14700:6:0;;;:22;;;14692:67;;;;;-1:-1:-1;;;14692:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;14692:67:0;;;;;;;;;;;;;;;46285:1:::1;46269:12;:17;;:39;;;;;46306:2;46290:12;:18;;46269:39;46261:84;;;::::0;;-1:-1:-1;;;46261:84:0;;::::1;;::::0;::::1;::::0;;;;;;;::::1;::::0;;;;;;;;;;;;;::::1;;46356:13;:28:::0;46181:211::o;28801:167::-;28879:4;28896:42;28906:12;:10;:12::i;:::-;28920:9;28931:6;28896:9;:42::i;30248:135::-;14710:12;:10;:12::i;:::-;14700:6;;-1:-1:-1;;;;;14700:6:0;;;:22;;;14692:67;;;;;-1:-1:-1;;;14692:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;14692:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;30337:27:0;;;::::1;;::::0;;;:18:::1;:27;::::0;;;;:38;;-1:-1:-1;;30337:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;30248:135::o;46400:211::-;14710:12;:10;:12::i;:::-;14700:6;;-1:-1:-1;;;;;14700:6:0;;;:22;;;14692:67;;;;;-1:-1:-1;;;14692:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;14692:67:0;;;;;;;;;;;;;;;46504:1:::1;46488:12;:17;;:39;;;;;46525:2;46509:12;:18;;46488:39;46480:84;;;::::0;;-1:-1:-1;;;46480:84:0;;::::1;;::::0;::::1;::::0;;;;;;;::::1;::::0;;;;;;;;;;;;;::::1;;46575:13;:28:::0;46400:211::o;39587:148::-;14710:12;:10;:12::i;:::-;14700:6;;-1:-1:-1;;;;;14700:6:0;;;:22;;;14692:67;;;;;-1:-1:-1;;;14692:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;14692:67:0;;;;;;;;;;;;;;;39681:21:::1;:46:::0;;;::::1;;-1:-1:-1::0;;;39681:46:0::1;-1:-1:-1::0;;;;39681:46:0;;::::1;::::0;;;::::1;::::0;;39587:148::o;47000:219::-;14710:12;:10;:12::i;:::-;14700:6;;-1:-1:-1;;;;;14700:6:0;;;:22;;;14692:67;;;;;-1:-1:-1;;;14692:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;14692:67:0;;;;;;;;;;;;;;;47094:117:::1;47138:5;47094:25;47106:12;47094:7;;:11;;:25;;;;:::i;:::-;:29:::0;::::1;:117::i;:::-;47079:12;:132:::0;-1:-1:-1;47000:219:0:o;28976:143::-;-1:-1:-1;;;;;29084:18:0;;;29057:7;29084:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;28976:143::o;15424:244::-;14710:12;:10;:12::i;:::-;14700:6;;-1:-1:-1;;;;;14700:6:0;;;:22;;;14692:67;;;;;-1:-1:-1;;;14692:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;14692:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;15513:22:0;::::1;15505:73;;;;-1:-1:-1::0;;;15505:73:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15615:6;::::0;;15594:38:::1;::::0;-1:-1:-1;;;;;15594:38:0;;::::1;::::0;15615:6;::::1;::::0;15594:38:::1;::::0;::::1;15643:6;:17:::0;;-1:-1:-1;;;;;;15643:17:0::1;-1:-1:-1::0;;;;;15643:17:0;;;::::1;::::0;;;::::1;::::0;;15424:244::o;39420:159::-;14710:12;:10;:12::i;:::-;14700:6;;-1:-1:-1;;;;;14700:6:0;;;:22;;;14692:67;;;;;-1:-1:-1;;;14692:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;14692:67:0;;;;;;;;;;;;;;;39501:21:::1;39533:38;39501:21:::0;39533:18:::1;:38::i;45782:96::-:0;45858:12;;45782:96;:::o;45886:110::-;45967:21;45886:110;:::o;311:106::-;399:10;311:106;:::o;34077:337::-;-1:-1:-1;;;;;34170:19:0;;34162:68;;;;-1:-1:-1;;;34162:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;34249:21:0;;34241:68;;;;-1:-1:-1;;;34241:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;34322:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;34374:32;;;;;;;;;;;;;;;;;34077:337;;;:::o;34422:2118::-;-1:-1:-1;;;;;34519:20:0;;34511:70;;;;-1:-1:-1;;;34511:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;34600:23:0;;34592:71;;;;-1:-1:-1;;;34592:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34691:1;34682:6;:10;34674:64;;;;-1:-1:-1;;;34674:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;34758:25:0;;;;;;:17;:25;;;;;;;;34757:26;34749:62;;;;;-1:-1:-1;;;34749:62:0;;;;;;;;;;;;-1:-1:-1;;;34749:62:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;34831:28:0;;;;;;:17;:28;;;;;;;;34830:29;34822:65;;;;;-1:-1:-1;;;34822:65:0;;;;;;;;;;;;-1:-1:-1;;;34822:65:0;;;;;;;;;;;;;;;34925:9;34907:28;;;;:17;:28;;;;;;;;34906:29;34898:65;;;;;-1:-1:-1;;;34898:65:0;;;;;;;;;;;;-1:-1:-1;;;34898:65:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;34980:24:0;;;;;;:16;:24;;;;;;;;34979:25;:57;;;;-1:-1:-1;;;;;;35009:27:0;;;;;;:16;:27;;;;;;;;35008:28;34979:57;34976:164;;;35071:12;;35061:6;:22;;35053:75;;;;-1:-1:-1;;;35053:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35434:28;35465:24;35483:4;35465:9;:24::i;:::-;35434:55;;35529:12;;35505:20;:36;35502:112;;-1:-1:-1;35590:12:0;;35502:112;35677:30;;35723:16;;35653:54;;;;;-1:-1:-1;;;35723:16:0;;;;35722:17;:56;;;;-1:-1:-1;35757:21:0;;-1:-1:-1;;;35757:21:0;;;;35722:56;:93;;;;;35796:19;35722:93;:134;;;;;35843:13;-1:-1:-1;;;;;35833:23:0;:6;-1:-1:-1;;;;;35833:23:0;;;35722:134;:176;;;;-1:-1:-1;;;;;;35874:24:0;;;;;;:16;:24;;;;;;;;35873:25;35722:176;:221;;;;-1:-1:-1;;;;;;35916:27:0;;;;;;:16;:27;;;;;;;;35915:28;35722:221;35718:397;;;35993:30;;35970:53;;36067:36;36082:20;36067:14;:36::i;:::-;-1:-1:-1;;;;;36307:26:0;;36188:12;36307:26;;;:18;:26;;;;;;36203:4;;36307:26;;;:59;;-1:-1:-1;;;;;;36337:29:0;;;;;;:18;:29;;;;;;;;36307:59;36304:105;;;-1:-1:-1;36392:5:0;36304:105;36482:50;36497:6;36505:9;36516:6;36524:7;36482:14;:50::i;:::-;34422:2118;;;;;;:::o;4398:192::-;4484:7;4520:12;4512:6;;;;4504:29;;;;-1:-1:-1;;;4504:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4556:5:0;;;4398:192::o;44954:163::-;44995:7;45016:15;45033;45052:19;:17;:19::i;:::-;45015:56;;-1:-1:-1;45015:56:0;-1:-1:-1;45089:20:0;45015:56;;45089:11;:20::i;:::-;45082:27;;;;44954:163;:::o;5776:132::-;5834:7;5861:39;5865:1;5868;5861:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;5854:46;5776:132;-1:-1:-1;;;5776:132:0:o;3513:181::-;3571:7;3603:5;;;3627:6;;;;3619:46;;;;;-1:-1:-1;;;3619:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;43649:518;43708:7;43717;43726;43735;43744;43753;43774:23;43799:12;43813:30;43847:63;43859:7;43868;;43877:32;43895:13;;43877;;:17;;:32;;;;:::i;:::-;43847:11;:63::i;:::-;43773:137;;;;;;43921:19;43943:10;:8;:10::i;:::-;43921:32;;43965:15;43982:23;44007:12;44023:39;44035:7;44044:4;44050:11;44023;:39::i;:::-;43964:98;;-1:-1:-1;43964:98:0;-1:-1:-1;43964:98:0;-1:-1:-1;44113:15:0;;-1:-1:-1;44130:4:0;;-1:-1:-1;44136:22:0;;-1:-1:-1;;;;;43649:518:0;;;;;;;:::o;3968:136::-;4026:7;4053:43;4057:1;4060;4053:43;;;;;;;;;;;;;;;;;:3;:43::i;37877:589::-;38027:16;;;38041:1;38027:16;;;38003:21;38027:16;;;;;38003:21;38027:16;;;;;;;;;;-1:-1:-1;38027:16:0;38003:40;;38072:4;38054;38059:1;38054:7;;;;;;;;;;;;;:23;-1:-1:-1;;;;;38054:23:0;;;-1:-1:-1;;;;;38054:23:0;;;;;38098:15;-1:-1:-1;;;;;38098:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;38098:22:0;38088:7;;:4;;38093:1;;38088:7;;;;;;;;;;;:32;-1:-1:-1;;;;;38088:32:0;;;-1:-1:-1;;;;;38088:32:0;;;;;38133:62;38150:4;38165:15;38183:11;38133:8;:62::i;:::-;38234:15;-1:-1:-1;;;;;38234:66:0;;38315:11;38341:1;38385:4;38412;38432:15;38234:224;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;38234:224:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4840:471;4898:7;5143:6;5139:47;;-1:-1:-1;5173:1:0;5166:8;;5139:47;5210:5;;;5214:1;5210;:5;:1;5234:5;;;;;:10;5226:56;;;;-1:-1:-1;;;5226:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38995:111;39058:23;;:40;;-1:-1:-1;;;;;39058:23:0;;;;:40;;;;;39091:6;;39058:23;:40;:23;:40;39091:6;39058:23;:40;;;;;;;;;;;;;;;;;;;36548:1321;25880:16;:23;;-1:-1:-1;;;;25880:23:0;-1:-1:-1;;;25880:23:0;;;36717:13:::1;::::0;25880:16;36699:13;25880:23;;36655:77:::1;::::0;36699:32:::1;::::0;:17:::1;:32::i;:::-;36680:13;::::0;36655:39:::1;::::0;:20;;:24:::1;:39::i;:77::-;36633:99:::0;-1:-1:-1;36743:17:0::1;36763:37;:20:::0;36633:99;36763:24:::1;:37::i;:::-;36743:57:::0;-1:-1:-1;36864:12:0::1;36879:16;36743:57:::0;36893:1:::1;36879:13;:16::i;:::-;36864:31:::0;-1:-1:-1;36906:17:0::1;36926:19;:9:::0;36864:31;36926:13:::1;:19::i;:::-;36906:39:::0;-1:-1:-1;37248:21:0::1;37223:22;37337:21;:4:::0;37346:11;37337:8:::1;:21::i;:::-;37314:44;;37369:30;37386:12;37369:16;:30::i;:::-;37530:16;37549:41;:21;37575:14:::0;37549:25:::1;:41::i;:::-;37530:60:::0;-1:-1:-1;37601:18:0::1;37622:36;37645:12:::0;37622:18:::1;37530:60:::0;37635:4;37622:12:::1;:18::i;:36::-;37601:57;;37708:35;37721:9;37732:10;37708:12;:35::i;:::-;37761:43;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;::::1;::::0;;;;;;;::::1;37817:44;37836:24;:8:::0;37849:10;37836:12:::1;:24::i;:::-;37817:18;:44::i;:::-;-1:-1:-1::0;;25926:16:0;:24;;-1:-1:-1;;;;25926:24:0;;;-1:-1:-1;;;;;;;36548:1321:0:o;39743:819::-;39855:7;39851:40;;39877:14;:12;:14::i;:::-;-1:-1:-1;;;;;39908:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;39932:22:0;;;;;;:11;:22;;;;;;;;39931:23;39908:46;39904:597;;;39971:48;39993:6;40001:9;40012:6;39971:21;:48::i;:::-;39904:597;;;-1:-1:-1;;;;;40042:19:0;;;;;;:11;:19;;;;;;;;40041:20;:46;;;;-1:-1:-1;;;;;;40065:22:0;;;;;;:11;:22;;;;;;;;40041:46;40037:464;;;40104:46;40124:6;40132:9;40143:6;40104:19;:46::i;40037:464::-;-1:-1:-1;;;;;40173:19:0;;;;;;:11;:19;;;;;;;;40172:20;:47;;;;-1:-1:-1;;;;;;40197:22:0;;;;;;:11;:22;;;;;;;;40196:23;40172:47;40168:333;;;40236:44;40254:6;40262:9;40273:6;40236:17;:44::i;40168:333::-;-1:-1:-1;;;;;40302:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;40325:22:0;;;;;;:11;:22;;;;;;;;40302:45;40298:203;;;40364:48;40386:6;40394:9;40405:6;40364:21;:48::i;40298:203::-;40445:44;40463:6;40471:9;40482:6;40445:17;:44::i;:::-;40517:7;40513:41;;40539:15;:13;:15::i;:::-;39743:819;;;;:::o;45125:555::-;45222:7;;45258;;45175;;;;;45276:289;45300:9;:16;45296:20;;45276:289;;;45366:7;45342;:21;45350:9;45360:1;45350:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;45350:12:0;45342:21;;;;;;;;;;;;;:31;;:66;;;45401:7;45377;:21;45385:9;45395:1;45385:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;45385:12:0;45377:21;;;;;;;;;;;;;:31;45342:66;45338:97;;;45418:7;;45427;;45410:25;;;;;;;;;45338:97;45460:34;45472:7;:21;45480:9;45490:1;45480:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;45480:12:0;45472:21;;;;;;;;;;;;;45460:7;;:11;:34::i;:::-;45450:44;;45519:34;45531:7;:21;45539:9;45549:1;45539:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;45539:12:0;45531:21;;;;;;;;;;;;;45519:7;;:11;:34::i;:::-;45509:44;-1:-1:-1;45318:3:0;;45276:289;;;-1:-1:-1;45601:7:0;;45589;;:20;;:11;:20::i;:::-;45579:7;:30;45575:61;;;45619:7;;45628;;45611:25;;;;;;;;45575:61;45655:7;;-1:-1:-1;45664:7:0;-1:-1:-1;45125:555:0;;;:::o;6393:278::-;6479:7;6514:12;6507:5;6499:28;;;;-1:-1:-1;;;6499:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6538:9;6554:1;6550;:5;;;;;;;6393:278;-1:-1:-1;;;;;6393:278:0:o;44175:429::-;44282:7;;;;44335:28;44359:3;44335:19;:7;44347:6;44335:11;:19::i;:28::-;44320:43;-1:-1:-1;44374:30:0;44407:43;44446:3;44407:34;:7;44419:21;44407:11;:34::i;:43::-;44374:76;-1:-1:-1;44461:23:0;44487:44;44509:21;44487:17;:7;44499:4;44487:11;:17::i;:::-;:21;;:44::i;:::-;44461:70;44567:4;;-1:-1:-1;44573:22:0;;-1:-1:-1;44175:429:0;;-1:-1:-1;;;;;44175:429:0:o;44612:334::-;44707:7;;;;44763:24;:7;44775:11;44763;:24::i;:::-;44745:42;-1:-1:-1;44798:12:0;44813:21;:4;44822:11;44813:8;:21::i;:::-;44798:36;-1:-1:-1;44845:23:0;44871:17;:7;44798:36;44871:11;:17::i;:::-;44907:7;;;;-1:-1:-1;44933:4:0;;-1:-1:-1;44612:334:0;;-1:-1:-1;;;;;44612:334:0:o;38474:513::-;38622:62;38639:4;38654:15;38672:11;38622:8;:62::i;:::-;38727:15;-1:-1:-1;;;;;38727:31:0;;38766:9;38799:4;38819:11;38845:1;38888;38931:7;:5;:7::i;:::-;38953:15;38727:252;;;;;;;;;;;;;-1:-1:-1;;;;;38727:252:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;38727:252:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33425:332;33471:7;;:12;:34;;;;-1:-1:-1;33487:13:0;;:18;33471:34;:56;;;;-1:-1:-1;33509:13:0;;:18;33471:56;33468:68;;;33529:7;;33468:68;33566:7;;;33548:15;:25;33608:13;;;33584:21;:37;33656:13;;;33632:21;:37;-1:-1:-1;33682:11:0;;;;33704:17;;;;33732;33425:332;:::o;41717:590::-;41820:15;41837:23;41862:12;41876:23;41901:12;41915:27;41946:19;41957:7;41946:10;:19::i;:::-;-1:-1:-1;;;;;41994:15:0;;;;;;:7;:15;;;;;;41819:146;;-1:-1:-1;41819:146:0;;-1:-1:-1;41819:146:0;;-1:-1:-1;41819:146:0;-1:-1:-1;41819:146:0;-1:-1:-1;41819:146:0;-1:-1:-1;41994:28:0;;42014:7;41994:19;:28::i;:::-;-1:-1:-1;;;;;41976:15:0;;;;;;:7;:15;;;;;;;;:46;;;;42051:7;:15;;;;:28;;42071:7;42051:19;:28::i;:::-;-1:-1:-1;;;;;42033:15:0;;;;;;;:7;:15;;;;;;:46;;;;42111:18;;;;;;;:39;;42134:15;42111:22;:39::i;:::-;-1:-1:-1;;;;;42090:18:0;;;;;;:7;:18;;;;;:60;42161:44;42185:19;42161:23;:44::i;:::-;42216:23;42228:4;42234;42216:11;:23::i;:::-;42272:9;-1:-1:-1;;;;;42255:44:0;42264:6;-1:-1:-1;;;;;42255:44:0;;42283:15;42255:44;;;;;;;;;;;;;;;;;;41717:590;;;;;;;;;:::o;41107:602::-;41208:15;41225:23;41250:12;41264:23;41289:12;41303:27;41334:19;41345:7;41334:10;:19::i;:::-;-1:-1:-1;;;;;41382:15:0;;;;;;:7;:15;;;;;;41207:146;;-1:-1:-1;41207:146:0;;-1:-1:-1;41207:146:0;;-1:-1:-1;41207:146:0;-1:-1:-1;41207:146:0;-1:-1:-1;41207:146:0;-1:-1:-1;41382:28:0;;41207:146;41382:19;:28::i;:::-;-1:-1:-1;;;;;41364:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;41442:18;;;;;:7;:18;;;;;:39;;41465:15;41442:22;:39::i;:::-;-1:-1:-1;;;;;41421:18:0;;;;;;:7;:18;;;;;;;;:60;;;;41513:7;:18;;;;:39;;41536:15;41513:22;:39::i;40570:529::-;40669:15;40686:23;40711:12;40725:23;40750:12;40764:27;40795:19;40806:7;40795:10;:19::i;:::-;-1:-1:-1;;;;;40843:15:0;;;;;;:7;:15;;;;;;40668:146;;-1:-1:-1;40668:146:0;;-1:-1:-1;40668:146:0;;-1:-1:-1;40668:146:0;-1:-1:-1;40668:146:0;-1:-1:-1;40668:146:0;-1:-1:-1;40843:28:0;;40668:146;40843:19;:28::i;42315:661::-;42418:15;42435:23;42460:12;42474:23;42499:12;42513:27;42544:19;42555:7;42544:10;:19::i;:::-;-1:-1:-1;;;;;42592:15:0;;;;;;:7;:15;;;;;;42417:146;;-1:-1:-1;42417:146:0;;-1:-1:-1;42417:146:0;;-1:-1:-1;42417:146:0;-1:-1:-1;42417:146:0;-1:-1:-1;42417:146:0;-1:-1:-1;42592:28:0;;42612:7;42592:19;:28::i;:::-;-1:-1:-1;;;;;42574:15:0;;;;;;:7;:15;;;;;;;;:46;;;;42649:7;:15;;;;:28;;42669:7;42649:19;:28::i;33765:173::-;33819:15;;33809:7;:25;33861:21;;33845:13;:37;33909:21;;33893:13;:37;33765:173::o;42984:408::-;43065:19;43087:10;:8;:10::i;:::-;43065:32;-1:-1:-1;43108:27:0;43138:36;:19;43065:32;43138:23;:36::i;:::-;43226:4;43210:22;;;;:7;:22;;;;;;43108:66;;-1:-1:-1;43210:47:0;;43108:66;43210:26;:47::i;:::-;43201:4;43185:22;;;;:7;:22;;;;;;;;:72;;;;43271:11;:26;;;;;;43268:116;;;43353:4;43337:22;;;;:7;:22;;;;;;:47;;43364:19;43337:26;:47::i;:::-;43328:4;43312:22;;;;:7;:22;;;;;:72;43268:116;42984:408;;;:::o;43400:147::-;43478:7;;:17;;43490:4;43478:11;:17::i;:::-;43468:7;:27;43519:10;;:20;;43534:4;43519:14;:20::i;:::-;43506:10;:33;-1:-1:-1;;43400:147:0:o
Swarm Source
ipfs://93dfa777934e90faa7aaa9eef35db3de8dd723c650a655d3b86c220eb0c67afe
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.