Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 1 from a total of 1 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Swap With ETH | 22307409 | 292 days ago | IN | 0.02 ETH | 0.00018202 |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
FixedTokenBSwap
Compiler Version
v0.8.26+commit.8a97fa7a
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2025-04-20
*/
// File: @uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router01.sol
pragma solidity >=0.6.2;
interface IUniswapV2Router01 {
function factory() external pure returns (address);
function WETH() external pure returns (address);
function addLiquidity(
address tokenA,
address tokenB,
uint amountADesired,
uint amountBDesired,
uint amountAMin,
uint amountBMin,
address to,
uint deadline
) external returns (uint amountA, uint amountB, uint liquidity);
function addLiquidityETH(
address token,
uint amountTokenDesired,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external payable returns (uint amountToken, uint amountETH, uint liquidity);
function removeLiquidity(
address tokenA,
address tokenB,
uint liquidity,
uint amountAMin,
uint amountBMin,
address to,
uint deadline
) external returns (uint amountA, uint amountB);
function removeLiquidityETH(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external returns (uint amountToken, uint amountETH);
function removeLiquidityWithPermit(
address tokenA,
address tokenB,
uint liquidity,
uint amountAMin,
uint amountBMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountA, uint amountB);
function removeLiquidityETHWithPermit(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountToken, uint amountETH);
function swapExactTokensForTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external returns (uint[] memory amounts);
function swapTokensForExactTokens(
uint amountOut,
uint amountInMax,
address[] calldata path,
address to,
uint deadline
) external returns (uint[] memory amounts);
function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
external
payable
returns (uint[] memory amounts);
function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
external
returns (uint[] memory amounts);
function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
external
returns (uint[] memory amounts);
function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
external
payable
returns (uint[] memory amounts);
function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}
// File: @uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router02.sol
pragma solidity >=0.6.2;
interface IUniswapV2Router02 is IUniswapV2Router01 {
function removeLiquidityETHSupportingFeeOnTransferTokens(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external returns (uint amountETH);
function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountETH);
function swapExactTokensForTokensSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
function swapExactETHForTokensSupportingFeeOnTransferTokens(
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external payable;
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
}
// File: @openzeppelin/contracts/token/ERC20/IERC20.sol
// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/IERC20.sol)
pragma solidity ^0.8.20;
/**
* @dev Interface of the ERC-20 standard as defined in the ERC.
*/
interface IERC20 {
/**
* @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 Returns the value of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the value of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves a `value` amount of tokens from the caller's account to `to`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address to, uint256 value) 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 a `value` amount of tokens 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 value) external returns (bool);
/**
* @dev Moves a `value` amount of tokens from `from` to `to` using the
* allowance mechanism. `value` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transferFrom(address from, address to, uint256 value) external returns (bool);
}
// File: @openzeppelin/contracts/utils/Context.sol
// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)
pragma solidity ^0.8.20;
/**
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
function _contextSuffixLength() internal view virtual returns (uint256) {
return 0;
}
}
// File: @openzeppelin/contracts/access/Ownable.sol
// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)
pragma solidity ^0.8.20;
/**
* @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.
*
* The initial owner is set to the address provided by the deployer. 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.
*/
abstract contract Ownable is Context {
address private _owner;
/**
* @dev The caller account is not authorized to perform an operation.
*/
error OwnableUnauthorizedAccount(address account);
/**
* @dev The owner is not a valid owner account. (eg. `address(0)`)
*/
error OwnableInvalidOwner(address owner);
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the address provided by the deployer as the initial owner.
*/
constructor(address initialOwner) {
if (initialOwner == address(0)) {
revert OwnableInvalidOwner(address(0));
}
_transferOwnership(initialOwner);
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
_checkOwner();
_;
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if the sender is not the owner.
*/
function _checkOwner() internal view virtual {
if (owner() != _msgSender()) {
revert OwnableUnauthorizedAccount(_msgSender());
}
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby disabling any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
_transferOwnership(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 {
if (newOwner == address(0)) {
revert OwnableInvalidOwner(address(0));
}
_transferOwnership(newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Internal function without access restriction.
*/
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}
// File: @openzeppelin/contracts/security/ReentrancyGuard.sol
// OpenZeppelin Contracts (last updated v4.9.0) (security/ReentrancyGuard.sol)
pragma solidity ^0.8.0;
/**
* @dev Contract module that helps prevent reentrant calls to a function.
*
* Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier
* available, which can be applied to functions to make sure there are no nested
* (reentrant) calls to them.
*
* Note that because there is a single `nonReentrant` guard, functions marked as
* `nonReentrant` may not call one another. This can be worked around by making
* those functions `private`, and then adding `external` `nonReentrant` entry
* points to them.
*
* TIP: If you would like to learn more about reentrancy and alternative ways
* to protect against it, check out our blog post
* https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].
*/
abstract contract ReentrancyGuard {
// Booleans are more expensive than uint256 or any type that takes up a full
// word because each write operation emits an extra SLOAD to first read the
// slot's contents, replace the bits taken up by the boolean, and then write
// back. This is the compiler's defense against contract upgrades and
// pointer aliasing, and it cannot be disabled.
// The values being non-zero value makes deployment a bit more expensive,
// but in exchange the refund on every call to nonReentrant will be lower in
// amount. Since refunds are capped to a percentage of the total
// transaction's gas, it is best to keep them low in cases like this one, to
// increase the likelihood of the full refund coming into effect.
uint256 private constant _NOT_ENTERED = 1;
uint256 private constant _ENTERED = 2;
uint256 private _status;
constructor() {
_status = _NOT_ENTERED;
}
/**
* @dev Prevents a contract from calling itself, directly or indirectly.
* Calling a `nonReentrant` function from another `nonReentrant`
* function is not supported. It is possible to prevent this from happening
* by making the `nonReentrant` function external, and making it call a
* `private` function that does the actual work.
*/
modifier nonReentrant() {
_nonReentrantBefore();
_;
_nonReentrantAfter();
}
function _nonReentrantBefore() private {
// On the first call to nonReentrant, _status will be _NOT_ENTERED
require(_status != _ENTERED, "ReentrancyGuard: reentrant call");
// Any calls to nonReentrant after this point will fail
_status = _ENTERED;
}
function _nonReentrantAfter() private {
// By storing the original value once again, a refund is triggered (see
// https://eips.ethereum.org/EIPS/eip-2200)
_status = _NOT_ENTERED;
}
/**
* @dev Returns true if the reentrancy guard is currently set to "entered", which indicates there is a
* `nonReentrant` function in the call stack.
*/
function _reentrancyGuardEntered() internal view returns (bool) {
return _status == _ENTERED;
}
}
// File: @openzeppelin/contracts/security/Pausable.sol
// OpenZeppelin Contracts (last updated v4.7.0) (security/Pausable.sol)
pragma solidity ^0.8.0;
/**
* @dev Contract module which allows children to implement an emergency stop
* mechanism that can be triggered by an authorized account.
*
* This module is used through inheritance. It will make available the
* modifiers `whenNotPaused` and `whenPaused`, which can be applied to
* the functions of your contract. Note that they will not be pausable by
* simply including this module, only once the modifiers are put in place.
*/
abstract contract Pausable is Context {
/**
* @dev Emitted when the pause is triggered by `account`.
*/
event Paused(address account);
/**
* @dev Emitted when the pause is lifted by `account`.
*/
event Unpaused(address account);
bool private _paused;
/**
* @dev Initializes the contract in unpaused state.
*/
constructor() {
_paused = false;
}
/**
* @dev Modifier to make a function callable only when the contract is not paused.
*
* Requirements:
*
* - The contract must not be paused.
*/
modifier whenNotPaused() {
_requireNotPaused();
_;
}
/**
* @dev Modifier to make a function callable only when the contract is paused.
*
* Requirements:
*
* - The contract must be paused.
*/
modifier whenPaused() {
_requirePaused();
_;
}
/**
* @dev Returns true if the contract is paused, and false otherwise.
*/
function paused() public view virtual returns (bool) {
return _paused;
}
/**
* @dev Throws if the contract is paused.
*/
function _requireNotPaused() internal view virtual {
require(!paused(), "Pausable: paused");
}
/**
* @dev Throws if the contract is not paused.
*/
function _requirePaused() internal view virtual {
require(paused(), "Pausable: not paused");
}
/**
* @dev Triggers stopped state.
*
* Requirements:
*
* - The contract must not be paused.
*/
function _pause() internal virtual whenNotPaused {
_paused = true;
emit Paused(_msgSender());
}
/**
* @dev Returns to normal state.
*
* Requirements:
*
* - The contract must be paused.
*/
function _unpause() internal virtual whenPaused {
_paused = false;
emit Unpaused(_msgSender());
}
}
// File: contracts/rtvSwap.sol
pragma solidity ^0.8.20;
interface IWETH is IERC20 {
function deposit() external payable;
function withdraw(uint256) external;
}
contract FixedTokenBSwap is Ownable, Pausable, ReentrancyGuard {
IUniswapV2Router02 public router;
address public tokenB;
address public immutable WETH;
uint256 public tokenBOut = 10 * 1e18;
int256 public timezoneOffset = 8 * 3600;
uint256 public dailyCap = 1000 * 1e18;
uint256 public todayTotalOut;
uint256 public lastRecordedDay;
mapping(address => uint256) public lastSwappedAt;
event Swapped(
address indexed user,
address indexed tokenA,
address indexed tokenB,
uint256 amountAIn,
uint256 amountBOut,
uint256 timestamp
);
event TokenBUpdated(address newTokenB);
event TokenBOutUpdated(uint256 newAmount);
event RouterUpdated(address newRouter);
event TimezoneOffsetUpdated(int256 newOffset);
event DailyCapUpdated(uint256 newCap);
constructor(address _router, address _tokenB, address _weth) Ownable(msg.sender) {
require(_router != address(0) && _tokenB != address(0) && _weth != address(0), "Zero address");
router = IUniswapV2Router02(_router);
tokenB = _tokenB;
WETH = _weth;
}
modifier dailyLimitCheck(address user) {
uint256 currentDay = _currentDay();
require(_dayFromTimestamp(lastSwappedAt[user]) != currentDay, "Already swapped today");
if (currentDay != lastRecordedDay) {
todayTotalOut = 0;
lastRecordedDay = currentDay;
}
require(todayTotalOut + tokenBOut <= dailyCap, "Daily cap exceeded");
_;
lastSwappedAt[user] = block.timestamp;
todayTotalOut += tokenBOut;
}
function swap(address[] calldata path, uint256 amountInMax) external whenNotPaused nonReentrant dailyLimitCheck(msg.sender) {
require(path.length >= 2 && path[path.length - 1] == tokenB, "Invalid path");
address tokenA = path[0];
require(tokenA != tokenB, "TokenA cannot be TokenB");
uint256[] memory amountsIn = router.getAmountsIn(tokenBOut, path);
require(amountInMax >= amountsIn[0], "amountInMax too low");
router.swapTokensForExactTokens(
tokenBOut,
amountInMax,
path,
msg.sender,
block.timestamp
);
emit Swapped(msg.sender, tokenA, tokenB, amountsIn[0], tokenBOut, block.timestamp);
}
function swapWithETH(uint256 amountInMax) external payable whenNotPaused nonReentrant dailyLimitCheck(msg.sender) {
address[] memory path = new address[](2);
path[0] = WETH;
path[1] = tokenB;
uint256[] memory amountsIn = router.getAmountsIn(tokenBOut, path);
require(amountInMax >= amountsIn[0], "amountInMax too low");
require(msg.value >= amountsIn[0], "Insufficient ETH");
IWETH(WETH).deposit{value: amountsIn[0]}();
IWETH(WETH).approve(address(router), amountsIn[0]);
router.swapTokensForExactTokens(
tokenBOut,
amountsIn[0],
path,
msg.sender,
block.timestamp
);
if (msg.value > amountsIn[0]) {
payable(msg.sender).transfer(msg.value - amountsIn[0]);
}
emit Swapped(msg.sender, WETH, tokenB, amountsIn[0], tokenBOut, block.timestamp);
}
function getAmountIn(address[] calldata path) external view returns (uint256) {
require(path.length >= 2 && path[path.length - 1] == tokenB, "Invalid path");
return router.getAmountsIn(tokenBOut, path)[0];
}
function canSwap(address user) external view returns (bool) {
return _dayFromTimestamp(lastSwappedAt[user]) != _currentDay();
}
function secondsUntilNextSwap(address user) external view returns (uint256) {
uint256 lastDay = _dayFromTimestamp(lastSwappedAt[user]);
uint256 currDay = _currentDay();
if (currDay > lastDay) return 0;
uint256 nextReset = ((lastDay + 1) * 1 days) - uint256(int256(timezoneOffset));
return nextReset > block.timestamp ? nextReset - block.timestamp : 0;
}
function remainingToday() external view returns (uint256 amount, uint256 resetTimestamp) {
uint256 currentDay = _currentDay();
if (currentDay != lastRecordedDay) return (dailyCap, _startOfNextDay());
if (todayTotalOut >= dailyCap) return (0, _startOfNextDay());
return (dailyCap - todayTotalOut, _startOfNextDay());
}
function getUserState(address user) external view returns (
bool canSwapNow,
uint256 secondsToNext,
uint256 remainingDailyCap,
uint256 nextResetTime,
uint256 lastSwapTimestamp
) {
canSwapNow = _dayFromTimestamp(lastSwappedAt[user]) != _currentDay();
secondsToNext = canSwapNow ? 0 : ((
(_dayFromTimestamp(lastSwappedAt[user]) + 1) * 1 days + uint256(int256(timezoneOffset))
) - block.timestamp);
(remainingDailyCap, nextResetTime) = this.remainingToday();
lastSwapTimestamp = lastSwappedAt[user];
}
function setTokenB(address newTokenB) external onlyOwner {
require(newTokenB != address(0), "Zero address");
tokenB = newTokenB;
emit TokenBUpdated(newTokenB);
}
function setTokenBOut(uint256 newAmount) external onlyOwner {
require(newAmount > 0, "Must be > 0");
tokenBOut = newAmount;
emit TokenBOutUpdated(newAmount);
}
function setRouter(address newRouter) external onlyOwner {
require(newRouter != address(0), "Zero address");
router = IUniswapV2Router02(newRouter);
emit RouterUpdated(newRouter);
}
function setTimezoneOffset(int256 newOffset) external onlyOwner {
require(newOffset >= -86400 && newOffset <= 86400, "Invalid offset");
timezoneOffset = newOffset;
emit TimezoneOffsetUpdated(newOffset);
}
function setDailyCap(uint256 newCap) external onlyOwner {
require(newCap > 0, "Invalid cap");
dailyCap = newCap;
emit DailyCapUpdated(newCap);
}
function pause() external onlyOwner {
_pause();
}
function unpause() external onlyOwner {
_unpause();
}
function _currentDay() internal view returns (uint256) {
return uint256(int256(block.timestamp) + timezoneOffset) / 1 days;
}
function _dayFromTimestamp(uint256 ts) internal view returns (uint256) {
return uint256(int256(ts) + timezoneOffset) / 1 days;
}
function _startOfNextDay() internal view returns (uint256) {
uint256 dayIdx = uint256(int256(block.timestamp) + timezoneOffset) / 1 days;
return ((dayIdx + 1) * 1 days) - uint256(int256(timezoneOffset));
}
receive() external payable {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_router","type":"address"},{"internalType":"address","name":"_tokenB","type":"address"},{"internalType":"address","name":"_weth","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newCap","type":"uint256"}],"name":"DailyCapUpdated","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":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newRouter","type":"address"}],"name":"RouterUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"tokenA","type":"address"},{"indexed":true,"internalType":"address","name":"tokenB","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountAIn","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBOut","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"Swapped","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"int256","name":"newOffset","type":"int256"}],"name":"TimezoneOffsetUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"TokenBOutUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newTokenB","type":"address"}],"name":"TokenBUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"canSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dailyCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"path","type":"address[]"}],"name":"getAmountIn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getUserState","outputs":[{"internalType":"bool","name":"canSwapNow","type":"bool"},{"internalType":"uint256","name":"secondsToNext","type":"uint256"},{"internalType":"uint256","name":"remainingDailyCap","type":"uint256"},{"internalType":"uint256","name":"nextResetTime","type":"uint256"},{"internalType":"uint256","name":"lastSwapTimestamp","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastRecordedDay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastSwappedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"remainingToday","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"resetTimestamp","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"secondsUntilNextSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newCap","type":"uint256"}],"name":"setDailyCap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"int256","name":"newOffset","type":"int256"}],"name":"setTimezoneOffset","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newTokenB","type":"address"}],"name":"setTokenB","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setTokenBOut","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"uint256","name":"amountInMax","type":"uint256"}],"name":"swap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountInMax","type":"uint256"}],"name":"swapWithETH","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"timezoneOffset","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"todayTotalOut","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenB","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenBOut","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60a0604052678ac7230489e80000600455617080600555683635c9adc5dea0000060065534801561002e575f80fd5b50604051611eae380380611eae83398101604081905261004d9161019f565b338061007357604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b61007c81610135565b505f805460ff60a01b19169055600180556001600160a01b038316158015906100ad57506001600160a01b03821615155b80156100c157506001600160a01b03811615155b6100fc5760405162461bcd60e51b815260206004820152600c60248201526b5a65726f206164647265737360a01b604482015260640161006a565b600280546001600160a01b03199081166001600160a01b03958616179091556003805490911692841692909217909155166080526101df565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b038116811461019a575f80fd5b919050565b5f805f606084860312156101b1575f80fd5b6101ba84610184565b92506101c860208501610184565b91506101d660408501610184565b90509250925092565b608051611c9b6102135f395f818161041601528181610a3901528181610bdf01528181610c680152610e5c0152611c9b5ff3fe608060405260043610610198575f3560e01c80637f53c96b116100e7578063b18834aa11610087578063eb33939111610062578063eb33939114610495578063f2fde38b146104aa578063f887ea40146104c9578063fc3c5515146104e8575f80fd5b8063b18834aa14610438578063c0d7865514610457578063e7a358eb14610476575f80fd5b806392bc3117116100c257806392bc3117146103b2578063986c8427146103d1578063ac026169146103e6578063ad5c464814610405575f80fd5b80637f53c96b1461036f5780638456cb59146103825780638da5cb5b14610396575f80fd5b8063416ae768116101525780635f64b55b1161012d5780635f64b55b146102e45780636c7c1cbb1461031b578063711b4a2914610330578063715018a61461035b575f80fd5b8063416ae768146102535780635b2ec32b1461029c5780635c975abb146102bb575f80fd5b806302b2aca0146101a35780630840a44a146101d557806314707538146101f6578063171a5261146102155780633278239b1461022a5780633f4ba83a1461023f575f80fd5b3661019f57005b5f80fd5b3480156101ae575f80fd5b506101c26101bd366004611894565b610511565b6040519081526020015b60405180910390f35b3480156101e0575f80fd5b506101f46101ef3660046118d3565b61063e565b005b348015610201575f80fd5b506101f4610210366004611905565b6106bf565b348015610220575f80fd5b506101c260045481565b348015610235575f80fd5b506101c260085481565b34801561024a575f80fd5b506101f461075a565b34801561025e575f80fd5b5061027261026d366004611905565b61076c565b6040805195151586526020860194909452928401919091526060830152608082015260a0016101cc565b3480156102a7575f80fd5b506101f46102b63660046118d3565b610887565b3480156102c6575f80fd5b505f54600160a01b900460ff165b60405190151581526020016101cc565b3480156102ef575f80fd5b50600354610303906001600160a01b031681565b6040516001600160a01b0390911681526020016101cc565b348015610326575f80fd5b506101c260055481565b34801561033b575f80fd5b506101c261034a366004611905565b60096020525f908152604090205481565b348015610366575f80fd5b506101f4610918565b6101f461037d3660046118d3565b610929565b34801561038d575f80fd5b506101f4610f2b565b3480156103a1575f80fd5b505f546001600160a01b0316610303565b3480156103bd575f80fd5b506102d46103cc366004611905565b610f3b565b3480156103dc575f80fd5b506101c260075481565b3480156103f1575f80fd5b506101c2610400366004611905565b610f6d565b348015610410575f80fd5b506103037f000000000000000000000000000000000000000000000000000000000000000081565b348015610443575f80fd5b506101f4610452366004611925565b610ff7565b348015610462575f80fd5b506101f4610471366004611905565b611417565b348015610481575f80fd5b506101f46104903660046118d3565b6114b2565b3480156104a0575f80fd5b506101c260065481565b3480156104b5575f80fd5b506101f46104c4366004611905565b61152c565b3480156104d4575f80fd5b50600254610303906001600160a01b031681565b3480156104f3575f80fd5b506104fc611566565b604080519283526020830191909152016101cc565b5f6002821080159061056657506003546001600160a01b03168383610537600182611981565b81811061054657610546611994565b905060200201602081019061055b9190611905565b6001600160a01b0316145b6105a65760405162461bcd60e51b815260206004820152600c60248201526b092dcecc2d8d2c840e0c2e8d60a31b60448201526064015b60405180910390fd5b600254600480546040516307c0329d60e21b81526001600160a01b0390931692631f00ca74926105db929188918891016119ee565b5f60405180830381865afa1580156105f5573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261061c9190810190611a1b565b5f8151811061062d5761062d611994565b602002602001015190505b92915050565b6106466115bc565b5f81116106835760405162461bcd60e51b815260206004820152600b60248201526a0496e76616c6964206361760ac1b604482015260640161059d565b60068190556040518181527f8925eb7e33342c248e8380fb70e3f497217013b0fd9bfca496b50b77bc90a01f906020015b60405180910390a150565b6106c76115bc565b6001600160a01b03811661070c5760405162461bcd60e51b815260206004820152600c60248201526b5a65726f206164647265737360a01b604482015260640161059d565b600380546001600160a01b0319166001600160a01b0383169081179091556040519081527f209609af5bd1cd9c31d0db16af3a5a319bef5d4ac7afa570128c974dab2f814e906020016106b4565b6107626115bc565b61076a6115e8565b565b5f805f805f61077961163c565b6001600160a01b0387165f9081526009602052604090205461079a9061165e565b14159450846107fb576005546001600160a01b0387165f908152600960205260409020544291906107ca9061165e565b6107d5906001611ae3565b6107e29062015180611af6565b6107ec9190611ae3565b6107f69190611981565b6107fd565b5f5b9350306001600160a01b031663fc3c55156040518163ffffffff1660e01b81526004016040805180830381865afa15801561083a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061085e9190611b0d565b6001600160a01b039097165f908152600960205260409020549597949690959094909350915050565b61088f6115bc565b6201517f1981121580156108a65750620151808113155b6108e35760405162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a59081bd9999cd95d60921b604482015260640161059d565b60058190556040518181527f49d1150de83f2769fb2b2d93b58460229a19799deaf7017cab0d3d84933005a3906020016106b4565b6109206115bc565b61076a5f61167b565b6109316116ca565b610939611716565b335f61094361163c565b6001600160a01b0383165f9081526009602052604090205490915081906109699061165e565b036109ae5760405162461bcd60e51b8152602060048201526015602482015274416c7265616479207377617070656420746f64617960581b604482015260640161059d565b60085481146109c1575f60075560088190555b6006546004546007546109d49190611ae3565b1115610a175760405162461bcd60e51b815260206004820152601260248201527111185a5b1e4818d85c08195e18d95959195960721b604482015260640161059d565b6040805160028082526060820183525f926020830190803683370190505090507f0000000000000000000000000000000000000000000000000000000000000000815f81518110610a6a57610a6a611994565b6001600160a01b039283166020918202929092010152600354825191169082906001908110610a9b57610a9b611994565b6001600160a01b039283166020918202929092010152600254600480546040516307c0329d60e21b81525f949390931692631f00ca7492610adf9291879101611b68565b5f60405180830381865afa158015610af9573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610b209190810190611a1b565b9050805f81518110610b3457610b34611994565b6020026020010151851015610b815760405162461bcd60e51b8152602060048201526013602482015272616d6f756e74496e4d617820746f6f206c6f7760681b604482015260640161059d565b805f81518110610b9357610b93611994565b6020026020010151341015610bdd5760405162461bcd60e51b815260206004820152601060248201526f092dce6eaccccd2c6d2cadce8408aa8960831b604482015260640161059d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0825f81518110610c1e57610c1e611994565b60200260200101516040518263ffffffff1660e01b81526004015f604051808303818588803b158015610c4f575f80fd5b505af1158015610c61573d5f803e3d5ffd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663095ea7b360025f9054906101000a90046001600160a01b0316835f81518110610cbc57610cbc611994565b60200260200101516040518363ffffffff1660e01b8152600401610cf59291906001600160a01b03929092168252602082015260400190565b6020604051808303815f875af1158015610d11573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d359190611b88565b5060025460045482516001600160a01b0390921691638803dbee919084905f90610d6157610d61611994565b60200260200101518533426040518663ffffffff1660e01b8152600401610d8c959493929190611ba7565b5f604051808303815f875af1158015610da7573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610dce9190810190611a1b565b50805f81518110610de157610de1611994565b6020026020010151341115610e4957336001600160a01b03166108fc825f81518110610e0f57610e0f611994565b602002602001015134610e229190611981565b6040518115909202915f818181858888f19350505050158015610e47573d5f803e3d5ffd5b505b60035481516001600160a01b03918216917f0000000000000000000000000000000000000000000000000000000000000000169033907fc9163c3bdf7263acf1bb3d24072cc7da025f7181c31e2edc7e1673edf5e0ca329085905f90610eb157610eb1611994565b602002602001015160045442604051610edd939291909283526020830191909152604082015260600190565b60405180910390a450506001600160a01b0382165f9081526009602052604081204290556004546007805491929091610f17908490611ae3565b90915550506001805550610f289050565b50565b610f336115bc565b61076a61176f565b5f610f4461163c565b6001600160a01b0383165f90815260096020526040902054610f659061165e565b141592915050565b6001600160a01b0381165f908152600960205260408120548190610f909061165e565b90505f610f9b61163c565b905081811115610fae57505f9392505050565b6005545f90610fbe846001611ae3565b610fcb9062015180611af6565b610fd59190611981565b9050428111610fe4575f610fee565b610fee4282611981565b95945050505050565b610fff6116ca565b611007611716565b335f61101161163c565b6001600160a01b0383165f9081526009602052604090205490915081906110379061165e565b0361107c5760405162461bcd60e51b8152602060048201526015602482015274416c7265616479207377617070656420746f64617960581b604482015260640161059d565b600854811461108f575f60075560088190555b6006546004546007546110a29190611ae3565b11156110e55760405162461bcd60e51b815260206004820152601260248201527111185a5b1e4818d85c08195e18d95959195960721b604482015260640161059d565b6002841080159061113957506003546001600160a01b0316858561110a600182611981565b81811061111957611119611994565b905060200201602081019061112e9190611905565b6001600160a01b0316145b6111745760405162461bcd60e51b815260206004820152600c60248201526b092dcecc2d8d2c840e0c2e8d60a31b604482015260640161059d565b5f85855f81811061118757611187611994565b905060200201602081019061119c9190611905565b6003549091506001600160a01b03908116908216036111fd5760405162461bcd60e51b815260206004820152601760248201527f546f6b656e412063616e6e6f7420626520546f6b656e42000000000000000000604482015260640161059d565b600254600480546040516307c0329d60e21b81525f936001600160a01b031692631f00ca74926112339290918c918c91016119ee565b5f60405180830381865afa15801561124d573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526112749190810190611a1b565b9050805f8151811061128857611288611994565b60200260200101518510156112d55760405162461bcd60e51b8152602060048201526013602482015272616d6f756e74496e4d617820746f6f206c6f7760681b604482015260640161059d565b60025460048054604051634401edf760e11b81526001600160a01b0390931692638803dbee9261131092918a918d918d913391429101611be2565b5f604051808303815f875af115801561132b573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526113529190810190611a1b565b5060035481516001600160a01b039182169184169033907fc9163c3bdf7263acf1bb3d24072cc7da025f7181c31e2edc7e1673edf5e0ca329085905f9061139b5761139b611994565b6020026020010151600454426040516113c7939291909283526020830191909152604082015260600190565b60405180910390a450506001600160a01b0382165f9081526009602052604081204290556004546007805491929091611401908490611ae3565b909155505060018055506114129050565b505050565b61141f6115bc565b6001600160a01b0381166114645760405162461bcd60e51b815260206004820152600c60248201526b5a65726f206164647265737360a01b604482015260640161059d565b600280546001600160a01b0319166001600160a01b0383169081179091556040519081527f7aed1d3e8155a07ccf395e44ea3109a0e2d6c9b29bbbe9f142d9790596f4dc80906020016106b4565b6114ba6115bc565b5f81116114f75760405162461bcd60e51b815260206004820152600b60248201526a04d757374206265203e20360ac1b604482015260640161059d565b60048190556040518181527f94a67c48649d65d800c29b50c996c4ab2fc16305af2b38d8487abea4f3cf0899906020016106b4565b6115346115bc565b6001600160a01b03811661155d57604051631e4fbdf760e01b81525f600482015260240161059d565b610f288161167b565b5f805f61157161163c565b90506008548114611590576006546115876117b1565b92509250509091565b600654600754106115a4575f6115876117b1565b6007546006546115b49190611981565b6115876117b1565b5f546001600160a01b0316331461076a5760405163118cdaa760e01b815233600482015260240161059d565b6115f06117fd565b5f805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b5f620151806005544261164f9190611c1f565b6116599190611c46565b905090565b5f62015180600554836116719190611c1f565b6106389190611c46565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f54600160a01b900460ff161561076a5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015260640161059d565b6002600154036117685760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161059d565b6002600155565b6117776116ca565b5f805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861161f3390565b5f8062015180600554426117c59190611c1f565b6117cf9190611c46565b6005549091506117e0826001611ae3565b6117ed9062015180611af6565b6117f79190611981565b91505090565b5f54600160a01b900460ff1661076a5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015260640161059d565b5f8083601f84011261185c575f80fd5b50813567ffffffffffffffff811115611873575f80fd5b6020830191508360208260051b850101111561188d575f80fd5b9250929050565b5f80602083850312156118a5575f80fd5b823567ffffffffffffffff8111156118bb575f80fd5b6118c78582860161184c565b90969095509350505050565b5f602082840312156118e3575f80fd5b5035919050565b80356001600160a01b0381168114611900575f80fd5b919050565b5f60208284031215611915575f80fd5b61191e826118ea565b9392505050565b5f805f60408486031215611937575f80fd5b833567ffffffffffffffff81111561194d575f80fd5b6119598682870161184c565b909790965060209590950135949350505050565b634e487b7160e01b5f52601160045260245ffd5b818103818111156106385761063861196d565b634e487b7160e01b5f52603260045260245ffd5b8183526020830192505f815f5b848110156119e4576001600160a01b036119ce836118ea565b16865260209586019591909101906001016119b5565b5093949350505050565b838152604060208201525f610fee6040830184866119a8565b634e487b7160e01b5f52604160045260245ffd5b5f60208284031215611a2b575f80fd5b815167ffffffffffffffff811115611a41575f80fd5b8201601f81018413611a51575f80fd5b805167ffffffffffffffff811115611a6b57611a6b611a07565b8060051b604051601f19603f830116810181811067ffffffffffffffff82111715611a9857611a98611a07565b604052918252602081840181019290810187841115611ab5575f80fd5b6020850194505b83851015611ad857845180825260209586019590935001611abc565b509695505050505050565b808201808211156106385761063861196d565b80820281158282048414176106385761063861196d565b5f8060408385031215611b1e575f80fd5b505080516020909101519092909150565b5f8151808452602084019350602083015f5b828110156119e45781516001600160a01b0316865260209586019590910190600101611b41565b828152604060208201525f611b806040830184611b2f565b949350505050565b5f60208284031215611b98575f80fd5b8151801515811461191e575f80fd5b85815284602082015260a060408201525f611bc560a0830186611b2f565b6001600160a01b0394909416606083015250608001529392505050565b86815285602082015260a060408201525f611c0160a0830186886119a8565b6001600160a01b039490941660608301525060800152949350505050565b8082018281125f831280158216821582161715611c3e57611c3e61196d565b505092915050565b5f82611c6057634e487b7160e01b5f52601260045260245ffd5b50049056fea2646970667358221220484020f9ab40c98528d2639262aa98b3840fa222c9cfa4c2f4d25be11785fcdc64736f6c634300081a00330000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d00000000000000000000000061e24ce4efe61eb2efd6ac804445df65f8032955000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
Deployed Bytecode
0x608060405260043610610198575f3560e01c80637f53c96b116100e7578063b18834aa11610087578063eb33939111610062578063eb33939114610495578063f2fde38b146104aa578063f887ea40146104c9578063fc3c5515146104e8575f80fd5b8063b18834aa14610438578063c0d7865514610457578063e7a358eb14610476575f80fd5b806392bc3117116100c257806392bc3117146103b2578063986c8427146103d1578063ac026169146103e6578063ad5c464814610405575f80fd5b80637f53c96b1461036f5780638456cb59146103825780638da5cb5b14610396575f80fd5b8063416ae768116101525780635f64b55b1161012d5780635f64b55b146102e45780636c7c1cbb1461031b578063711b4a2914610330578063715018a61461035b575f80fd5b8063416ae768146102535780635b2ec32b1461029c5780635c975abb146102bb575f80fd5b806302b2aca0146101a35780630840a44a146101d557806314707538146101f6578063171a5261146102155780633278239b1461022a5780633f4ba83a1461023f575f80fd5b3661019f57005b5f80fd5b3480156101ae575f80fd5b506101c26101bd366004611894565b610511565b6040519081526020015b60405180910390f35b3480156101e0575f80fd5b506101f46101ef3660046118d3565b61063e565b005b348015610201575f80fd5b506101f4610210366004611905565b6106bf565b348015610220575f80fd5b506101c260045481565b348015610235575f80fd5b506101c260085481565b34801561024a575f80fd5b506101f461075a565b34801561025e575f80fd5b5061027261026d366004611905565b61076c565b6040805195151586526020860194909452928401919091526060830152608082015260a0016101cc565b3480156102a7575f80fd5b506101f46102b63660046118d3565b610887565b3480156102c6575f80fd5b505f54600160a01b900460ff165b60405190151581526020016101cc565b3480156102ef575f80fd5b50600354610303906001600160a01b031681565b6040516001600160a01b0390911681526020016101cc565b348015610326575f80fd5b506101c260055481565b34801561033b575f80fd5b506101c261034a366004611905565b60096020525f908152604090205481565b348015610366575f80fd5b506101f4610918565b6101f461037d3660046118d3565b610929565b34801561038d575f80fd5b506101f4610f2b565b3480156103a1575f80fd5b505f546001600160a01b0316610303565b3480156103bd575f80fd5b506102d46103cc366004611905565b610f3b565b3480156103dc575f80fd5b506101c260075481565b3480156103f1575f80fd5b506101c2610400366004611905565b610f6d565b348015610410575f80fd5b506103037f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b348015610443575f80fd5b506101f4610452366004611925565b610ff7565b348015610462575f80fd5b506101f4610471366004611905565b611417565b348015610481575f80fd5b506101f46104903660046118d3565b6114b2565b3480156104a0575f80fd5b506101c260065481565b3480156104b5575f80fd5b506101f46104c4366004611905565b61152c565b3480156104d4575f80fd5b50600254610303906001600160a01b031681565b3480156104f3575f80fd5b506104fc611566565b604080519283526020830191909152016101cc565b5f6002821080159061056657506003546001600160a01b03168383610537600182611981565b81811061054657610546611994565b905060200201602081019061055b9190611905565b6001600160a01b0316145b6105a65760405162461bcd60e51b815260206004820152600c60248201526b092dcecc2d8d2c840e0c2e8d60a31b60448201526064015b60405180910390fd5b600254600480546040516307c0329d60e21b81526001600160a01b0390931692631f00ca74926105db929188918891016119ee565b5f60405180830381865afa1580156105f5573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261061c9190810190611a1b565b5f8151811061062d5761062d611994565b602002602001015190505b92915050565b6106466115bc565b5f81116106835760405162461bcd60e51b815260206004820152600b60248201526a0496e76616c6964206361760ac1b604482015260640161059d565b60068190556040518181527f8925eb7e33342c248e8380fb70e3f497217013b0fd9bfca496b50b77bc90a01f906020015b60405180910390a150565b6106c76115bc565b6001600160a01b03811661070c5760405162461bcd60e51b815260206004820152600c60248201526b5a65726f206164647265737360a01b604482015260640161059d565b600380546001600160a01b0319166001600160a01b0383169081179091556040519081527f209609af5bd1cd9c31d0db16af3a5a319bef5d4ac7afa570128c974dab2f814e906020016106b4565b6107626115bc565b61076a6115e8565b565b5f805f805f61077961163c565b6001600160a01b0387165f9081526009602052604090205461079a9061165e565b14159450846107fb576005546001600160a01b0387165f908152600960205260409020544291906107ca9061165e565b6107d5906001611ae3565b6107e29062015180611af6565b6107ec9190611ae3565b6107f69190611981565b6107fd565b5f5b9350306001600160a01b031663fc3c55156040518163ffffffff1660e01b81526004016040805180830381865afa15801561083a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061085e9190611b0d565b6001600160a01b039097165f908152600960205260409020549597949690959094909350915050565b61088f6115bc565b6201517f1981121580156108a65750620151808113155b6108e35760405162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a59081bd9999cd95d60921b604482015260640161059d565b60058190556040518181527f49d1150de83f2769fb2b2d93b58460229a19799deaf7017cab0d3d84933005a3906020016106b4565b6109206115bc565b61076a5f61167b565b6109316116ca565b610939611716565b335f61094361163c565b6001600160a01b0383165f9081526009602052604090205490915081906109699061165e565b036109ae5760405162461bcd60e51b8152602060048201526015602482015274416c7265616479207377617070656420746f64617960581b604482015260640161059d565b60085481146109c1575f60075560088190555b6006546004546007546109d49190611ae3565b1115610a175760405162461bcd60e51b815260206004820152601260248201527111185a5b1e4818d85c08195e18d95959195960721b604482015260640161059d565b6040805160028082526060820183525f926020830190803683370190505090507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2815f81518110610a6a57610a6a611994565b6001600160a01b039283166020918202929092010152600354825191169082906001908110610a9b57610a9b611994565b6001600160a01b039283166020918202929092010152600254600480546040516307c0329d60e21b81525f949390931692631f00ca7492610adf9291879101611b68565b5f60405180830381865afa158015610af9573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610b209190810190611a1b565b9050805f81518110610b3457610b34611994565b6020026020010151851015610b815760405162461bcd60e51b8152602060048201526013602482015272616d6f756e74496e4d617820746f6f206c6f7760681b604482015260640161059d565b805f81518110610b9357610b93611994565b6020026020010151341015610bdd5760405162461bcd60e51b815260206004820152601060248201526f092dce6eaccccd2c6d2cadce8408aa8960831b604482015260640161059d565b7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b031663d0e30db0825f81518110610c1e57610c1e611994565b60200260200101516040518263ffffffff1660e01b81526004015f604051808303818588803b158015610c4f575f80fd5b505af1158015610c61573d5f803e3d5ffd5b50505050507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b031663095ea7b360025f9054906101000a90046001600160a01b0316835f81518110610cbc57610cbc611994565b60200260200101516040518363ffffffff1660e01b8152600401610cf59291906001600160a01b03929092168252602082015260400190565b6020604051808303815f875af1158015610d11573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d359190611b88565b5060025460045482516001600160a01b0390921691638803dbee919084905f90610d6157610d61611994565b60200260200101518533426040518663ffffffff1660e01b8152600401610d8c959493929190611ba7565b5f604051808303815f875af1158015610da7573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610dce9190810190611a1b565b50805f81518110610de157610de1611994565b6020026020010151341115610e4957336001600160a01b03166108fc825f81518110610e0f57610e0f611994565b602002602001015134610e229190611981565b6040518115909202915f818181858888f19350505050158015610e47573d5f803e3d5ffd5b505b60035481516001600160a01b03918216917f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2169033907fc9163c3bdf7263acf1bb3d24072cc7da025f7181c31e2edc7e1673edf5e0ca329085905f90610eb157610eb1611994565b602002602001015160045442604051610edd939291909283526020830191909152604082015260600190565b60405180910390a450506001600160a01b0382165f9081526009602052604081204290556004546007805491929091610f17908490611ae3565b90915550506001805550610f289050565b50565b610f336115bc565b61076a61176f565b5f610f4461163c565b6001600160a01b0383165f90815260096020526040902054610f659061165e565b141592915050565b6001600160a01b0381165f908152600960205260408120548190610f909061165e565b90505f610f9b61163c565b905081811115610fae57505f9392505050565b6005545f90610fbe846001611ae3565b610fcb9062015180611af6565b610fd59190611981565b9050428111610fe4575f610fee565b610fee4282611981565b95945050505050565b610fff6116ca565b611007611716565b335f61101161163c565b6001600160a01b0383165f9081526009602052604090205490915081906110379061165e565b0361107c5760405162461bcd60e51b8152602060048201526015602482015274416c7265616479207377617070656420746f64617960581b604482015260640161059d565b600854811461108f575f60075560088190555b6006546004546007546110a29190611ae3565b11156110e55760405162461bcd60e51b815260206004820152601260248201527111185a5b1e4818d85c08195e18d95959195960721b604482015260640161059d565b6002841080159061113957506003546001600160a01b0316858561110a600182611981565b81811061111957611119611994565b905060200201602081019061112e9190611905565b6001600160a01b0316145b6111745760405162461bcd60e51b815260206004820152600c60248201526b092dcecc2d8d2c840e0c2e8d60a31b604482015260640161059d565b5f85855f81811061118757611187611994565b905060200201602081019061119c9190611905565b6003549091506001600160a01b03908116908216036111fd5760405162461bcd60e51b815260206004820152601760248201527f546f6b656e412063616e6e6f7420626520546f6b656e42000000000000000000604482015260640161059d565b600254600480546040516307c0329d60e21b81525f936001600160a01b031692631f00ca74926112339290918c918c91016119ee565b5f60405180830381865afa15801561124d573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526112749190810190611a1b565b9050805f8151811061128857611288611994565b60200260200101518510156112d55760405162461bcd60e51b8152602060048201526013602482015272616d6f756e74496e4d617820746f6f206c6f7760681b604482015260640161059d565b60025460048054604051634401edf760e11b81526001600160a01b0390931692638803dbee9261131092918a918d918d913391429101611be2565b5f604051808303815f875af115801561132b573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526113529190810190611a1b565b5060035481516001600160a01b039182169184169033907fc9163c3bdf7263acf1bb3d24072cc7da025f7181c31e2edc7e1673edf5e0ca329085905f9061139b5761139b611994565b6020026020010151600454426040516113c7939291909283526020830191909152604082015260600190565b60405180910390a450506001600160a01b0382165f9081526009602052604081204290556004546007805491929091611401908490611ae3565b909155505060018055506114129050565b505050565b61141f6115bc565b6001600160a01b0381166114645760405162461bcd60e51b815260206004820152600c60248201526b5a65726f206164647265737360a01b604482015260640161059d565b600280546001600160a01b0319166001600160a01b0383169081179091556040519081527f7aed1d3e8155a07ccf395e44ea3109a0e2d6c9b29bbbe9f142d9790596f4dc80906020016106b4565b6114ba6115bc565b5f81116114f75760405162461bcd60e51b815260206004820152600b60248201526a04d757374206265203e20360ac1b604482015260640161059d565b60048190556040518181527f94a67c48649d65d800c29b50c996c4ab2fc16305af2b38d8487abea4f3cf0899906020016106b4565b6115346115bc565b6001600160a01b03811661155d57604051631e4fbdf760e01b81525f600482015260240161059d565b610f288161167b565b5f805f61157161163c565b90506008548114611590576006546115876117b1565b92509250509091565b600654600754106115a4575f6115876117b1565b6007546006546115b49190611981565b6115876117b1565b5f546001600160a01b0316331461076a5760405163118cdaa760e01b815233600482015260240161059d565b6115f06117fd565b5f805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b5f620151806005544261164f9190611c1f565b6116599190611c46565b905090565b5f62015180600554836116719190611c1f565b6106389190611c46565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f54600160a01b900460ff161561076a5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015260640161059d565b6002600154036117685760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161059d565b6002600155565b6117776116ca565b5f805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861161f3390565b5f8062015180600554426117c59190611c1f565b6117cf9190611c46565b6005549091506117e0826001611ae3565b6117ed9062015180611af6565b6117f79190611981565b91505090565b5f54600160a01b900460ff1661076a5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015260640161059d565b5f8083601f84011261185c575f80fd5b50813567ffffffffffffffff811115611873575f80fd5b6020830191508360208260051b850101111561188d575f80fd5b9250929050565b5f80602083850312156118a5575f80fd5b823567ffffffffffffffff8111156118bb575f80fd5b6118c78582860161184c565b90969095509350505050565b5f602082840312156118e3575f80fd5b5035919050565b80356001600160a01b0381168114611900575f80fd5b919050565b5f60208284031215611915575f80fd5b61191e826118ea565b9392505050565b5f805f60408486031215611937575f80fd5b833567ffffffffffffffff81111561194d575f80fd5b6119598682870161184c565b909790965060209590950135949350505050565b634e487b7160e01b5f52601160045260245ffd5b818103818111156106385761063861196d565b634e487b7160e01b5f52603260045260245ffd5b8183526020830192505f815f5b848110156119e4576001600160a01b036119ce836118ea565b16865260209586019591909101906001016119b5565b5093949350505050565b838152604060208201525f610fee6040830184866119a8565b634e487b7160e01b5f52604160045260245ffd5b5f60208284031215611a2b575f80fd5b815167ffffffffffffffff811115611a41575f80fd5b8201601f81018413611a51575f80fd5b805167ffffffffffffffff811115611a6b57611a6b611a07565b8060051b604051601f19603f830116810181811067ffffffffffffffff82111715611a9857611a98611a07565b604052918252602081840181019290810187841115611ab5575f80fd5b6020850194505b83851015611ad857845180825260209586019590935001611abc565b509695505050505050565b808201808211156106385761063861196d565b80820281158282048414176106385761063861196d565b5f8060408385031215611b1e575f80fd5b505080516020909101519092909150565b5f8151808452602084019350602083015f5b828110156119e45781516001600160a01b0316865260209586019590910190600101611b41565b828152604060208201525f611b806040830184611b2f565b949350505050565b5f60208284031215611b98575f80fd5b8151801515811461191e575f80fd5b85815284602082015260a060408201525f611bc560a0830186611b2f565b6001600160a01b0394909416606083015250608001529392505050565b86815285602082015260a060408201525f611c0160a0830186886119a8565b6001600160a01b039490941660608301525060800152949350505050565b8082018281125f831280158216821582161715611c3e57611c3e61196d565b505092915050565b5f82611c6057634e487b7160e01b5f52601260045260245ffd5b50049056fea2646970667358221220484020f9ab40c98528d2639262aa98b3840fa222c9cfa4c2f4d25be11785fcdc64736f6c634300081a0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d00000000000000000000000061e24ce4efe61eb2efd6ac804445df65f8032955000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
-----Decoded View---------------
Arg [0] : _router (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
Arg [1] : _tokenB (address): 0x61e24Ce4efe61EB2efd6AC804445df65f8032955
Arg [2] : _weth (address): 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [1] : 00000000000000000000000061e24ce4efe61eb2efd6ac804445df65f8032955
Arg [2] : 000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
Deployed Bytecode Sourcemap
18248:6938:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21643:230;;;;;;;;;;-1:-1:-1;21643:230:0;;;;;:::i;:::-;;:::i;:::-;;;974:25:1;;;962:2;947:18;21643:230:0;;;;;;;;24291:176;;;;;;;;;;-1:-1:-1;24291:176:0;;;;;:::i;:::-;;:::i;:::-;;23426:193;;;;;;;;;;-1:-1:-1;23426:193:0;;;;;:::i;:::-;;:::i;18423:36::-;;;;;;;;;;;;;;;;18591:30;;;;;;;;;;;;;;;;24546:67;;;;;;;;;;;;;:::i;22807:611::-;;;;;;;;;;-1:-1:-1;22807:611:0;;;;;:::i;:::-;;:::i;:::-;;;;1888:14:1;;1881:22;1863:41;;1935:2;1920:18;;1913:34;;;;1963:18;;;1956:34;;;;2021:2;2006:18;;1999:34;2064:3;2049:19;;2042:35;1850:3;1835:19;22807:611:0;1610:473:1;24047:236:0;;;;;;;;;;-1:-1:-1;24047:236:0;;;;;:::i;:::-;;:::i;17074:86::-;;;;;;;;;;-1:-1:-1;17121:4:0;17145:7;-1:-1:-1;;;17145:7:0;;;;17074:86;;;2437:14:1;;2430:22;2412:41;;2400:2;2385:18;17074:86:0;2272:187:1;18357:21:0;;;;;;;;;;-1:-1:-1;18357:21:0;;;;-1:-1:-1;;;;;18357:21:0;;;;;;-1:-1:-1;;;;;2628:32:1;;;2610:51;;2598:2;2583:18;18357:21:0;2464:203:1;18466:39:0;;;;;;;;;;;;;;;;18630:48;;;;;;;;;;-1:-1:-1;18630:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;11325:103;;;;;;;;;;;;;:::i;20685:950::-;;;;;;:::i;:::-;;:::i;24475:63::-;;;;;;;;;;;;;:::i;10650:87::-;;;;;;;;;;-1:-1:-1;10696:7:0;10723:6;-1:-1:-1;;;;;10723:6:0;10650:87;;21881:141;;;;;;;;;;-1:-1:-1;21881:141:0;;;;;:::i;:::-;;:::i;18556:28::-;;;;;;;;;;;;;;;;22030:403;;;;;;;;;;-1:-1:-1;22030:403:0;;;;;:::i;:::-;;:::i;18385:29::-;;;;;;;;;;;;;;;19938:739;;;;;;;;;;-1:-1:-1;19938:739:0;;;;;:::i;:::-;;:::i;23826:213::-;;;;;;;;;;-1:-1:-1;23826:213:0;;;;;:::i;:::-;;:::i;23627:191::-;;;;;;;;;;-1:-1:-1;23627:191:0;;;;;:::i;:::-;;:::i;18512:37::-;;;;;;;;;;;;;;;;11583:220;;;;;;;;;;-1:-1:-1;11583:220:0;;;;;:::i;:::-;;:::i;18318:32::-;;;;;;;;;;-1:-1:-1;18318:32:0;;;;-1:-1:-1;;;;;18318:32:0;;;22441:358;;;;;;;;;;;;;:::i;:::-;;;;3816:25:1;;;3872:2;3857:18;;3850:34;;;;3789:18;22441:358:0;3642:248:1;21643:230:0;21712:7;21755:1;21740:16;;;;;:51;;-1:-1:-1;21785:6:0;;-1:-1:-1;;;;;21785:6:0;21760:4;;21765:15;21785:6;21760:4;21765:15;:::i;:::-;21760:21;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21760:31:0;;21740:51;21732:76;;;;-1:-1:-1;;;21732:76:0;;4494:2:1;21732:76:0;;;4476:21:1;4533:2;4513:18;;;4506:30;-1:-1:-1;;;4552:18:1;;;4545:42;4604:18;;21732:76:0;;;;;;;;;21826:6;;21846:9;;;21826:36;;-1:-1:-1;;;21826:36:0;;-1:-1:-1;;;;;21826:6:0;;;;:19;;:36;;21846:9;21857:4;;;;21826:36;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21826:36:0;;;;;;;;;;;;:::i;:::-;21863:1;21826:39;;;;;;;;:::i;:::-;;;;;;;21819:46;;21643:230;;;;;:::o;24291:176::-;10536:13;:11;:13::i;:::-;24375:1:::1;24366:6;:10;24358:34;;;::::0;-1:-1:-1;;;24358:34:0;;6936:2:1;24358:34:0::1;::::0;::::1;6918:21:1::0;6975:2;6955:18;;;6948:30;-1:-1:-1;;;6994:18:1;;;6987:41;7045:18;;24358:34:0::1;6734:335:1::0;24358:34:0::1;24403:8;:17:::0;;;24436:23:::1;::::0;974:25:1;;;24436:23:0::1;::::0;962:2:1;947:18;24436:23:0::1;;;;;;;;24291:176:::0;:::o;23426:193::-;10536:13;:11;:13::i;:::-;-1:-1:-1;;;;;23502:23:0;::::1;23494:48;;;::::0;-1:-1:-1;;;23494:48:0;;7276:2:1;23494:48:0::1;::::0;::::1;7258:21:1::0;7315:2;7295:18;;;7288:30;-1:-1:-1;;;7334:18:1;;;7327:42;7386:18;;23494:48:0::1;7074:336:1::0;23494:48:0::1;23553:6;:18:::0;;-1:-1:-1;;;;;;23553:18:0::1;-1:-1:-1::0;;;;;23553:18:0;::::1;::::0;;::::1;::::0;;;23587:24:::1;::::0;2610:51:1;;;23587:24:0::1;::::0;2598:2:1;2583:18;23587:24:0::1;2464:203:1::0;24546:67:0;10536:13;:11;:13::i;:::-;24595:10:::1;:8;:10::i;:::-;24546:67::o:0;22807:611::-;22876:15;22902:21;22934:25;22970:21;23002:25;23101:13;:11;:13::i;:::-;-1:-1:-1;;;;;23077:19:0;;;;;;:13;:19;;;;;;23059:38;;:17;:38::i;:::-;:55;;23046:68;;23141:10;:150;;23245:14;;-1:-1:-1;;;;;23193:19:0;;;;;;:13;:19;;;;;;23275:15;;23245:14;23175:38;;:17;:38::i;:::-;:42;;23216:1;23175:42;:::i;:::-;23174:53;;23221:6;23174:53;:::i;:::-;:87;;;;:::i;:::-;23159:131;;;;:::i;:::-;23141:150;;;23154:1;23141:150;23125:166;;23339:4;-1:-1:-1;;;;;23339:19:0;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23391:19:0;;;;;;;:13;:19;;;;;;22807:611;;;;23302:58;;;;23391:19;;-1:-1:-1;22807:611:0;-1:-1:-1;;22807:611:0:o;24047:236::-;10536:13;:11;:13::i;:::-;-1:-1:-1;;24130:9:0::1;:19;;:41;;;;;24166:5;24153:9;:18;;24130:41;24122:68;;;::::0;-1:-1:-1;;;24122:68:0;;8268:2:1;24122:68:0::1;::::0;::::1;8250:21:1::0;8307:2;8287:18;;;8280:30;-1:-1:-1;;;8326:18:1;;;8319:44;8380:18;;24122:68:0::1;8066:338:1::0;24122:68:0::1;24201:14;:26:::0;;;24243:32:::1;::::0;974:25:1;;;24243:32:0::1;::::0;962:2:1;947:18;24243:32:0::1;828:177:1::0;11325:103:0;10536:13;:11;:13::i;:::-;11390:30:::1;11417:1;11390:18;:30::i;20685:950::-:0;16679:19;:17;:19::i;:::-;14506:21:::1;:19;:21::i;:::-;20787:10:::2;19483:18;19504:13;:11;:13::i;:::-;-1:-1:-1::0;;;;;19554:19:0;::::2;;::::0;;;:13:::2;:19;::::0;;;;;19483:34;;-1:-1:-1;19483:34:0;;19536:38:::2;::::0;:17:::2;:38::i;:::-;:52:::0;19528:86:::2;;;::::0;-1:-1:-1;;;19528:86:0;;8611:2:1;19528:86:0::2;::::0;::::2;8593:21:1::0;8650:2;8630:18;;;8623:30;-1:-1:-1;;;8669:18:1;;;8662:51;8730:18;;19528:86:0::2;8409:345:1::0;19528:86:0::2;19643:15;;19629:10;:29;19625:122;;19691:1;19675:13;:17:::0;19707:15:::2;:28:::0;;;19625:122:::2;19794:8;;19781:9;;19765:13;;:25;;;;:::i;:::-;:37;;19757:68;;;::::0;-1:-1:-1;;;19757:68:0;;8961:2:1;19757:68:0::2;::::0;::::2;8943:21:1::0;9000:2;8980:18;;;8973:30;-1:-1:-1;;;9019:18:1;;;9012:48;9077:18;;19757:68:0::2;8759:342:1::0;19757:68:0::2;20834:16:::3;::::0;;20848:1:::3;20834:16:::0;;;;;::::3;::::0;;20810:21:::3;::::0;20834:16:::3;::::0;::::3;::::0;;::::3;::::0;::::3;;::::0;-1:-1:-1;20834:16:0::3;20810:40;;20871:4;20861;20866:1;20861:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20861:14:0;;::::3;:7;::::0;;::::3;::::0;;;;;:14;20896:6:::3;::::0;20886:7;;20896:6;::::3;::::0;20886:4;;20896:6;;20886:7;::::3;;;;;:::i;:::-;-1:-1:-1::0;;;;;20886:16:0;;::::3;:7;::::0;;::::3;::::0;;;;;:16;20944:6:::3;::::0;20964:9:::3;::::0;;20944:36:::3;::::0;-1:-1:-1;;;20944:36:0;;20915:26:::3;::::0;20944:6;;;::::3;::::0;:19:::3;::::0;:36:::3;::::0;20964:9;20975:4;;20944:36:::3;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;::::0;;::::3;-1:-1:-1::0;;20944:36:0::3;::::0;::::3;;::::0;::::3;::::0;;;::::3;::::0;::::3;:::i;:::-;20915:65;;21014:9;21024:1;21014:12;;;;;;;;:::i;:::-;;;;;;;20999:11;:27;;20991:59;;;::::0;-1:-1:-1;;;20991:59:0;;10096:2:1;20991:59:0::3;::::0;::::3;10078:21:1::0;10135:2;10115:18;;;10108:30;-1:-1:-1;;;10154:18:1;;;10147:49;10213:18;;20991:59:0::3;9894:343:1::0;20991:59:0::3;21082:9;21092:1;21082:12;;;;;;;;:::i;:::-;;;;;;;21069:9;:25;;21061:54;;;::::0;-1:-1:-1;;;21061:54:0;;10444:2:1;21061:54:0::3;::::0;::::3;10426:21:1::0;10483:2;10463:18;;;10456:30;-1:-1:-1;;;10502:18:1;;;10495:46;10558:18;;21061:54:0::3;10242:340:1::0;21061:54:0::3;21134:4;-1:-1:-1::0;;;;;21128:19:0::3;;21155:9;21165:1;21155:12;;;;;;;;:::i;:::-;;;;;;;21128:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;::::0;::::3;;;;;;;;;;21187:4;-1:-1:-1::0;;;;;21181:19:0::3;;21209:6;;;;;;;;;-1:-1:-1::0;;;;;21209:6:0::3;21218:9;21228:1;21218:12;;;;;;;;:::i;:::-;;;;;;;21181:50;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;10779:32:1;;;;10761:51;;10843:2;10828:18;;10821:34;10749:2;10734:18;;10587:274;21181:50:0::3;;;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;21244:6:0::3;::::0;21290:9:::3;::::0;21314:12;;-1:-1:-1;;;;;21244:6:0;;::::3;::::0;:31:::3;::::0;21290:9;21314;;21244:6:::3;::::0;21314:12:::3;;;;:::i;:::-;;;;;;;21341:4;21360:10;21385:15;21244:167;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;::::0;;::::3;-1:-1:-1::0;;21244:167:0::3;::::0;::::3;;::::0;::::3;::::0;;;::::3;::::0;::::3;:::i;:::-;;21440:9;21450:1;21440:12;;;;;;;;:::i;:::-;;;;;;;21428:9;:24;21424:111;;;21477:10;-1:-1:-1::0;;;;;21469:28:0::3;:54;21510:9;21520:1;21510:12;;;;;;;;:::i;:::-;;;;;;;21498:9;:24;;;;:::i;:::-;21469:54;::::0;;::::3;::::0;;::::3;::::0;::::3;::::0;;;;;;::::3;;;;;;;;;;;;;::::0;::::3;;;;;;21424:111;21578:6;::::0;21586:12;;-1:-1:-1;;;;;21578:6:0;;::::3;::::0;21572:4:::3;21552:75;::::0;21560:10:::3;::::0;21552:75:::3;::::0;21586:9;;21578:6:::3;::::0;21586:12:::3;;;;:::i;:::-;;;;;;;21600:9;;21611:15;21552:75;;;;;;;11929:25:1::0;;;11985:2;11970:18;;11963:34;;;;12028:2;12013:18;;12006:34;11917:2;11902:18;;11727:319;21552:75:0::3;;;;;;;;-1:-1:-1::0;;;;;;;19848:19:0;::::2;;::::0;;;:13:::2;:19;::::0;;;;19870:15:::2;19848:37:::0;;19913:9:::2;::::0;19896:13:::2;:26:::0;;19913:9;;19896:13;;:26:::2;::::0;19913:9;;19896:26:::2;:::i;:::-;::::0;;;-1:-1:-1;;13944:1:0;15070:22;;-1:-1:-1;14550:20:0::1;::::0;-1:-1:-1;14887:213:0;14550:20:::1;20685:950:::0;:::o;24475:63::-;10536:13;:11;:13::i;:::-;24522:8:::1;:6;:8::i;21881:141::-:0;21935:4;22001:13;:11;:13::i;:::-;-1:-1:-1;;;;;21977:19:0;;;;;;:13;:19;;;;;;21959:38;;:17;:38::i;:::-;:55;;;21881:141;-1:-1:-1;;21881:141:0:o;22030:403::-;-1:-1:-1;;;;;22153:19:0;;22097:7;22153:19;;;:13;:19;;;;;;22097:7;;22135:38;;:17;:38::i;:::-;22117:56;;22184:15;22202:13;:11;:13::i;:::-;22184:31;;22240:7;22230;:17;22226:31;;;-1:-1:-1;22256:1:0;;22030:403;-1:-1:-1;;;22030:403:0:o;22226:31::-;22330:14;;22268:17;;22290:11;:7;22300:1;22290:11;:::i;:::-;22289:22;;22305:6;22289:22;:::i;:::-;22288:58;;;;:::i;:::-;22268:78;;22376:15;22364:9;:27;:61;;22424:1;22364:61;;;22394:27;22406:15;22394:9;:27;:::i;:::-;22357:68;22030:403;-1:-1:-1;;;;;22030:403:0:o;19938:739::-;16679:19;:17;:19::i;:::-;14506:21:::1;:19;:21::i;:::-;20050:10:::2;19483:18;19504:13;:11;:13::i;:::-;-1:-1:-1::0;;;;;19554:19:0;::::2;;::::0;;;:13:::2;:19;::::0;;;;;19483:34;;-1:-1:-1;19483:34:0;;19536:38:::2;::::0;:17:::2;:38::i;:::-;:52:::0;19528:86:::2;;;::::0;-1:-1:-1;;;19528:86:0;;8611:2:1;19528:86:0::2;::::0;::::2;8593:21:1::0;8650:2;8630:18;;;8623:30;-1:-1:-1;;;8669:18:1;;;8662:51;8730:18;;19528:86:0::2;8409:345:1::0;19528:86:0::2;19643:15;;19629:10;:29;19625:122;;19691:1;19675:13;:17:::0;19707:15:::2;:28:::0;;;19625:122:::2;19794:8;;19781:9;;19765:13;;:25;;;;:::i;:::-;:37;;19757:68;;;::::0;-1:-1:-1;;;19757:68:0;;8961:2:1;19757:68:0::2;::::0;::::2;8943:21:1::0;9000:2;8980:18;;;8973:30;-1:-1:-1;;;9019:18:1;;;9012:48;9077:18;;19757:68:0::2;8759:342:1::0;19757:68:0::2;20096:1:::3;20081:16:::0;::::3;::::0;::::3;::::0;:51:::3;;-1:-1:-1::0;20126:6:0::3;::::0;-1:-1:-1;;;;;20126:6:0::3;20101:4:::0;;20106:15:::3;20126:6:::0;20101:4;20106:15:::3;:::i;:::-;20101:21;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20101:31:0::3;;20081:51;20073:76;;;::::0;-1:-1:-1;;;20073:76:0;;4494:2:1;20073:76:0::3;::::0;::::3;4476:21:1::0;4533:2;4513:18;;;4506:30;-1:-1:-1;;;4552:18:1;;;4545:42;4604:18;;20073:76:0::3;4292:336:1::0;20073:76:0::3;20160:14;20177:4;;20182:1;20177:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;20213:6;::::0;20160:24;;-1:-1:-1;;;;;;20213:6:0;;::::3;20203:16:::0;;::::3;::::0;20195:52:::3;;;::::0;-1:-1:-1;;;20195:52:0;;12253:2:1;20195:52:0::3;::::0;::::3;12235:21:1::0;12292:2;12272:18;;;12265:30;12331:25;12311:18;;;12304:53;12374:18;;20195:52:0::3;12051:347:1::0;20195:52:0::3;20289:6;::::0;20309:9:::3;::::0;;20289:36:::3;::::0;-1:-1:-1;;;20289:36:0;;20260:26:::3;::::0;-1:-1:-1;;;;;20289:6:0::3;::::0;:19:::3;::::0;:36:::3;::::0;20309:9;;20320:4;;;;20289:36:::3;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;::::0;;::::3;-1:-1:-1::0;;20289:36:0::3;::::0;::::3;;::::0;::::3;::::0;;;::::3;::::0;::::3;:::i;:::-;20260:65;;20359:9;20369:1;20359:12;;;;;;;;:::i;:::-;;;;;;;20344:11;:27;;20336:59;;;::::0;-1:-1:-1;;;20336:59:0;;10096:2:1;20336:59:0::3;::::0;::::3;10078:21:1::0;10135:2;10115:18;;;10108:30;-1:-1:-1;;;10154:18:1;;;10147:49;10213:18;;20336:59:0::3;9894:343:1::0;20336:59:0::3;20408:6;::::0;20454:9:::3;::::0;;20408:166:::3;::::0;-1:-1:-1;;;20408:166:0;;-1:-1:-1;;;;;20408:6:0;;::::3;::::0;:31:::3;::::0;:166:::3;::::0;20454:9;20478:11;;20504:4;;;;20523:10:::3;::::0;20548:15:::3;::::0;20408:166:::3;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;::::0;;::::3;-1:-1:-1::0;;20408:166:0::3;::::0;::::3;;::::0;::::3;::::0;;;::::3;::::0;::::3;:::i;:::-;-1:-1:-1::0;20620:6:0::3;::::0;20628:12;;-1:-1:-1;;;;;20620:6:0;;::::3;::::0;20592:77;::::3;::::0;20600:10:::3;::::0;20592:77:::3;::::0;20628:9;;20620:6:::3;::::0;20628:12:::3;;;;:::i;:::-;;;;;;;20642:9;;20653:15;20592:77;;;;;;;11929:25:1::0;;;11985:2;11970:18;;11963:34;;;;12028:2;12013:18;;12006:34;11917:2;11902:18;;11727:319;20592:77:0::3;;;;;;;;-1:-1:-1::0;;;;;;;19848:19:0;::::2;;::::0;;;:13:::2;:19;::::0;;;;19870:15:::2;19848:37:::0;;19913:9:::2;::::0;19896:13:::2;:26:::0;;19913:9;;19896:13;;:26:::2;::::0;19913:9;;19896:26:::2;:::i;:::-;::::0;;;-1:-1:-1;;13944:1:0;15070:22;;-1:-1:-1;14550:20:0::1;::::0;-1:-1:-1;14887:213:0;14550:20:::1;19938:739:::0;;;:::o;23826:213::-;10536:13;:11;:13::i;:::-;-1:-1:-1;;;;;23902:23:0;::::1;23894:48;;;::::0;-1:-1:-1;;;23894:48:0;;7276:2:1;23894:48:0::1;::::0;::::1;7258:21:1::0;7315:2;7295:18;;;7288:30;-1:-1:-1;;;7334:18:1;;;7327:42;7386:18;;23894:48:0::1;7074:336:1::0;23894:48:0::1;23953:6;:38:::0;;-1:-1:-1;;;;;;23953:38:0::1;-1:-1:-1::0;;;;;23953:38:0;::::1;::::0;;::::1;::::0;;;24007:24:::1;::::0;2610:51:1;;;24007:24:0::1;::::0;2598:2:1;2583:18;24007:24:0::1;2464:203:1::0;23627:191:0;10536:13;:11;:13::i;:::-;23718:1:::1;23706:9;:13;23698:37;;;::::0;-1:-1:-1;;;23698:37:0;;13211:2:1;23698:37:0::1;::::0;::::1;13193:21:1::0;13250:2;13230:18;;;13223:30;-1:-1:-1;;;13269:18:1;;;13262:41;13320:18;;23698:37:0::1;13009:335:1::0;23698:37:0::1;23746:9;:21:::0;;;23783:27:::1;::::0;974:25:1;;;23783:27:0::1;::::0;962:2:1;947:18;23783:27:0::1;828:177:1::0;11583:220:0;10536:13;:11;:13::i;:::-;-1:-1:-1;;;;;11668:22:0;::::1;11664:93;;11714:31;::::0;-1:-1:-1;;;11714:31:0;;11742:1:::1;11714:31;::::0;::::1;2610:51:1::0;2583:18;;11714:31:0::1;2464:203:1::0;11664:93:0::1;11767:28;11786:8;11767:18;:28::i;22441:358::-:0;22490:14;22506:22;22541:18;22562:13;:11;:13::i;:::-;22541:34;;22604:15;;22590:10;:29;22586:71;;22629:8;;22639:17;:15;:17::i;:::-;22621:36;;;;;22441:358;;:::o;22586:71::-;22689:8;;22672:13;;:25;22668:60;;22707:1;22710:17;:15;:17::i;22668:60::-;22758:13;;22747:8;;:24;;;;:::i;:::-;22773:17;:15;:17::i;10815:166::-;10696:7;10723:6;-1:-1:-1;;;;;10723:6:0;8739:10;10875:23;10871:103;;10922:40;;-1:-1:-1;;;10922:40:0;;8739:10;10922:40;;;2610:51:1;2583:18;;10922:40:0;2464:203:1;17929:120:0;16938:16;:14;:16::i;:::-;17998:5:::1;17988:15:::0;;-1:-1:-1;;;;17988:15:0::1;::::0;;18019:22:::1;8739:10:::0;18028:12:::1;18019:22;::::0;-1:-1:-1;;;;;2628:32:1;;;2610:51;;2598:2;2583:18;18019:22:0::1;;;;;;;17929:120::o:0;24621:139::-;24667:7;24746:6;24728:14;;24709:15;24702:40;;;;:::i;:::-;24694:58;;;;:::i;:::-;24687:65;;24621:139;:::o;24768:142::-;24830:7;24896:6;24878:14;;24872:2;24865:27;;;;:::i;:::-;24857:45;;;;:::i;11963:191::-;12037:16;12056:6;;-1:-1:-1;;;;;12073:17:0;;;-1:-1:-1;;;;;;12073:17:0;;;;;;12106:40;;12056:6;;;;;;;12106:40;;12037:16;12106:40;12026:128;11963:191;:::o;17233:108::-;17121:4;17145:7;-1:-1:-1;;;17145:7:0;;;;17303:9;17295:38;;;;-1:-1:-1;;;17295:38:0;;13994:2:1;17295:38:0;;;13976:21:1;14033:2;14013:18;;;14006:30;-1:-1:-1;;;14052:18:1;;;14045:46;14108:18;;17295:38:0;13792:340:1;14586:293:0;13988:1;14720:7;;:19;14712:63;;;;-1:-1:-1;;;14712:63:0;;14339:2:1;14712:63:0;;;14321:21:1;14378:2;14358:18;;;14351:30;14417:33;14397:18;;;14390:61;14468:18;;14712:63:0;14137:355:1;14712:63:0;13988:1;14853:7;:18;14586:293::o;17670:118::-;16679:19;:17;:19::i;:::-;17730:7:::1;:14:::0;;-1:-1:-1;;;;17730:14:0::1;-1:-1:-1::0;;;17730:14:0::1;::::0;;17760:20:::1;17767:12;8739:10:::0;;8659:98;24918:228;24968:7;24988:14;25057:6;25039:14;;25020:15;25013:40;;;;:::i;:::-;25005:58;;;;:::i;:::-;25122:14;;24988:75;;-1:-1:-1;25083:10:0;24988:75;25092:1;25083:10;:::i;:::-;25082:21;;25097:6;25082:21;:::i;:::-;25081:57;;;;:::i;:::-;25074:64;;;24918:228;:::o;17418:108::-;17121:4;17145:7;-1:-1:-1;;;17145:7:0;;;;17477:41;;;;-1:-1:-1;;;17477:41:0;;14699:2:1;17477:41:0;;;14681:21:1;14738:2;14718:18;;;14711:30;-1:-1:-1;;;14757:18:1;;;14750:50;14817:18;;17477:41:0;14497:344:1;14:367;77:8;87:6;141:3;134:4;126:6;122:17;118:27;108:55;;159:1;156;149:12;108:55;-1:-1:-1;182:20:1;;225:18;214:30;;211:50;;;257:1;254;247:12;211:50;294:4;286:6;282:17;270:29;;354:3;347:4;337:6;334:1;330:14;322:6;318:27;314:38;311:47;308:67;;;371:1;368;361:12;308:67;14:367;;;;;:::o;386:437::-;472:6;480;533:2;521:9;512:7;508:23;504:32;501:52;;;549:1;546;539:12;501:52;589:9;576:23;622:18;614:6;611:30;608:50;;;654:1;651;644:12;608:50;693:70;755:7;746:6;735:9;731:22;693:70;:::i;:::-;782:8;;667:96;;-1:-1:-1;386:437:1;-1:-1:-1;;;;386:437:1:o;1010:226::-;1069:6;1122:2;1110:9;1101:7;1097:23;1093:32;1090:52;;;1138:1;1135;1128:12;1090:52;-1:-1:-1;1183:23:1;;1010:226;-1:-1:-1;1010:226:1:o;1241:173::-;1309:20;;-1:-1:-1;;;;;1358:31:1;;1348:42;;1338:70;;1404:1;1401;1394:12;1338:70;1241:173;;;:::o;1419:186::-;1478:6;1531:2;1519:9;1510:7;1506:23;1502:32;1499:52;;;1547:1;1544;1537:12;1499:52;1570:29;1589:9;1570:29;:::i;:::-;1560:39;1419:186;-1:-1:-1;;;1419:186:1:o;2852:551::-;2947:6;2955;2963;3016:2;3004:9;2995:7;2991:23;2987:32;2984:52;;;3032:1;3029;3022:12;2984:52;3072:9;3059:23;3105:18;3097:6;3094:30;3091:50;;;3137:1;3134;3127:12;3091:50;3176:70;3238:7;3229:6;3218:9;3214:22;3176:70;:::i;:::-;3265:8;;3150:96;;-1:-1:-1;3369:2:1;3354:18;;;;3341:32;;2852:551;-1:-1:-1;;;;2852:551:1:o;3895:127::-;3956:10;3951:3;3947:20;3944:1;3937:31;3987:4;3984:1;3977:15;4011:4;4008:1;4001:15;4027:128;4094:9;;;4115:11;;;4112:37;;;4129:18;;:::i;4160:127::-;4221:10;4216:3;4212:20;4209:1;4202:31;4252:4;4249:1;4242:15;4276:4;4273:1;4266:15;4633:430;4733:6;4728:3;4721:19;4765:4;4760:3;4756:14;4749:21;;4703:3;4793:5;4816:1;4826:212;4840:6;4837:1;4834:13;4826:212;;;-1:-1:-1;;;;;4905:26:1;4924:6;4905:26;:::i;:::-;4901:52;4889:65;;4983:4;4974:14;;;;5011:17;;;;;4862:1;4855:9;4826:212;;;-1:-1:-1;5054:3:1;;4633:430;-1:-1:-1;;;;4633:430:1:o;5068:359::-;5285:6;5274:9;5267:25;5328:2;5323;5312:9;5308:18;5301:30;5248:4;5348:73;5417:2;5406:9;5402:18;5394:6;5386;5348:73;:::i;5432:127::-;5493:10;5488:3;5484:20;5481:1;5474:31;5524:4;5521:1;5514:15;5548:4;5545:1;5538:15;5564:1165;5659:6;5712:2;5700:9;5691:7;5687:23;5683:32;5680:52;;;5728:1;5725;5718:12;5680:52;5761:9;5755:16;5794:18;5786:6;5783:30;5780:50;;;5826:1;5823;5816:12;5780:50;5849:22;;5902:4;5894:13;;5890:27;-1:-1:-1;5880:55:1;;5931:1;5928;5921:12;5880:55;5964:2;5958:9;5990:18;5982:6;5979:30;5976:56;;;6012:18;;:::i;:::-;6058:6;6055:1;6051:14;6094:2;6088:9;6157:2;6153:7;6148:2;6144;6140:11;6136:25;6128:6;6124:38;6228:6;6216:10;6213:22;6192:18;6180:10;6177:34;6174:62;6171:88;;;6239:18;;:::i;:::-;6275:2;6268:22;6325;;;6375:2;6405:11;;;6401:20;;;6325:22;6363:15;;6433:19;;;6430:39;;;6465:1;6462;6455:12;6430:39;6497:2;6493;6489:11;6478:22;;6509:189;6525:6;6520:3;6517:15;6509:189;;;6615:10;;6638:18;;;6685:2;6542:12;;;;6615:10;;-1:-1:-1;6676:12:1;6509:189;;;-1:-1:-1;6717:6:1;5564:1165;-1:-1:-1;;;;;;5564:1165:1:o;7415:125::-;7480:9;;;7501:10;;;7498:36;;;7514:18;;:::i;7545:168::-;7618:9;;;7649;;7666:15;;;7660:22;;7646:37;7636:71;;7687:18;;:::i;7718:343::-;7797:6;7805;7858:2;7846:9;7837:7;7833:23;7829:32;7826:52;;;7874:1;7871;7864:12;7826:52;-1:-1:-1;;7919:16:1;;8025:2;8010:18;;;8004:25;7919:16;;8004:25;;-1:-1:-1;7718:343:1:o;9106:446::-;9159:3;9197:5;9191:12;9224:6;9219:3;9212:19;9256:4;9251:3;9247:14;9240:21;;9295:4;9288:5;9284:16;9318:1;9328:199;9342:6;9339:1;9336:13;9328:199;;;9407:13;;-1:-1:-1;;;;;9403:39:1;9391:52;;9472:4;9463:14;;;;9500:17;;;;9439:1;9357:9;9328:199;;9557:332;9764:6;9753:9;9746:25;9807:2;9802;9791:9;9787:18;9780:30;9727:4;9827:56;9879:2;9868:9;9864:18;9856:6;9827:56;:::i;:::-;9819:64;9557:332;-1:-1:-1;;;;9557:332:1:o;10866:277::-;10933:6;10986:2;10974:9;10965:7;10961:23;10957:32;10954:52;;;11002:1;10999;10992:12;10954:52;11034:9;11028:16;11087:5;11080:13;11073:21;11066:5;11063:32;11053:60;;11109:1;11106;11099:12;11148:574;11439:6;11428:9;11421:25;11482:6;11477:2;11466:9;11462:18;11455:34;11525:3;11520:2;11509:9;11505:18;11498:31;11402:4;11546:57;11598:3;11587:9;11583:19;11575:6;11546:57;:::i;:::-;-1:-1:-1;;;;;11639:32:1;;;;11634:2;11619:18;;11612:60;-1:-1:-1;11703:3:1;11688:19;11681:35;11538:65;11148:574;-1:-1:-1;;;11148:574:1:o;12403:601::-;12704:6;12693:9;12686:25;12747:6;12742:2;12731:9;12727:18;12720:34;12790:3;12785:2;12774:9;12770:18;12763:31;12667:4;12811:74;12880:3;12869:9;12865:19;12857:6;12849;12811:74;:::i;:::-;-1:-1:-1;;;;;12921:32:1;;;;12916:2;12901:18;;12894:60;-1:-1:-1;12985:3:1;12970:19;12963:35;12803:82;12403:601;-1:-1:-1;;;;12403:601:1:o;13349:216::-;13413:9;;;13441:11;;;13388:3;13471:9;;13499:10;;13495:19;;13524:10;;13516:19;;13492:44;13489:70;;;13539:18;;:::i;:::-;13489:70;;13349:216;;;;:::o;13570:217::-;13610:1;13636;13626:132;;13680:10;13675:3;13671:20;13668:1;13661:31;13715:4;13712:1;13705:15;13743:4;13740:1;13733:15;13626:132;-1:-1:-1;13772:9:1;;13570:217::o
Swarm Source
ipfs://484020f9ab40c98528d2639262aa98b3840fa222c9cfa4c2f4d25be11785fcdc
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ 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.