Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 9 from a total of 9 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Swap ETH To Toke... | 22929680 | 225 days ago | IN | 0.0001 ETH | 0.00010383 | ||||
| Swap Token For E... | 22929602 | 225 days ago | IN | 0 ETH | 0.00019825 | ||||
| Swap Token For E... | 22929563 | 225 days ago | IN | 0 ETH | 0.00012479 | ||||
| Swap Token For E... | 22929561 | 225 days ago | IN | 0 ETH | 0.00013096 | ||||
| Swap Token For E... | 22929542 | 225 days ago | IN | 0 ETH | 0.00013382 | ||||
| Swap Tokens For ... | 22919670 | 227 days ago | IN | 0 ETH | 0.00142256 | ||||
| Swap ETH To Toke... | 22919623 | 227 days ago | IN | 0.01 ETH | 0.00129679 | ||||
| Swap Token For E... | 22919518 | 227 days ago | IN | 0 ETH | 0.00199867 | ||||
| Swap ETH To Toke... | 22919392 | 227 days ago | IN | 0.01 ETH | 0.00215432 |
Latest 15 internal transactions
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| Transfer | 22929680 | 225 days ago | 0.0000005 ETH | ||||
| Execute | 22929680 | 225 days ago | 0.0000995 ETH | ||||
| Transfer | 22929602 | 225 days ago | 0.0000004 ETH | ||||
| Transfer | 22929602 | 225 days ago | 0.00008049 ETH | ||||
| Transfer | 22929602 | 225 days ago | 0.00008089 ETH | ||||
| Transfer | 22919670 | 227 days ago | 0.00004876 ETH | ||||
| Transfer | 22919670 | 227 days ago | 0.00970385 ETH | ||||
| Transfer | 22919670 | 227 days ago | 0.00975261 ETH | ||||
| Transfer | 22919623 | 227 days ago | 0.00005 ETH | ||||
| Execute | 22919623 | 227 days ago | 0.00995 ETH | ||||
| Transfer | 22919518 | 227 days ago | 0.00004876 ETH | ||||
| Transfer | 22919518 | 227 days ago | 0.00970384 ETH | ||||
| Transfer | 22919518 | 227 days ago | 0.0097526 ETH | ||||
| Transfer | 22919392 | 227 days ago | 0.00005 ETH | ||||
| Execute | 22919392 | 227 days ago | 0.00995 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
Klik
Compiler Version
v0.8.30+commit.73712a01
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2025-07-14
*/
/*
__ _ _ ____ __ _
| |/ ]| | | || |/ ]
| ' / | | | | | ' /
| \ | |___ | | | \
| \| | | | | \
| . || | | | | . |
|__|\_||_____||____||__|\_|
https://klik.trade
https://x.com/klik_evm
*/
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
interface IERC20 {
event Approval(address indexed owner, address indexed spender, uint value);
event Transfer(address indexed from, address indexed to, uint value);
function name() external view returns (string memory);
function symbol() external view returns (string memory);
function decimals() external view returns (uint8);
function totalSupply() external view returns (uint);
function balanceOf(address owner) external view returns (uint);
function allowance(address owner, address spender) external view returns (uint);
function approve(address spender, uint value) external returns (bool);
function transfer(address to, uint value) external returns (bool);
function transferFrom(address from, address to, uint value) external returns (bool);
}
/**
* @dev Library to perform safe calls to standard method for ERC20 tokens.
*
* Why Transfers: transfer methods could have a return value (bool), throw or revert for insufficient funds or
* unathorized value.
*
* Why Approve: approve method could has a return value (bool) or does not accept 0 as a valid value (BNB token).
* The common strategy used to clean approvals.
*
* We use the Solidity call instead of interface methods because in the case of transfer, it will fail
* for tokens with an implementation without returning a value.
* Since versions of Solidity 0.4.22 the EVM has a new opcode, called RETURNDATASIZE.
* This opcode stores the size of the returned data of an external call. The code checks the size of the return value
* after an external call and reverts the transaction in case the return data is shorter than expected
*/
library SafeERC20 {
/**
* @dev Transfer token for a specified address
* @param _token erc20 The address of the ERC20 contract
* @param _to address The address which you want to transfer to
* @param _value uint256 the _value of tokens to be transferred
* @return bool whether the transfer was successful or not
*/
function safeTransfer(IERC20 _token, address _to, uint256 _value) internal returns (bool) {
uint256 prevBalance = _token.balanceOf(address(this));
if (prevBalance < _value) {
// Insufficient funds
return false;
}
address(_token).call(
abi.encodeWithSignature("transfer(address,uint256)", _to, _value)
);
// Fail if the new balance its not equal than previous balance sub _value
return prevBalance - _value == _token.balanceOf(address(this));
}
/**
* @dev Transfer tokens from one address to another
* @param _token erc20 The address of the ERC20 contract
* @param _from address The address which you want to send tokens from
* @param _to address The address which you want to transfer to
* @param _value uint256 the _value of tokens to be transferred
* @return bool whether the transfer was successful or not
*/
function safeTransferFrom(
IERC20 _token,
address _from,
address _to,
uint256 _value
) internal returns (bool)
{
uint256 prevBalance = _token.balanceOf(_from);
if (
prevBalance < _value || // Insufficient funds
_token.allowance(_from, address(this)) < _value // Insufficient allowance
) {
return false;
}
address(_token).call(
abi.encodeWithSignature("transferFrom(address,address,uint256)", _from, _to, _value)
);
// Fail if the new balance its not equal than previous balance sub _value
return prevBalance - _value == _token.balanceOf(_from);
}
/**
* @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.
*
* 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
*
* @param _token erc20 The address of the ERC20 contract
* @param _spender The address which will spend the funds.
* @param _value The amount of tokens to be spent.
* @return bool whether the approve was successful or not
*/
function safeApprove(IERC20 _token, address _spender, uint256 _value) internal returns (bool) {
address(_token).call(
abi.encodeWithSignature("approve(address,uint256)",_spender, _value)
);
// Fail if the new allowance its not equal than _value
return _token.allowance(address(this), _spender) == _value;
}
/**
* @dev Clear approval
* Note that if 0 is not a valid value it will be set to 1.
* @param _token erc20 The address of the ERC20 contract
* @param _spender The address which will spend the funds.
*/
function clearApprove(IERC20 _token, address _spender) internal returns (bool) {
bool success = safeApprove(_token, _spender, 0);
if (!success) {
success = safeApprove(_token, _spender, 1);
}
return success;
}
}
interface IUniversalRouter {
function execute(bytes calldata commands, bytes[] calldata inputs, uint256 deadline) external payable;
}
/// @notice Library to define different pool actions.
/// @dev These are suggested common commands, however additional commands should be defined as required
/// Some of these actions are not supported in the Router contracts or Position Manager contracts, but are left as they may be helpful commands for other peripheral contracts.
library Actions {
// pool actions
// liquidity actions
uint256 constant INCREASE_LIQUIDITY = 0x00;
uint256 constant DECREASE_LIQUIDITY = 0x01;
uint256 constant MINT_POSITION = 0x02;
uint256 constant BURN_POSITION = 0x03;
uint256 constant INCREASE_LIQUIDITY_FROM_DELTAS = 0x04;
uint256 constant MINT_POSITION_FROM_DELTAS = 0x05;
// swapping
uint256 constant SWAP_EXACT_IN_SINGLE = 0x06;
uint256 constant SWAP_EXACT_IN = 0x07;
uint256 constant SWAP_EXACT_OUT_SINGLE = 0x08;
uint256 constant SWAP_EXACT_OUT = 0x09;
// donate
// note this is not supported in the position manager or router
uint256 constant DONATE = 0x0a;
// closing deltas on the pool manager
// settling
uint256 constant SETTLE = 0x0b;
uint256 constant SETTLE_ALL = 0x0c;
uint256 constant SETTLE_PAIR = 0x0d;
// taking
uint256 constant TAKE = 0x0e;
uint256 constant TAKE_ALL = 0x0f;
uint256 constant TAKE_PORTION = 0x10;
uint256 constant TAKE_PAIR = 0x11;
uint256 constant CLOSE_CURRENCY = 0x12;
uint256 constant CLEAR_OR_TAKE = 0x13;
uint256 constant SWEEP = 0x14;
uint256 constant WRAP = 0x15;
uint256 constant UNWRAP = 0x16;
// minting/burning 6909s to close deltas
// note this is not supported in the position manager or router
uint256 constant MINT_6909 = 0x17;
uint256 constant BURN_6909 = 0x18;
}
/// @title Commands
/// @notice Command Flags used to decode commands
library Commands {
// Masks to extract certain bits of commands
bytes1 internal constant FLAG_ALLOW_REVERT = 0x80;
bytes1 internal constant COMMAND_TYPE_MASK = 0x3f;
// Command Types. Maximum supported command at this moment is 0x3f.
// The commands are executed in nested if blocks to minimise gas consumption
// Command Types where value<=0x07, executed in the first nested-if block
uint256 constant V3_SWAP_EXACT_IN = 0x00;
uint256 constant V3_SWAP_EXACT_OUT = 0x01;
uint256 constant PERMIT2_TRANSFER_FROM = 0x02;
uint256 constant PERMIT2_PERMIT_BATCH = 0x03;
uint256 constant SWEEP = 0x04;
uint256 constant TRANSFER = 0x05;
uint256 constant PAY_PORTION = 0x06;
// COMMAND_PLACEHOLDER = 0x07;
// Command Types where 0x08<=value<=0x0f, executed in the second nested-if block
uint256 constant V2_SWAP_EXACT_IN = 0x08;
uint256 constant V2_SWAP_EXACT_OUT = 0x09;
uint256 constant PERMIT2_PERMIT = 0x0a;
uint256 constant WRAP_ETH = 0x0b;
uint256 constant UNWRAP_WETH = 0x0c;
uint256 constant PERMIT2_TRANSFER_FROM_BATCH = 0x0d;
uint256 constant BALANCE_CHECK_ERC20 = 0x0e;
// COMMAND_PLACEHOLDER = 0x0f;
// Command Types where 0x10<=value<=0x20, executed in the third nested-if block
uint256 constant V4_SWAP = 0x10;
uint256 constant V3_POSITION_MANAGER_PERMIT = 0x11;
uint256 constant V3_POSITION_MANAGER_CALL = 0x12;
uint256 constant V4_INITIALIZE_POOL = 0x13;
uint256 constant V4_POSITION_MANAGER_CALL = 0x14;
// COMMAND_PLACEHOLDER = 0x15 -> 0x20
// Command Types where 0x21<=value<=0x3f
uint256 constant EXECUTE_SUB_PLAN = 0x21;
// COMMAND_PLACEHOLDER for 0x22 to 0x3f
}
interface IPoolManager {
struct PoolKey {
address currency0;
address currency1;
uint24 fee;
int24 tickSpacing;
address hooks;
}
}
interface IV4Router {
/// @notice Parameters for a single-hop exact-input swap
struct ExactInputSingleParams {
IPoolManager.PoolKey poolKey;
bool zeroForOne;
uint128 amountIn;
uint128 amountOutMinimum;
bytes hookData;
}
}
interface IPermit2 {
function approve(address token, address spender, uint160 amount, uint48 expiration) external;
}
interface IWETH {
function deposit() external payable;
function withdraw(uint256) external;
}
contract Klik {
using SafeERC20 for IERC20;
address public constant UNIVERSAL_ROUTER = 0x66a9893cC07D91D95644AEDD05D03f95e1dBA8Af;
address public constant POOL_MANAGER = 0x000000000004444c5dc75cB358380D2e3dE08A90;
address public constant PERMIT2 = 0x000000000022D473030F116dDEE9F6B43aC78BA3;
address public constant WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
uint256 public INTERFACE_FEE_BPS = 50; // 0.5% interface fee
address public owner;
address public feeAddress;
constructor(){
owner=msg.sender;
}
function transferOwnership(address _who) public {
require(msg.sender == owner, 'Ownable: denied');
require(_who != address(0x0), 'Invalid address');
owner = _who;
}
function changeFee(uint256 _fee) public {
require(msg.sender == owner, 'Ownable: denied');
INTERFACE_FEE_BPS = _fee;
}
function changeFeeAddress(address _who) public {
require(msg.sender == owner, 'Ownable: denied');
require(_who != address(0x0), 'Invalid address');
feeAddress = _who;
}
// Receive ETH
receive() external payable {}
// Swap ETH to any token with exact input, deduct interface fee from output token
function swapETHToTokenV3(address token, uint256 amountOutMin, uint24 POOL_FEE) external payable {
require(msg.value > 0, "Must send ETH");
uint256 feeAmount = (msg.value * INTERFACE_FEE_BPS) / 10000;
uint256 swapAmount = msg.value - feeAmount;
bytes memory commands = abi.encodePacked(bytes1(0x0b), bytes1(0x00)); // WRAP_ETH + V3_SWAP_EXACT_IN
bytes[] memory inputs = new bytes[](2);
// WRAP_ETH: encode(recipient = router, amountMin = msg.value)
inputs[0] = abi.encode(UNIVERSAL_ROUTER, swapAmount);
// V3_SWAP_EXACT_IN: encode(recipient = this, amountIn = msg.value, amountOutMin, path, payerIsUser = false)
bytes memory path = abi.encodePacked(WETH, POOL_FEE, token);
inputs[1] = abi.encode(address(this), swapAmount, amountOutMin, path, false);
uint256 deadline = block.timestamp + 300;
IUniversalRouter router = IUniversalRouter(UNIVERSAL_ROUTER);
router.execute{value: swapAmount}(commands, inputs, deadline);
// Deduct interface fee from output token
IERC20 outputToken = IERC20(token);
uint256 amountOut = outputToken.balanceOf(address(this));
// uint256 feeAmount = amountOut * INTERFACE_FEE_BPS / 10000;
// uint256 userAmount = amountOut - feeAmount;
// outputToken.transfer(owner, feeAmount); // Fee to contract owner
outputToken.safeTransfer(msg.sender, amountOut);
if(feeAmount > 0){
payable(feeAddress).transfer(feeAmount);
}
}
function swapETHToTokenV4(address outputToken, uint128 amountOutMin, uint24 poolFee, int24 tickSpacing) external payable {
require(msg.value > 0, "Must send ETH");
uint256 feeAmount = (msg.value * INTERFACE_FEE_BPS) / 10000;
uint256 swapAmount = msg.value - feeAmount;
address inputToken = address(0x0);
address currency0 = inputToken < outputToken ? inputToken : outputToken;
address currency1 = inputToken < outputToken ? outputToken : inputToken;
IPoolManager.PoolKey memory poolKey = IPoolManager.PoolKey({
currency0: currency0,
currency1: currency1,
fee: poolFee,
tickSpacing: tickSpacing,
hooks: address(0) // Assume no hooks; change if needed
});
// V4 commands: SWAP_EXACT_IN_SINGLE + SETTLE_ALL + TAKE_ALL
bytes memory commands = abi.encodePacked(uint8(Commands.V4_SWAP));
// Encode V4Router actions
bytes memory actions = abi.encodePacked(
uint8(Actions.SWAP_EXACT_IN_SINGLE),
uint8(Actions.SETTLE_ALL),
uint8(Actions.TAKE_ALL)
);
bytes[] memory params = new bytes[](3);
// First parameter: swap configuration
params[0] = abi.encode(
IV4Router.ExactInputSingleParams({
poolKey: poolKey,
zeroForOne: currency0 == inputToken, // true if we're swapping token0 for token1
amountIn: uint128(swapAmount), // amount of tokens we're swapping
amountOutMinimum: amountOutMin, // minimum amount we expect to receive
hookData: bytes("") // no hook data needed
})
);
// Second parameter: specify input tokens for the swap
// encode SETTLE_ALL parameters
params[1] = abi.encode(inputToken, swapAmount);
// Third parameter: specify output tokens from the swap
params[2] = abi.encode(outputToken, amountOutMin);
bytes[] memory inputs = new bytes[](1);
// Combine actions and params into inputs
inputs[0] = abi.encode(actions, params);
// Execute the swap
uint256 deadline = block.timestamp + 20;
IUniversalRouter(UNIVERSAL_ROUTER).execute{value: swapAmount}(commands, inputs, deadline);
IERC20 localToken = IERC20(outputToken);
uint256 swappedBalance = localToken.balanceOf(address(this));
if(swappedBalance > 0){
localToken.safeTransfer(msg.sender, swappedBalance);
}
if (feeAmount > 0) {
payable(feeAddress).transfer(feeAmount);
}
}
// Swap ETH to any token with exact input
function swapTokensForEthV4(address inputToken, uint128 inputAmount, uint128 amountOutMin, uint24 poolFee, int24 tickSpacing) external {
address outputToken = address(0x0);
uint256 swapAmount = inputAmount;
IERC20(inputToken).safeTransferFrom(msg.sender, address(this), inputAmount);
IERC20(inputToken).safeApprove(PERMIT2, swapAmount);
IPermit2(PERMIT2).approve(inputToken, UNIVERSAL_ROUTER, uint160(swapAmount), uint48(block.timestamp + 300));
address currency0 = inputToken < outputToken ? inputToken : outputToken;
address currency1 = inputToken < outputToken ? outputToken : inputToken;
bool zeroForOne = currency0 == inputToken;
// PoolKey
// address currency0 = address(0x0) < outputToken ? address(0x0) : outputToken;
// address currency1 = address(0x0) < outputToken ? outputToken : address(0x0);
IPoolManager.PoolKey memory poolKey = IPoolManager.PoolKey({
currency0: currency0,
currency1: currency1,
fee: poolFee,
tickSpacing: tickSpacing,
hooks: address(0) // Assume no hooks; change if needed
});
// V4 commands: SWAP_EXACT_IN_SINGLE + SETTLE_ALL + TAKE_ALL
// bytes memory commands = abi.encodePacked(uint8(0x10));
bytes memory commands = abi.encodePacked(uint8(Commands.V4_SWAP));
// Encode V4Router actions
bytes memory actions = abi.encodePacked(
uint8(Actions.SWAP_EXACT_IN_SINGLE),
uint8(Actions.SETTLE_ALL),
uint8(Actions.TAKE_ALL)
);
bytes[] memory params = new bytes[](3);
// First parameter: swap configuration
params[0] = abi.encode(
IV4Router.ExactInputSingleParams({
poolKey: poolKey,
zeroForOne: zeroForOne, // true if we're swapping token0 for token1
amountIn: uint128(swapAmount), // amount of tokens we're swapping
amountOutMinimum: amountOutMin, // minimum amount we expect to receive
hookData: bytes("") // no hook data needed
})
);
// Second parameter: specify input tokens for the swap
// encode SETTLE_ALL parameters
params[1] = abi.encode(inputToken, swapAmount);
// Third parameter: specify output tokens from the swap
params[2] = abi.encode(outputToken, amountOutMin);
bytes[] memory inputs = new bytes[](1);
// Combine actions and params into inputs
inputs[0] = abi.encode(actions, params);
// Execute the swap
uint256 deadline = block.timestamp + 20;
IUniversalRouter(UNIVERSAL_ROUTER).execute(commands, inputs, deadline);
uint256 feeAmount = (address(this).balance * INTERFACE_FEE_BPS) / 10000;
uint256 userAmount = address(this).balance - feeAmount;
payable(msg.sender).transfer(userAmount);
if(feeAmount > 0){
payable(feeAddress).transfer(feeAmount);
}
}
/// @notice Swap Token to ETH (exact-input). User must approve TOKEN before calling.
/// @param amountIn Exact TOKEN amount to swap (will be pulled from caller).
/// @param minEthOut Minimum ETH expected (revert if output is less).
function swapTokenForEthV3(address token, uint256 amountIn, uint256 minEthOut, uint24 POOL_FEE) external {
require(amountIn > 0, "Amount must be >0");
// Pull TOKEN from user to this contract
IERC20(token).safeTransferFrom(msg.sender, address(this), amountIn);
uint256 swapAmount = amountIn;
// Approve the Universal Router to spend the TOKEN for the swap
IERC20(token).safeApprove(address(UNIVERSAL_ROUTER), swapAmount);
// Prepare commands for Universal Router:
// 1. V3_SWAP_EXACT_IN: swap TOKEN->WETH using `swapAmount` TOKEN.
// 2. UNWRAP_WETH: unwrap the resulting WETH to ETH and send to this contract:contentReference[oaicite:11]{index=11}.
bytes memory commands = new bytes(2);
commands[0] = bytes1(0x00); // V3_SWAP_EXACT_IN
commands[1] = bytes1(0x0c); // UNWRAP_WETH
// Encode inputs for each command:
bytes[] memory inputs = new bytes[](2);
// Input 0: V3_SWAP_EXACT_IN (TOKEN -> WETH). We set recipient = address(UNI_ROUTER)
// so the WETH output remains in the router (to be unwrapped in next step).
// Path = TOKEN + fee (uint24) + WETH9.
// payerIsUser = false, but here "user" is this contract. We choose false and have router pull from its own balance.
// Since router doesn't hold TOKEN yet, we instead transferred TOKEN to router below before execute.
bytes memory path = abi.encodePacked(token, uint24(POOL_FEE), WETH);
inputs[0] = abi.encode(address(UNIVERSAL_ROUTER), swapAmount, 0, path, false);
// Input 1: UNWRAP_WETH -> abi.encode(address recipient, uint256 amountMin).
// We want to convert all WETH (result of swap) to ETH and send to this contract.
// amountMin = minEthOut to ensure we unwrap at least that much (or revert).
inputs[1] = abi.encode(address(this), minEthOut);
// **Transfer TOKEN to the router** before executing, so that router has the tokens to swap.
IERC20(token).safeTransfer(address(UNIVERSAL_ROUTER), swapAmount);
// Execute the commands on the router (no ETH `value` needed for this call).
IUniversalRouter router = IUniversalRouter(UNIVERSAL_ROUTER);
router.execute(commands, inputs, block.timestamp);
// After execution, router has unwrapped WETH to ETH and sent to this contract.
uint256 ethOut = address(this).balance;
require(ethOut >= minEthOut, "Insufficient ETH output");
// Send the resulting ETH to the user.
uint256 feeAmount = (address(this).balance * INTERFACE_FEE_BPS) / 10000;
uint256 userAmount = address(this).balance - feeAmount;
payable(msg.sender).transfer(userAmount);
if(feeAmount > 0){
payable(feeAddress).transfer(feeAmount);
}
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"INTERFACE_FEE_BPS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERMIT2","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"POOL_MANAGER","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UNIVERSAL_ROUTER","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"changeFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_who","type":"address"}],"name":"changeFeeAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"uint24","name":"POOL_FEE","type":"uint24"}],"name":"swapETHToTokenV3","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"outputToken","type":"address"},{"internalType":"uint128","name":"amountOutMin","type":"uint128"},{"internalType":"uint24","name":"poolFee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"}],"name":"swapETHToTokenV4","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"minEthOut","type":"uint256"},{"internalType":"uint24","name":"POOL_FEE","type":"uint24"}],"name":"swapTokenForEthV3","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"inputToken","type":"address"},{"internalType":"uint128","name":"inputAmount","type":"uint128"},{"internalType":"uint128","name":"amountOutMin","type":"uint128"},{"internalType":"uint24","name":"poolFee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"}],"name":"swapTokensForEthV4","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_who","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
608060405260325f553480156012575f5ffd5b50600180546001600160a01b03191633179055611d18806100325f395ff3fe6080604052600436106100af575f3560e01c806321d6c9fe146100ba578063285e1406146100db57806341275358146100fa578063515d0ea31461012f57806362308e85146101425780636a1db1bf146101645780636afdd850146101835780636e09d9c7146101a55780638da5cb5b146101c4578063ad5c4648146101e3578063dd8354881461020a578063e8d8ff4c1461021d578063e8dd7fc31461023f578063f2fde38b1461025f575f5ffd5b366100b657005b5f5ffd5b3480156100c5575f5ffd5b506100d96100d4366004611733565b61027e565b005b3480156100e6575f5ffd5b506100d96100f5366004611776565b6105e8565b348015610105575f5ffd5b50600254610119906001600160a01b031681565b604051610126919061178f565b60405180910390f35b6100d961013d3660046117a3565b61065a565b34801561014d575f5ffd5b506101196e04444c5dc75cb358380d2e3de08a9081565b34801561016f575f5ffd5b506100d961017e3660046117dc565b6108f8565b34801561018e575f5ffd5b506101196e22d473030f116ddee9f6b43ac78ba381565b3480156101b0575f5ffd5b506100d96101bf36600461181a565b610926565b3480156101cf575f5ffd5b50600154610119906001600160a01b031681565b3480156101ee575f5ffd5b5061011973c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b6100d961021836600461187b565b610dbc565b348015610228575f5ffd5b506102315f5481565b604051908152602001610126565b34801561024a575f5ffd5b506101195f516020611cc35f395f51905f5281565b34801561026a575f5ffd5b506100d9610279366004611776565b6111dd565b5f83116102c65760405162461bcd60e51b81526020600482015260116024820152700416d6f756e74206d757374206265203e3607c1b60448201526064015b60405180910390fd5b6102db6001600160a01b03851633308661124f565b50826102fe6001600160a01b0386165f516020611cc35f395f51905f5283611466565b506040805160028082528183019092525f916020820181803683370190505090505f60f81b815f81518110610335576103356118c1565b60200101906001600160f81b03191690815f1a905350600c60f81b81600181518110610363576103636118c1565b60200101906001600160f81b03191690815f1a905350604080516002808252606082019092525f91816020015b60608152602001906001900390816103905790505090505f878573c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26040516020016103d1939291906118d5565b60405160208183030381529060405290505f516020611cc35f395f51905f52845f835f604051602001610408959493929190611939565b604051602081830303815290604052825f81518110610429576104296118c1565b6020026020010181905250308660405160200161044792919061197c565b60405160208183030381529060405282600181518110610469576104696118c1565b60209081029190910101526104956001600160a01b0389165f516020611cc35f395f51905f5286611574565b50604051630d64d59360e21b81525f516020611cc35f395f51905f52908190633593564c906104cc908790879042906004016119ef565b5f604051808303815f87803b1580156104e3575f5ffd5b505af11580156104f5573d5f5f3e3d5ffd5b504792505050878110156105455760405162461bcd60e51b8152602060048201526017602482015276125b9cdd59999a58da595b9d08115512081bdd5d1c1d5d604a1b60448201526064016102bd565b5f6127105f54476105569190611a38565b6105609190611a55565b90505f61056d8247611a74565b604051909150339082156108fc029083905f818181858888f1935050505015801561059a573d5f5f3e3d5ffd5b5081156105da576002546040516001600160a01b039091169083156108fc029084905f818181858888f193505050501580156105d8573d5f5f3e3d5ffd5b505b505050505050505050505050565b6001546001600160a01b031633146106125760405162461bcd60e51b81526004016102bd90611a87565b6001600160a01b0381166106385760405162461bcd60e51b81526004016102bd90611ab0565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b5f34116106795760405162461bcd60e51b81526004016102bd90611ad9565b5f6127105f543461068a9190611a38565b6106949190611a55565b90505f6106a18234611a74565b60408051600b60f81b60208201525f6021820181905282516002818403810182526022840181815260828501909552949550939092916042015b60608152602001906001900390816106db5790505090505f516020611cc35f395f51905f528360405160200161071292919061197c565b604051602081830303815290604052815f81518110610733576107336118c1565b60200260200101819052505f73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28689604051602001610768939291906118d5565b6040516020818303038152906040529050308488835f604051602001610792959493929190611b00565b604051602081830303815290604052826001815181106107b4576107b46118c1565b60209081029190910101525f6107cc4261012c611b2c565b604051630d64d59360e21b81529091505f516020611cc35f395f51905f52908190633593564c908890610807908990899088906004016119ef565b5f604051808303818588803b15801561081e575f5ffd5b505af1158015610830573d5f5f3e3d5ffd5b50506040516370a0823160e01b81528d93505f92506001600160a01b03841691506370a082319061086590309060040161178f565b602060405180830381865afa158015610880573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108a49190611b3f565b90506108ba6001600160a01b0383163383611574565b5088156105da576002546040516001600160a01b03909116908a156108fc02908b905f818181858888f193505050501580156105d8573d5f5f3e3d5ffd5b6001546001600160a01b031633146109225760405162461bcd60e51b81526004016102bd90611a87565b5f55565b5f6001600160801b0385166109466001600160a01b03881633308461124f565b5061096a6001600160a01b0388166e22d473030f116ddee9f6b43ac78ba383611466565b506e22d473030f116ddee9f6b43ac78ba36387517c45885f516020611cc35f395f51905f528461099c4261012c611b2c565b6040516001600160e01b031960e087901b1681526001600160a01b03948516600482015292841660248401529216604482015265ffffffffffff90911660648201526084015f604051808303815f87803b1580156109f8575f5ffd5b505af1158015610a0a573d5f5f3e3d5ffd5b505050505f826001600160a01b0316886001600160a01b031610610a2e5782610a30565b875b90505f836001600160a01b0316896001600160a01b031610610a525788610a54565b835b90505f896001600160a01b0316836001600160a01b03161490505f6040518060a00160405280856001600160a01b03168152602001846001600160a01b031681526020018962ffffff1681526020018860020b81526020015f6001600160a01b031681525090505f6010604051602001610ace9190611b56565b60405160208183030381529060405290505f6006600c600f604051602001610af893929190611b6e565b60408051808303601f1901815260038084526080840190925292505f9190816020015b6060815260200190600190039081610b1b5790505090506040518060a001604052808581526020018615158152602001896001600160801b031681526020018d6001600160801b0316815260200160405180602001604052805f815250815250604051602001610b8b9190611ba5565b604051602081830303815290604052815f81518110610bac57610bac6118c1565b60200260200101819052508d88604051602001610bca92919061197c565b60405160208183030381529060405281600181518110610bec57610bec6118c1565b6020026020010181905250888c604051602001610c0a929190611c43565b60405160208183030381529060405281600281518110610c2c57610c2c6118c1565b60209081029190910101526040805160018082528183019092525f91816020015b6060815260200190600190039081610c4d5790505090508282604051602001610c77929190611c65565b604051602081830303815290604052815f81518110610c9857610c986118c1565b60209081029190910101525f610caf426014611b2c565b604051630d64d59360e21b81529091505f516020611cc35f395f51905f5290633593564c90610ce6908890869086906004016119ef565b5f604051808303815f87803b158015610cfd575f5ffd5b505af1158015610d0f573d5f5f3e3d5ffd5b505050505f6127105f5447610d249190611a38565b610d2e9190611a55565b90505f610d3b8247611a74565b604051909150339082156108fc029083905f818181858888f19350505050158015610d68573d5f5f3e3d5ffd5b508115610da8576002546040516001600160a01b039091169083156108fc029084905f818181858888f19350505050158015610da6573d5f5f3e3d5ffd5b505b505050505050505050505050505050505050565b5f3411610ddb5760405162461bcd60e51b81526004016102bd90611ad9565b5f6127105f5434610dec9190611a38565b610df69190611a55565b90505f610e038234611a74565b90505f806001600160a01b038816610e1b5787610e1d565b815b90505f886001600160a01b0316836001600160a01b031610610e3f5782610e41565b885b90505f6040518060a00160405280846001600160a01b03168152602001836001600160a01b031681526020018962ffffff1681526020018860020b81526020015f6001600160a01b031681525090505f6010604051602001610ea39190611b56565b60405160208183030381529060405290505f6006600c600f604051602001610ecd93929190611b6e565b60408051808303601f1901815260038084526080840190925292505f9190816020015b6060815260200190600190039081610ef05790505090506040518060a00160405280858152602001886001600160a01b0316886001600160a01b03161415158152602001896001600160801b031681526020018d6001600160801b0316815260200160405180602001604052805f815250815250604051602001610f749190611ba5565b604051602081830303815290604052815f81518110610f9557610f956118c1565b60200260200101819052508688604051602001610fb392919061197c565b60405160208183030381529060405281600181518110610fd557610fd56118c1565b60200260200101819052508c8c604051602001610ff3929190611c43565b60405160208183030381529060405281600281518110611015576110156118c1565b60209081029190910101526040805160018082528183019092525f91816020015b60608152602001906001900390816110365790505090508282604051602001611060929190611c65565b604051602081830303815290604052815f81518110611081576110816118c1565b60209081029190910101525f611098426014611b2c565b604051630d64d59360e21b81529091505f516020611cc35f395f51905f5290633593564c908c906110d1908990879087906004016119ef565b5f604051808303818588803b1580156110e8575f5ffd5b505af11580156110fa573d5f5f3e3d5ffd5b50505050505f8f90505f816001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401611130919061178f565b602060405180830381865afa15801561114b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061116f9190611b3f565b9050801561118d5761118b6001600160a01b0383163383611574565b505b8c156111ca576002546040516001600160a01b03909116908e156108fc02908f905f818181858888f19350505050158015610da8573d5f5f3e3d5ffd5b5050505050505050505050505050505050565b6001546001600160a01b031633146112075760405162461bcd60e51b81526004016102bd90611a87565b6001600160a01b03811661122d5760405162461bcd60e51b81526004016102bd90611ab0565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b5f5f856001600160a01b03166370a08231866040518263ffffffff1660e01b815260040161127d919061178f565b602060405180830381865afa158015611298573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112bc9190611b3f565b9050828110806113385750604051636eb1769f60e11b815283906001600160a01b0388169063dd62ed3e906112f79089903090600401611c92565b602060405180830381865afa158015611312573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113369190611b3f565b105b15611346575f91505061145e565b6040516001600160a01b03868116602483015285811660448301526064820185905287169060840160408051601f198184030181529181526020820180516001600160e01b03166323b872dd60e01b179052516113a39190611cac565b5f604051808303815f865af19150503d805f81146113dc576040519150601f19603f3d011682016040523d82523d5f602084013e6113e1565b606091505b50506040516370a0823160e01b81526001600160a01b03881691506370a082319061141090889060040161178f565b602060405180830381865afa15801561142b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061144f9190611b3f565b6114598483611a74565b149150505b949350505050565b5f836001600160a01b0316838360405160240161148492919061197c565b60408051601f198184030181529181526020820180516001600160e01b031663095ea7b360e01b179052516114b99190611cac565b5f604051808303815f865af19150503d805f81146114f2576040519150601f19603f3d011682016040523d82523d5f602084013e6114f7565b606091505b5050604051636eb1769f60e11b81528391506001600160a01b0386169063dd62ed3e9061152a9030908890600401611c92565b602060405180830381865afa158015611545573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115699190611b3f565b1490505b9392505050565b5f5f846001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016115a2919061178f565b602060405180830381865afa1580156115bd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115e19190611b3f565b9050828110156115f4575f91505061156d565b846001600160a01b0316848460405160240161161192919061197c565b60408051601f198184030181529181526020820180516001600160e01b031663a9059cbb60e01b179052516116469190611cac565b5f604051808303815f865af19150503d805f811461167f576040519150601f19603f3d011682016040523d82523d5f602084013e611684565b606091505b50506040516370a0823160e01b81526001600160a01b03871691506370a08231906116b390309060040161178f565b602060405180830381865afa1580156116ce573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116f29190611b3f565b6116fc8483611a74565b1495945050505050565b80356001600160a01b038116811461171c575f5ffd5b919050565b803562ffffff8116811461171c575f5ffd5b5f5f5f5f60808587031215611746575f5ffd5b61174f85611706565b9350602085013592506040850135915061176b60608601611721565b905092959194509250565b5f60208284031215611786575f5ffd5b61156d82611706565b6001600160a01b0391909116815260200190565b5f5f5f606084860312156117b5575f5ffd5b6117be84611706565b9250602084013591506117d360408501611721565b90509250925092565b5f602082840312156117ec575f5ffd5b5035919050565b80356001600160801b038116811461171c575f5ffd5b8035600281900b811461171c575f5ffd5b5f5f5f5f5f60a0868803121561182e575f5ffd5b61183786611706565b9450611845602087016117f3565b9350611853604087016117f3565b925061186160608701611721565b915061186f60808701611809565b90509295509295909350565b5f5f5f5f6080858703121561188e575f5ffd5b61189785611706565b93506118a5602086016117f3565b92506118b360408601611721565b915061176b60608601611809565b634e487b7160e01b5f52603260045260245ffd5b606093841b6001600160601b0319908116825260e89390931b6001600160e81b0319166014820152921b166017820152602b0190565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b60018060a01b038616815284602082015260ff8416604082015260a060608201525f61196860a083018561190b565b905082151560808301529695505050505050565b6001600160a01b03929092168252602082015260400190565b5f82825180855260208501945060208160051b830101602085015f5b838110156119e357601f198584030188526119cd83835161190b565b60209889019890935091909101906001016119b1565b50909695505050505050565b606081525f611a01606083018661190b565b8281036020840152611a138186611995565b915050826040830152949350505050565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417611a4f57611a4f611a24565b92915050565b5f82611a6f57634e487b7160e01b5f52601260045260245ffd5b500490565b81810381811115611a4f57611a4f611a24565b6020808252600f908201526e13dddb98589b194e8819195b9a5959608a1b604082015260600190565b6020808252600f908201526e496e76616c6964206164647265737360881b604082015260600190565b6020808252600d908201526c09aeae6e840e6cadcc8408aa89609b1b604082015260600190565b60018060a01b038616815284602082015283604082015260a060608201525f61196860a083018561190b565b80820180821115611a4f57611a4f611a24565b5f60208284031215611b4f575f5ffd5b5051919050565b60f89190911b6001600160f81b031916815260010190565b6001600160f81b031960f894851b8116825292841b83166001820152921b16600282015260030190565b6001600160801b03169052565b6020808252825180516001600160a01b03908116848401528183015181166040808601919091528083015162ffffff1660608087019190915283015160020b608080870191909152909201511660a084015290830151151560c08301528201515f90611c1460e0840182611b98565b506060830151611c28610100840182611b98565b5060808301516101208084015261145e61014084018261190b565b6001600160a01b039290921682526001600160801b0316602082015260400190565b604081525f611c77604083018561190b565b8281036020840152611c898185611995565b95945050505050565b6001600160a01b0392831681529116602082015260400190565b5f82518060208501845e5f92019182525091905056fe00000000000000000000000066a9893cc07d91d95644aedd05d03f95e1dba8afa264697066735822122036911a7b044b55ca7bc4b7ef722cb2b1ca27a551c1722629eafb4f386fbf0c4b64736f6c634300081e0033
Deployed Bytecode
0x6080604052600436106100af575f3560e01c806321d6c9fe146100ba578063285e1406146100db57806341275358146100fa578063515d0ea31461012f57806362308e85146101425780636a1db1bf146101645780636afdd850146101835780636e09d9c7146101a55780638da5cb5b146101c4578063ad5c4648146101e3578063dd8354881461020a578063e8d8ff4c1461021d578063e8dd7fc31461023f578063f2fde38b1461025f575f5ffd5b366100b657005b5f5ffd5b3480156100c5575f5ffd5b506100d96100d4366004611733565b61027e565b005b3480156100e6575f5ffd5b506100d96100f5366004611776565b6105e8565b348015610105575f5ffd5b50600254610119906001600160a01b031681565b604051610126919061178f565b60405180910390f35b6100d961013d3660046117a3565b61065a565b34801561014d575f5ffd5b506101196e04444c5dc75cb358380d2e3de08a9081565b34801561016f575f5ffd5b506100d961017e3660046117dc565b6108f8565b34801561018e575f5ffd5b506101196e22d473030f116ddee9f6b43ac78ba381565b3480156101b0575f5ffd5b506100d96101bf36600461181a565b610926565b3480156101cf575f5ffd5b50600154610119906001600160a01b031681565b3480156101ee575f5ffd5b5061011973c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b6100d961021836600461187b565b610dbc565b348015610228575f5ffd5b506102315f5481565b604051908152602001610126565b34801561024a575f5ffd5b506101195f516020611cc35f395f51905f5281565b34801561026a575f5ffd5b506100d9610279366004611776565b6111dd565b5f83116102c65760405162461bcd60e51b81526020600482015260116024820152700416d6f756e74206d757374206265203e3607c1b60448201526064015b60405180910390fd5b6102db6001600160a01b03851633308661124f565b50826102fe6001600160a01b0386165f516020611cc35f395f51905f5283611466565b506040805160028082528183019092525f916020820181803683370190505090505f60f81b815f81518110610335576103356118c1565b60200101906001600160f81b03191690815f1a905350600c60f81b81600181518110610363576103636118c1565b60200101906001600160f81b03191690815f1a905350604080516002808252606082019092525f91816020015b60608152602001906001900390816103905790505090505f878573c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26040516020016103d1939291906118d5565b60405160208183030381529060405290505f516020611cc35f395f51905f52845f835f604051602001610408959493929190611939565b604051602081830303815290604052825f81518110610429576104296118c1565b6020026020010181905250308660405160200161044792919061197c565b60405160208183030381529060405282600181518110610469576104696118c1565b60209081029190910101526104956001600160a01b0389165f516020611cc35f395f51905f5286611574565b50604051630d64d59360e21b81525f516020611cc35f395f51905f52908190633593564c906104cc908790879042906004016119ef565b5f604051808303815f87803b1580156104e3575f5ffd5b505af11580156104f5573d5f5f3e3d5ffd5b504792505050878110156105455760405162461bcd60e51b8152602060048201526017602482015276125b9cdd59999a58da595b9d08115512081bdd5d1c1d5d604a1b60448201526064016102bd565b5f6127105f54476105569190611a38565b6105609190611a55565b90505f61056d8247611a74565b604051909150339082156108fc029083905f818181858888f1935050505015801561059a573d5f5f3e3d5ffd5b5081156105da576002546040516001600160a01b039091169083156108fc029084905f818181858888f193505050501580156105d8573d5f5f3e3d5ffd5b505b505050505050505050505050565b6001546001600160a01b031633146106125760405162461bcd60e51b81526004016102bd90611a87565b6001600160a01b0381166106385760405162461bcd60e51b81526004016102bd90611ab0565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b5f34116106795760405162461bcd60e51b81526004016102bd90611ad9565b5f6127105f543461068a9190611a38565b6106949190611a55565b90505f6106a18234611a74565b60408051600b60f81b60208201525f6021820181905282516002818403810182526022840181815260828501909552949550939092916042015b60608152602001906001900390816106db5790505090505f516020611cc35f395f51905f528360405160200161071292919061197c565b604051602081830303815290604052815f81518110610733576107336118c1565b60200260200101819052505f73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28689604051602001610768939291906118d5565b6040516020818303038152906040529050308488835f604051602001610792959493929190611b00565b604051602081830303815290604052826001815181106107b4576107b46118c1565b60209081029190910101525f6107cc4261012c611b2c565b604051630d64d59360e21b81529091505f516020611cc35f395f51905f52908190633593564c908890610807908990899088906004016119ef565b5f604051808303818588803b15801561081e575f5ffd5b505af1158015610830573d5f5f3e3d5ffd5b50506040516370a0823160e01b81528d93505f92506001600160a01b03841691506370a082319061086590309060040161178f565b602060405180830381865afa158015610880573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108a49190611b3f565b90506108ba6001600160a01b0383163383611574565b5088156105da576002546040516001600160a01b03909116908a156108fc02908b905f818181858888f193505050501580156105d8573d5f5f3e3d5ffd5b6001546001600160a01b031633146109225760405162461bcd60e51b81526004016102bd90611a87565b5f55565b5f6001600160801b0385166109466001600160a01b03881633308461124f565b5061096a6001600160a01b0388166e22d473030f116ddee9f6b43ac78ba383611466565b506e22d473030f116ddee9f6b43ac78ba36387517c45885f516020611cc35f395f51905f528461099c4261012c611b2c565b6040516001600160e01b031960e087901b1681526001600160a01b03948516600482015292841660248401529216604482015265ffffffffffff90911660648201526084015f604051808303815f87803b1580156109f8575f5ffd5b505af1158015610a0a573d5f5f3e3d5ffd5b505050505f826001600160a01b0316886001600160a01b031610610a2e5782610a30565b875b90505f836001600160a01b0316896001600160a01b031610610a525788610a54565b835b90505f896001600160a01b0316836001600160a01b03161490505f6040518060a00160405280856001600160a01b03168152602001846001600160a01b031681526020018962ffffff1681526020018860020b81526020015f6001600160a01b031681525090505f6010604051602001610ace9190611b56565b60405160208183030381529060405290505f6006600c600f604051602001610af893929190611b6e565b60408051808303601f1901815260038084526080840190925292505f9190816020015b6060815260200190600190039081610b1b5790505090506040518060a001604052808581526020018615158152602001896001600160801b031681526020018d6001600160801b0316815260200160405180602001604052805f815250815250604051602001610b8b9190611ba5565b604051602081830303815290604052815f81518110610bac57610bac6118c1565b60200260200101819052508d88604051602001610bca92919061197c565b60405160208183030381529060405281600181518110610bec57610bec6118c1565b6020026020010181905250888c604051602001610c0a929190611c43565b60405160208183030381529060405281600281518110610c2c57610c2c6118c1565b60209081029190910101526040805160018082528183019092525f91816020015b6060815260200190600190039081610c4d5790505090508282604051602001610c77929190611c65565b604051602081830303815290604052815f81518110610c9857610c986118c1565b60209081029190910101525f610caf426014611b2c565b604051630d64d59360e21b81529091505f516020611cc35f395f51905f5290633593564c90610ce6908890869086906004016119ef565b5f604051808303815f87803b158015610cfd575f5ffd5b505af1158015610d0f573d5f5f3e3d5ffd5b505050505f6127105f5447610d249190611a38565b610d2e9190611a55565b90505f610d3b8247611a74565b604051909150339082156108fc029083905f818181858888f19350505050158015610d68573d5f5f3e3d5ffd5b508115610da8576002546040516001600160a01b039091169083156108fc029084905f818181858888f19350505050158015610da6573d5f5f3e3d5ffd5b505b505050505050505050505050505050505050565b5f3411610ddb5760405162461bcd60e51b81526004016102bd90611ad9565b5f6127105f5434610dec9190611a38565b610df69190611a55565b90505f610e038234611a74565b90505f806001600160a01b038816610e1b5787610e1d565b815b90505f886001600160a01b0316836001600160a01b031610610e3f5782610e41565b885b90505f6040518060a00160405280846001600160a01b03168152602001836001600160a01b031681526020018962ffffff1681526020018860020b81526020015f6001600160a01b031681525090505f6010604051602001610ea39190611b56565b60405160208183030381529060405290505f6006600c600f604051602001610ecd93929190611b6e565b60408051808303601f1901815260038084526080840190925292505f9190816020015b6060815260200190600190039081610ef05790505090506040518060a00160405280858152602001886001600160a01b0316886001600160a01b03161415158152602001896001600160801b031681526020018d6001600160801b0316815260200160405180602001604052805f815250815250604051602001610f749190611ba5565b604051602081830303815290604052815f81518110610f9557610f956118c1565b60200260200101819052508688604051602001610fb392919061197c565b60405160208183030381529060405281600181518110610fd557610fd56118c1565b60200260200101819052508c8c604051602001610ff3929190611c43565b60405160208183030381529060405281600281518110611015576110156118c1565b60209081029190910101526040805160018082528183019092525f91816020015b60608152602001906001900390816110365790505090508282604051602001611060929190611c65565b604051602081830303815290604052815f81518110611081576110816118c1565b60209081029190910101525f611098426014611b2c565b604051630d64d59360e21b81529091505f516020611cc35f395f51905f5290633593564c908c906110d1908990879087906004016119ef565b5f604051808303818588803b1580156110e8575f5ffd5b505af11580156110fa573d5f5f3e3d5ffd5b50505050505f8f90505f816001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401611130919061178f565b602060405180830381865afa15801561114b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061116f9190611b3f565b9050801561118d5761118b6001600160a01b0383163383611574565b505b8c156111ca576002546040516001600160a01b03909116908e156108fc02908f905f818181858888f19350505050158015610da8573d5f5f3e3d5ffd5b5050505050505050505050505050505050565b6001546001600160a01b031633146112075760405162461bcd60e51b81526004016102bd90611a87565b6001600160a01b03811661122d5760405162461bcd60e51b81526004016102bd90611ab0565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b5f5f856001600160a01b03166370a08231866040518263ffffffff1660e01b815260040161127d919061178f565b602060405180830381865afa158015611298573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112bc9190611b3f565b9050828110806113385750604051636eb1769f60e11b815283906001600160a01b0388169063dd62ed3e906112f79089903090600401611c92565b602060405180830381865afa158015611312573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113369190611b3f565b105b15611346575f91505061145e565b6040516001600160a01b03868116602483015285811660448301526064820185905287169060840160408051601f198184030181529181526020820180516001600160e01b03166323b872dd60e01b179052516113a39190611cac565b5f604051808303815f865af19150503d805f81146113dc576040519150601f19603f3d011682016040523d82523d5f602084013e6113e1565b606091505b50506040516370a0823160e01b81526001600160a01b03881691506370a082319061141090889060040161178f565b602060405180830381865afa15801561142b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061144f9190611b3f565b6114598483611a74565b149150505b949350505050565b5f836001600160a01b0316838360405160240161148492919061197c565b60408051601f198184030181529181526020820180516001600160e01b031663095ea7b360e01b179052516114b99190611cac565b5f604051808303815f865af19150503d805f81146114f2576040519150601f19603f3d011682016040523d82523d5f602084013e6114f7565b606091505b5050604051636eb1769f60e11b81528391506001600160a01b0386169063dd62ed3e9061152a9030908890600401611c92565b602060405180830381865afa158015611545573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115699190611b3f565b1490505b9392505050565b5f5f846001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016115a2919061178f565b602060405180830381865afa1580156115bd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115e19190611b3f565b9050828110156115f4575f91505061156d565b846001600160a01b0316848460405160240161161192919061197c565b60408051601f198184030181529181526020820180516001600160e01b031663a9059cbb60e01b179052516116469190611cac565b5f604051808303815f865af19150503d805f811461167f576040519150601f19603f3d011682016040523d82523d5f602084013e611684565b606091505b50506040516370a0823160e01b81526001600160a01b03871691506370a08231906116b390309060040161178f565b602060405180830381865afa1580156116ce573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116f29190611b3f565b6116fc8483611a74565b1495945050505050565b80356001600160a01b038116811461171c575f5ffd5b919050565b803562ffffff8116811461171c575f5ffd5b5f5f5f5f60808587031215611746575f5ffd5b61174f85611706565b9350602085013592506040850135915061176b60608601611721565b905092959194509250565b5f60208284031215611786575f5ffd5b61156d82611706565b6001600160a01b0391909116815260200190565b5f5f5f606084860312156117b5575f5ffd5b6117be84611706565b9250602084013591506117d360408501611721565b90509250925092565b5f602082840312156117ec575f5ffd5b5035919050565b80356001600160801b038116811461171c575f5ffd5b8035600281900b811461171c575f5ffd5b5f5f5f5f5f60a0868803121561182e575f5ffd5b61183786611706565b9450611845602087016117f3565b9350611853604087016117f3565b925061186160608701611721565b915061186f60808701611809565b90509295509295909350565b5f5f5f5f6080858703121561188e575f5ffd5b61189785611706565b93506118a5602086016117f3565b92506118b360408601611721565b915061176b60608601611809565b634e487b7160e01b5f52603260045260245ffd5b606093841b6001600160601b0319908116825260e89390931b6001600160e81b0319166014820152921b166017820152602b0190565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b60018060a01b038616815284602082015260ff8416604082015260a060608201525f61196860a083018561190b565b905082151560808301529695505050505050565b6001600160a01b03929092168252602082015260400190565b5f82825180855260208501945060208160051b830101602085015f5b838110156119e357601f198584030188526119cd83835161190b565b60209889019890935091909101906001016119b1565b50909695505050505050565b606081525f611a01606083018661190b565b8281036020840152611a138186611995565b915050826040830152949350505050565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417611a4f57611a4f611a24565b92915050565b5f82611a6f57634e487b7160e01b5f52601260045260245ffd5b500490565b81810381811115611a4f57611a4f611a24565b6020808252600f908201526e13dddb98589b194e8819195b9a5959608a1b604082015260600190565b6020808252600f908201526e496e76616c6964206164647265737360881b604082015260600190565b6020808252600d908201526c09aeae6e840e6cadcc8408aa89609b1b604082015260600190565b60018060a01b038616815284602082015283604082015260a060608201525f61196860a083018561190b565b80820180821115611a4f57611a4f611a24565b5f60208284031215611b4f575f5ffd5b5051919050565b60f89190911b6001600160f81b031916815260010190565b6001600160f81b031960f894851b8116825292841b83166001820152921b16600282015260030190565b6001600160801b03169052565b6020808252825180516001600160a01b03908116848401528183015181166040808601919091528083015162ffffff1660608087019190915283015160020b608080870191909152909201511660a084015290830151151560c08301528201515f90611c1460e0840182611b98565b506060830151611c28610100840182611b98565b5060808301516101208084015261145e61014084018261190b565b6001600160a01b039290921682526001600160801b0316602082015260400190565b604081525f611c77604083018561190b565b8281036020840152611c898185611995565b95945050505050565b6001600160a01b0392831681529116602082015260400190565b5f82518060208501845e5f92019182525091905056fe00000000000000000000000066a9893cc07d91d95644aedd05d03f95e1dba8afa264697066735822122036911a7b044b55ca7bc4b7ef722cb2b1ca27a551c1722629eafb4f386fbf0c4b64736f6c634300081e0033
Deployed Bytecode Sourcemap
10191:12004:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19287:2901;;;;;;;;;;-1:-1:-1;19287:2901:0;;;;;:::i;:::-;;:::i;:::-;;11128:200;;;;;;;;;;-1:-1:-1;11128:200:0;;;;;:::i;:::-;;:::i;10685:25::-;;;;;;;;;;-1:-1:-1;10685:25:0;;;;-1:-1:-1;;;;;10685:25:0;;;;;;;;;;:::i;:::-;;;;;;;;11490:1581;;;;;;:::i;:::-;;:::i;10337:81::-;;;;;;;;;;;;10376:42;10337:81;;10979:141;;;;;;;;;;-1:-1:-1;10979:141:0;;;;;:::i;:::-;;:::i;10425:76::-;;;;;;;;;;;;10459:42;10425:76;;15880:3149;;;;;;;;;;-1:-1:-1;15880:3149:0;;;;;:::i;:::-;;:::i;10658:20::-;;;;;;;;;;-1:-1:-1;10658:20:0;;;;-1:-1:-1;;;;;10658:20:0;;;10508:73;;;;;;;;;;;;10539:42;10508:73;;13081:2740;;;;;;:::i;:::-;;:::i;10590:37::-;;;;;;;;;;;;;;;;;;;3243:25:1;;;3231:2;3216:18;10590:37:0;3097:177:1;10245:85:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;10245:85:0;;10775:196;;;;;;;;;;-1:-1:-1;10775:196:0;;;;;:::i;:::-;;:::i;19287:2901::-;19422:1;19411:8;:12;19403:42;;;;-1:-1:-1;;;19403:42:0;;3481:2:1;19403:42:0;;;3463:21:1;3520:2;3500:18;;;3493:30;-1:-1:-1;;;3539:18:1;;;3532:47;3596:18;;19403:42:0;;;;;;;;;19506:67;-1:-1:-1;;;;;19506:30:0;;19537:10;19557:4;19564:8;19506:30;:67::i;:::-;-1:-1:-1;19607:8:0;19707:64;-1:-1:-1;;;;;19707:25:0;;-1:-1:-1;;;;;;;;;;;19607:8:0;19707:25;:64::i;:::-;-1:-1:-1;20062:12:0;;;20072:1;20062:12;;;;;;;;;20038:21;;20062:12;;;;;;;;;;-1:-1:-1;20062:12:0;20038:36;;20106:4;20099:12;;20085:8;20094:1;20085:11;;;;;;;;:::i;:::-;;;;:26;-1:-1:-1;;;;;20085:26:0;;;;;;;;;20163:4;20156:12;;20142:8;20151:1;20142:11;;;;;;;;:::i;:::-;;;;:26;-1:-1:-1;;;;;20142:26:0;;;;;;;;-1:-1:-1;20264:14:0;;;20276:1;20264:14;;;;;;;;;20240:21;;20264:14;;;;;;;;;;;;;;;;;;;;20240:38;;20754:17;20791:5;20805:8;10539:42;20774:47;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;20754:67;;-1:-1:-1;;;;;;;;;;;20882:10:0;20894:1;20897:4;20903:5;20844:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;20832:6;20839:1;20832:9;;;;;;;;:::i;:::-;;;;;;:77;;;;21216:4;21223:9;21197:36;;;;;;;;;:::i;:::-;;;;;;;;;;;;;21185:6;21192:1;21185:9;;;;;;;;:::i;:::-;;;;;;;;;;:48;21348:65;-1:-1:-1;;;;;21348:26:0;;-1:-1:-1;;;;;;;;;;;21402:10:0;21348:26;:65::i;:::-;-1:-1:-1;21583:49:0;;-1:-1:-1;;;21583:49:0;;-1:-1:-1;;;;;;;;;;;10288:42:0;;;21583:14;;:49;;21598:8;;21608:6;;21616:15;;21583:49;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21751:21:0;;-1:-1:-1;;;21791:19:0;;;;21783:55;;;;-1:-1:-1;;;21783:55:0;;6844:2:1;21783:55:0;;;6826:21:1;6883:2;6863:18;;;6856:30;-1:-1:-1;;;6902:18:1;;;6895:53;6965:18;;21783:55:0;6642:347:1;21783:55:0;21899:17;21965:5;21944:17;;21920:21;:41;;;;:::i;:::-;21919:51;;;;:::i;:::-;21899:71;-1:-1:-1;21981:18:0;22003:33;21899:71;22003:21;:33;:::i;:::-;22047:40;;21981:55;;-1:-1:-1;22055:10:0;;22047:40;;;;;21981:55;;22047:40;;;;21981:55;22055:10;22047:40;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22101:13:0;;22098:83;;22138:10;;22130:39;;-1:-1:-1;;;;;22138:10:0;;;;22130:39;;;;;22159:9;;22138:10;22130:39;22138:10;22130:39;22159:9;22138:10;22130:39;;;;;;;;;;;;;;;;;;;;;22098:83;19392:2796;;;;;;;;19287:2901;;;;:::o;11128:200::-;11208:5;;-1:-1:-1;;;;;11208:5:0;11194:10;:19;11186:47;;;;-1:-1:-1;;;11186:47:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11252:20:0;;11244:48;;;;-1:-1:-1;;;11244:48:0;;;;;;;:::i;:::-;11303:10;:17;;-1:-1:-1;;;;;;11303:17:0;-1:-1:-1;;;;;11303:17:0;;;;;;;;;;11128:200::o;11490:1581::-;11618:1;11606:9;:13;11598:39;;;;-1:-1:-1;;;11598:39:0;;;;;;;:::i;:::-;11648:17;11702:5;11681:17;;11669:9;:29;;;;:::i;:::-;11668:39;;;;:::i;:::-;11648:59;-1:-1:-1;11718:18:0;11739:21;11648:59;11739:9;:21;:::i;:::-;11799:44;;;-1:-1:-1;;;11799:44:0;;;8837:39:1;11775:21:0;8892:11:1;;;8885:47;;;11799:44:0;;;;;;;;;;8948:11:1;;;11911:14:0;;;;;;;;;11718:42;;-1:-1:-1;11799:44:0;11775:21;;8948:11:1;11911:14:0;;;;;;;;;;;;;;;;;;;11887:38;;-1:-1:-1;;;;;;;;;;;12051:10:0;12022:40;;;;;;;;;:::i;:::-;;;;;;;;;;;;;12010:6;12017:1;12010:9;;;;;;;;:::i;:::-;;;;;;:52;;;;12193:17;10539:42;12236:8;12246:5;12213:39;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;12193:59;;12294:4;12301:10;12313:12;12327:4;12333:5;12275:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;12263:6;12270:1;12263:9;;;;;;;;:::i;:::-;;;;;;;;;;:76;12352:16;12371:21;:15;12389:3;12371:21;:::i;:::-;12478:61;;-1:-1:-1;;;12478:61:0;;12352:40;;-1:-1:-1;;;;;;;;;;;;10288:42:0;;;12478:14;;12500:10;;12478:61;;12512:8;;12522:6;;12352:40;;12478:61;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12668:36:0;;-1:-1:-1;;;12668:36:0;;12631:5;;-1:-1:-1;12603:18:0;;-1:-1:-1;;;;;;12668:21:0;;;-1:-1:-1;12668:21:0;;:36;;12698:4;;12668:36;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12648:56;-1:-1:-1;12921:47:0;-1:-1:-1;;;;;12921:24:0;;12946:10;12648:56;12921:24;:47::i;:::-;-1:-1:-1;12982:13:0;;12979:83;;13019:10;;13011:39;;-1:-1:-1;;;;;13019:10:0;;;;13011:39;;;;;13040:9;;13019:10;13011:39;13019:10;13011:39;13040:9;13019:10;13011:39;;;;;;;;;;;;;;;;;;;10979:141;11052:5;;-1:-1:-1;;;;;11052:5:0;11038:10;:19;11030:47;;;;-1:-1:-1;;;11030:47:0;;;;;;;:::i;:::-;11088:17;:24;10979:141::o;15880:3149::-;16027:19;-1:-1:-1;;;;;16072:32:0;;16119:75;-1:-1:-1;;;;;16119:35:0;;16155:10;16175:4;16072:32;16119:35;:75::i;:::-;-1:-1:-1;16207:51:0;-1:-1:-1;;;;;16207:30:0;;10459:42;16247:10;16207:30;:51::i;:::-;-1:-1:-1;10459:42:0;16269:25;16295:10;-1:-1:-1;;;;;;;;;;;16333:10:0;16353:21;:15;16371:3;16353:21;:::i;:::-;16269:107;;-1:-1:-1;;;;;;16269:107:0;;;;;;;-1:-1:-1;;;;;10081:32:1;;;16269:107:0;;;10063:51:1;10150:32;;;10130:18;;;10123:60;10219:32;;10199:18;;;10192:60;10300:14;10288:27;;;10268:18;;;10261:55;10035:19;;16269:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16391:17;16424:11;-1:-1:-1;;;;;16411:24:0;:10;-1:-1:-1;;;;;16411:24:0;;:51;;16451:11;16411:51;;;16438:10;16411:51;16391:71;;16473:17;16506:11;-1:-1:-1;;;;;16493:24:0;:10;-1:-1:-1;;;;;16493:24:0;;:51;;16534:10;16493:51;;;16520:11;16493:51;16473:71;;16555:15;16586:10;-1:-1:-1;;;;;16573:23:0;:9;-1:-1:-1;;;;;16573:23:0;;16555:41;;16809:35;16847:238;;;;;;;;16894:9;-1:-1:-1;;;;;16847:238:0;;;;;16929:9;-1:-1:-1;;;;;16847:238:0;;;;;16958:7;16847:238;;;;;;16993:11;16847:238;;;;;;17034:1;-1:-1:-1;;;;;16847:238:0;;;;16809:276;;17235:21;9061:4;17259:41;;;;;;;;:::i;:::-;;;;;;;;;;;;;17235:65;;17349:20;6617:4;7021;7152;17372:155;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;17372:155:0;;;17574:1;17562:14;;;;;;;;;17372:155;-1:-1:-1;17538:21:0;;17372:155;17562:14;;;;;;;;;;;;;;;;;;;;17538:38;;17674:433;;;;;;;;17735:7;17674:433;;;;17773:10;17674:433;;;;;;17875:10;-1:-1:-1;;;;;17674:433:0;;;;;17967:12;-1:-1:-1;;;;;17674:433:0;;;;;18047:9;;;;;;;;;;;;17674:433;;;17649:469;;;;;;;;:::i;:::-;;;;;;;;;;;;;17637:6;17644:1;17637:9;;;;;;;;:::i;:::-;;;;;;:481;;;;18259:10;18271;18248:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;18236:6;18243:1;18236:9;;;;;;;;:::i;:::-;;;;;;:46;;;;18383:11;18396:12;18372:37;;;;;;;;;:::i;:::-;;;;;;;;;;;;;18360:6;18367:1;18360:9;;;;;;;;:::i;:::-;;;;;;;;;;:49;18448:14;;;18460:1;18448:14;;;;;;;;;18424:21;;18448:14;;;;;;;;;;;;;;;;;;;;18424:38;;18549:7;18558:6;18538:27;;;;;;;;;:::i;:::-;;;;;;;;;;;;;18526:6;18533:1;18526:9;;;;;;;;:::i;:::-;;;;;;;;;;:39;18607:16;18626:20;:15;18644:2;18626:20;:::i;:::-;18657:70;;-1:-1:-1;;;18657:70:0;;18607:39;;-1:-1:-1;;;;;;;;;;;;10288:42:0;18657;;:70;;18700:8;;18710:6;;18607:39;;18657:70;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18740:17;18806:5;18785:17;;18761:21;:41;;;;:::i;:::-;18760:51;;;;:::i;:::-;18740:71;-1:-1:-1;18822:18:0;18844:33;18740:71;18844:21;:33;:::i;:::-;18888:40;;18822:55;;-1:-1:-1;18896:10:0;;18888:40;;;;;18822:55;;18888:40;;;;18822:55;18896:10;18888:40;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18942:13:0;;18939:83;;18979:10;;18971:39;;-1:-1:-1;;;;;18979:10:0;;;;18971:39;;;;;19000:9;;18979:10;18971:39;18979:10;18971:39;19000:9;18979:10;18971:39;;;;;;;;;;;;;;;;;;;;;18939:83;16016:3013;;;;;;;;;;;;;15880:3149;;;;;:::o;13081:2740::-;13233:1;13221:9;:13;13213:39;;;;-1:-1:-1;;;13213:39:0;;;;;;;:::i;:::-;13265:17;13319:5;13298:17;;13286:9;:29;;;;:::i;:::-;13285:39;;;;:::i;:::-;13265:59;-1:-1:-1;13335:18:0;13356:21;13265:59;13356:9;:21;:::i;:::-;13335:42;-1:-1:-1;13390:18:0;;-1:-1:-1;;;;;13456:24:0;;:51;;13496:11;13456:51;;;13483:10;13456:51;13436:71;;13518:17;13551:11;-1:-1:-1;;;;;13538:24:0;:10;-1:-1:-1;;;;;13538:24:0;;:51;;13579:10;13538:51;;;13565:11;13538:51;13518:71;;13602:35;13640:238;;;;;;;;13687:9;-1:-1:-1;;;;;13640:238:0;;;;;13722:9;-1:-1:-1;;;;;13640:238:0;;;;;13751:7;13640:238;;;;;;13786:11;13640:238;;;;;;13827:1;-1:-1:-1;;;;;13640:238:0;;;;13602:276;;13961:21;9061:4;13985:41;;;;;;;;:::i;:::-;;;;;;;;;;;;;13961:65;;14075:20;6617:4;7021;7152;14098:155;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;14098:155:0;;;14300:1;14288:14;;;;;;;;;14098:155;-1:-1:-1;14264:21:0;;14098:155;14288:14;;;;;;;;;;;;;;;;;;;;14264:38;;14400:446;;;;;;;;14461:7;14400:446;;;;14512:10;-1:-1:-1;;;;;14499:23:0;:9;-1:-1:-1;;;;;14499:23:0;;14400:446;;;;;;14614:10;-1:-1:-1;;;;;14400:446:0;;;;;14706:12;-1:-1:-1;;;;;14400:446:0;;;;;14786:9;;;;;;;;;;;;14400:446;;;14375:482;;;;;;;;:::i;:::-;;;;;;;;;;;;;14363:6;14370:1;14363:9;;;;;;;;:::i;:::-;;;;;;:494;;;;14998:10;15010;14987:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;14975:6;14982:1;14975:9;;;;;;;;:::i;:::-;;;;;;:46;;;;15122:11;15135:12;15111:37;;;;;;;;;:::i;:::-;;;;;;;;;;;;;15099:6;15106:1;15099:9;;;;;;;;:::i;:::-;;;;;;;;;;:49;15187:14;;;15199:1;15187:14;;;;;;;;;15163:21;;15187:14;;;;;;;;;;;;;;;;;;;;15163:38;;15288:7;15297:6;15277:27;;;;;;;;;:::i;:::-;;;;;;;;;;;;;15265:6;15272:1;15265:9;;;;;;;;:::i;:::-;;;;;;;;;;:39;15346:16;15365:20;:15;15383:2;15365:20;:::i;:::-;15396:89;;-1:-1:-1;;;15396:89:0;;15346:39;;-1:-1:-1;;;;;;;;;;;;10288:42:0;15396;;15446:10;;15396:89;;15458:8;;15468:6;;15346:39;;15396:89;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15498:17;15525:11;15498:39;;15548:22;15573:10;-1:-1:-1;;;;;15573:20:0;;15602:4;15573:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15548:60;-1:-1:-1;15622:18:0;;15619:100;;15656:51;-1:-1:-1;;;;;15656:23:0;;15680:10;15692:14;15656:23;:51::i;:::-;;15619:100;15733:13;;15729:85;;15771:10;;15763:39;;-1:-1:-1;;;;;15771:10:0;;;;15763:39;;;;;15792:9;;15771:10;15763:39;15771:10;15763:39;15792:9;15771:10;15763:39;;;;;;;;;;;;;;;;;;;15729:85;13202:2619;;;;;;;;;;;;;13081:2740;;;;:::o;10775:196::-;10856:5;;-1:-1:-1;;;;;10856:5:0;10842:10;:19;10834:47;;;;-1:-1:-1;;;10834:47:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10900:20:0;;10892:48;;;;-1:-1:-1;;;10892:48:0;;;;;;;:::i;:::-;10951:5;:12;;-1:-1:-1;;;;;;10951:12:0;-1:-1:-1;;;;;10951:12:0;;;;;;;;;;10775:196::o;3345:723::-;3491:4;3513:19;3535:6;-1:-1:-1;;;;;3535:16:0;;3552:5;3535:23;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3513:45;;3601:6;3587:11;:20;:104;;;-1:-1:-1;3644:38:0;;-1:-1:-1;;;3644:38:0;;3685:6;;-1:-1:-1;;;;;3644:16:0;;;;;:38;;3661:5;;3676:4;;3644:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:47;3587:104;3571:197;;;3751:5;3744:12;;;;;3571:197;3815:84;;-1:-1:-1;;;;;13457:32:1;;;3815:84:0;;;13439:51:1;13526:32;;;13506:18;;;13499:60;13575:18;;;13568:34;;;3780:20:0;;;13412:18:1;;3815:84:0;;;-1:-1:-1;;3815:84:0;;;;;;;;;;;;;;-1:-1:-1;;;;;3815:84:0;-1:-1:-1;;;3815:84:0;;;3780:130;;;3815:84;3780:130;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4037:23:0;;-1:-1:-1;;;4037:23:0;;-1:-1:-1;;;;;4037:16:0;;;-1:-1:-1;4037:16:0;;:23;;4054:5;;4037:23;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4013:20;4027:6;4013:11;:20;:::i;:::-;:47;4006:54;;;3345:723;;;;;;;:::o;4833:362::-;4921:4;4946:6;-1:-1:-1;;;;;4938:20:0;5024:8;5034:6;4973:68;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;4973:68:0;;;;;;;;;;;;;;-1:-1:-1;;;;;4973:68:0;-1:-1:-1;;;4973:68:0;;;4938:114;;;4973:68;4938:114;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5136:41:0;;-1:-1:-1;;;5136:41:0;;5181:6;;-1:-1:-1;;;;;;5136:16:0;;;;;:41;;5161:4;;5168:8;;5136:41;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:51;5129:58;;4833:362;;;;;;:::o;2373:556::-;2457:4;2474:19;2496:6;-1:-1:-1;;;;;2496:16:0;;2521:4;2496:31;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2474:53;;2558:6;2544:11;:20;2540:100;;;2623:5;2616:12;;;;;2540:100;2660:6;-1:-1:-1;;;;;2652:20:0;2740:3;2745:6;2687:65;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;2687:65:0;;;;;;;;;;;;;;-1:-1:-1;;;;;2687:65:0;-1:-1:-1;;;2687:65:0;;;2652:111;;;2687:65;2652:111;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2890:31:0;;-1:-1:-1;;;2890:31:0;;-1:-1:-1;;;;;2890:16:0;;;-1:-1:-1;2890:16:0;;:31;;2915:4;;2890:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2866:20;2880:6;2866:11;:20;:::i;:::-;:55;;2373:556;-1:-1:-1;;;;;2373:556:0:o;14:173:1:-;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:161::-;259:20;;319:8;308:20;;298:31;;288:59;;343:1;340;333:12;358:493;443:6;451;459;467;520:3;508:9;499:7;495:23;491:33;488:53;;;537:1;534;527:12;488:53;560:29;579:9;560:29;:::i;:::-;550:39;-1:-1:-1;658:2:1;643:18;;630:32;;-1:-1:-1;759:2:1;744:18;;731:32;;-1:-1:-1;808:37:1;841:2;826:18;;808:37;:::i;:::-;798:47;;358:493;;;;;;;:::o;856:186::-;915:6;968:2;956:9;947:7;943:23;939:32;936:52;;;984:1;981;974:12;936:52;1007:29;1026:9;1007:29;:::i;1047:203::-;-1:-1:-1;;;;;1211:32:1;;;;1193:51;;1181:2;1166:18;;1047:203::o;1255:372::-;1331:6;1339;1347;1400:2;1388:9;1379:7;1375:23;1371:32;1368:52;;;1416:1;1413;1406:12;1368:52;1439:29;1458:9;1439:29;:::i;:::-;1429:39;-1:-1:-1;1537:2:1;1522:18;;1509:32;;-1:-1:-1;1584:37:1;1617:2;1602:18;;1584:37;:::i;:::-;1574:47;;1255:372;;;;;:::o;1632:226::-;1691:6;1744:2;1732:9;1723:7;1719:23;1715:32;1712:52;;;1760:1;1757;1750:12;1712:52;-1:-1:-1;1805:23:1;;1632:226;-1:-1:-1;1632:226:1:o;1863:173::-;1931:20;;-1:-1:-1;;;;;1980:31:1;;1970:42;;1960:70;;2026:1;2023;2016:12;2041:160;2107:20;;2167:1;2156:20;;;2146:31;;2136:59;;2191:1;2188;2181:12;2206:478;2298:6;2306;2314;2322;2330;2383:3;2371:9;2362:7;2358:23;2354:33;2351:53;;;2400:1;2397;2390:12;2351:53;2423:29;2442:9;2423:29;:::i;:::-;2413:39;;2471:38;2505:2;2494:9;2490:18;2471:38;:::i;:::-;2461:48;;2528:38;2562:2;2551:9;2547:18;2528:38;:::i;:::-;2518:48;;2585:37;2618:2;2607:9;2603:18;2585:37;:::i;:::-;2575:47;;2641:37;2673:3;2662:9;2658:19;2641:37;:::i;:::-;2631:47;;2206:478;;;;;;;;:::o;2689:403::-;2772:6;2780;2788;2796;2849:3;2837:9;2828:7;2824:23;2820:33;2817:53;;;2866:1;2863;2856:12;2817:53;2889:29;2908:9;2889:29;:::i;:::-;2879:39;;2937:38;2971:2;2960:9;2956:18;2937:38;:::i;:::-;2927:48;;2994:37;3027:2;3016:9;3012:18;2994:37;:::i;:::-;2984:47;;3050:36;3082:2;3071:9;3067:18;3050:36;:::i;3757:127::-;3818:10;3813:3;3809:20;3806:1;3799:31;3849:4;3846:1;3839:15;3873:4;3870:1;3863:15;3889:423;4117:2;4088:15;;;-1:-1:-1;;;;;;4084:45:1;;;4072:58;;4186:3;4164:16;;;;-1:-1:-1;;;;;;4160:41:1;4155:2;4146:12;;4139:63;4236:15;;4232:45;4227:2;4218:12;;4211:67;4303:2;4294:12;;3889:423::o;4317:288::-;4358:3;4396:5;4390:12;4423:6;4418:3;4411:19;4479:6;4472:4;4465:5;4461:16;4454:4;4449:3;4445:14;4439:47;4531:1;4524:4;4515:6;4510:3;4506:16;4502:27;4495:38;4594:4;4587:2;4583:7;4578:2;4570:6;4566:15;4562:29;4557:3;4553:39;4549:50;4542:57;;;4317:288;;;;:::o;4706:557::-;4994:1;4990;4985:3;4981:11;4977:19;4969:6;4965:32;4954:9;4947:51;5034:6;5029:2;5018:9;5014:18;5007:34;5089:4;5081:6;5077:17;5072:2;5061:9;5057:18;5050:45;5131:3;5126:2;5115:9;5111:18;5104:31;4928:4;5152:45;5192:3;5181:9;5177:19;5169:6;5152:45;:::i;:::-;5144:53;;5248:6;5241:14;5234:22;5228:3;5217:9;5213:19;5206:51;4706:557;;;;;;;;:::o;5268:274::-;-1:-1:-1;;;;;5460:32:1;;;;5442:51;;5524:2;5509:18;;5502:34;5430:2;5415:18;;5268:274::o;5547:577::-;5598:3;5629;5661:5;5655:12;5688:6;5683:3;5676:19;5720:4;5715:3;5711:14;5704:21;;5778:4;5768:6;5765:1;5761:14;5754:5;5750:26;5746:37;5817:4;5810:5;5806:16;5840:1;5850:248;5864:6;5861:1;5858:13;5850:248;;;5951:2;5947:7;5939:5;5933:4;5929:16;5925:30;5920:3;5913:43;5977:37;6009:4;6000:6;5994:13;5977:37;:::i;:::-;6049:4;6074:14;;;;5969:45;;-1:-1:-1;6037:17:1;;;;;5886:1;5879:9;5850:248;;;-1:-1:-1;6114:4:1;;5547:577;-1:-1:-1;;;;;;5547:577:1:o;6129:508::-;6400:2;6389:9;6382:21;6363:4;6426:44;6466:2;6455:9;6451:18;6443:6;6426:44;:::i;:::-;6518:9;6510:6;6506:22;6501:2;6490:9;6486:18;6479:50;6546:42;6581:6;6573;6546:42;:::i;:::-;6538:50;;;6624:6;6619:2;6608:9;6604:18;6597:34;6129:508;;;;;;:::o;6994:127::-;7055:10;7050:3;7046:20;7043:1;7036:31;7086:4;7083:1;7076:15;7110:4;7107:1;7100:15;7126:168;7199:9;;;7230;;7247:15;;;7241:22;;7227:37;7217:71;;7268:18;;:::i;:::-;7126:168;;;;:::o;7299:217::-;7339:1;7365;7355:132;;7409:10;7404:3;7400:20;7397:1;7390:31;7444:4;7441:1;7434:15;7472:4;7469:1;7462:15;7355:132;-1:-1:-1;7501:9:1;;7299:217::o;7521:128::-;7588:9;;;7609:11;;;7606:37;;;7623:18;;:::i;7654:339::-;7856:2;7838:21;;;7895:2;7875:18;;;7868:30;-1:-1:-1;;;7929:2:1;7914:18;;7907:45;7984:2;7969:18;;7654:339::o;7998:::-;8200:2;8182:21;;;8239:2;8219:18;;;8212:30;-1:-1:-1;;;8273:2:1;8258:18;;8251:45;8328:2;8313:18;;7998:339::o;8342:337::-;8544:2;8526:21;;;8583:2;8563:18;;;8556:30;-1:-1:-1;;;8617:2:1;8602:18;;8595:43;8670:2;8655:18;;8342:337::o;8970:540::-;9252:1;9248;9243:3;9239:11;9235:19;9227:6;9223:32;9212:9;9205:51;9292:6;9287:2;9276:9;9272:18;9265:34;9335:6;9330:2;9319:9;9315:18;9308:34;9378:3;9373:2;9362:9;9358:18;9351:31;9186:4;9399:45;9439:3;9428:9;9424:19;9416:6;9399:45;:::i;9515:125::-;9580:9;;;9601:10;;;9598:36;;;9614:18;;:::i;9645:184::-;9715:6;9768:2;9756:9;9747:7;9743:23;9739:32;9736:52;;;9784:1;9781;9774:12;9736:52;-1:-1:-1;9807:16:1;;9645:184;-1:-1:-1;9645:184:1:o;10327:207::-;10490:3;10468:16;;;;-1:-1:-1;;;;;;10464:36:1;10452:49;;10526:1;10517:11;;10327:207::o;10539:387::-;-1:-1:-1;;;;;;10750:3:1;10728:16;;;10724:36;;10712:49;;10794:16;;;10790:36;;10786:1;10777:11;;10770:57;10860:16;;10856:36;10852:1;10843:11;;10836:57;10918:1;10909:11;;10539:387::o;10931:104::-;-1:-1:-1;;;;;10997:31:1;10985:44;;10931:104::o;11040:1140::-;11247:2;11229:21;;;11269:13;;11322:9;;-1:-1:-1;;;;;11318:35:1;;;11298:18;;;11291:63;11400:11;;;11394:18;11390:44;;11385:2;11370:18;;;11363:72;;;;11481:11;;;11475:18;11495:8;11471:33;11466:2;11451:18;;;11444:61;;;;11562:11;;11556:18;11553:1;11542:33;11536:3;11521:19;;;11514:62;;;;11623:12;;;11617:19;11613:45;11341:3;11592:19;;11585:74;11694:15;;;11688:22;4680:13;4673:21;11764:3;11749:19;;4661:34;11806:15;;11800:22;-1:-1:-1;;11831:55:1;11881:3;11866:19;;11800:22;11831:55;:::i;:::-;;11935:2;11927:6;11923:15;11917:22;11948:55;11998:3;11987:9;11983:19;11967:14;11948:55;:::i;:::-;;12052:3;12044:6;12040:16;12034:23;12097:6;12088;12077:9;12073:22;12066:38;12121:53;12169:3;12158:9;12154:19;12138:14;12121:53;:::i;12185:300::-;-1:-1:-1;;;;;12377:32:1;;;;12359:51;;-1:-1:-1;;;;;12446:32:1;12441:2;12426:18;;12419:60;12347:2;12332:18;;12185:300::o;12490:437::-;12733:2;12722:9;12715:21;12696:4;12759:44;12799:2;12788:9;12784:18;12776:6;12759:44;:::i;:::-;12851:9;12843:6;12839:22;12834:2;12823:9;12819:18;12812:50;12879:42;12914:6;12906;12879:42;:::i;:::-;12871:50;12490:437;-1:-1:-1;;;;;12490:437:1:o;12932:300::-;-1:-1:-1;;;;;13124:32:1;;;13106:51;;13193:32;;13188:2;13173:18;;13166:60;13094:2;13079:18;;12932:300::o;13613:301::-;13742:3;13780:6;13774:13;13826:6;13819:4;13811:6;13807:17;13802:3;13796:37;13888:1;13852:16;;13877:13;;;-1:-1:-1;13852:16:1;13613:301;-1:-1:-1;13613:301:1:o
Swarm Source
ipfs://36911a7b044b55ca7bc4b7ef722cb2b1ca27a551c1722629eafb4f386fbf0c4b
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 ]
[ 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.