Source Code
Latest 25 from a total of 1,799 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Swap Compact | 37128295 | 16 days ago | IN | 0 ETH | 0.00000005 | ||||
| Swap Compact | 37128191 | 16 days ago | IN | 0 ETH | 0 | ||||
| Swap Compact | 37128047 | 16 days ago | IN | 0 ETH | 0 | ||||
| Swap Compact | 37127944 | 16 days ago | IN | 0 ETH | 0 | ||||
| Swap Compact | 37127840 | 16 days ago | IN | 0 ETH | 0 | ||||
| Swap Compact | 37127723 | 16 days ago | IN | 0 ETH | 0 | ||||
| Swap Compact | 37127656 | 16 days ago | IN | 0 ETH | 0 | ||||
| Swap Compact | 37127563 | 16 days ago | IN | 0 ETH | 0 | ||||
| Swap Compact | 37127474 | 16 days ago | IN | 0 ETH | 0.00000003 | ||||
| Swap Compact | 37055180 | 17 days ago | IN | 0 ETH | 0.00000022 | ||||
| Swap Compact | 37034287 | 17 days ago | IN | 0 ETH | 0 | ||||
| Swap Compact | 36940475 | 18 days ago | IN | 0 ETH | 0 | ||||
| Swap Compact | 36940439 | 18 days ago | IN | 0.001 ETH | 0 | ||||
| Swap Compact | 36906260 | 18 days ago | IN | 0 ETH | 0 | ||||
| Swap Compact | 36896280 | 18 days ago | IN | 0.00001 ETH | 0.00000015 | ||||
| Swap Compact | 36894371 | 18 days ago | IN | 0.00001 ETH | 0.00000015 | ||||
| Swap Compact | 36865995 | 19 days ago | IN | 0 ETH | 0.00000028 | ||||
| Swap Compact | 36865955 | 19 days ago | IN | 0 ETH | 0.00000028 | ||||
| Swap Compact | 36849223 | 19 days ago | IN | 0 ETH | 0 | ||||
| Swap Multi Compa... | 36832726 | 19 days ago | IN | 0 ETH | 0 | ||||
| Swap Compact | 36814618 | 19 days ago | IN | 0 ETH | 0.00000023 | ||||
| Swap Compact | 36814549 | 19 days ago | IN | 0.005 ETH | 0.00000024 | ||||
| Swap Compact | 36813876 | 19 days ago | IN | 0 ETH | 0.0000003 | ||||
| Swap Compact | 36813821 | 19 days ago | IN | 0.0045 ETH | 0.00000021 | ||||
| Swap Compact | 36813725 | 19 days ago | IN | 0.00001 ETH | 0.00000017 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Block | From | To | |||
|---|---|---|---|---|---|---|
| 37055180 | 17 days ago | 0.0319485 ETH | ||||
| 37055180 | 17 days ago | 0.0319965 ETH | ||||
| 37034287 | 17 days ago | 0.00497587 ETH | ||||
| 37034287 | 17 days ago | 0.00497587 ETH | ||||
| 36940475 | 18 days ago | 0.00099695 ETH | ||||
| 36940475 | 18 days ago | 0.00099845 ETH | ||||
| 36940439 | 18 days ago | 0.001 ETH | ||||
| 36896280 | 18 days ago | 0.00001 ETH | ||||
| 36894371 | 18 days ago | 0.00001 ETH | ||||
| 36849223 | 19 days ago | 0.00012325 ETH | ||||
| 36849223 | 19 days ago | 0.00012325 ETH | ||||
| 36832726 | 19 days ago | 0.01598092 ETH | ||||
| 36832726 | 19 days ago | 0.01600555 ETH | ||||
| 36814618 | 19 days ago | 0.00497657 ETH | ||||
| 36814618 | 19 days ago | 0.00498405 ETH | ||||
| 36814549 | 19 days ago | 0.005 ETH | ||||
| 36813876 | 19 days ago | 0.00447458 ETH | ||||
| 36813876 | 19 days ago | 0.00089087 ETH | ||||
| 36813876 | 19 days ago | 0.00066221 ETH | ||||
| 36813876 | 19 days ago | 0.00292821 ETH | ||||
| 36813821 | 19 days ago | 0.0045 ETH | ||||
| 36813725 | 19 days ago | 0.00001 ETH | ||||
| 36778925 | 20 days ago | 0.00415 ETH | ||||
| 36727522 | 20 days ago | 0.01194249 ETH | ||||
| 36727522 | 20 days ago | 0.00838952 ETH |
Cross-Chain Transactions
Loading...
Loading
Contract Name:
OdosRouterV3
Compiler Version
v0.8.20+commit.a1b79de6
Optimization Enabled:
Yes with 1000 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity 0.8.20;
import "../interfaces/IOdosRouterV3.sol";
import "../interfaces/IOdosExecutor.sol";
import "../interfaces/IOdosHook.sol";
import "../interfaces/ISignatureTransfer.sol";
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
import "@openzeppelin/contracts/access/Ownable2Step.sol";
/// @title V3 Routing contract for Odos SOR
/// @author Transaction Assembly
/// @notice Wrapper with security gaurentees around execution of arbitrary operations on user tokens
contract OdosRouterV3 is IOdosRouterV3, Ownable2Step {
using SafeERC20 for IERC20;
/// @dev The zero address is uniquely used to represent eth since it is already
/// recognized as an invalid ERC20, and due to its gas efficiency
address constant _ETH = address(0);
/// @dev Address list where addresses can be cached for use when reading from storage is cheaper
// than reading from calldata. addressListStart is the storage slot of the first dynamic array element
uint256 private constant addressListStart =
29102676481673041902632991033461445430619272659676223336789171408008386403022;
address[] public addressList;
/// @dev Address which can access and liquidate funds held in the router
address public liquidatorAddress;
// @dev constant for the fee precision
uint256 public constant FEE_DENOM = 1e18;
constructor(address owner) Ownable(owner) { }
/// @dev Must exist in order for contract to receive eth
receive() external payable { }
/// @notice Custom decoder to swap with compact calldata for efficient execution on L2s
function swapCompact()
external
payable
returns (uint256)
{
swapTokenInfo memory tokenInfo;
swapReferralInfo memory referralInfo;
address executor;
bytes calldata pathDefinition;
{
assembly {
// Define function to load in token address, either from calldata or from storage
function getAddress(currPos) -> result, newPos {
let inputPos := shr(240, calldataload(currPos))
switch inputPos
// Reserve the null address as a special case that can be specified with 2 null bytes
case 0x0000 {
newPos := add(currPos, 2)
}
// This case means that the address is encoded in the calldata directly following the code
case 0x0001 {
result := and(shr(80, calldataload(currPos)), 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF)
newPos := add(currPos, 22)
}
// Otherwise we use the case to load in from the cached address list
default {
result := sload(add(addressListStart, sub(inputPos, 2)))
newPos := add(currPos, 2)
}
}
let result := 0
let pos := 4
// Load in the input and output token addresses
result, pos := getAddress(pos)
mstore(tokenInfo, result)
result, pos := getAddress(pos)
mstore(add(tokenInfo, 0x60), result)
// Load in the input amount - a 0 byte means the full balance is to be used
let inputAmountLength := shr(248, calldataload(pos))
pos := add(pos, 1)
if inputAmountLength {
mstore(add(tokenInfo, 0x20), shr(mul(sub(32, inputAmountLength), 8), calldataload(pos)))
pos := add(pos, inputAmountLength)
}
// Load in the quoted output amount
let quoteAmountLength := shr(248, calldataload(pos))
pos := add(pos, 1)
let outputQuote := shr(mul(sub(32, quoteAmountLength), 8), calldataload(pos))
mstore(add(tokenInfo, 0x80), outputQuote)
pos := add(pos, quoteAmountLength)
// Load the slippage tolerance and use to get the minimum output amount
{
let slippageTolerance := shr(232, calldataload(pos))
mstore(add(tokenInfo, 0xA0), div(mul(outputQuote, sub(0xFFFFFF, slippageTolerance)), 0xFFFFFF))
}
pos := add(pos, 3)
// Load in the executor address
executor, pos := getAddress(pos)
// Load in the destination to send the input to - Zero denotes the executor
result, pos := getAddress(pos)
if eq(result, 0) { result := executor }
mstore(add(tokenInfo, 0x40), result)
// Load in the destination to send the output to - Zero denotes msg.sender
result, pos := getAddress(pos)
mstore(add(tokenInfo, 0xC0), result)
let referralCode := shr(192, calldataload(pos))
pos := add(pos, 8)
mstore(referralInfo, referralCode)
let feeStatus := shr(248, calldataload(pos))
pos := add(pos, 1)
if feeStatus {
let referralFee := shr(192, calldataload(pos))
pos := add(pos, 8)
mstore(add(referralInfo, 0x20), referralFee)
let referralBeneficiary := shr(96, calldataload(pos))
pos := add(pos, 20)
mstore(add(referralInfo, 0x40), referralBeneficiary)
}
// Set the offset and size for the pathDefinition portion of the msg.data
pathDefinition.length := mul(shr(248, calldataload(pos)), 32)
pathDefinition.offset := add(pos, 1)
}
}
return _swapApproval(
tokenInfo,
pathDefinition,
executor,
referralInfo
);
}
/// @notice Externally facing interface for swapping two tokens
/// @param tokenInfo All information about the tokens being swapped
/// @param pathDefinition Encoded path definition for executor
/// @param executor Address of contract that will execute the path
/// @param referralInfo referral info to specify the source of and fee for the swap
function swap(
swapTokenInfo memory tokenInfo,
bytes calldata pathDefinition,
address executor,
swapReferralInfo memory referralInfo
)
external
payable
returns (uint256 amountOut)
{
return _swapApproval(
tokenInfo,
pathDefinition,
executor,
referralInfo
);
}
/// @notice Externally facing interface for swapping two tokens with a call at the end
/// @param tokenInfo All information about the tokens being swapped
/// @param pathDefinition Encoded path definition for executor
/// @param executor Address of contract that will execute the path
/// @param referralInfo referral info to specify the source of and fee for the swap
/// @param hookTarget the target address to call the hook on
/// @param hookData encoded data for a call to the hookTarget after the swap
function swapWithHook(
swapTokenInfo memory tokenInfo,
bytes calldata pathDefinition,
address executor,
swapReferralInfo memory referralInfo,
address hookTarget,
bytes calldata hookData
)
external
payable
returns (uint256 amountOut)
{
amountOut = _swapApproval(
tokenInfo,
pathDefinition,
executor,
referralInfo
);
uint256[] memory hookAmountsIn = new uint256[](1);
hookAmountsIn[0] = amountOut;
IOdosHook(hookTarget).executeOdosHook(
hookData,
hookAmountsIn,
msg.sender
);
}
/// @notice Internal function for initiating approval transfers
/// @param tokenInfo All information about the tokens being swapped
/// @param pathDefinition Encoded path definition for executor
/// @param executor Address of contract that will execute the path
/// @param referralInfo referral info to specify the source of and fee for the swap
function _swapApproval(
swapTokenInfo memory tokenInfo,
bytes calldata pathDefinition,
address executor,
swapReferralInfo memory referralInfo
)
internal
returns (uint256 amountOut)
{
if (tokenInfo.inputToken == _ETH) {
// Support rebasing tokens by allowing the user to trade the entire balance
if (tokenInfo.inputAmount == 0) {
tokenInfo.inputAmount = msg.value;
} else {
require(msg.value == tokenInfo.inputAmount, "Wrong msg.value");
}
}
else {
require(msg.value == 0, "Wrong msg.value");
// Support rebasing tokens by allowing the user to trade the entire balance
if (tokenInfo.inputAmount == 0) {
tokenInfo.inputAmount = IERC20(tokenInfo.inputToken).balanceOf(msg.sender);
}
IERC20(tokenInfo.inputToken).safeTransferFrom(
msg.sender,
tokenInfo.inputReceiver,
tokenInfo.inputAmount
);
}
return _swap(
tokenInfo,
pathDefinition,
executor,
referralInfo
);
}
/// @notice Externally facing interface for swapping two tokens
/// @param permit2 All additional info for Permit2 transfers
/// @param tokenInfo All information about the tokens being swapped
/// @param pathDefinition Encoded path definition for executor
/// @param executor Address of contract that will execute the path
/// @param referralInfo referral info to specify the source of and fee for the swap
function swapPermit2(
permit2Info memory permit2,
swapTokenInfo memory tokenInfo,
bytes calldata pathDefinition,
address executor,
swapReferralInfo memory referralInfo
)
external
returns (uint256 amountOut)
{
return _swapPermit2(
permit2,
tokenInfo,
pathDefinition,
executor,
referralInfo
);
}
/// @notice Externally facing interface for swapping two tokens
/// @param permit2 All additional info for Permit2 transfers
/// @param tokenInfo All information about the tokens being swapped
/// @param pathDefinition Encoded path definition for executor
/// @param executor Address of contract that will execute the path
/// @param referralInfo referral info to specify the source of and fee for the swap
/// @param hookTarget the target address to call the hook on
/// @param hookData encoded data for a call to the hookTarget after the swap
function swapPermit2WithHook(
permit2Info memory permit2,
swapTokenInfo memory tokenInfo,
bytes calldata pathDefinition,
address executor,
swapReferralInfo memory referralInfo,
address hookTarget,
bytes calldata hookData
)
external
returns (uint256 amountOut)
{
amountOut = _swapPermit2(
permit2,
tokenInfo,
pathDefinition,
executor,
referralInfo
);
uint256[] memory hookAmountsIn = new uint256[](1);
hookAmountsIn[0] = amountOut;
IOdosHook(hookTarget).executeOdosHook(
hookData,
hookAmountsIn,
msg.sender
);
}
/// @notice Internal function for using permit2 before a swap
/// @param permit2 All additional info for Permit2 transfers
/// @param tokenInfo All information about the tokens being swapped
/// @param pathDefinition Encoded path definition for executor
/// @param executor Address of contract that will execute the path
/// @param referralInfo referral info to specify the source of and fee for the swap
function _swapPermit2(
permit2Info memory permit2,
swapTokenInfo memory tokenInfo,
bytes calldata pathDefinition,
address executor,
swapReferralInfo memory referralInfo
)
internal
returns (uint256 amountOut)
{
ISignatureTransfer(permit2.contractAddress).permitTransferFrom(
ISignatureTransfer.PermitTransferFrom(
ISignatureTransfer.TokenPermissions(
tokenInfo.inputToken,
tokenInfo.inputAmount
),
permit2.nonce,
permit2.deadline
),
ISignatureTransfer.SignatureTransferDetails(
tokenInfo.inputReceiver,
tokenInfo.inputAmount
),
msg.sender,
permit2.signature
);
return _swap(
tokenInfo,
pathDefinition,
executor,
referralInfo
);
}
/// @notice contains the main logic for swapping one token for another
/// Assumes input tokens have already been sent to their destinations and
/// that msg.value is set to expected ETH input value, or 0 for ERC20 input
/// @param tokenInfo All information about the tokens being swapped
/// @param pathDefinition Encoded path definition for executor
/// @param executor Address of contract that will execute the path
/// @param referralInfo referral info to specify the source of and fee for the swap
function _swap(
swapTokenInfo memory tokenInfo,
bytes calldata pathDefinition,
address executor,
swapReferralInfo memory referralInfo
)
internal
returns (uint256 amountOut)
{
// Check for valid output specifications
require(tokenInfo.outputMin <= tokenInfo.outputQuote, "Minimum greater than quote");
require(tokenInfo.outputMin > 0, "Minimum output is zero");
require(tokenInfo.inputToken != tokenInfo.outputToken, "Arbitrage not supported");
uint256 balanceBefore = _universalBalance(tokenInfo.outputToken);
// Delegate the execution of the path to the specified Odos Executor
uint256[] memory amountsIn = new uint256[](1);
amountsIn[0] = tokenInfo.inputAmount;
IOdosExecutor(executor).executePath{value: msg.value}(pathDefinition, amountsIn, msg.sender);
amountOut = _universalBalance(tokenInfo.outputToken) - balanceBefore;
if (referralInfo.fee > 0) {
require(referralInfo.feeRecipient != address(0), "Null fee recipient");
require(referralInfo.fee <= FEE_DENOM / 50, "Fee too high");
uint256 splitBPS = (referralInfo.code >> 32) & 65535;
if (splitBPS == 0) splitBPS = 8000;
require(splitBPS <= 10000, "Invalid Ref Code");
if (referralInfo.feeRecipient != address(this)) {
_universalTransfer(
tokenInfo.outputToken,
referralInfo.feeRecipient,
amountOut * referralInfo.fee * splitBPS / (FEE_DENOM * 10000)
);
}
amountOut = amountOut * (FEE_DENOM - referralInfo.fee) / FEE_DENOM;
}
int256 slippage = int256(amountOut) - int256(tokenInfo.outputQuote);
if (slippage > 0 && (referralInfo.code >> 48) & 1 == 0) {
amountOut = tokenInfo.outputQuote;
}
require(amountOut >= tokenInfo.outputMin, "Slippage Limit Exceeded");
// Transfer out the final output to the end user
_universalTransfer(
tokenInfo.outputToken,
tokenInfo.outputReceiver == address(0) ? msg.sender : tokenInfo.outputReceiver,
amountOut
);
emit Swap(
msg.sender,
tokenInfo.inputAmount,
tokenInfo.inputToken,
amountOut,
tokenInfo.outputToken,
slippage,
referralInfo.code,
referralInfo.fee,
referralInfo.feeRecipient
);
}
/// @notice Custom decoder to swapMulti with compact calldata for efficient execution on L2s
function swapMultiCompact()
external
payable
returns (uint256[] memory amountsOut)
{
address executor;
inputTokenInfo[] memory inputs;
outputTokenInfo[] memory outputs;
uint256 pos = 6;
{
uint256 numInputs;
uint256 numOutputs;
assembly {
numInputs := shr(248, calldataload(4))
numOutputs := shr(248, calldataload(5))
}
inputs = new inputTokenInfo[](numInputs);
outputs = new outputTokenInfo[](numOutputs);
assembly {
// Define function to load in token address, either from calldata or from storage
function getAddress(currPos) -> result, newPos {
let inputPos := shr(240, calldataload(currPos))
switch inputPos
// Reserve the null address as a special case that can be specified with 2 null bytes
case 0x0000 {
newPos := add(currPos, 2)
}
// This case means that the address is encoded in the calldata directly following the code
case 0x0001 {
result := and(shr(80, calldataload(currPos)), 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF)
newPos := add(currPos, 22)
}
// Otherwise we use the case to load in from the cached address list
default {
result := sload(add(addressListStart, sub(inputPos, 2)))
newPos := add(currPos, 2)
}
}
executor, pos := getAddress(pos)
let slippageTolerance := shr(232, calldataload(pos))
pos := add(pos, 3)
let result := 0
let memPos := 0
for { let element := 0 } lt(element, numInputs) { element := add(element, 1) }
{
memPos := mload(add(inputs, add(mul(element, 0x20), 0x20)))
// Load in the token address
result, pos := getAddress(pos)
mstore(memPos, result)
// Load in the input amount - a 0 byte means the full balance is to be used
let inputAmountLength := shr(248, calldataload(pos))
pos := add(pos, 1)
if inputAmountLength {
mstore(add(memPos, 0x20), shr(mul(sub(32, inputAmountLength), 8), calldataload(pos)))
pos := add(pos, inputAmountLength)
}
result, pos := getAddress(pos)
if eq(result, 0) { result := executor }
mstore(add(memPos, 0x40), result)
}
for { let element := 0 } lt(element, numOutputs) { element := add(element, 1) }
{
memPos := mload(add(outputs, add(mul(element, 0x20), 0x20)))
// Load in the token address
result, pos := getAddress(pos)
mstore(memPos, result)
// Load in the quoted output amount
let outputAmountLength := shr(248, calldataload(pos))
pos := add(pos, 1)
let outputQuote := shr(mul(sub(32, outputAmountLength), 8), calldataload(pos))
mstore(add(memPos, 0x20), outputQuote)
pos := add(pos, outputAmountLength)
// Set the minimum output amount as quote with slippage limit applied
mstore(add(memPos, 0x40), div(mul(outputQuote, sub(0xFFFFFF, slippageTolerance)), 0xFFFFFF))
result, pos := getAddress(pos)
mstore(add(memPos, 0x60), result)
}
}
}
swapReferralInfo memory referralInfo;
bytes calldata pathDefinition;
assembly {
let referralCode := shr(192, calldataload(pos))
pos := add(pos, 8)
mstore(referralInfo, referralCode)
let feeStatus := shr(248, calldataload(pos))
pos := add(pos, 1)
if feeStatus {
let referralFee := shr(192, calldataload(pos))
pos := add(pos, 8)
mstore(add(referralInfo, 0x20), referralFee)
let referralBeneficiary := shr(96, calldataload(pos))
pos := add(pos, 20)
mstore(add(referralInfo, 0x40), referralBeneficiary)
}
// Set the offset and size for the pathDefinition portion of the msg.data
pathDefinition.length := mul(shr(248, calldataload(pos)), 32)
pathDefinition.offset := add(pos, 1)
}
return _swapMultiApproval(
inputs,
outputs,
pathDefinition,
executor,
referralInfo
);
}
/// @notice Externally facing interface for swapping between two sets of tokens
/// @param inputs list of input token structs for the path being executed
/// @param outputs list of output token structs for the path being executed
/// @param pathDefinition Encoded path definition for executor
/// @param executor Address of contract that will execute the path
/// @param referralInfo referral info to specify the source of and fee for the swap
function swapMulti(
inputTokenInfo[] memory inputs,
outputTokenInfo[] memory outputs,
bytes calldata pathDefinition,
address executor,
swapReferralInfo memory referralInfo
)
external
payable
returns (uint256[] memory amountsOut)
{
return _swapMultiApproval(
inputs,
outputs,
pathDefinition,
executor,
referralInfo
);
}
/// @notice Externally facing interface for swapping between two sets of tokens with a hook
/// @param inputs list of input token structs for the path being executed
/// @param outputs list of output token structs for the path being executed
/// @param pathDefinition Encoded path definition for executor
/// @param executor Address of contract that will execute the path
/// @param referralInfo referral info to specify the source of and fee for the swap
/// @param hookTarget the target address to call the hook on
/// @param hookData encoded data for a call to the hookTarget after the swap
function swapMultiWithHook(
inputTokenInfo[] memory inputs,
outputTokenInfo[] memory outputs,
bytes calldata pathDefinition,
address executor,
swapReferralInfo memory referralInfo,
address hookTarget,
bytes calldata hookData
)
external
payable
returns (uint256[] memory amountsOut)
{
amountsOut = _swapMultiApproval(
inputs,
outputs,
pathDefinition,
executor,
referralInfo
);
IOdosHook(hookTarget).executeOdosHook(
hookData,
amountsOut,
msg.sender
);
}
/// @notice Internal logic for swapping between two sets of tokens with approvals
/// @param inputs list of input token structs for the path being executed
/// @param outputs list of output token structs for the path being executed
/// @param pathDefinition Encoded path definition for executor
/// @param executor Address of contract that will execute the path
/// @param referralInfo referral info to specify the source of and fee for the swap
function _swapMultiApproval(
inputTokenInfo[] memory inputs,
outputTokenInfo[] memory outputs,
bytes calldata pathDefinition,
address executor,
swapReferralInfo memory referralInfo
)
internal
returns (uint256[] memory amountsOut)
{
// If input amount is still 0 then that means the maximum possible input is to be used
uint256 expected_msg_value = 0;
for (uint256 i = 0; i < inputs.length; i++) {
if (inputs[i].tokenAddress == _ETH) {
if (inputs[i].amountIn == 0) {
inputs[i].amountIn = msg.value;
}
expected_msg_value = inputs[i].amountIn;
}
else {
if (inputs[i].amountIn == 0) {
inputs[i].amountIn = IERC20(inputs[i].tokenAddress).balanceOf(msg.sender);
}
IERC20(inputs[i].tokenAddress).safeTransferFrom(
msg.sender,
inputs[i].receiver,
inputs[i].amountIn
);
}
}
require(msg.value == expected_msg_value, "Wrong msg.value");
return _swapMulti(
inputs,
outputs,
pathDefinition,
executor,
referralInfo
);
}
/// @notice Externally facing function for swapping between two sets of tokens with Permit2
/// @param permit2 All additional info for Permit2 transfers
/// @param inputs list of input token structs for the path being executed
/// @param outputs list of output token structs for the path being executed
/// @param pathDefinition Encoded path definition for executor
/// @param executor Address of contract that will execute the path
/// @param referralInfo referral info to specify the source of and fee for the swap
function swapMultiPermit2(
permit2Info memory permit2,
inputTokenInfo[] memory inputs,
outputTokenInfo[] memory outputs,
bytes calldata pathDefinition,
address executor,
swapReferralInfo memory referralInfo
)
external
payable
returns (uint256[] memory amountsOut)
{
return _swapMultiPermit2(
permit2,
inputs,
outputs,
pathDefinition,
executor,
referralInfo
);
}
/// @notice Externally facing function for swapping between two sets of tokens with Permit2 with a hook
/// @param permit2 All additional info for Permit2 transfers
/// @param inputs list of input token structs for the path being executed
/// @param outputs list of output token structs for the path being executed
/// @param pathDefinition Encoded path definition for executor
/// @param executor Address of contract that will execute the path
/// @param referralInfo referral info to specify the source of and fee for the swap
/// @param hookTarget the target address to call the hook on
/// @param hookData encoded data for a call to the hookTarget after the swap
function swapMultiPermit2WithHook(
permit2Info memory permit2,
inputTokenInfo[] memory inputs,
outputTokenInfo[] memory outputs,
bytes calldata pathDefinition,
address executor,
swapReferralInfo memory referralInfo,
address hookTarget,
bytes calldata hookData
)
external
payable
returns (uint256[] memory amountsOut)
{
amountsOut = _swapMultiPermit2(
permit2,
inputs,
outputs,
pathDefinition,
executor,
referralInfo
);
IOdosHook(hookTarget).executeOdosHook(
hookData,
amountsOut,
msg.sender
);
}
/// @notice Internal function for approcing with premit2 before swapping multiple tokens
/// @param permit2 All additional info for Permit2 transfers
/// @param inputs list of input token structs for the path being executed
/// @param outputs list of output token structs for the path being executed
/// @param pathDefinition Encoded path definition for executor
/// @param executor Address of contract that will execute the path
/// @param referralInfo referral info to specify the source of and fee for the swap
function _swapMultiPermit2(
permit2Info memory permit2,
inputTokenInfo[] memory inputs,
outputTokenInfo[] memory outputs,
bytes calldata pathDefinition,
address executor,
swapReferralInfo memory referralInfo
)
internal
returns (uint256[] memory amountsOut)
{
ISignatureTransfer.PermitBatchTransferFrom memory permit;
ISignatureTransfer.SignatureTransferDetails[] memory transferDetails;
{
uint256 permit_length = msg.value > 0 ? inputs.length - 1 : inputs.length;
permit = ISignatureTransfer.PermitBatchTransferFrom(
new ISignatureTransfer.TokenPermissions[](permit_length),
permit2.nonce,
permit2.deadline
);
transferDetails =
new ISignatureTransfer.SignatureTransferDetails[](permit_length);
}
{
uint256 expected_msg_value = 0;
for (uint256 i = 0; i < inputs.length; i++) {
if (inputs[i].tokenAddress == _ETH) {
if (inputs[i].amountIn == 0) {
inputs[i].amountIn = msg.value;
}
expected_msg_value = inputs[i].amountIn;
}
else {
if (inputs[i].amountIn == 0) {
inputs[i].amountIn = IERC20(inputs[i].tokenAddress).balanceOf(msg.sender);
}
uint256 permit_index = expected_msg_value == 0 ? i : i - 1;
permit.permitted[permit_index].token = inputs[i].tokenAddress;
permit.permitted[permit_index].amount = inputs[i].amountIn;
transferDetails[permit_index].to = inputs[i].receiver;
transferDetails[permit_index].requestedAmount = inputs[i].amountIn;
}
}
require(msg.value == expected_msg_value, "Wrong msg.value");
}
ISignatureTransfer(permit2.contractAddress).permitTransferFrom(
permit,
transferDetails,
msg.sender,
permit2.signature
);
return _swapMulti(
inputs,
outputs,
pathDefinition,
executor,
referralInfo
);
}
/// @notice contains the main logic for swapping between two sets of tokens
/// assumes that inputs have already been sent to the right location and msg.value
/// is set correctly to be 0 for no native input and match native inpuit otherwise
/// @param inputs list of input token structs for the path being executed
/// @param outputs list of output token structs for the path being executed
/// @param pathDefinition Encoded path definition for executor
/// @param executor Address of contract that will execute the path
/// @param referralInfo referral info to specify the source of and fee for the swap
function _swapMulti(
inputTokenInfo[] memory inputs,
outputTokenInfo[] memory outputs,
bytes calldata pathDefinition,
address executor,
swapReferralInfo memory referralInfo
)
internal
returns (uint256[] memory amountsOut)
{
// Extract arrays of input amount values and tokens from the inputs struct list
uint256[] memory amountsIn = new uint256[](inputs.length);
address[] memory tokensIn = new address[](inputs.length);
// Check input specification validity and transfer input tokens to executor
{
for (uint256 i = 0; i < inputs.length; i++) {
amountsIn[i] = inputs[i].amountIn;
tokensIn[i] = inputs[i].tokenAddress;
for (uint256 j = 0; j < i; j++) {
require(
inputs[i].tokenAddress != inputs[j].tokenAddress,
"Duplicate source tokens"
);
}
for (uint256 j = 0; j < outputs.length; j++) {
require(
inputs[i].tokenAddress != outputs[j].tokenAddress,
"Arbitrage not supported"
);
}
}
}
// Check outputs for duplicates and record balances before swap
uint256[] memory balancesBefore = new uint256[](outputs.length);
for (uint256 i = 0; i < outputs.length; i++) {
require(
outputs[i].amountMin <= outputs[i].amountQuote,
"Minimum greater than quote"
);
require(
outputs[i].amountMin > 0,
"Minimum output is zero"
);
for (uint256 j = 0; j < i; j++) {
require(
outputs[i].tokenAddress != outputs[j].tokenAddress,
"Duplicate destination tokens"
);
}
balancesBefore[i] = _universalBalance(outputs[i].tokenAddress);
}
// Delegate the execution of the path to the specified Odos Executor
IOdosExecutor(executor).executePath{value: msg.value}(pathDefinition, amountsIn, msg.sender);
int256[] memory slippage = new int256[](outputs.length);
{
amountsOut = new uint256[](outputs.length);
uint256 splitBPS = (referralInfo.code >> 32) & 65535;
if (splitBPS == 0) splitBPS = 8000;
require(splitBPS <= 10000, "Invalid Ref Code");
for (uint256 i = 0; i < outputs.length; i++) {
// Record the destination token balance before the path is executed
amountsOut[i] = _universalBalance(outputs[i].tokenAddress) - balancesBefore[i];
if (referralInfo.fee > 0) {
require(referralInfo.feeRecipient != address(0), "Null fee recipient");
require(referralInfo.fee <= FEE_DENOM / 50, "Fee too high");
if (referralInfo.feeRecipient != address(this)) {
_universalTransfer(
outputs[i].tokenAddress,
referralInfo.feeRecipient,
amountsOut[i] * referralInfo.fee * splitBPS / (FEE_DENOM * 10000)
);
}
amountsOut[i] = amountsOut[i] * (FEE_DENOM - referralInfo.fee) / FEE_DENOM;
}
slippage[i] = int256(amountsOut[i]) - int256(outputs[i].amountQuote);
if (slippage[i] > 0 && (referralInfo.code >> 48) & 1 == 0) {
amountsOut[i] = outputs[i].amountQuote;
}
require(amountsOut[i] >= outputs[i].amountMin, "Slippage Limit Exceeded");
_universalTransfer(
outputs[i].tokenAddress,
outputs[i].receiver == address(0) ? msg.sender : outputs[i].receiver,
amountsOut[i]
);
}
}
address[] memory tokensOut = new address[](outputs.length);
for (uint256 i = 0; i < outputs.length; i++) {
tokensOut[i] = outputs[i].tokenAddress;
}
emit SwapMulti(
msg.sender,
amountsIn,
tokensIn,
amountsOut,
tokensOut,
slippage,
referralInfo.code,
referralInfo.fee,
referralInfo.feeRecipient
);
}
/// @notice Changes the liquidator address
/// @param account The address of new liquidator
function changeLiquidatorAddress(address account)
external
onlyOwner
{
liquidatorAddress = account;
emit LiquidatorAddressChanged(account);
}
/// @notice Push new addresses to the cached address list for when storage is cheaper than calldata
/// @param addresses list of addresses to be added to the cached address list
function writeAddressList(
address[] calldata addresses
)
external
onlyOwner
{
for (uint256 i = 0; i < addresses.length; i++) {
addressList.push(addresses[i]);
}
}
/// @notice Allows the owner to transfer funds held by the router contract
/// @param tokens List of token address to be transferred
/// @param amounts List of amounts of each token to be transferred
/// @param dest Address to which the funds should be sent
function transferRouterFunds(
address[] calldata tokens,
uint256[] calldata amounts,
address dest
)
external
{
require(msg.sender == liquidatorAddress || msg.sender == owner(), "Address not allowed");
require(tokens.length == amounts.length, "Invalid funds transfer");
for (uint256 i = 0; i < tokens.length; i++) {
_universalTransfer(
tokens[i],
dest,
amounts[i] == 0 ? _universalBalance(tokens[i]) : amounts[i]
);
}
}
/// @notice Directly swap funds held in router
/// @param inputs list of input token structs for the path being executed
/// @param outputs list of output token structs for the path being executed
/// @param pathDefinition Encoded path definition for executor
/// @param executor Address of contract that will execute the path
function swapRouterFunds(
inputTokenInfo[] memory inputs,
outputTokenInfo[] memory outputs,
bytes calldata pathDefinition,
address executor
)
external
returns (uint256[] memory amountsOut)
{
require(msg.sender == liquidatorAddress || msg.sender == owner(), "Address not allowed");
uint256[] memory amountsIn = new uint256[](inputs.length);
address[] memory tokensIn = new address[](inputs.length);
for (uint256 i = 0; i < inputs.length; i++) {
tokensIn[i] = inputs[i].tokenAddress;
amountsIn[i] = inputs[i].amountIn == 0 ?
_universalBalance(tokensIn[i]) : inputs[i].amountIn;
_universalTransfer(
tokensIn[i],
inputs[i].receiver,
amountsIn[i]
);
}
// Check outputs for duplicates and record balances before swap
uint256[] memory balancesBefore = new uint256[](outputs.length);
address[] memory tokensOut = new address[](outputs.length);
for (uint256 i = 0; i < outputs.length; i++) {
tokensOut[i] = outputs[i].tokenAddress;
balancesBefore[i] = _universalBalance(tokensOut[i]);
}
// Delegate the execution of the path to the specified Odos Executor
IOdosExecutor(executor).executePath{value: 0}(pathDefinition, amountsIn, msg.sender);
amountsOut = new uint256[](outputs.length);
for (uint256 i = 0; i < outputs.length; i++) {
// Record the destination token balance before the path is executed
amountsOut[i] = _universalBalance(tokensOut[i]) - balancesBefore[i];
require(amountsOut[i] >= outputs[i].amountMin, "Slippage Limit Exceeded");
_universalTransfer(
outputs[i].tokenAddress,
outputs[i].receiver == address(0) ? msg.sender : outputs[i].receiver,
amountsOut[i]
);
}
emit SwapMulti(
msg.sender,
amountsIn,
tokensIn,
amountsOut,
tokensOut,
new int256[](outputs.length),
0,
0,
address(0)
);
}
/// @notice helper function to get balance of ERC20 or native coin for this contract
/// @param token address of the token to check, null for native coin
/// @return balance of specified coin or token
function _universalBalance(address token) private view returns(uint256) {
if (token == _ETH) {
return address(this).balance;
} else {
return IERC20(token).balanceOf(address(this));
}
}
/// @notice helper function to transfer ERC20 or native coin
/// @param token address of the token being transferred, null for native coin
/// @param to address to transfer to
/// @param amount to transfer
function _universalTransfer(address token, address to, uint256 amount) private {
if (token == _ETH) {
(bool success,) = payable(to).call{value: amount}("");
require(success, "ETH transfer failed");
} else {
IERC20(token).safeTransfer(to, amount);
}
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;
/// @title V3 Routing contract interface for Odos SOR
/// @author Transaction Assembly
/// @notice Wrapper with security gaurentees around execution of arbitrary operations on user tokens
interface IOdosRouterV3 {
/// @dev Contains all information needed to describe the input and output for a swap
struct permit2Info {
address contractAddress;
uint256 nonce;
uint256 deadline;
bytes signature;
}
/// @dev Contains all information needed to describe the input and output for a swap
struct swapTokenInfo {
address inputToken;
uint256 inputAmount;
address inputReceiver;
address outputToken;
uint256 outputQuote;
uint256 outputMin;
address outputReceiver;
}
/// @dev Contains all information needed to describe an intput token for swapMulti
struct inputTokenInfo {
address tokenAddress;
uint256 amountIn;
address receiver;
}
/// @dev Contains all information needed to describe an output token for swapMulti
struct outputTokenInfo {
address tokenAddress;
uint256 amountQuote;
uint256 amountMin;
address receiver;
}
/// @dev Holds all information for a given referral
struct swapReferralInfo {
uint64 code;
uint64 fee;
address feeRecipient;
}
/// @dev Event emitted on changing the liquidator address
event LiquidatorAddressChanged(address indexed account);
// @dev event for swapping one token for another
event Swap(
address sender,
uint256 inputAmount,
address inputToken,
uint256 amountOut,
address outputToken,
int256 slippage,
uint64 referralCode,
uint64 referralFee,
address referralFeeRecipient
);
/// @dev event for swapping multiple input and/or output tokens
event SwapMulti(
address sender,
uint256[] amountsIn,
address[] tokensIn,
uint256[] amountsOut,
address[] tokensOut,
int256[] slippage,
uint64 referralCode,
uint64 referralFee,
address referralFeeRecipient
);
function swapCompact() external payable returns (uint256);
function swap(
swapTokenInfo memory tokenInfo,
bytes calldata pathDefinition,
address executor,
swapReferralInfo memory referralInfo
)
external payable returns (uint256 amountOut);
function swapPermit2(
permit2Info memory permit2,
swapTokenInfo memory tokenInfo,
bytes calldata pathDefinition,
address executor,
swapReferralInfo memory referralInfo
)
external returns (uint256 amountOut);
function swapMultiCompact() external payable returns (uint256[] memory amountsOut);
function swapMulti(
inputTokenInfo[] memory inputs,
outputTokenInfo[] memory outputs,
bytes calldata pathDefinition,
address executor,
swapReferralInfo memory referralInfo
)
external payable returns (uint256[] memory amountsOut);
function swapMultiPermit2(
permit2Info memory permit2,
inputTokenInfo[] memory inputs,
outputTokenInfo[] memory outputs,
bytes calldata pathDefinition,
address executor,
swapReferralInfo memory referralInfo
)
external payable returns (uint256[] memory amountsOut);
function changeLiquidatorAddress(address account)
external;
function writeAddressList(
address[] calldata addresses
)
external;
function transferRouterFunds(
address[] calldata tokens,
uint256[] calldata amounts,
address dest
)
external;
function swapRouterFunds(
inputTokenInfo[] memory inputs,
outputTokenInfo[] memory outputs,
bytes calldata pathDefinition,
address executor
)
external
returns (uint256[] memory amountsOut);
}// SPDX-License-Identifier: MIT
pragma solidity 0.8.20;
interface IOdosExecutor {
function executePath (
bytes calldata bytecode,
uint256[] memory inputAmount,
address msgSender
) external payable;
}// SPDX-License-Identifier: MIT
pragma solidity 0.8.20;
interface IOdosHook {
function executeOdosHook (
bytes calldata hookData,
uint256[] memory inputAmounts,
address msgSender
) external;
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;
/// @title SignatureTransfer
/// @notice Handles ERC20 token transfers through signature based actions
/// @dev Requires user's token approval on the Permit2 contract
interface ISignatureTransfer {
/// @notice Thrown when the requested amount for a transfer is larger than the permissioned amount
/// @param maxAmount The maximum amount a spender can request to transfer
error InvalidAmount(uint256 maxAmount);
/// @notice Thrown when the number of tokens permissioned to a spender does not match the number of tokens being transferred
/// @dev If the spender does not need to transfer the number of tokens permitted, the spender can request amount 0 to be transferred
error LengthMismatch();
/// @notice Emits an event when the owner successfully invalidates an unordered nonce.
event UnorderedNonceInvalidation(address indexed owner, uint256 word, uint256 mask);
/// @notice The token and amount details for a transfer signed in the permit transfer signature
struct TokenPermissions {
// ERC20 token address
address token;
// the maximum amount that can be spent
uint256 amount;
}
/// @notice The signed permit message for a single token transfer
struct PermitTransferFrom {
TokenPermissions permitted;
// a unique value for every token owner's signature to prevent signature replays
uint256 nonce;
// deadline on the permit signature
uint256 deadline;
}
/// @notice Specifies the recipient address and amount for batched transfers.
/// @dev Recipients and amounts correspond to the index of the signed token permissions array.
/// @dev Reverts if the requested amount is greater than the permitted signed amount.
struct SignatureTransferDetails {
// recipient address
address to;
// spender requested amount
uint256 requestedAmount;
}
/// @notice Used to reconstruct the signed permit message for multiple token transfers
/// @dev Do not need to pass in spender address as it is required that it is msg.sender
/// @dev Note that a user still signs over a spender address
struct PermitBatchTransferFrom {
// the tokens and corresponding amounts permitted for a transfer
TokenPermissions[] permitted;
// a unique value for every token owner's signature to prevent signature replays
uint256 nonce;
// deadline on the permit signature
uint256 deadline;
}
/// @notice A map from token owner address and a caller specified word index to a bitmap. Used to set bits in the bitmap to prevent against signature replay protection
/// @dev Uses unordered nonces so that permit messages do not need to be spent in a certain order
/// @dev The mapping is indexed first by the token owner, then by an index specified in the nonce
/// @dev It returns a uint256 bitmap
/// @dev The index, or wordPosition is capped at type(uint248).max
function nonceBitmap(address, uint256) external view returns (uint256);
/// @notice Transfers a token using a signed permit message
/// @dev Reverts if the requested amount is greater than the permitted signed amount
/// @param permit The permit data signed over by the owner
/// @param owner The owner of the tokens to transfer
/// @param transferDetails The spender's requested transfer details for the permitted token
/// @param signature The signature to verify
function permitTransferFrom(
PermitTransferFrom memory permit,
SignatureTransferDetails calldata transferDetails,
address owner,
bytes calldata signature
) external;
/// @notice Transfers a token using a signed permit message
/// @notice Includes extra data provided by the caller to verify signature over
/// @dev The witness type string must follow EIP712 ordering of nested structs and must include the TokenPermissions type definition
/// @dev Reverts if the requested amount is greater than the permitted signed amount
/// @param permit The permit data signed over by the owner
/// @param owner The owner of the tokens to transfer
/// @param transferDetails The spender's requested transfer details for the permitted token
/// @param witness Extra data to include when checking the user signature
/// @param witnessTypeString The EIP-712 type definition for remaining string stub of the typehash
/// @param signature The signature to verify
function permitWitnessTransferFrom(
PermitTransferFrom memory permit,
SignatureTransferDetails calldata transferDetails,
address owner,
bytes32 witness,
string calldata witnessTypeString,
bytes calldata signature
) external;
/// @notice Transfers multiple tokens using a signed permit message
/// @param permit The permit data signed over by the owner
/// @param owner The owner of the tokens to transfer
/// @param transferDetails Specifies the recipient and requested amount for the token transfer
/// @param signature The signature to verify
function permitTransferFrom(
PermitBatchTransferFrom memory permit,
SignatureTransferDetails[] calldata transferDetails,
address owner,
bytes calldata signature
) external;
/// @notice Transfers multiple tokens using a signed permit message
/// @dev The witness type string must follow EIP712 ordering of nested structs and must include the TokenPermissions type definition
/// @notice Includes extra data provided by the caller to verify signature over
/// @param permit The permit data signed over by the owner
/// @param owner The owner of the tokens to transfer
/// @param transferDetails Specifies the recipient and requested amount for the token transfer
/// @param witness Extra data to include when checking the user signature
/// @param witnessTypeString The EIP-712 type definition for remaining string stub of the typehash
/// @param signature The signature to verify
function permitWitnessTransferFrom(
PermitBatchTransferFrom memory permit,
SignatureTransferDetails[] calldata transferDetails,
address owner,
bytes32 witness,
string calldata witnessTypeString,
bytes calldata signature
) external;
/// @notice Invalidates the bits specified in mask for the bitmap at the word position
/// @dev The wordPos is maxed at type(uint248).max
/// @param wordPos A number to index the nonceBitmap at
/// @param mask A bitmap masked against msg.sender's current bitmap at the word position
function invalidateUnorderedNonces(uint256 wordPos, uint256 mask) external;
}// SPDX-License-Identifier: MIT
// 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);
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.3.0) (token/ERC20/utils/SafeERC20.sol)
pragma solidity ^0.8.20;
import {IERC20} from "../IERC20.sol";
import {IERC1363} from "../../../interfaces/IERC1363.sol";
/**
* @title SafeERC20
* @dev Wrappers around ERC-20 operations that throw on failure (when the token
* contract returns false). Tokens that return no value (and instead revert or
* throw on failure) are also supported, non-reverting calls are assumed to be
* successful.
* To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,
* which allows you to call the safe operations as `token.safeTransfer(...)`, etc.
*/
library SafeERC20 {
/**
* @dev An operation with an ERC-20 token failed.
*/
error SafeERC20FailedOperation(address token);
/**
* @dev Indicates a failed `decreaseAllowance` request.
*/
error SafeERC20FailedDecreaseAllowance(address spender, uint256 currentAllowance, uint256 requestedDecrease);
/**
* @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,
* non-reverting calls are assumed to be successful.
*/
function safeTransfer(IERC20 token, address to, uint256 value) internal {
_callOptionalReturn(token, abi.encodeCall(token.transfer, (to, value)));
}
/**
* @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the
* calling contract. If `token` returns no value, non-reverting calls are assumed to be successful.
*/
function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {
_callOptionalReturn(token, abi.encodeCall(token.transferFrom, (from, to, value)));
}
/**
* @dev Variant of {safeTransfer} that returns a bool instead of reverting if the operation is not successful.
*/
function trySafeTransfer(IERC20 token, address to, uint256 value) internal returns (bool) {
return _callOptionalReturnBool(token, abi.encodeCall(token.transfer, (to, value)));
}
/**
* @dev Variant of {safeTransferFrom} that returns a bool instead of reverting if the operation is not successful.
*/
function trySafeTransferFrom(IERC20 token, address from, address to, uint256 value) internal returns (bool) {
return _callOptionalReturnBool(token, abi.encodeCall(token.transferFrom, (from, to, value)));
}
/**
* @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,
* non-reverting calls are assumed to be successful.
*
* IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the "client"
* smart contract uses ERC-7674 to set temporary allowances, then the "client" smart contract should avoid using
* this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract
* that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior.
*/
function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {
uint256 oldAllowance = token.allowance(address(this), spender);
forceApprove(token, spender, oldAllowance + value);
}
/**
* @dev Decrease the calling contract's allowance toward `spender` by `requestedDecrease`. If `token` returns no
* value, non-reverting calls are assumed to be successful.
*
* IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the "client"
* smart contract uses ERC-7674 to set temporary allowances, then the "client" smart contract should avoid using
* this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract
* that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior.
*/
function safeDecreaseAllowance(IERC20 token, address spender, uint256 requestedDecrease) internal {
unchecked {
uint256 currentAllowance = token.allowance(address(this), spender);
if (currentAllowance < requestedDecrease) {
revert SafeERC20FailedDecreaseAllowance(spender, currentAllowance, requestedDecrease);
}
forceApprove(token, spender, currentAllowance - requestedDecrease);
}
}
/**
* @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,
* non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval
* to be set to zero before setting it to a non-zero value, such as USDT.
*
* NOTE: If the token implements ERC-7674, this function will not modify any temporary allowance. This function
* only sets the "standard" allowance. Any temporary allowance will remain active, in addition to the value being
* set here.
*/
function forceApprove(IERC20 token, address spender, uint256 value) internal {
bytes memory approvalCall = abi.encodeCall(token.approve, (spender, value));
if (!_callOptionalReturnBool(token, approvalCall)) {
_callOptionalReturn(token, abi.encodeCall(token.approve, (spender, 0)));
_callOptionalReturn(token, approvalCall);
}
}
/**
* @dev Performs an {ERC1363} transferAndCall, with a fallback to the simple {ERC20} transfer if the target has no
* code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when
* targeting contracts.
*
* Reverts if the returned value is other than `true`.
*/
function transferAndCallRelaxed(IERC1363 token, address to, uint256 value, bytes memory data) internal {
if (to.code.length == 0) {
safeTransfer(token, to, value);
} else if (!token.transferAndCall(to, value, data)) {
revert SafeERC20FailedOperation(address(token));
}
}
/**
* @dev Performs an {ERC1363} transferFromAndCall, with a fallback to the simple {ERC20} transferFrom if the target
* has no code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when
* targeting contracts.
*
* Reverts if the returned value is other than `true`.
*/
function transferFromAndCallRelaxed(
IERC1363 token,
address from,
address to,
uint256 value,
bytes memory data
) internal {
if (to.code.length == 0) {
safeTransferFrom(token, from, to, value);
} else if (!token.transferFromAndCall(from, to, value, data)) {
revert SafeERC20FailedOperation(address(token));
}
}
/**
* @dev Performs an {ERC1363} approveAndCall, with a fallback to the simple {ERC20} approve if the target has no
* code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when
* targeting contracts.
*
* NOTE: When the recipient address (`to`) has no code (i.e. is an EOA), this function behaves as {forceApprove}.
* Opposedly, when the recipient address (`to`) has code, this function only attempts to call {ERC1363-approveAndCall}
* once without retrying, and relies on the returned value to be true.
*
* Reverts if the returned value is other than `true`.
*/
function approveAndCallRelaxed(IERC1363 token, address to, uint256 value, bytes memory data) internal {
if (to.code.length == 0) {
forceApprove(token, to, value);
} else if (!token.approveAndCall(to, value, data)) {
revert SafeERC20FailedOperation(address(token));
}
}
/**
* @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement
* on the return value: the return value is optional (but if data is returned, it must not be false).
* @param token The token targeted by the call.
* @param data The call data (encoded using abi.encode or one of its variants).
*
* This is a variant of {_callOptionalReturnBool} that reverts if call fails to meet the requirements.
*/
function _callOptionalReturn(IERC20 token, bytes memory data) private {
uint256 returnSize;
uint256 returnValue;
assembly ("memory-safe") {
let success := call(gas(), token, 0, add(data, 0x20), mload(data), 0, 0x20)
// bubble errors
if iszero(success) {
let ptr := mload(0x40)
returndatacopy(ptr, 0, returndatasize())
revert(ptr, returndatasize())
}
returnSize := returndatasize()
returnValue := mload(0)
}
if (returnSize == 0 ? address(token).code.length == 0 : returnValue != 1) {
revert SafeERC20FailedOperation(address(token));
}
}
/**
* @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement
* on the return value: the return value is optional (but if data is returned, it must not be false).
* @param token The token targeted by the call.
* @param data The call data (encoded using abi.encode or one of its variants).
*
* This is a variant of {_callOptionalReturn} that silently catches all reverts and returns a bool instead.
*/
function _callOptionalReturnBool(IERC20 token, bytes memory data) private returns (bool) {
bool success;
uint256 returnSize;
uint256 returnValue;
assembly ("memory-safe") {
success := call(gas(), token, 0, add(data, 0x20), mload(data), 0, 0x20)
returnSize := returndatasize()
returnValue := mload(0)
}
return success && (returnSize == 0 ? address(token).code.length > 0 : returnValue == 1);
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.1.0) (access/Ownable2Step.sol)
pragma solidity ^0.8.20;
import {Ownable} from "./Ownable.sol";
/**
* @dev Contract module which provides access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* This extension of the {Ownable} contract includes a two-step mechanism to transfer
* ownership, where the new owner must call {acceptOwnership} in order to replace the
* old one. This can help prevent common mistakes, such as transfers of ownership to
* incorrect accounts, or to contracts that are unable to interact with the
* permission system.
*
* The initial owner is specified at deployment time in the constructor for `Ownable`. This
* can later be changed with {transferOwnership} and {acceptOwnership}.
*
* This module is used through inheritance. It will make available all functions
* from parent (Ownable).
*/
abstract contract Ownable2Step is Ownable {
address private _pendingOwner;
event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner);
/**
* @dev Returns the address of the pending owner.
*/
function pendingOwner() public view virtual returns (address) {
return _pendingOwner;
}
/**
* @dev Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one.
* Can only be called by the current owner.
*
* Setting `newOwner` to the zero address is allowed; this can be used to cancel an initiated ownership transfer.
*/
function transferOwnership(address newOwner) public virtual override onlyOwner {
_pendingOwner = newOwner;
emit OwnershipTransferStarted(owner(), newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`) and deletes any pending owner.
* Internal function without access restriction.
*/
function _transferOwnership(address newOwner) internal virtual override {
delete _pendingOwner;
super._transferOwnership(newOwner);
}
/**
* @dev The new owner accepts the ownership transfer.
*/
function acceptOwnership() public virtual {
address sender = _msgSender();
if (pendingOwner() != sender) {
revert OwnableUnauthorizedAccount(sender);
}
_transferOwnership(sender);
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/IERC1363.sol)
pragma solidity ^0.8.20;
import {IERC20} from "./IERC20.sol";
import {IERC165} from "./IERC165.sol";
/**
* @title IERC1363
* @dev Interface of the ERC-1363 standard as defined in the https://eips.ethereum.org/EIPS/eip-1363[ERC-1363].
*
* Defines an extension interface for ERC-20 tokens that supports executing code on a recipient contract
* after `transfer` or `transferFrom`, or code on a spender contract after `approve`, in a single transaction.
*/
interface IERC1363 is IERC20, IERC165 {
/*
* Note: the ERC-165 identifier for this interface is 0xb0202a11.
* 0xb0202a11 ===
* bytes4(keccak256('transferAndCall(address,uint256)')) ^
* bytes4(keccak256('transferAndCall(address,uint256,bytes)')) ^
* bytes4(keccak256('transferFromAndCall(address,address,uint256)')) ^
* bytes4(keccak256('transferFromAndCall(address,address,uint256,bytes)')) ^
* bytes4(keccak256('approveAndCall(address,uint256)')) ^
* bytes4(keccak256('approveAndCall(address,uint256,bytes)'))
*/
/**
* @dev Moves a `value` amount of tokens from the caller's account to `to`
* and then calls {IERC1363Receiver-onTransferReceived} on `to`.
* @param to The address which you want to transfer to.
* @param value The amount of tokens to be transferred.
* @return A boolean value indicating whether the operation succeeded unless throwing.
*/
function transferAndCall(address to, uint256 value) external returns (bool);
/**
* @dev Moves a `value` amount of tokens from the caller's account to `to`
* and then calls {IERC1363Receiver-onTransferReceived} on `to`.
* @param to The address which you want to transfer to.
* @param value The amount of tokens to be transferred.
* @param data Additional data with no specified format, sent in call to `to`.
* @return A boolean value indicating whether the operation succeeded unless throwing.
*/
function transferAndCall(address to, uint256 value, bytes calldata data) external returns (bool);
/**
* @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism
* and then calls {IERC1363Receiver-onTransferReceived} on `to`.
* @param from The address which you want to send tokens from.
* @param to The address which you want to transfer to.
* @param value The amount of tokens to be transferred.
* @return A boolean value indicating whether the operation succeeded unless throwing.
*/
function transferFromAndCall(address from, address to, uint256 value) external returns (bool);
/**
* @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism
* and then calls {IERC1363Receiver-onTransferReceived} on `to`.
* @param from The address which you want to send tokens from.
* @param to The address which you want to transfer to.
* @param value The amount of tokens to be transferred.
* @param data Additional data with no specified format, sent in call to `to`.
* @return A boolean value indicating whether the operation succeeded unless throwing.
*/
function transferFromAndCall(address from, address to, uint256 value, bytes calldata data) external returns (bool);
/**
* @dev Sets a `value` amount of tokens as the allowance of `spender` over the
* caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.
* @param spender The address which will spend the funds.
* @param value The amount of tokens to be spent.
* @return A boolean value indicating whether the operation succeeded unless throwing.
*/
function approveAndCall(address spender, uint256 value) external returns (bool);
/**
* @dev Sets a `value` amount of tokens as the allowance of `spender` over the
* caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.
* @param spender The address which will spend the funds.
* @param value The amount of tokens to be spent.
* @param data Additional data with no specified format, sent in call to `spender`.
* @return A boolean value indicating whether the operation succeeded unless throwing.
*/
function approveAndCall(address spender, uint256 value, bytes calldata data) external returns (bool);
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)
pragma solidity ^0.8.20;
import {Context} from "../utils/Context.sol";
/**
* @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);
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC20.sol)
pragma solidity ^0.8.20;
import {IERC20} from "../token/ERC20/IERC20.sol";// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC165.sol)
pragma solidity ^0.8.20;
import {IERC165} from "../utils/introspection/IERC165.sol";// SPDX-License-Identifier: MIT
// 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;
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)
pragma solidity ^0.8.20;
/**
* @dev Interface of the ERC-165 standard, as defined in the
* https://eips.ethereum.org/EIPS/eip-165[ERC].
*
* Implementers can declare support of contract interfaces, which can then be
* queried by others ({ERC165Checker}).
*
* For an implementation, see {ERC165}.
*/
interface IERC165 {
/**
* @dev Returns true if this contract implements the interface defined by
* `interfaceId`. See the corresponding
* https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]
* to learn more about how these ids are created.
*
* This function call must use less than 30 000 gas.
*/
function supportsInterface(bytes4 interfaceId) external view returns (bool);
}{
"remappings": [
"@openzeppelin/=lib/openzeppelin-contracts/",
"ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/",
"forge-std/=lib/forge-std/src/",
"openzeppelin-contracts/=lib/openzeppelin-contracts/",
"erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/",
"halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/"
],
"optimizer": {
"enabled": true,
"runs": 1000
},
"metadata": {
"useLiteralContent": false,
"bytecodeHash": "ipfs",
"appendCBOR": true
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"evmVersion": "paris",
"viaIR": false,
"libraries": {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"owner","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"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"SafeERC20FailedOperation","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"LiquidatorAddressChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferStarted","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":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"inputAmount","type":"uint256"},{"indexed":false,"internalType":"address","name":"inputToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountOut","type":"uint256"},{"indexed":false,"internalType":"address","name":"outputToken","type":"address"},{"indexed":false,"internalType":"int256","name":"slippage","type":"int256"},{"indexed":false,"internalType":"uint64","name":"referralCode","type":"uint64"},{"indexed":false,"internalType":"uint64","name":"referralFee","type":"uint64"},{"indexed":false,"internalType":"address","name":"referralFeeRecipient","type":"address"}],"name":"Swap","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"amountsIn","type":"uint256[]"},{"indexed":false,"internalType":"address[]","name":"tokensIn","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"},{"indexed":false,"internalType":"address[]","name":"tokensOut","type":"address[]"},{"indexed":false,"internalType":"int256[]","name":"slippage","type":"int256[]"},{"indexed":false,"internalType":"uint64","name":"referralCode","type":"uint64"},{"indexed":false,"internalType":"uint64","name":"referralFee","type":"uint64"},{"indexed":false,"internalType":"address","name":"referralFeeRecipient","type":"address"}],"name":"SwapMulti","type":"event"},{"inputs":[],"name":"FEE_DENOM","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"addressList","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"changeLiquidatorAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"liquidatorAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"inputToken","type":"address"},{"internalType":"uint256","name":"inputAmount","type":"uint256"},{"internalType":"address","name":"inputReceiver","type":"address"},{"internalType":"address","name":"outputToken","type":"address"},{"internalType":"uint256","name":"outputQuote","type":"uint256"},{"internalType":"uint256","name":"outputMin","type":"uint256"},{"internalType":"address","name":"outputReceiver","type":"address"}],"internalType":"struct IOdosRouterV3.swapTokenInfo","name":"tokenInfo","type":"tuple"},{"internalType":"bytes","name":"pathDefinition","type":"bytes"},{"internalType":"address","name":"executor","type":"address"},{"components":[{"internalType":"uint64","name":"code","type":"uint64"},{"internalType":"uint64","name":"fee","type":"uint64"},{"internalType":"address","name":"feeRecipient","type":"address"}],"internalType":"struct IOdosRouterV3.swapReferralInfo","name":"referralInfo","type":"tuple"}],"name":"swap","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"swapCompact","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"internalType":"struct IOdosRouterV3.inputTokenInfo[]","name":"inputs","type":"tuple[]"},{"components":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amountQuote","type":"uint256"},{"internalType":"uint256","name":"amountMin","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"internalType":"struct IOdosRouterV3.outputTokenInfo[]","name":"outputs","type":"tuple[]"},{"internalType":"bytes","name":"pathDefinition","type":"bytes"},{"internalType":"address","name":"executor","type":"address"},{"components":[{"internalType":"uint64","name":"code","type":"uint64"},{"internalType":"uint64","name":"fee","type":"uint64"},{"internalType":"address","name":"feeRecipient","type":"address"}],"internalType":"struct IOdosRouterV3.swapReferralInfo","name":"referralInfo","type":"tuple"}],"name":"swapMulti","outputs":[{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"swapMultiCompact","outputs":[{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct IOdosRouterV3.permit2Info","name":"permit2","type":"tuple"},{"components":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"internalType":"struct IOdosRouterV3.inputTokenInfo[]","name":"inputs","type":"tuple[]"},{"components":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amountQuote","type":"uint256"},{"internalType":"uint256","name":"amountMin","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"internalType":"struct IOdosRouterV3.outputTokenInfo[]","name":"outputs","type":"tuple[]"},{"internalType":"bytes","name":"pathDefinition","type":"bytes"},{"internalType":"address","name":"executor","type":"address"},{"components":[{"internalType":"uint64","name":"code","type":"uint64"},{"internalType":"uint64","name":"fee","type":"uint64"},{"internalType":"address","name":"feeRecipient","type":"address"}],"internalType":"struct IOdosRouterV3.swapReferralInfo","name":"referralInfo","type":"tuple"}],"name":"swapMultiPermit2","outputs":[{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct IOdosRouterV3.permit2Info","name":"permit2","type":"tuple"},{"components":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"internalType":"struct IOdosRouterV3.inputTokenInfo[]","name":"inputs","type":"tuple[]"},{"components":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amountQuote","type":"uint256"},{"internalType":"uint256","name":"amountMin","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"internalType":"struct IOdosRouterV3.outputTokenInfo[]","name":"outputs","type":"tuple[]"},{"internalType":"bytes","name":"pathDefinition","type":"bytes"},{"internalType":"address","name":"executor","type":"address"},{"components":[{"internalType":"uint64","name":"code","type":"uint64"},{"internalType":"uint64","name":"fee","type":"uint64"},{"internalType":"address","name":"feeRecipient","type":"address"}],"internalType":"struct IOdosRouterV3.swapReferralInfo","name":"referralInfo","type":"tuple"},{"internalType":"address","name":"hookTarget","type":"address"},{"internalType":"bytes","name":"hookData","type":"bytes"}],"name":"swapMultiPermit2WithHook","outputs":[{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"internalType":"struct IOdosRouterV3.inputTokenInfo[]","name":"inputs","type":"tuple[]"},{"components":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amountQuote","type":"uint256"},{"internalType":"uint256","name":"amountMin","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"internalType":"struct IOdosRouterV3.outputTokenInfo[]","name":"outputs","type":"tuple[]"},{"internalType":"bytes","name":"pathDefinition","type":"bytes"},{"internalType":"address","name":"executor","type":"address"},{"components":[{"internalType":"uint64","name":"code","type":"uint64"},{"internalType":"uint64","name":"fee","type":"uint64"},{"internalType":"address","name":"feeRecipient","type":"address"}],"internalType":"struct IOdosRouterV3.swapReferralInfo","name":"referralInfo","type":"tuple"},{"internalType":"address","name":"hookTarget","type":"address"},{"internalType":"bytes","name":"hookData","type":"bytes"}],"name":"swapMultiWithHook","outputs":[{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct IOdosRouterV3.permit2Info","name":"permit2","type":"tuple"},{"components":[{"internalType":"address","name":"inputToken","type":"address"},{"internalType":"uint256","name":"inputAmount","type":"uint256"},{"internalType":"address","name":"inputReceiver","type":"address"},{"internalType":"address","name":"outputToken","type":"address"},{"internalType":"uint256","name":"outputQuote","type":"uint256"},{"internalType":"uint256","name":"outputMin","type":"uint256"},{"internalType":"address","name":"outputReceiver","type":"address"}],"internalType":"struct IOdosRouterV3.swapTokenInfo","name":"tokenInfo","type":"tuple"},{"internalType":"bytes","name":"pathDefinition","type":"bytes"},{"internalType":"address","name":"executor","type":"address"},{"components":[{"internalType":"uint64","name":"code","type":"uint64"},{"internalType":"uint64","name":"fee","type":"uint64"},{"internalType":"address","name":"feeRecipient","type":"address"}],"internalType":"struct IOdosRouterV3.swapReferralInfo","name":"referralInfo","type":"tuple"}],"name":"swapPermit2","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct IOdosRouterV3.permit2Info","name":"permit2","type":"tuple"},{"components":[{"internalType":"address","name":"inputToken","type":"address"},{"internalType":"uint256","name":"inputAmount","type":"uint256"},{"internalType":"address","name":"inputReceiver","type":"address"},{"internalType":"address","name":"outputToken","type":"address"},{"internalType":"uint256","name":"outputQuote","type":"uint256"},{"internalType":"uint256","name":"outputMin","type":"uint256"},{"internalType":"address","name":"outputReceiver","type":"address"}],"internalType":"struct IOdosRouterV3.swapTokenInfo","name":"tokenInfo","type":"tuple"},{"internalType":"bytes","name":"pathDefinition","type":"bytes"},{"internalType":"address","name":"executor","type":"address"},{"components":[{"internalType":"uint64","name":"code","type":"uint64"},{"internalType":"uint64","name":"fee","type":"uint64"},{"internalType":"address","name":"feeRecipient","type":"address"}],"internalType":"struct IOdosRouterV3.swapReferralInfo","name":"referralInfo","type":"tuple"},{"internalType":"address","name":"hookTarget","type":"address"},{"internalType":"bytes","name":"hookData","type":"bytes"}],"name":"swapPermit2WithHook","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"internalType":"struct IOdosRouterV3.inputTokenInfo[]","name":"inputs","type":"tuple[]"},{"components":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amountQuote","type":"uint256"},{"internalType":"uint256","name":"amountMin","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"internalType":"struct IOdosRouterV3.outputTokenInfo[]","name":"outputs","type":"tuple[]"},{"internalType":"bytes","name":"pathDefinition","type":"bytes"},{"internalType":"address","name":"executor","type":"address"}],"name":"swapRouterFunds","outputs":[{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"inputToken","type":"address"},{"internalType":"uint256","name":"inputAmount","type":"uint256"},{"internalType":"address","name":"inputReceiver","type":"address"},{"internalType":"address","name":"outputToken","type":"address"},{"internalType":"uint256","name":"outputQuote","type":"uint256"},{"internalType":"uint256","name":"outputMin","type":"uint256"},{"internalType":"address","name":"outputReceiver","type":"address"}],"internalType":"struct IOdosRouterV3.swapTokenInfo","name":"tokenInfo","type":"tuple"},{"internalType":"bytes","name":"pathDefinition","type":"bytes"},{"internalType":"address","name":"executor","type":"address"},{"components":[{"internalType":"uint64","name":"code","type":"uint64"},{"internalType":"uint64","name":"fee","type":"uint64"},{"internalType":"address","name":"feeRecipient","type":"address"}],"internalType":"struct IOdosRouterV3.swapReferralInfo","name":"referralInfo","type":"tuple"},{"internalType":"address","name":"hookTarget","type":"address"},{"internalType":"bytes","name":"hookData","type":"bytes"}],"name":"swapWithHook","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"address","name":"dest","type":"address"}],"name":"transferRouterFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"writeAddressList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60806040523480156200001157600080fd5b50604051620043e3380380620043e38339810160408190526200003491620000e5565b806001600160a01b0381166200006457604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6200006f8162000077565b505062000117565b600180546001600160a01b0319169055620000928162000095565b50565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060208284031215620000f857600080fd5b81516001600160a01b03811681146200011057600080fd5b9392505050565b6142bc80620001276000396000f3fe6080604052600436106101795760003560e01c806383bd37f9116100cb578063cab347311161007f578063e8668cac11610059578063e8668cac14610394578063f2fde38b146103b4578063fef828dc146103d457600080fd5b8063cab3473114610336578063e30c397814610356578063e5dae17d1461037457600080fd5b80638da5cb5b116100b05780638da5cb5b146102d857806398281469146102f6578063b810fb431461031657600080fd5b806383bd37f9146102c857806384a7f3dd146102d057600080fd5b80634886c6751161012d578063715018a611610107578063715018a61461026657806375c111f21461027b57806379ba5097146102b357600080fd5b80634886c6751461022457806357cfd3d414610240578063638cc0fa1461025357600080fd5b8063174da6211161015e578063174da621146101c157806330f80b4c146101e35780633596f9a21461020457600080fd5b80630d459c0814610185578063108e3a77146101ae57600080fd5b3661018057005b600080fd5b6101986101933660046135e6565b6103e7565b6040516101a5919061373a565b60405180910390f35b6101986101bc366004613754565b61046d565b3480156101cd57600080fd5b506101e16101dc366004613870565b61048a565b005b6101f66101f136600461398f565b61060f565b6040519081526020016101a5565b34801561021057600080fd5b506101e161021f3660046139fe565b610628565b34801561023057600080fd5b506101f6670de0b6b3a764000081565b6101f661024e366004613a40565b6106ad565b610198610261366004613afc565b610772565b34801561027257600080fd5b506101e16107f6565b34801561028757600080fd5b5060035461029b906001600160a01b031681565b6040516001600160a01b0390911681526020016101a5565b3480156102bf57600080fd5b506101e161080a565b6101f661084e565b610198610a47565b3480156102e457600080fd5b506000546001600160a01b031661029b565b34801561030257600080fd5b50610198610311366004613bef565b610cc0565b34801561032257600080fd5b5061029b610331366004613c83565b611315565b34801561034257600080fd5b506101f6610351366004613c9c565b61133f565b34801561036257600080fd5b506001546001600160a01b031661029b565b34801561038057600080fd5b506101e161038f366004613d3d565b61135a565b3480156103a057600080fd5b506101f66103af366004613d58565b6113ac565b3480156103c057600080fd5b506101e16103cf366004613d3d565b611473565b6101986103e2366004613e18565b6114e4565b60606103f88b8b8b8b8b8b8b6114f4565b604051633d318f9560e21b81529091506001600160a01b0385169063f4c63e549061042d908690869086903390600401613ebc565b600060405180830381600087803b15801561044757600080fd5b505af115801561045b573d6000803e3d6000fd5b505050509a9950505050505050505050565b606061047e888888888888886114f4565b98975050505050505050565b6003546001600160a01b03163314806104ad57506000546001600160a01b031633145b6104fe5760405162461bcd60e51b815260206004820152601360248201527f41646472657373206e6f7420616c6c6f7765640000000000000000000000000060448201526064015b60405180910390fd5b83821461054d5760405162461bcd60e51b815260206004820152601660248201527f496e76616c69642066756e6473207472616e736665720000000000000000000060448201526064016104f5565b60005b84811015610607576105f586868381811061056d5761056d613f15565b90506020020160208101906105829190613d3d565b8386868581811061059557610595613f15565b905060200201356000146105c1578686858181106105b5576105b5613f15565b90506020020135611a5b565b6105f08989868181106105d6576105d6613f15565b90506020020160208101906105eb9190613d3d565b6119d1565b611a5b565b806105ff81613f41565b915050610550565b505050505050565b600061061e8686868686611b26565b9695505050505050565b610630611c87565b60005b818110156106a857600283838381811061064f5761064f613f15565b90506020020160208101906106649190613d3d565b81546001810183556000928352602090922090910180546001600160a01b0319166001600160a01b03909216919091179055806106a081613f41565b915050610633565b505050565b60006106bc8989898989611b26565b604080516001808252818301909252919250600091906020808301908036833701905050905081816000815181106106f6576106f6613f15565b6020908102919091010152604051633d318f9560e21b81526001600160a01b0386169063f4c63e5490610733908790879086903390600401613ebc565b600060405180830381600087803b15801561074d57600080fd5b505af1158015610761573d6000803e3d6000fd5b505050505098975050505050505050565b60606107828a8a8a8a8a8a611cb4565b604051633d318f9560e21b81529091506001600160a01b0385169063f4c63e54906107b7908690869086903390600401613ebc565b600060405180830381600087803b1580156107d157600080fd5b505af11580156107e5573d6000803e3d6000fd5b505050509998505050505050505050565b6107fe611c87565b6108086000611f10565b565b60015433906001600160a01b031681146108425760405163118cdaa760e01b81526001600160a01b03821660048201526024016104f5565b61084b81611f10565b50565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081018290526040805160608101825260008082526020820181905291810191909152600036600061091e565b600080823560f01c8080156108f55760018114610900577f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5acc8201549350600285019250610917565b600285019250610917565b6001600160a01b03853560501c1693506016850192505b5050915091565b6000600461092b816108ad565b9150915081875261093b816108ad565b606089018290529092506001810191503560f81c801561096a578135600882602003021c602089015280820191505b50803560f81c6001820191508135600882602003021c8060808a01528183019250823560e81c915062ffffff8262ffffff0382020460a08a015250506003810190506109b5816108ad565b915094506109c2816108ad565b9092509050816109d0578491505b8160408801526109df816108ad565b60c089810192909252803590911c8752600881013560f81c925060090190508115610a1f57803560c01c6020870152600881013560601c6040870152601c015b6001810193503560f81c6020029150610a3d90508583838688611b26565b9550505050505090565b606060008180600660043560f890811c90600535901c8167ffffffffffffffff811115610a7657610a76613251565b604051908082528060200260200182016040528015610ac157816020015b6040805160608101825260008082526020808301829052928201528252600019909201910181610a945790505b5094508067ffffffffffffffff811115610add57610add613251565b604051908082528060200260200182016040528015610b2f57816020015b604080516080810182526000808252602080830182905292820181905260608201528252600019909201910181610afb5790505b509350610b3b836108ad565b9096506003810193503560e81c600080805b85811015610bba576020808202018901519150610b69876108ad565b8184526001810198509093503560f81c8015610b94578735600882602003021c602084015280880197505b50610b9e876108ad565b9750925082610bab578992505b60408201839052600101610b4d565b5060005b84811015610c31576020808202018801519150610bda876108ad565b97509250828252863560f81c6001880197508735600882602003021c806020850152818901985062ffffff8662ffffff0382020460408501525050610c1e876108ad565b6060840182905297509250600101610bbe565b505060408051606081018252600080825260208201819052918101919091529350610c5b92505050565b813560c01c8152600982019136906000906008013560f81c8015610c9757843560c01c6020850152600885013560601c6040850152601c909401935b505050600182016020833560f81c02610cb4868684848b88611cb4565b97505050505050505090565b6003546060906001600160a01b0316331480610ce657506000546001600160a01b031633145b610d325760405162461bcd60e51b815260206004820152601360248201527f41646472657373206e6f7420616c6c6f7765640000000000000000000000000060448201526064016104f5565b6000865167ffffffffffffffff811115610d4e57610d4e613251565b604051908082528060200260200182016040528015610d77578160200160208202803683370190505b5090506000875167ffffffffffffffff811115610d9657610d96613251565b604051908082528060200260200182016040528015610dbf578160200160208202803683370190505b50905060005b8851811015610f1257888181518110610de057610de0613f15565b602002602001015160000151828281518110610dfe57610dfe613f15565b60200260200101906001600160a01b031690816001600160a01b031681525050888181518110610e3057610e30613f15565b602002602001015160200151600014610e6657888181518110610e5557610e55613f15565b602002602001015160200151610e88565b610e88828281518110610e7b57610e7b613f15565b60200260200101516119d1565b838281518110610e9a57610e9a613f15565b602002602001018181525050610f00828281518110610ebb57610ebb613f15565b60200260200101518a8381518110610ed557610ed5613f15565b602002602001015160400151858481518110610ef357610ef3613f15565b6020026020010151611a5b565b80610f0a81613f41565b915050610dc5565b506000875167ffffffffffffffff811115610f2f57610f2f613251565b604051908082528060200260200182016040528015610f58578160200160208202803683370190505b5090506000885167ffffffffffffffff811115610f7757610f77613251565b604051908082528060200260200182016040528015610fa0578160200160208202803683370190505b50905060005b895181101561104357898181518110610fc157610fc1613f15565b602002602001015160000151828281518110610fdf57610fdf613f15565b60200260200101906001600160a01b031690816001600160a01b031681525050611014828281518110610e7b57610e7b613f15565b83828151811061102657611026613f15565b60209081029190910101528061103b81613f41565b915050610fa6565b5060405163cb70e27360e01b81526001600160a01b0387169063cb70e27390600090611079908c908c908a903390600401613ebc565b6000604051808303818588803b15801561109257600080fd5b505af11580156110a6573d6000803e3d6000fd5b5050505050885167ffffffffffffffff8111156110c5576110c5613251565b6040519080825280602002602001820160405280156110ee578160200160208202803683370190505b50945060005b895181101561127b5782818151811061110f5761110f613f15565b602002602001015161112c838381518110610e7b57610e7b613f15565b6111369190613f5a565b86828151811061114857611148613f15565b60200260200101818152505089818151811061116657611166613f15565b60200260200101516040015186828151811061118457611184613f15565b602002602001015110156111da5760405162461bcd60e51b815260206004820152601760248201527f536c697070616765204c696d697420457863656564656400000000000000000060448201526064016104f5565b6112698a82815181106111ef576111ef613f15565b60200260200101516000015160006001600160a01b03168c848151811061121857611218613f15565b6020026020010151606001516001600160a01b031614611255578b838151811061124457611244613f15565b602002602001015160600151611257565b335b888481518110610ef357610ef3613f15565b8061127381613f41565b9150506110f4565b507f2c96555a96d94780f3a97aeb724514e80e331842f3143742d85da5aa68df9d3033858588858e5167ffffffffffffffff8111156112bc576112bc613251565b6040519080825280602002602001820160405280156112e5578160200160208202803683370190505b50600080600060405161130099989796959493929190613fa6565b60405180910390a15050505095945050505050565b6002818154811061132557600080fd5b6000918252602090912001546001600160a01b0316905081565b600061134f878787878787611f29565b979650505050505050565b611362611c87565b600380546001600160a01b0319166001600160a01b0383169081179091556040517f1535fa8f7275b71050af30bf7f74391b45be7ba2b545fd28279dafe9b50f642490600090a250565b60006113bc8a8a8a8a8a8a611f29565b604080516001808252818301909252919250600091906020808301908036833701905050905081816000815181106113f6576113f6613f15565b6020908102919091010152604051633d318f9560e21b81526001600160a01b0386169063f4c63e5490611433908790879086903390600401613ebc565b600060405180830381600087803b15801561144d57600080fd5b505af1158015611461573d6000803e3d6000fd5b50505050509998505050505050505050565b61147b611c87565b600180546001600160a01b0383166001600160a01b031990911681179091556114ac6000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b606061134f878787878787611cb4565b606061151a60405180606001604052806060815260200160008152602001600081525090565b6060600080341161152c57895161153a565b60018a5161153a9190613f5a565b905060405180606001604052808267ffffffffffffffff81111561156057611560613251565b6040519080825280602002602001820160405280156115a557816020015b604080518082019091526000808252602082015281526020019060019003908161157e5790505b5081526020018c6020015181526020018c6040015181525092508067ffffffffffffffff8111156115d8576115d8613251565b60405190808252806020026020018201604052801561161d57816020015b60408051808201909152600080825260208201528152602001906001900390816115f65790505b509150506000805b8a518110156118ee5760006001600160a01b03168b828151811061164b5761164b613f15565b6020026020010151600001516001600160a01b0316036116d3578a818151811061167757611677613f15565b6020026020010151602001516000036116ae57348b828151811061169d5761169d613f15565b602002602001015160200181815250505b8a81815181106116c0576116c0613f15565b60200260200101516020015191506118dc565b8a81815181106116e5576116e5613f15565b6020026020010151602001516000036117a2578a818151811061170a5761170a613f15565b6020908102919091010151516040516370a0823160e01b81523360048201526001600160a01b03909116906370a0823190602401602060405180830381865afa15801561175b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177f919061404c565b8b828151811061179157611791613f15565b602002602001015160200181815250505b600082156117ba576117b5600183613f5a565b6117bc565b815b90508b82815181106117d0576117d0613f15565b602002602001015160000151856000015182815181106117f2576117f2613f15565b60209081029190910101516001600160a01b0390911690528b518c908390811061181e5761181e613f15565b6020026020010151602001518560000151828151811061184057611840613f15565b602002602001015160200181815250508b828151811061186257611862613f15565b60200260200101516040015184828151811061188057611880613f15565b60209081029190910101516001600160a01b0390911690528b518c90839081106118ac576118ac613f15565b6020026020010151602001518482815181106118ca576118ca613f15565b60200260200101516020018181525050505b806118e681613f41565b915050611625565b508034146119305760405162461bcd60e51b815260206004820152600f60248201526e57726f6e67206d73672e76616c756560881b60448201526064016104f5565b50895160608b01516040517fedd9444b0000000000000000000000000000000000000000000000000000000081526001600160a01b039092169163edd9444b9161198391869186913391906004016140f8565b600060405180830381600087803b15801561199d57600080fd5b505af11580156119b1573d6000803e3d6000fd5b505050506119c3898989898989612004565b9a9950505050505050505050565b60006001600160a01b0382166119e8575047919050565b6040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015611a2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a50919061404c565b92915050565b919050565b6001600160a01b038316611b12576000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611ab6576040519150601f19603f3d011682016040523d82523d6000602084013e611abb565b606091505b5050905080611b0c5760405162461bcd60e51b815260206004820152601360248201527f455448207472616e73666572206661696c65640000000000000000000000000060448201526064016104f5565b50505050565b6106a86001600160a01b0384168383612bb4565b84516000906001600160a01b0316611b99578560200151600003611b4f57346020870152611c7a565b85602001513414611b945760405162461bcd60e51b815260206004820152600f60248201526e57726f6e67206d73672e76616c756560881b60448201526064016104f5565b611c7a565b3415611bd95760405162461bcd60e51b815260206004820152600f60248201526e57726f6e67206d73672e76616c756560881b60448201526064016104f5565b8560200151600003611c565785516040516370a0823160e01b81523360048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611c2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c50919061404c565b60208701525b604086015160208701518751611c7a926001600160a01b0390911691339190612c28565b61061e8686868686612c61565b6000546001600160a01b031633146108085760405163118cdaa760e01b81523360048201526024016104f5565b60606000805b8851811015611ec05760006001600160a01b0316898281518110611ce057611ce0613f15565b6020026020010151600001516001600160a01b031603611d6857888181518110611d0c57611d0c613f15565b602002602001015160200151600003611d435734898281518110611d3257611d32613f15565b602002602001015160200181815250505b888181518110611d5557611d55613f15565b6020026020010151602001519150611eae565b888181518110611d7a57611d7a613f15565b602002602001015160200151600003611e3757888181518110611d9f57611d9f613f15565b6020908102919091010151516040516370a0823160e01b81523360048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611df0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e14919061404c565b898281518110611e2657611e26613f15565b602002602001015160200181815250505b611eae338a8381518110611e4d57611e4d613f15565b6020026020010151604001518b8481518110611e6b57611e6b613f15565b6020026020010151602001518c8581518110611e8957611e89613f15565b6020026020010151600001516001600160a01b0316612c28909392919063ffffffff16565b80611eb881613f41565b915050611cba565b50803414611f025760405162461bcd60e51b815260206004820152600f60248201526e57726f6e67206d73672e76616c756560881b60448201526064016104f5565b61047e888888888888612004565b600180546001600160a01b031916905561084b81613177565b85516040805160a08101825287516001600160a01b0390811660608084019182526020808c0180516080870152928552808d015181860152858d015185870152855180870187528c870151851681529251908301528b015193517f30f28b7a00000000000000000000000000000000000000000000000000000000815260009592909216936330f28b7a93611fc59390929133916004016141ae565b600060405180830381600087803b158015611fdf57600080fd5b505af1158015611ff3573d6000803e3d6000fd5b5050505061134f8686868686612c61565b60606000875167ffffffffffffffff81111561202257612022613251565b60405190808252806020026020018201604052801561204b578160200160208202803683370190505b5090506000885167ffffffffffffffff81111561206a5761206a613251565b604051908082528060200260200182016040528015612093578160200160208202803683370190505b50905060005b89518110156122b3578981815181106120b4576120b4613f15565b6020026020010151602001518382815181106120d2576120d2613f15565b6020026020010181815250508981815181106120f0576120f0613f15565b60200260200101516000015182828151811061210e5761210e613f15565b60200260200101906001600160a01b031690816001600160a01b03168152505060005b818110156121e6578a818151811061214b5761214b613f15565b6020026020010151600001516001600160a01b03168b838151811061217257612172613f15565b6020026020010151600001516001600160a01b0316036121d45760405162461bcd60e51b815260206004820152601760248201527f4475706c696361746520736f7572636520746f6b656e7300000000000000000060448201526064016104f5565b806121de81613f41565b915050612131565b5060005b89518110156122a05789818151811061220557612205613f15565b6020026020010151600001516001600160a01b03168b838151811061222c5761222c613f15565b6020026020010151600001516001600160a01b03160361228e5760405162461bcd60e51b815260206004820152601760248201527f417262697472616765206e6f7420737570706f7274656400000000000000000060448201526064016104f5565b8061229881613f41565b9150506121ea565b50806122ab81613f41565b915050612099565b506000885167ffffffffffffffff8111156122d0576122d0613251565b6040519080825280602002602001820160405280156122f9578160200160208202803683370190505b50905060005b895181101561250d5789818151811061231a5761231a613f15565b6020026020010151602001518a828151811061233857612338613f15565b60200260200101516040015111156123925760405162461bcd60e51b815260206004820152601a60248201527f4d696e696d756d2067726561746572207468616e2071756f746500000000000060448201526064016104f5565b60008a82815181106123a6576123a6613f15565b602002602001015160400151116123ff5760405162461bcd60e51b815260206004820152601660248201527f4d696e696d756d206f7574707574206973207a65726f0000000000000000000060448201526064016104f5565b60005b818110156124b7578a818151811061241c5761241c613f15565b6020026020010151600001516001600160a01b03168b838151811061244357612443613f15565b6020026020010151600001516001600160a01b0316036124a55760405162461bcd60e51b815260206004820152601c60248201527f4475706c69636174652064657374696e6174696f6e20746f6b656e730000000060448201526064016104f5565b806124af81613f41565b915050612402565b506124de8a82815181106124cd576124cd613f15565b6020026020010151600001516119d1565b8282815181106124f0576124f0613f15565b60209081029190910101528061250581613f41565b9150506122ff565b5060405163cb70e27360e01b81526001600160a01b0387169063cb70e273903490612542908c908c9089903390600401613ebc565b6000604051808303818588803b15801561255b57600080fd5b505af115801561256f573d6000803e3d6000fd5b50505050506000895167ffffffffffffffff81111561259057612590613251565b6040519080825280602002602001820160405280156125b9578160200160208202803683370190505b509050895167ffffffffffffffff8111156125d6576125d6613251565b6040519080825280602002602001820160405280156125ff578160200160208202803683370190505b50865190955060201c61ffff16600081900361261a5750611f405b61271081111561266c5760405162461bcd60e51b815260206004820152601060248201527f496e76616c69642052656620436f64650000000000000000000000000000000060448201526064016104f5565b60005b8b51811015612aa65783818151811061268a5761268a613f15565b60200260200101516126a78d83815181106124cd576124cd613f15565b6126b19190613f5a565b8782815181106126c3576126c3613f15565b6020026020010181815250506000886020015167ffffffffffffffff1611156128af5760408801516001600160a01b03166127405760405162461bcd60e51b815260206004820152601260248201527f4e756c6c2066656520726563697069656e74000000000000000000000000000060448201526064016104f5565b6127536032670de0b6b3a7640000614226565b886020015167ffffffffffffffff16111561279f5760405162461bcd60e51b815260206004820152600c60248201526b08ccaca40e8dede40d0d2ced60a31b60448201526064016104f5565b60408801516001600160a01b03163014612837576128378c82815181106127c8576127c8613f15565b6020026020010151600001518960400151670de0b6b3a76400006127106127ef9190614248565b858c6020015167ffffffffffffffff168c878151811061281157612811613f15565b60200260200101516128239190614248565b61282d9190614248565b6105f09190614226565b670de0b6b3a7640000886020015167ffffffffffffffff16670de0b6b3a76400006128629190613f5a565b88838151811061287457612874613f15565b60200260200101516128869190614248565b6128909190614226565b8782815181106128a2576128a2613f15565b6020026020010181815250505b8b81815181106128c1576128c1613f15565b6020026020010151602001518782815181106128df576128df613f15565b60200260200101516128f1919061425f565b83828151811061290357612903613f15565b602002602001018181525050600083828151811061292357612923613f15565b602002602001015113801561293d5750875160301c600116155b1561297f578b818151811061295457612954613f15565b60200260200101516020015187828151811061297257612972613f15565b6020026020010181815250505b8b818151811061299157612991613f15565b6020026020010151604001518782815181106129af576129af613f15565b60200260200101511015612a055760405162461bcd60e51b815260206004820152601760248201527f536c697070616765204c696d697420457863656564656400000000000000000060448201526064016104f5565b612a948c8281518110612a1a57612a1a613f15565b60200260200101516000015160006001600160a01b03168e8481518110612a4357612a43613f15565b6020026020010151606001516001600160a01b031614612a80578d8381518110612a6f57612a6f613f15565b602002602001015160600151612a82565b335b898481518110610ef357610ef3613f15565b80612a9e81613f41565b91505061266f565b505060008a5167ffffffffffffffff811115612ac457612ac4613251565b604051908082528060200260200182016040528015612aed578160200160208202803683370190505b50905060005b8b51811015612b56578b8181518110612b0e57612b0e613f15565b602002602001015160000151828281518110612b2c57612b2c613f15565b6001600160a01b039092166020928302919091019091015280612b4e81613f41565b915050612af3565b50865160208801516040808a015190517f2c96555a96d94780f3a97aeb724514e80e331842f3143742d85da5aa68df9d3093612b9d9333938b938b938e938a938c93613fa6565b60405180910390a150505050509695505050505050565b6040516001600160a01b038381166024830152604482018390526106a891859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506131c7565b6040516001600160a01b038481166024830152838116604483015260648201839052611b0c9186918216906323b872dd90608401612be1565b600085608001518660a001511115612cbb5760405162461bcd60e51b815260206004820152601a60248201527f4d696e696d756d2067726561746572207468616e2071756f746500000000000060448201526064016104f5565b60008660a0015111612d0f5760405162461bcd60e51b815260206004820152601660248201527f4d696e696d756d206f7574707574206973207a65726f0000000000000000000060448201526064016104f5565b85606001516001600160a01b031686600001516001600160a01b031603612d785760405162461bcd60e51b815260206004820152601760248201527f417262697472616765206e6f7420737570706f7274656400000000000000000060448201526064016104f5565b6000612d8787606001516119d1565b6040805160018082528183019092529192506000919060208083019080368337019050509050876020015181600081518110612dc557612dc5613f15565b602090810291909101015260405163cb70e27360e01b81526001600160a01b0386169063cb70e273903490612e04908b908b9087903390600401613ebc565b6000604051808303818588803b158015612e1d57600080fd5b505af1158015612e31573d6000803e3d6000fd5b505050505081612e4489606001516119d1565b612e4e9190613f5a565b602085015190935067ffffffffffffffff161561301c5760408401516001600160a01b0316612ebf5760405162461bcd60e51b815260206004820152601260248201527f4e756c6c2066656520726563697069656e74000000000000000000000000000060448201526064016104f5565b612ed26032670de0b6b3a7640000614226565b846020015167ffffffffffffffff161115612f1e5760405162461bcd60e51b815260206004820152600c60248201526b08ccaca40e8dede40d0d2ced60a31b60448201526064016104f5565b835160201c61ffff166000819003612f355750611f405b612710811115612f875760405162461bcd60e51b815260206004820152601060248201527f496e76616c69642052656620436f64650000000000000000000000000000000060448201526064016104f5565b60408501516001600160a01b03163014612fd957612fd989606001518660400151670de0b6b3a7640000612710612fbe9190614248565b84896020015167ffffffffffffffff16896128239190614248565b670de0b6b3a7640000856020015167ffffffffffffffff16670de0b6b3a76400006130049190613f5a565b61300e9086614248565b6130189190614226565b9350505b600088608001518461302e919061425f565b90506000811380156130455750845160301c600116155b1561305257886080015193505b8860a001518410156130a65760405162461bcd60e51b815260206004820152601760248201527f536c697070616765204c696d697420457863656564656400000000000000000060448201526064016104f5565b606089015160c08a01516130d591906001600160a01b0316156130cd578a60c001516130cf565b335b86611a5b565b6020808a01518a516060808d015189518a8601516040808d01518151338152988901979097526001600160a01b03958616908801529286018a9052908316608086015260a0850186905267ffffffffffffffff90811660c08601521660e0840152166101008201527f69db20ca9e32403e6c56e5193b3e3b2827ae5c430ccfdea392ba950d2d1ab2bc906101200160405180910390a150505095945050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080602060008451602086016000885af1806131ea576040513d6000823e3d81fd5b50506000513d9150811561320257806001141561320f565b6001600160a01b0384163b155b15611b0c576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016104f5565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff8111828210171561328a5761328a613251565b60405290565b6040516060810167ffffffffffffffff8111828210171561328a5761328a613251565b604051601f8201601f1916810167ffffffffffffffff811182821017156132dc576132dc613251565b604052919050565b80356001600160a01b0381168114611a5657600080fd5b60006080828403121561330d57600080fd5b613315613267565b9050613320826132e4565b81526020808301358183015260408301356040830152606083013567ffffffffffffffff8082111561335157600080fd5b818501915085601f83011261336557600080fd5b81358181111561337757613377613251565b613389601f8201601f191685016132b3565b9150808252868482850101111561339f57600080fd5b808484018584013760008482840101525080606085015250505092915050565b600067ffffffffffffffff8211156133d9576133d9613251565b5060051b60200190565b600082601f8301126133f457600080fd5b81356020613409613404836133bf565b6132b3565b8281526060928302850182019282820191908785111561342857600080fd5b8387015b8581101561347d5781818a0312156134445760008081fd5b61344c613290565b613455826132e4565b81528582013586820152604061346c8184016132e4565b90820152845292840192810161342c565b5090979650505050505050565b600082601f83011261349b57600080fd5b813560206134ab613404836133bf565b82815260079290921b840181019181810190868411156134ca57600080fd5b8286015b8481101561352b57608081890312156134e75760008081fd5b6134ef613267565b6134f8826132e4565b815281850135858201526040808301359082015260606135198184016132e4565b908201528352918301916080016134ce565b509695505050505050565b60008083601f84011261354857600080fd5b50813567ffffffffffffffff81111561356057600080fd5b60208301915083602082850101111561357857600080fd5b9250929050565b803567ffffffffffffffff81168114611a5657600080fd5b6000606082840312156135a957600080fd5b6135b1613290565b90506135bc8261357f565b81526135ca6020830161357f565b60208201526135db604083016132e4565b604082015292915050565b6000806000806000806000806000806101408b8d03121561360657600080fd5b8a3567ffffffffffffffff8082111561361e57600080fd5b61362a8e838f016132fb565b9b5060208d013591508082111561364057600080fd5b61364c8e838f016133e3565b9a5060408d013591508082111561366257600080fd5b61366e8e838f0161348a565b995060608d013591508082111561368457600080fd5b6136908e838f01613536565b90995097508791506136a460808e016132e4565b96506136b38e60a08f01613597565b95506136c26101008e016132e4565b94506101208d01359150808211156136d957600080fd5b506136e68d828e01613536565b915080935050809150509295989b9194979a5092959850565b600081518084526020808501945080840160005b8381101561372f57815187529582019590820190600101613713565b509495945050505050565b60208152600061374d60208301846136ff565b9392505050565b6000806000806000806000610100888a03121561377057600080fd5b873567ffffffffffffffff8082111561378857600080fd5b6137948b838c016132fb565b985060208a01359150808211156137aa57600080fd5b6137b68b838c016133e3565b975060408a01359150808211156137cc57600080fd5b6137d88b838c0161348a565b965060608a01359150808211156137ee57600080fd5b506137fb8a828b01613536565b909550935061380e9050608089016132e4565b915061381d8960a08a01613597565b905092959891949750929550565b60008083601f84011261383d57600080fd5b50813567ffffffffffffffff81111561385557600080fd5b6020830191508360208260051b850101111561357857600080fd5b60008060008060006060868803121561388857600080fd5b853567ffffffffffffffff808211156138a057600080fd5b6138ac89838a0161382b565b909750955060208801359150808211156138c557600080fd5b506138d28882890161382b565b90945092506138e59050604087016132e4565b90509295509295909350565b600060e0828403121561390357600080fd5b60405160e0810181811067ffffffffffffffff8211171561392657613926613251565b604052905080613935836132e4565b81526020830135602082015261394d604084016132e4565b604082015261395e606084016132e4565b60608201526080830135608082015260a083013560a082015261398360c084016132e4565b60c08201525092915050565b600080600080600061018086880312156139a857600080fd5b6139b287876138f1565b945060e086013567ffffffffffffffff8111156139ce57600080fd5b6139da88828901613536565b90955093506139ee905061010087016132e4565b91506138e5876101208801613597565b60008060208385031215613a1157600080fd5b823567ffffffffffffffff811115613a2857600080fd5b613a348582860161382b565b90969095509350505050565b6000806000806000806000806101c0898b031215613a5d57600080fd5b613a678a8a6138f1565b975060e089013567ffffffffffffffff80821115613a8457600080fd5b613a908c838d01613536565b9099509750879150613aa56101008c016132e4565b9650613ab58c6101208d01613597565b9550613ac46101808c016132e4565b94506101a08b0135915080821115613adb57600080fd5b50613ae88b828c01613536565b999c989b5096995094979396929594505050565b60008060008060008060008060006101208a8c031215613b1b57600080fd5b893567ffffffffffffffff80821115613b3357600080fd5b613b3f8d838e016133e3565b9a5060208c0135915080821115613b5557600080fd5b613b618d838e0161348a565b995060408c0135915080821115613b7757600080fd5b613b838d838e01613536565b9099509750879150613b9760608d016132e4565b9650613ba68d60808e01613597565b9550613bb460e08d016132e4565b94506101008c0135915080821115613bcb57600080fd5b50613bd88c828d01613536565b915080935050809150509295985092959850929598565b600080600080600060808688031215613c0757600080fd5b853567ffffffffffffffff80821115613c1f57600080fd5b613c2b89838a016133e3565b96506020880135915080821115613c4157600080fd5b613c4d89838a0161348a565b95506040880135915080821115613c6357600080fd5b50613c7088828901613536565b90945092506138e59050606087016132e4565b600060208284031215613c9557600080fd5b5035919050565b6000806000806000806101a08789031215613cb657600080fd5b863567ffffffffffffffff80821115613cce57600080fd5b613cda8a838b016132fb565b9750613ce98a60208b016138f1565b9650610100890135915080821115613d0057600080fd5b50613d0d89828a01613536565b9095509350613d21905061012088016132e4565b9150613d31886101408901613597565b90509295509295509295565b600060208284031215613d4f57600080fd5b61374d826132e4565b60008060008060008060008060006101e08a8c031215613d7757600080fd5b893567ffffffffffffffff80821115613d8f57600080fd5b613d9b8d838e016132fb565b9a50613daa8d60208e016138f1565b99506101008c0135915080821115613dc157600080fd5b613dcd8d838e01613536565b9099509750879150613de26101208d016132e4565b9650613df28d6101408e01613597565b9550613e016101a08d016132e4565b94506101c08c0135915080821115613bcb57600080fd5b60008060008060008060e08789031215613e3157600080fd5b863567ffffffffffffffff80821115613e4957600080fd5b613e558a838b016133e3565b97506020890135915080821115613e6b57600080fd5b613e778a838b0161348a565b96506040890135915080821115613e8d57600080fd5b50613e9a89828a01613536565b9095509350613ead9050606088016132e4565b9150613d318860808901613597565b60608152836060820152838560808301376000608085830101526000601f19601f86011682016080838203016020840152613efa60808201866136ff565b9150506001600160a01b038316604083015295945050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201613f5357613f53613f2b565b5060010190565b81810381811115611a5057611a50613f2b565b600081518084526020808501945080840160005b8381101561372f5781516001600160a01b031687529582019590820190600101613f81565b60006101206001600160a01b03808d168452816020850152613fca8285018d6136ff565b91508382036040850152613fde828c613f6d565b91508382036060850152613ff2828b6136ff565b91508382036080850152614006828a613f6d565b915083820360a085015261401a82896136ff565b67ffffffffffffffff97881660c08601529590961660e084015250509216610100909201919091529695505050505050565b60006020828403121561405e57600080fd5b5051919050565b600081518084526020808501945080840160005b8381101561372f5761409f87835180516001600160a01b03168252602090810151910152565b6040969096019590820190600101614079565b6000815180845260005b818110156140d8576020818501810151868301820152016140bc565b506000602082860101526020601f19601f83011685010191505092915050565b60808152600060e082018651606060808501528181518084526101008601915060209350838301925060005b8181101561415d5761414a83855180516001600160a01b03168252602090810151910152565b9284019260409290920191600101614124565b50508289015160a0860152604089015160c0860152848103838601526141838189614065565b9250505061419c60408401866001600160a01b03169052565b828103606084015261134f81856140b2565b60006101006141d183885180516001600160a01b03168252602090810151910152565b6020870151604084015260408701516060840152614205608084018780516001600160a01b03168252602090810151910152565b6001600160a01b03851660c08401528060e084015261134f818401856140b2565b60008261424357634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417611a5057611a50613f2b565b818103600083128015838313168383128216171561427f5761427f613f2b565b509291505056fea2646970667358221220d74b0ec85c5d185ea6ecfd1e3c05b38fd2a7ff7620e313048b0f258449fd73a764736f6c63430008140033000000000000000000000000000636843c30b6b10d3dc9af803e7a7956aa994c
Deployed Bytecode
0x6080604052600436106101795760003560e01c806383bd37f9116100cb578063cab347311161007f578063e8668cac11610059578063e8668cac14610394578063f2fde38b146103b4578063fef828dc146103d457600080fd5b8063cab3473114610336578063e30c397814610356578063e5dae17d1461037457600080fd5b80638da5cb5b116100b05780638da5cb5b146102d857806398281469146102f6578063b810fb431461031657600080fd5b806383bd37f9146102c857806384a7f3dd146102d057600080fd5b80634886c6751161012d578063715018a611610107578063715018a61461026657806375c111f21461027b57806379ba5097146102b357600080fd5b80634886c6751461022457806357cfd3d414610240578063638cc0fa1461025357600080fd5b8063174da6211161015e578063174da621146101c157806330f80b4c146101e35780633596f9a21461020457600080fd5b80630d459c0814610185578063108e3a77146101ae57600080fd5b3661018057005b600080fd5b6101986101933660046135e6565b6103e7565b6040516101a5919061373a565b60405180910390f35b6101986101bc366004613754565b61046d565b3480156101cd57600080fd5b506101e16101dc366004613870565b61048a565b005b6101f66101f136600461398f565b61060f565b6040519081526020016101a5565b34801561021057600080fd5b506101e161021f3660046139fe565b610628565b34801561023057600080fd5b506101f6670de0b6b3a764000081565b6101f661024e366004613a40565b6106ad565b610198610261366004613afc565b610772565b34801561027257600080fd5b506101e16107f6565b34801561028757600080fd5b5060035461029b906001600160a01b031681565b6040516001600160a01b0390911681526020016101a5565b3480156102bf57600080fd5b506101e161080a565b6101f661084e565b610198610a47565b3480156102e457600080fd5b506000546001600160a01b031661029b565b34801561030257600080fd5b50610198610311366004613bef565b610cc0565b34801561032257600080fd5b5061029b610331366004613c83565b611315565b34801561034257600080fd5b506101f6610351366004613c9c565b61133f565b34801561036257600080fd5b506001546001600160a01b031661029b565b34801561038057600080fd5b506101e161038f366004613d3d565b61135a565b3480156103a057600080fd5b506101f66103af366004613d58565b6113ac565b3480156103c057600080fd5b506101e16103cf366004613d3d565b611473565b6101986103e2366004613e18565b6114e4565b60606103f88b8b8b8b8b8b8b6114f4565b604051633d318f9560e21b81529091506001600160a01b0385169063f4c63e549061042d908690869086903390600401613ebc565b600060405180830381600087803b15801561044757600080fd5b505af115801561045b573d6000803e3d6000fd5b505050509a9950505050505050505050565b606061047e888888888888886114f4565b98975050505050505050565b6003546001600160a01b03163314806104ad57506000546001600160a01b031633145b6104fe5760405162461bcd60e51b815260206004820152601360248201527f41646472657373206e6f7420616c6c6f7765640000000000000000000000000060448201526064015b60405180910390fd5b83821461054d5760405162461bcd60e51b815260206004820152601660248201527f496e76616c69642066756e6473207472616e736665720000000000000000000060448201526064016104f5565b60005b84811015610607576105f586868381811061056d5761056d613f15565b90506020020160208101906105829190613d3d565b8386868581811061059557610595613f15565b905060200201356000146105c1578686858181106105b5576105b5613f15565b90506020020135611a5b565b6105f08989868181106105d6576105d6613f15565b90506020020160208101906105eb9190613d3d565b6119d1565b611a5b565b806105ff81613f41565b915050610550565b505050505050565b600061061e8686868686611b26565b9695505050505050565b610630611c87565b60005b818110156106a857600283838381811061064f5761064f613f15565b90506020020160208101906106649190613d3d565b81546001810183556000928352602090922090910180546001600160a01b0319166001600160a01b03909216919091179055806106a081613f41565b915050610633565b505050565b60006106bc8989898989611b26565b604080516001808252818301909252919250600091906020808301908036833701905050905081816000815181106106f6576106f6613f15565b6020908102919091010152604051633d318f9560e21b81526001600160a01b0386169063f4c63e5490610733908790879086903390600401613ebc565b600060405180830381600087803b15801561074d57600080fd5b505af1158015610761573d6000803e3d6000fd5b505050505098975050505050505050565b60606107828a8a8a8a8a8a611cb4565b604051633d318f9560e21b81529091506001600160a01b0385169063f4c63e54906107b7908690869086903390600401613ebc565b600060405180830381600087803b1580156107d157600080fd5b505af11580156107e5573d6000803e3d6000fd5b505050509998505050505050505050565b6107fe611c87565b6108086000611f10565b565b60015433906001600160a01b031681146108425760405163118cdaa760e01b81526001600160a01b03821660048201526024016104f5565b61084b81611f10565b50565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081018290526040805160608101825260008082526020820181905291810191909152600036600061091e565b600080823560f01c8080156108f55760018114610900577f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5acc8201549350600285019250610917565b600285019250610917565b6001600160a01b03853560501c1693506016850192505b5050915091565b6000600461092b816108ad565b9150915081875261093b816108ad565b606089018290529092506001810191503560f81c801561096a578135600882602003021c602089015280820191505b50803560f81c6001820191508135600882602003021c8060808a01528183019250823560e81c915062ffffff8262ffffff0382020460a08a015250506003810190506109b5816108ad565b915094506109c2816108ad565b9092509050816109d0578491505b8160408801526109df816108ad565b60c089810192909252803590911c8752600881013560f81c925060090190508115610a1f57803560c01c6020870152600881013560601c6040870152601c015b6001810193503560f81c6020029150610a3d90508583838688611b26565b9550505050505090565b606060008180600660043560f890811c90600535901c8167ffffffffffffffff811115610a7657610a76613251565b604051908082528060200260200182016040528015610ac157816020015b6040805160608101825260008082526020808301829052928201528252600019909201910181610a945790505b5094508067ffffffffffffffff811115610add57610add613251565b604051908082528060200260200182016040528015610b2f57816020015b604080516080810182526000808252602080830182905292820181905260608201528252600019909201910181610afb5790505b509350610b3b836108ad565b9096506003810193503560e81c600080805b85811015610bba576020808202018901519150610b69876108ad565b8184526001810198509093503560f81c8015610b94578735600882602003021c602084015280880197505b50610b9e876108ad565b9750925082610bab578992505b60408201839052600101610b4d565b5060005b84811015610c31576020808202018801519150610bda876108ad565b97509250828252863560f81c6001880197508735600882602003021c806020850152818901985062ffffff8662ffffff0382020460408501525050610c1e876108ad565b6060840182905297509250600101610bbe565b505060408051606081018252600080825260208201819052918101919091529350610c5b92505050565b813560c01c8152600982019136906000906008013560f81c8015610c9757843560c01c6020850152600885013560601c6040850152601c909401935b505050600182016020833560f81c02610cb4868684848b88611cb4565b97505050505050505090565b6003546060906001600160a01b0316331480610ce657506000546001600160a01b031633145b610d325760405162461bcd60e51b815260206004820152601360248201527f41646472657373206e6f7420616c6c6f7765640000000000000000000000000060448201526064016104f5565b6000865167ffffffffffffffff811115610d4e57610d4e613251565b604051908082528060200260200182016040528015610d77578160200160208202803683370190505b5090506000875167ffffffffffffffff811115610d9657610d96613251565b604051908082528060200260200182016040528015610dbf578160200160208202803683370190505b50905060005b8851811015610f1257888181518110610de057610de0613f15565b602002602001015160000151828281518110610dfe57610dfe613f15565b60200260200101906001600160a01b031690816001600160a01b031681525050888181518110610e3057610e30613f15565b602002602001015160200151600014610e6657888181518110610e5557610e55613f15565b602002602001015160200151610e88565b610e88828281518110610e7b57610e7b613f15565b60200260200101516119d1565b838281518110610e9a57610e9a613f15565b602002602001018181525050610f00828281518110610ebb57610ebb613f15565b60200260200101518a8381518110610ed557610ed5613f15565b602002602001015160400151858481518110610ef357610ef3613f15565b6020026020010151611a5b565b80610f0a81613f41565b915050610dc5565b506000875167ffffffffffffffff811115610f2f57610f2f613251565b604051908082528060200260200182016040528015610f58578160200160208202803683370190505b5090506000885167ffffffffffffffff811115610f7757610f77613251565b604051908082528060200260200182016040528015610fa0578160200160208202803683370190505b50905060005b895181101561104357898181518110610fc157610fc1613f15565b602002602001015160000151828281518110610fdf57610fdf613f15565b60200260200101906001600160a01b031690816001600160a01b031681525050611014828281518110610e7b57610e7b613f15565b83828151811061102657611026613f15565b60209081029190910101528061103b81613f41565b915050610fa6565b5060405163cb70e27360e01b81526001600160a01b0387169063cb70e27390600090611079908c908c908a903390600401613ebc565b6000604051808303818588803b15801561109257600080fd5b505af11580156110a6573d6000803e3d6000fd5b5050505050885167ffffffffffffffff8111156110c5576110c5613251565b6040519080825280602002602001820160405280156110ee578160200160208202803683370190505b50945060005b895181101561127b5782818151811061110f5761110f613f15565b602002602001015161112c838381518110610e7b57610e7b613f15565b6111369190613f5a565b86828151811061114857611148613f15565b60200260200101818152505089818151811061116657611166613f15565b60200260200101516040015186828151811061118457611184613f15565b602002602001015110156111da5760405162461bcd60e51b815260206004820152601760248201527f536c697070616765204c696d697420457863656564656400000000000000000060448201526064016104f5565b6112698a82815181106111ef576111ef613f15565b60200260200101516000015160006001600160a01b03168c848151811061121857611218613f15565b6020026020010151606001516001600160a01b031614611255578b838151811061124457611244613f15565b602002602001015160600151611257565b335b888481518110610ef357610ef3613f15565b8061127381613f41565b9150506110f4565b507f2c96555a96d94780f3a97aeb724514e80e331842f3143742d85da5aa68df9d3033858588858e5167ffffffffffffffff8111156112bc576112bc613251565b6040519080825280602002602001820160405280156112e5578160200160208202803683370190505b50600080600060405161130099989796959493929190613fa6565b60405180910390a15050505095945050505050565b6002818154811061132557600080fd5b6000918252602090912001546001600160a01b0316905081565b600061134f878787878787611f29565b979650505050505050565b611362611c87565b600380546001600160a01b0319166001600160a01b0383169081179091556040517f1535fa8f7275b71050af30bf7f74391b45be7ba2b545fd28279dafe9b50f642490600090a250565b60006113bc8a8a8a8a8a8a611f29565b604080516001808252818301909252919250600091906020808301908036833701905050905081816000815181106113f6576113f6613f15565b6020908102919091010152604051633d318f9560e21b81526001600160a01b0386169063f4c63e5490611433908790879086903390600401613ebc565b600060405180830381600087803b15801561144d57600080fd5b505af1158015611461573d6000803e3d6000fd5b50505050509998505050505050505050565b61147b611c87565b600180546001600160a01b0383166001600160a01b031990911681179091556114ac6000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b606061134f878787878787611cb4565b606061151a60405180606001604052806060815260200160008152602001600081525090565b6060600080341161152c57895161153a565b60018a5161153a9190613f5a565b905060405180606001604052808267ffffffffffffffff81111561156057611560613251565b6040519080825280602002602001820160405280156115a557816020015b604080518082019091526000808252602082015281526020019060019003908161157e5790505b5081526020018c6020015181526020018c6040015181525092508067ffffffffffffffff8111156115d8576115d8613251565b60405190808252806020026020018201604052801561161d57816020015b60408051808201909152600080825260208201528152602001906001900390816115f65790505b509150506000805b8a518110156118ee5760006001600160a01b03168b828151811061164b5761164b613f15565b6020026020010151600001516001600160a01b0316036116d3578a818151811061167757611677613f15565b6020026020010151602001516000036116ae57348b828151811061169d5761169d613f15565b602002602001015160200181815250505b8a81815181106116c0576116c0613f15565b60200260200101516020015191506118dc565b8a81815181106116e5576116e5613f15565b6020026020010151602001516000036117a2578a818151811061170a5761170a613f15565b6020908102919091010151516040516370a0823160e01b81523360048201526001600160a01b03909116906370a0823190602401602060405180830381865afa15801561175b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177f919061404c565b8b828151811061179157611791613f15565b602002602001015160200181815250505b600082156117ba576117b5600183613f5a565b6117bc565b815b90508b82815181106117d0576117d0613f15565b602002602001015160000151856000015182815181106117f2576117f2613f15565b60209081029190910101516001600160a01b0390911690528b518c908390811061181e5761181e613f15565b6020026020010151602001518560000151828151811061184057611840613f15565b602002602001015160200181815250508b828151811061186257611862613f15565b60200260200101516040015184828151811061188057611880613f15565b60209081029190910101516001600160a01b0390911690528b518c90839081106118ac576118ac613f15565b6020026020010151602001518482815181106118ca576118ca613f15565b60200260200101516020018181525050505b806118e681613f41565b915050611625565b508034146119305760405162461bcd60e51b815260206004820152600f60248201526e57726f6e67206d73672e76616c756560881b60448201526064016104f5565b50895160608b01516040517fedd9444b0000000000000000000000000000000000000000000000000000000081526001600160a01b039092169163edd9444b9161198391869186913391906004016140f8565b600060405180830381600087803b15801561199d57600080fd5b505af11580156119b1573d6000803e3d6000fd5b505050506119c3898989898989612004565b9a9950505050505050505050565b60006001600160a01b0382166119e8575047919050565b6040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015611a2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a50919061404c565b92915050565b919050565b6001600160a01b038316611b12576000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611ab6576040519150601f19603f3d011682016040523d82523d6000602084013e611abb565b606091505b5050905080611b0c5760405162461bcd60e51b815260206004820152601360248201527f455448207472616e73666572206661696c65640000000000000000000000000060448201526064016104f5565b50505050565b6106a86001600160a01b0384168383612bb4565b84516000906001600160a01b0316611b99578560200151600003611b4f57346020870152611c7a565b85602001513414611b945760405162461bcd60e51b815260206004820152600f60248201526e57726f6e67206d73672e76616c756560881b60448201526064016104f5565b611c7a565b3415611bd95760405162461bcd60e51b815260206004820152600f60248201526e57726f6e67206d73672e76616c756560881b60448201526064016104f5565b8560200151600003611c565785516040516370a0823160e01b81523360048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611c2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c50919061404c565b60208701525b604086015160208701518751611c7a926001600160a01b0390911691339190612c28565b61061e8686868686612c61565b6000546001600160a01b031633146108085760405163118cdaa760e01b81523360048201526024016104f5565b60606000805b8851811015611ec05760006001600160a01b0316898281518110611ce057611ce0613f15565b6020026020010151600001516001600160a01b031603611d6857888181518110611d0c57611d0c613f15565b602002602001015160200151600003611d435734898281518110611d3257611d32613f15565b602002602001015160200181815250505b888181518110611d5557611d55613f15565b6020026020010151602001519150611eae565b888181518110611d7a57611d7a613f15565b602002602001015160200151600003611e3757888181518110611d9f57611d9f613f15565b6020908102919091010151516040516370a0823160e01b81523360048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611df0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e14919061404c565b898281518110611e2657611e26613f15565b602002602001015160200181815250505b611eae338a8381518110611e4d57611e4d613f15565b6020026020010151604001518b8481518110611e6b57611e6b613f15565b6020026020010151602001518c8581518110611e8957611e89613f15565b6020026020010151600001516001600160a01b0316612c28909392919063ffffffff16565b80611eb881613f41565b915050611cba565b50803414611f025760405162461bcd60e51b815260206004820152600f60248201526e57726f6e67206d73672e76616c756560881b60448201526064016104f5565b61047e888888888888612004565b600180546001600160a01b031916905561084b81613177565b85516040805160a08101825287516001600160a01b0390811660608084019182526020808c0180516080870152928552808d015181860152858d015185870152855180870187528c870151851681529251908301528b015193517f30f28b7a00000000000000000000000000000000000000000000000000000000815260009592909216936330f28b7a93611fc59390929133916004016141ae565b600060405180830381600087803b158015611fdf57600080fd5b505af1158015611ff3573d6000803e3d6000fd5b5050505061134f8686868686612c61565b60606000875167ffffffffffffffff81111561202257612022613251565b60405190808252806020026020018201604052801561204b578160200160208202803683370190505b5090506000885167ffffffffffffffff81111561206a5761206a613251565b604051908082528060200260200182016040528015612093578160200160208202803683370190505b50905060005b89518110156122b3578981815181106120b4576120b4613f15565b6020026020010151602001518382815181106120d2576120d2613f15565b6020026020010181815250508981815181106120f0576120f0613f15565b60200260200101516000015182828151811061210e5761210e613f15565b60200260200101906001600160a01b031690816001600160a01b03168152505060005b818110156121e6578a818151811061214b5761214b613f15565b6020026020010151600001516001600160a01b03168b838151811061217257612172613f15565b6020026020010151600001516001600160a01b0316036121d45760405162461bcd60e51b815260206004820152601760248201527f4475706c696361746520736f7572636520746f6b656e7300000000000000000060448201526064016104f5565b806121de81613f41565b915050612131565b5060005b89518110156122a05789818151811061220557612205613f15565b6020026020010151600001516001600160a01b03168b838151811061222c5761222c613f15565b6020026020010151600001516001600160a01b03160361228e5760405162461bcd60e51b815260206004820152601760248201527f417262697472616765206e6f7420737570706f7274656400000000000000000060448201526064016104f5565b8061229881613f41565b9150506121ea565b50806122ab81613f41565b915050612099565b506000885167ffffffffffffffff8111156122d0576122d0613251565b6040519080825280602002602001820160405280156122f9578160200160208202803683370190505b50905060005b895181101561250d5789818151811061231a5761231a613f15565b6020026020010151602001518a828151811061233857612338613f15565b60200260200101516040015111156123925760405162461bcd60e51b815260206004820152601a60248201527f4d696e696d756d2067726561746572207468616e2071756f746500000000000060448201526064016104f5565b60008a82815181106123a6576123a6613f15565b602002602001015160400151116123ff5760405162461bcd60e51b815260206004820152601660248201527f4d696e696d756d206f7574707574206973207a65726f0000000000000000000060448201526064016104f5565b60005b818110156124b7578a818151811061241c5761241c613f15565b6020026020010151600001516001600160a01b03168b838151811061244357612443613f15565b6020026020010151600001516001600160a01b0316036124a55760405162461bcd60e51b815260206004820152601c60248201527f4475706c69636174652064657374696e6174696f6e20746f6b656e730000000060448201526064016104f5565b806124af81613f41565b915050612402565b506124de8a82815181106124cd576124cd613f15565b6020026020010151600001516119d1565b8282815181106124f0576124f0613f15565b60209081029190910101528061250581613f41565b9150506122ff565b5060405163cb70e27360e01b81526001600160a01b0387169063cb70e273903490612542908c908c9089903390600401613ebc565b6000604051808303818588803b15801561255b57600080fd5b505af115801561256f573d6000803e3d6000fd5b50505050506000895167ffffffffffffffff81111561259057612590613251565b6040519080825280602002602001820160405280156125b9578160200160208202803683370190505b509050895167ffffffffffffffff8111156125d6576125d6613251565b6040519080825280602002602001820160405280156125ff578160200160208202803683370190505b50865190955060201c61ffff16600081900361261a5750611f405b61271081111561266c5760405162461bcd60e51b815260206004820152601060248201527f496e76616c69642052656620436f64650000000000000000000000000000000060448201526064016104f5565b60005b8b51811015612aa65783818151811061268a5761268a613f15565b60200260200101516126a78d83815181106124cd576124cd613f15565b6126b19190613f5a565b8782815181106126c3576126c3613f15565b6020026020010181815250506000886020015167ffffffffffffffff1611156128af5760408801516001600160a01b03166127405760405162461bcd60e51b815260206004820152601260248201527f4e756c6c2066656520726563697069656e74000000000000000000000000000060448201526064016104f5565b6127536032670de0b6b3a7640000614226565b886020015167ffffffffffffffff16111561279f5760405162461bcd60e51b815260206004820152600c60248201526b08ccaca40e8dede40d0d2ced60a31b60448201526064016104f5565b60408801516001600160a01b03163014612837576128378c82815181106127c8576127c8613f15565b6020026020010151600001518960400151670de0b6b3a76400006127106127ef9190614248565b858c6020015167ffffffffffffffff168c878151811061281157612811613f15565b60200260200101516128239190614248565b61282d9190614248565b6105f09190614226565b670de0b6b3a7640000886020015167ffffffffffffffff16670de0b6b3a76400006128629190613f5a565b88838151811061287457612874613f15565b60200260200101516128869190614248565b6128909190614226565b8782815181106128a2576128a2613f15565b6020026020010181815250505b8b81815181106128c1576128c1613f15565b6020026020010151602001518782815181106128df576128df613f15565b60200260200101516128f1919061425f565b83828151811061290357612903613f15565b602002602001018181525050600083828151811061292357612923613f15565b602002602001015113801561293d5750875160301c600116155b1561297f578b818151811061295457612954613f15565b60200260200101516020015187828151811061297257612972613f15565b6020026020010181815250505b8b818151811061299157612991613f15565b6020026020010151604001518782815181106129af576129af613f15565b60200260200101511015612a055760405162461bcd60e51b815260206004820152601760248201527f536c697070616765204c696d697420457863656564656400000000000000000060448201526064016104f5565b612a948c8281518110612a1a57612a1a613f15565b60200260200101516000015160006001600160a01b03168e8481518110612a4357612a43613f15565b6020026020010151606001516001600160a01b031614612a80578d8381518110612a6f57612a6f613f15565b602002602001015160600151612a82565b335b898481518110610ef357610ef3613f15565b80612a9e81613f41565b91505061266f565b505060008a5167ffffffffffffffff811115612ac457612ac4613251565b604051908082528060200260200182016040528015612aed578160200160208202803683370190505b50905060005b8b51811015612b56578b8181518110612b0e57612b0e613f15565b602002602001015160000151828281518110612b2c57612b2c613f15565b6001600160a01b039092166020928302919091019091015280612b4e81613f41565b915050612af3565b50865160208801516040808a015190517f2c96555a96d94780f3a97aeb724514e80e331842f3143742d85da5aa68df9d3093612b9d9333938b938b938e938a938c93613fa6565b60405180910390a150505050509695505050505050565b6040516001600160a01b038381166024830152604482018390526106a891859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506131c7565b6040516001600160a01b038481166024830152838116604483015260648201839052611b0c9186918216906323b872dd90608401612be1565b600085608001518660a001511115612cbb5760405162461bcd60e51b815260206004820152601a60248201527f4d696e696d756d2067726561746572207468616e2071756f746500000000000060448201526064016104f5565b60008660a0015111612d0f5760405162461bcd60e51b815260206004820152601660248201527f4d696e696d756d206f7574707574206973207a65726f0000000000000000000060448201526064016104f5565b85606001516001600160a01b031686600001516001600160a01b031603612d785760405162461bcd60e51b815260206004820152601760248201527f417262697472616765206e6f7420737570706f7274656400000000000000000060448201526064016104f5565b6000612d8787606001516119d1565b6040805160018082528183019092529192506000919060208083019080368337019050509050876020015181600081518110612dc557612dc5613f15565b602090810291909101015260405163cb70e27360e01b81526001600160a01b0386169063cb70e273903490612e04908b908b9087903390600401613ebc565b6000604051808303818588803b158015612e1d57600080fd5b505af1158015612e31573d6000803e3d6000fd5b505050505081612e4489606001516119d1565b612e4e9190613f5a565b602085015190935067ffffffffffffffff161561301c5760408401516001600160a01b0316612ebf5760405162461bcd60e51b815260206004820152601260248201527f4e756c6c2066656520726563697069656e74000000000000000000000000000060448201526064016104f5565b612ed26032670de0b6b3a7640000614226565b846020015167ffffffffffffffff161115612f1e5760405162461bcd60e51b815260206004820152600c60248201526b08ccaca40e8dede40d0d2ced60a31b60448201526064016104f5565b835160201c61ffff166000819003612f355750611f405b612710811115612f875760405162461bcd60e51b815260206004820152601060248201527f496e76616c69642052656620436f64650000000000000000000000000000000060448201526064016104f5565b60408501516001600160a01b03163014612fd957612fd989606001518660400151670de0b6b3a7640000612710612fbe9190614248565b84896020015167ffffffffffffffff16896128239190614248565b670de0b6b3a7640000856020015167ffffffffffffffff16670de0b6b3a76400006130049190613f5a565b61300e9086614248565b6130189190614226565b9350505b600088608001518461302e919061425f565b90506000811380156130455750845160301c600116155b1561305257886080015193505b8860a001518410156130a65760405162461bcd60e51b815260206004820152601760248201527f536c697070616765204c696d697420457863656564656400000000000000000060448201526064016104f5565b606089015160c08a01516130d591906001600160a01b0316156130cd578a60c001516130cf565b335b86611a5b565b6020808a01518a516060808d015189518a8601516040808d01518151338152988901979097526001600160a01b03958616908801529286018a9052908316608086015260a0850186905267ffffffffffffffff90811660c08601521660e0840152166101008201527f69db20ca9e32403e6c56e5193b3e3b2827ae5c430ccfdea392ba950d2d1ab2bc906101200160405180910390a150505095945050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080602060008451602086016000885af1806131ea576040513d6000823e3d81fd5b50506000513d9150811561320257806001141561320f565b6001600160a01b0384163b155b15611b0c576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016104f5565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff8111828210171561328a5761328a613251565b60405290565b6040516060810167ffffffffffffffff8111828210171561328a5761328a613251565b604051601f8201601f1916810167ffffffffffffffff811182821017156132dc576132dc613251565b604052919050565b80356001600160a01b0381168114611a5657600080fd5b60006080828403121561330d57600080fd5b613315613267565b9050613320826132e4565b81526020808301358183015260408301356040830152606083013567ffffffffffffffff8082111561335157600080fd5b818501915085601f83011261336557600080fd5b81358181111561337757613377613251565b613389601f8201601f191685016132b3565b9150808252868482850101111561339f57600080fd5b808484018584013760008482840101525080606085015250505092915050565b600067ffffffffffffffff8211156133d9576133d9613251565b5060051b60200190565b600082601f8301126133f457600080fd5b81356020613409613404836133bf565b6132b3565b8281526060928302850182019282820191908785111561342857600080fd5b8387015b8581101561347d5781818a0312156134445760008081fd5b61344c613290565b613455826132e4565b81528582013586820152604061346c8184016132e4565b90820152845292840192810161342c565b5090979650505050505050565b600082601f83011261349b57600080fd5b813560206134ab613404836133bf565b82815260079290921b840181019181810190868411156134ca57600080fd5b8286015b8481101561352b57608081890312156134e75760008081fd5b6134ef613267565b6134f8826132e4565b815281850135858201526040808301359082015260606135198184016132e4565b908201528352918301916080016134ce565b509695505050505050565b60008083601f84011261354857600080fd5b50813567ffffffffffffffff81111561356057600080fd5b60208301915083602082850101111561357857600080fd5b9250929050565b803567ffffffffffffffff81168114611a5657600080fd5b6000606082840312156135a957600080fd5b6135b1613290565b90506135bc8261357f565b81526135ca6020830161357f565b60208201526135db604083016132e4565b604082015292915050565b6000806000806000806000806000806101408b8d03121561360657600080fd5b8a3567ffffffffffffffff8082111561361e57600080fd5b61362a8e838f016132fb565b9b5060208d013591508082111561364057600080fd5b61364c8e838f016133e3565b9a5060408d013591508082111561366257600080fd5b61366e8e838f0161348a565b995060608d013591508082111561368457600080fd5b6136908e838f01613536565b90995097508791506136a460808e016132e4565b96506136b38e60a08f01613597565b95506136c26101008e016132e4565b94506101208d01359150808211156136d957600080fd5b506136e68d828e01613536565b915080935050809150509295989b9194979a5092959850565b600081518084526020808501945080840160005b8381101561372f57815187529582019590820190600101613713565b509495945050505050565b60208152600061374d60208301846136ff565b9392505050565b6000806000806000806000610100888a03121561377057600080fd5b873567ffffffffffffffff8082111561378857600080fd5b6137948b838c016132fb565b985060208a01359150808211156137aa57600080fd5b6137b68b838c016133e3565b975060408a01359150808211156137cc57600080fd5b6137d88b838c0161348a565b965060608a01359150808211156137ee57600080fd5b506137fb8a828b01613536565b909550935061380e9050608089016132e4565b915061381d8960a08a01613597565b905092959891949750929550565b60008083601f84011261383d57600080fd5b50813567ffffffffffffffff81111561385557600080fd5b6020830191508360208260051b850101111561357857600080fd5b60008060008060006060868803121561388857600080fd5b853567ffffffffffffffff808211156138a057600080fd5b6138ac89838a0161382b565b909750955060208801359150808211156138c557600080fd5b506138d28882890161382b565b90945092506138e59050604087016132e4565b90509295509295909350565b600060e0828403121561390357600080fd5b60405160e0810181811067ffffffffffffffff8211171561392657613926613251565b604052905080613935836132e4565b81526020830135602082015261394d604084016132e4565b604082015261395e606084016132e4565b60608201526080830135608082015260a083013560a082015261398360c084016132e4565b60c08201525092915050565b600080600080600061018086880312156139a857600080fd5b6139b287876138f1565b945060e086013567ffffffffffffffff8111156139ce57600080fd5b6139da88828901613536565b90955093506139ee905061010087016132e4565b91506138e5876101208801613597565b60008060208385031215613a1157600080fd5b823567ffffffffffffffff811115613a2857600080fd5b613a348582860161382b565b90969095509350505050565b6000806000806000806000806101c0898b031215613a5d57600080fd5b613a678a8a6138f1565b975060e089013567ffffffffffffffff80821115613a8457600080fd5b613a908c838d01613536565b9099509750879150613aa56101008c016132e4565b9650613ab58c6101208d01613597565b9550613ac46101808c016132e4565b94506101a08b0135915080821115613adb57600080fd5b50613ae88b828c01613536565b999c989b5096995094979396929594505050565b60008060008060008060008060006101208a8c031215613b1b57600080fd5b893567ffffffffffffffff80821115613b3357600080fd5b613b3f8d838e016133e3565b9a5060208c0135915080821115613b5557600080fd5b613b618d838e0161348a565b995060408c0135915080821115613b7757600080fd5b613b838d838e01613536565b9099509750879150613b9760608d016132e4565b9650613ba68d60808e01613597565b9550613bb460e08d016132e4565b94506101008c0135915080821115613bcb57600080fd5b50613bd88c828d01613536565b915080935050809150509295985092959850929598565b600080600080600060808688031215613c0757600080fd5b853567ffffffffffffffff80821115613c1f57600080fd5b613c2b89838a016133e3565b96506020880135915080821115613c4157600080fd5b613c4d89838a0161348a565b95506040880135915080821115613c6357600080fd5b50613c7088828901613536565b90945092506138e59050606087016132e4565b600060208284031215613c9557600080fd5b5035919050565b6000806000806000806101a08789031215613cb657600080fd5b863567ffffffffffffffff80821115613cce57600080fd5b613cda8a838b016132fb565b9750613ce98a60208b016138f1565b9650610100890135915080821115613d0057600080fd5b50613d0d89828a01613536565b9095509350613d21905061012088016132e4565b9150613d31886101408901613597565b90509295509295509295565b600060208284031215613d4f57600080fd5b61374d826132e4565b60008060008060008060008060006101e08a8c031215613d7757600080fd5b893567ffffffffffffffff80821115613d8f57600080fd5b613d9b8d838e016132fb565b9a50613daa8d60208e016138f1565b99506101008c0135915080821115613dc157600080fd5b613dcd8d838e01613536565b9099509750879150613de26101208d016132e4565b9650613df28d6101408e01613597565b9550613e016101a08d016132e4565b94506101c08c0135915080821115613bcb57600080fd5b60008060008060008060e08789031215613e3157600080fd5b863567ffffffffffffffff80821115613e4957600080fd5b613e558a838b016133e3565b97506020890135915080821115613e6b57600080fd5b613e778a838b0161348a565b96506040890135915080821115613e8d57600080fd5b50613e9a89828a01613536565b9095509350613ead9050606088016132e4565b9150613d318860808901613597565b60608152836060820152838560808301376000608085830101526000601f19601f86011682016080838203016020840152613efa60808201866136ff565b9150506001600160a01b038316604083015295945050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201613f5357613f53613f2b565b5060010190565b81810381811115611a5057611a50613f2b565b600081518084526020808501945080840160005b8381101561372f5781516001600160a01b031687529582019590820190600101613f81565b60006101206001600160a01b03808d168452816020850152613fca8285018d6136ff565b91508382036040850152613fde828c613f6d565b91508382036060850152613ff2828b6136ff565b91508382036080850152614006828a613f6d565b915083820360a085015261401a82896136ff565b67ffffffffffffffff97881660c08601529590961660e084015250509216610100909201919091529695505050505050565b60006020828403121561405e57600080fd5b5051919050565b600081518084526020808501945080840160005b8381101561372f5761409f87835180516001600160a01b03168252602090810151910152565b6040969096019590820190600101614079565b6000815180845260005b818110156140d8576020818501810151868301820152016140bc565b506000602082860101526020601f19601f83011685010191505092915050565b60808152600060e082018651606060808501528181518084526101008601915060209350838301925060005b8181101561415d5761414a83855180516001600160a01b03168252602090810151910152565b9284019260409290920191600101614124565b50508289015160a0860152604089015160c0860152848103838601526141838189614065565b9250505061419c60408401866001600160a01b03169052565b828103606084015261134f81856140b2565b60006101006141d183885180516001600160a01b03168252602090810151910152565b6020870151604084015260408701516060840152614205608084018780516001600160a01b03168252602090810151910152565b6001600160a01b03851660c08401528060e084015261134f818401856140b2565b60008261424357634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417611a5057611a50613f2b565b818103600083128015838313168383128216171561427f5761427f613f2b565b509291505056fea2646970667358221220d74b0ec85c5d185ea6ecfd1e3c05b38fd2a7ff7620e313048b0f258449fd73a764736f6c63430008140033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000636843c30b6b10d3dc9af803e7a7956aa994c
-----Decoded View---------------
Arg [0] : owner (address): 0x000636843C30b6B10d3DC9aF803E7A7956aa994C
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000000636843c30b6b10d3dc9af803e7a7956aa994c
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$1,847,042.36
Net Worth in ETH
625.500681
Token Allocations
EURC
67.69%
UXLINK
30.45%
USDT.Z
0.18%
Others
1.68%
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|---|---|---|---|---|
| BSC | 67.63% | $1.06 | 1,174,109.1536 | $1,249,241.13 | |
| BSC | 0.18% | $1 | 3,328.2651 | $3,338.42 | |
| BSC | 0.02% | $0.002755 | 112,542.8925 | $310.04 | |
| BSC | <0.01% | $0.995952 | 98.2625 | $97.86 | |
| BSC | <0.01% | $2,953.09 | 0.0324 | $95.64 | |
| BSC | <0.01% | $0.999619 | 88.1767 | $88.14 | |
| BSC | <0.01% | $887.58 | 0.093 | $82.52 | |
| BSC | <0.01% | $0.999382 | 82.2362 | $82.19 | |
| BSC | <0.01% | $886.85 | 0.0769 | $68.18 | |
| BSC | <0.01% | $5.29 | 12.7996 | $67.67 | |
| BSC | <0.01% | $1.91 | 30.9412 | $59.2 | |
| BSC | <0.01% | $0.67053 | 87.3274 | $58.56 | |
| BSC | <0.01% | $89,206.23 | 0.00054875 | $48.95 | |
| BSC | <0.01% | $88,947 | 0.00046954 | $41.76 | |
| BSC | <0.01% | $0.1376 | 293.6813 | $40.41 | |
| BSC | <0.01% | $127.17 | 0.3086 | $39.25 | |
| BSC | <0.01% | $89,268.93 | 0.00041942 | $37.44 | |
| BSC | <0.01% | $67.86 | 0.5145 | $34.92 | |
| BSC | <0.01% | $364.48 | 0.0837 | $30.52 | |
| BSC | <0.01% | $0.999555 | 29.5681 | $29.55 | |
| BSC | <0.01% | $0.011779 | 2,494.823 | $29.39 | |
| BSC | <0.01% | $54.23 | 0.508 | $27.55 | |
| BSC | <0.01% | $12.18 | 2.2577 | $27.49 | |
| BSC | <0.01% | $0.99856 | 27.2701 | $27.23 | |
| BSC | <0.01% | $0.005076 | 4,693.7946 | $23.82 | |
| BSC | <0.01% | $2.01 | 10.6489 | $21.4 | |
| BSC | <0.01% | $0.357867 | 50.7455 | $18.16 | |
| BSC | <0.01% | $51.92 | 0.3436 | $17.84 | |
| BSC | <0.01% | $155.7 | 0.1066 | $16.6 | |
| BSC | <0.01% | $0.001781 | 8,211.8351 | $14.63 | |
| BSC | <0.01% | $0.99777 | 14.5584 | $14.53 | |
| BSC | <0.01% | $1.91 | 7.5511 | $14.42 | |
| BSC | <0.01% | $11.58 | 1.1946 | $13.83 | |
| BSC | <0.01% | $975.23 | 0.0141 | $13.77 | |
| BSC | <0.01% | $3.8 | 3.323 | $12.63 | |
| BSC | <0.01% | $0.863023 | 13.7845 | $11.9 | |
| BSC | <0.01% | $940.54 | 0.0121 | $11.39 | |
| BSC | <0.01% | $88,986 | 0.00010299 | $9.16 | |
| BSC | <0.01% | $0.092893 | 90.8411 | $8.44 | |
| BSC | <0.01% | $0.025792 | 322.2656 | $8.31 | |
| BSC | <0.01% | $0.041959 | 191.1815 | $8.02 | |
| BSC | <0.01% | $0.000832 | 9,587.9736 | $7.98 | |
| BSC | <0.01% | $0.997134 | 7.9478 | $7.93 | |
| BSC | <0.01% | $0.061849 | 125.9634 | $7.79 | |
| BSC | <0.01% | $0.323157 | 20.9317 | $6.76 | |
| BSC | <0.01% | $1.08 | 5.2225 | $5.65 | |
| BSC | <0.01% | $0.999322 | 5.4271 | $5.42 | |
| BSC | <0.01% | $0.999719 | 5.1876 | $5.19 | |
| BSC | <0.01% | $0.237713 | 21.4556 | $5.1 | |
| BSC | <0.01% | $2,949.4 | 0.00168166 | $4.96 | |
| BSC | <0.01% | $12.02 | 0.4096 | $4.92 | |
| BSC | <0.01% | $1.62 | 2.9982 | $4.86 | |
| BSC | <0.01% | $981.16 | 0.00456291 | $4.48 | |
| BSC | <0.01% | $0.401079 | 11.1026 | $4.45 | |
| BSC | <0.01% | $0.019607 | 224.3373 | $4.4 | |
| BSC | <0.01% | $6.28 | 0.6728 | $4.23 | |
| BSC | <0.01% | $0.000005 | 838,200.4598 | $4.19 | |
| BSC | <0.01% | $0.023003 | 180.6831 | $4.16 | |
| BSC | <0.01% | $4.85 | 0.8085 | $3.92 | |
| BSC | <0.01% | $0.001108 | 3,209.6543 | $3.56 | |
| BSC | <0.01% | $0.0882 | 40.1236 | $3.54 | |
| BSC | <0.01% | $0.179891 | 19.5627 | $3.52 | |
| BSC | <0.01% | <$0.000001 | 203,960,817.4681 | $3.45 | |
| BSC | <0.01% | $2.32 | 1.4099 | $3.27 | |
| BSC | <0.01% | $0.010673 | 300.0244 | $3.2 | |
| BSC | <0.01% | $0.029004 | 109.0665 | $3.16 | |
| BSC | <0.01% | $891.74 | 0.00346098 | $3.09 | |
| BSC | <0.01% | $0.055644 | 51.9999 | $2.89 | |
| BSC | <0.01% | <$0.000001 | 36,618,382.2743 | $2.8 | |
| BSC | <0.01% | $0.309215 | 8.9864 | $2.78 | |
| BSC | <0.01% | $0.041371 | 63.3678 | $2.62 | |
| BSC | <0.01% | $0.004602 | 561.8426 | $2.59 | |
| BSC | <0.01% | $89,700 | 0.00002871 | $2.58 | |
| BSC | <0.01% | $0.014668 | 172.2891 | $2.53 | |
| BSC | <0.01% | $0.216741 | 10.7184 | $2.32 | |
| BSC | <0.01% | $0.178281 | 12.9002 | $2.3 | |
| BSC | <0.01% | $2.04 | 0.9327 | $1.9 | |
| BSC | <0.01% | $1.19 | 1.4909 | $1.77 | |
| BSC | <0.01% | $0.004909 | 346.0013 | $1.7 | |
| BSC | <0.01% | $88,680 | 0.00001907 | $1.69 | |
| BSC | <0.01% | <$0.000001 | 114,419,855.7132 | $1.6 | |
| BSC | <0.01% | $0.034423 | 46.17 | $1.59 | |
| BSC | <0.01% | $0.999316 | 1.3833 | $1.38 | |
| BSC | <0.01% | $0.019151 | 70.8274 | $1.36 | |
| BSC | <0.01% | $0.000026 | 48,778.3122 | $1.29 | |
| BSC | <0.01% | $0.000001 | 1,427,580.9864 | $1.25 | |
| BSC | <0.01% | $0.00 | 0.0003955 | $0.00 | |
| BSC | <0.01% | $0.38398 | 3.0456 | $1.17 | |
| BSC | <0.01% | $0.019024 | 59.1371 | $1.13 | |
| BSC | <0.01% | $0.011536 | 94.2155 | $1.09 | |
| BSC | <0.01% | $0.05252 | 19.8946 | $1.04 | |
| BSC | <0.01% | $7.23 | 0.1405 | $1.02 | |
| BSC | <0.01% | $0.009072 | 111.3879 | $1.01 | |
| BSC | <0.01% | $1.91 | 0.5202 | $0.9936 | |
| BSC | <0.01% | $0.998697 | 0.963 | $0.9617 | |
| BSC | <0.01% | <$0.000001 | 1,570,666,039.1986 | $0.9282 | |
| BSC | <0.01% | $0.029952 | 30.062 | $0.9004 | |
| BSC | <0.01% | $0.014793 | 58.234 | $0.8614 | |
| BSC | <0.01% | $0.011655 | 71.6466 | $0.835 | |
| BSC | <0.01% | $1.05 | 0.7913 | $0.834 | |
| BSC | <0.01% | $1.3 | 0.6345 | $0.8236 | |
| BSC | <0.01% | $0.058438 | 13.5955 | $0.7944 | |
| BSC | <0.01% | $2.38 | 0.3293 | $0.7838 | |
| BSC | <0.01% | $0.002778 | 271.0937 | $0.753 | |
| BSC | <0.01% | $0.007088 | 105.8446 | $0.7501 | |
| BSC | <0.01% | $0.748266 | 0.97 | $0.7258 | |
| BSC | <0.01% | $0.015833 | 45.1884 | $0.7154 | |
| BSC | <0.01% | $0.116382 | 5.8835 | $0.6847 | |
| BSC | <0.01% | $1.01 | 0.6721 | $0.6815 | |
| BSC | <0.01% | $0.007635 | 87.3707 | $0.667 | |
| BSC | <0.01% | $4.52 | 0.1416 | $0.6401 | |
| BSC | <0.01% | $0.027559 | 21.5881 | $0.5949 | |
| BSC | <0.01% | $0.003001 | 197.5091 | $0.5926 | |
| BSC | <0.01% | $0.016946 | 34.1592 | $0.5788 | |
| BSC | <0.01% | $0.043711 | 13.037 | $0.5698 | |
| BSC | <0.01% | $594.1 | 0.000956 | $0.5679 | |
| BSC | <0.01% | $1.91 | 0.2848 | $0.544 | |
| BSC | <0.01% | $0.000043 | 12,495.7932 | $0.5365 | |
| BSC | <0.01% | $0.001701 | 300.6508 | $0.5115 | |
| BSC | <0.01% | $0.002194 | 214.9772 | $0.4717 | |
| BSC | <0.01% | $0.004298 | 105.5343 | $0.4535 | |
| BSC | <0.01% | $0.004584 | 93.8363 | $0.4301 | |
| BSC | <0.01% | $0.065903 | 6.427 | $0.4235 | |
| BSC | <0.01% | $0.013851 | 29.8806 | $0.4138 | |
| BSC | <0.01% | $2.54 | 0.1576 | $0.4003 | |
| BSC | <0.01% | $0.993435 | 0.3643 | $0.3619 | |
| BSC | <0.01% | $0.01049 | 32.3458 | $0.3393 | |
| BSC | <0.01% | $0.321209 | 1.0332 | $0.3318 | |
| BSC | <0.01% | $0.000008 | 42,106.3369 | $0.3287 | |
| BSC | <0.01% | $0.003905 | 83.9521 | $0.3278 | |
| BSC | <0.01% | $0.00268 | 119.0165 | $0.319 | |
| BSC | <0.01% | $0.360582 | 0.8311 | $0.2996 | |
| BSC | <0.01% | $0.028451 | 10.4643 | $0.2977 | |
| BSC | <0.01% | $0.000003 | 109,332.7191 | $0.2962 | |
| BSC | <0.01% | $1.18 | 0.2336 | $0.2756 | |
| BSC | <0.01% | $0.001939 | 141.5701 | $0.2745 | |
| BSC | <0.01% | $0.001997 | 131.7219 | $0.263 | |
| BSC | <0.01% | $0.014753 | 17.7508 | $0.2618 | |
| BSC | <0.01% | $0.05092 | 5.12 | $0.2607 | |
| BSC | <0.01% | $0.001618 | 155.8626 | $0.2521 | |
| BSC | <0.01% | $47.92 | 0.00515089 | $0.2468 | |
| BSC | <0.01% | $0.142435 | 1.6267 | $0.2316 | |
| BSC | <0.01% | $0.004048 | 54.8258 | $0.2219 | |
| BSC | <0.01% | $0.00081 | 257.2555 | $0.2084 | |
| BSC | <0.01% | $0.00414 | 48.4336 | $0.2005 | |
| BSC | <0.01% | $0.002032 | 85.95 | $0.1746 | |
| BSC | <0.01% | $0.029162 | 5.9214 | $0.1726 | |
| BSC | <0.01% | $0.001467 | 115.293 | $0.1691 | |
| BSC | <0.01% | $0.0882 | 1.918 | $0.1691 | |
| BSC | <0.01% | $3.8 | 0.0416 | $0.1582 | |
| BSC | <0.01% | $1.54 | 0.1027 | $0.1581 | |
| BSC | <0.01% | $0.785526 | 0.1964 | $0.1542 | |
| BSC | <0.01% | $0.035652 | 4.1929 | $0.1494 | |
| BSC | <0.01% | $0.024601 | 5.8124 | $0.1429 | |
| BSC | <0.01% | $0.1284 | 1.1044 | $0.1418 | |
| BSC | <0.01% | $0.000172 | 777.0691 | $0.1337 | |
| BSC | <0.01% | $0.000711 | 182.7325 | $0.1299 | |
| BSC | <0.01% | $0.007747 | 16.2295 | $0.1257 | |
| BSC | <0.01% | $0.00454 | 26.4726 | $0.1201 | |
| BSC | <0.01% | $0.579605 | 0.2055 | $0.1191 | |
| BSC | <0.01% | $0.000029 | 3,957.4099 | $0.1156 | |
| BSC | <0.01% | $0.004551 | 24.4841 | $0.1114 | |
| BSC | <0.01% | $40.88 | 0.002645 | $0.1081 | |
| BSC | <0.01% | $0.002437 | 44.1123 | $0.1075 | |
| BSC | <0.01% | $0.00495 | 21.6566 | $0.1071 | |
| BSC | <0.01% | $0.011582 | 9.1821 | $0.1063 | |
| BSC | <0.01% | $0.013515 | 7.6627 | $0.1035 | |
| BSC | <0.01% | $0.123867 | 0.8206 | $0.1016 | |
| BSC | <0.01% | $0.000792 | 127.946 | $0.1012 | |
| BSC | <0.01% | $0.582575 | 0.1736 | $0.1011 | |
| ARB | 30.45% | $0.01185 | 47,460,169.4559 | $562,389.24 | |
| ARB | <0.01% | $2.37 | 38.4874 | $91.22 | |
| ARB | <0.01% | $0.998428 | 84.5974 | $84.46 | |
| ARB | <0.01% | $0.99968 | 83.7286 | $83.7 | |
| ARB | <0.01% | $0.935191 | 74.9033 | $70.05 | |
| ARB | <0.01% | $0.999012 | 68.1526 | $68.09 | |
| ARB | <0.01% | $0.998353 | 61.7172 | $61.62 | |
| ARB | <0.01% | $35.14 | 1.7151 | $60.27 | |
| ARB | <0.01% | $2.01 | 25.3 | $50.85 | |
| ARB | <0.01% | $88,901 | 0.00056034 | $49.81 | |
| ARB | <0.01% | $89,249 | 0.00054953 | $49.05 | |
| ARB | <0.01% | $0.998621 | 48.3894 | $48.32 | |
| ARB | <0.01% | $2.03 | 20.7475 | $42.12 | |
| ARB | <0.01% | $0.175463 | 219.1371 | $38.45 | |
| ARB | <0.01% | $0.999332 | 38.1853 | $38.16 | |
| ARB | <0.01% | $3,617.39 | 0.0102 | $37.04 | |
| ARB | <0.01% | $1.18 | 30.5187 | $36.01 | |
| ARB | <0.01% | $0.999306 | 35.7863 | $35.76 | |
| ARB | <0.01% | $0.358785 | 91.4431 | $32.81 | |
| ARB | <0.01% | $2.5 | 12.4002 | $31 | |
| ARB | <0.01% | $2,958.7 | 0.0104 | $30.91 | |
| ARB | <0.01% | $4.85 | 6.1296 | $29.73 | |
| ARB | <0.01% | $2,953.12 | 0.00984063 | $29.06 | |
| ARB | <0.01% | $0.036367 | 778.529 | $28.31 | |
| ARB | <0.01% | $0.021544 | 1,308.6044 | $28.19 | |
| ARB | <0.01% | $88,904 | 0.00027611 | $24.55 | |
| ARB | <0.01% | $7.23 | 3.1964 | $23.11 | |
| ARB | <0.01% | $0.966672 | 23.7459 | $22.95 | |
| ARB | <0.01% | $155.7 | 0.1366 | $21.27 | |
| ARB | <0.01% | $12.18 | 1.6592 | $20.21 | |
| ARB | <0.01% | $116.35 | 0.1645 | $19.14 | |
| ARB | <0.01% | $155.86 | 0.1225 | $19.1 | |
| ARB | <0.01% | $0.00 | 0.00596404 | $0.00 | |
| ARB | <0.01% | $2,952.86 | 0.00622847 | $18.39 | |
| ARB | <0.01% | $0.496121 | 37.0428 | $18.38 | |
| ARB | <0.01% | $1.21 | 13.972 | $16.91 | |
| ARB | <0.01% | $0.741428 | 20.8767 | $15.48 | |
| ARB | <0.01% | $89,147 | 0.00015979 | $14.24 | |
| ARB | <0.01% | $0.998155 | 14.0917 | $14.07 | |
| ARB | <0.01% | $3,414.5 | 0.00405933 | $13.86 | |
| ARB | <0.01% | $0.380265 | 34.595 | $13.16 | |
| ARB | <0.01% | $12.19 | 1.0719 | $13.07 | |
| ARB | <0.01% | $2,953.12 | 0.00409352 | $12.09 | |
| ARB | <0.01% | $0.000008 | 1,165,051.2243 | $8.78 | |
| ARB | <0.01% | $0.999716 | 8.1544 | $8.15 | |
| ARB | <0.01% | $3,617.92 | 0.00224163 | $8.11 | |
| ARB | <0.01% | $0.99954 | 7.986 | $7.98 | |
| ARB | <0.01% | $4.46 | 1.7774 | $7.93 | |
| ARB | <0.01% | $0.5198 | 13.9415 | $7.25 | |
| ARB | <0.01% | $0.605595 | 10.3372 | $6.26 | |
| ARB | <0.01% | $0.008722 | 678.7159 | $5.92 | |
| ARB | <0.01% | $1.91 | 2.7194 | $5.19 | |
| ARB | <0.01% | $0.021329 | 229.9271 | $4.9 | |
| ARB | <0.01% | $89,189 | 0.00005421 | $4.83 | |
| ARB | <0.01% | <$0.000001 | 128,057,792.6734 | $4.74 | |
| ARB | <0.01% | $86,136 | 0.00005483 | $4.72 | |
| ARB | <0.01% | $0.99968 | 4.5923 | $4.59 | |
| ARB | <0.01% | $1 | 4.4003 | $4.4 | |
| ARB | <0.01% | $0.062859 | 58.4924 | $3.68 | |
| ARB | <0.01% | $0.012958 | 265.6139 | $3.44 | |
| ARB | <0.01% | $0.999637 | 3.0464 | $3.05 | |
| ARB | <0.01% | $1.18 | 2.4621 | $2.91 | |
| ARB | <0.01% | $1.91 | 1.3652 | $2.61 | |
| ARB | <0.01% | $0.002066 | 1,187.6339 | $2.45 | |
| ARB | <0.01% | $0.212229 | 11.3529 | $2.41 | |
| ARB | <0.01% | $0.997103 | 2.3813 | $2.37 | |
| ARB | <0.01% | $179.64 | 0.0128 | $2.3 | |
| ARB | <0.01% | $89,011 | 0.0000254 | $2.26 | |
| ARB | <0.01% | $0.174822 | 12.8312 | $2.24 | |
| ARB | <0.01% | $0.9781 | 2.1014 | $2.06 | |
| ARB | <0.01% | $0.000007 | 301,114.28 | $1.99 | |
| ARB | <0.01% | $0.000245 | 7,295.8415 | $1.79 | |
| ARB | <0.01% | $0.178768 | 9.7598 | $1.74 | |
| ARB | <0.01% | $1.09 | 1.5241 | $1.66 | |
| ARB | <0.01% | $2.34 | 0.6486 | $1.52 | |
| ARB | <0.01% | $0.004604 | 324.4962 | $1.49 | |
| ARB | <0.01% | $0.001712 | 840.8554 | $1.44 | |
| ARB | <0.01% | $0.006546 | 216.1616 | $1.41 | |
| ARB | <0.01% | $0.000451 | 2,914.516 | $1.31 | |
| ARB | <0.01% | $1.15 | 1.1363 | $1.31 | |
| ARB | <0.01% | $0.092075 | 13.6669 | $1.26 | |
| ARB | <0.01% | $0.175374 | 7.0742 | $1.24 | |
| ARB | <0.01% | $1.27 | 0.9094 | $1.15 | |
| ARB | <0.01% | $0.013483 | 83.4382 | $1.13 | |
| ARB | <0.01% | $0.019217 | 56.8156 | $1.09 | |
| ARB | <0.01% | $0.014904 | 62.9195 | $0.9377 | |
| ARB | <0.01% | $0.992179 | 0.8793 | $0.8724 | |
| ARB | <0.01% | $0.300022 | 2.8474 | $0.8542 | |
| ARB | <0.01% | $3.64 | 0.2338 | $0.851 | |
| ARB | <0.01% | $0.000804 | 1,010.465 | $0.8119 | |
| ARB | <0.01% | $2,947.02 | 0.00026574 | $0.7831 | |
| ARB | <0.01% | $0.186328 | 4.1084 | $0.7655 | |
| ARB | <0.01% | $1.22 | 0.6184 | $0.7543 | |
| ARB | <0.01% | $0.010695 | 60.576 | $0.6478 | |
| ARB | <0.01% | $0.056685 | 10.5666 | $0.5989 | |
| ARB | <0.01% | $0.997947 | 0.5961 | $0.5948 | |
| ARB | <0.01% | $3,310.97 | 0.00017497 | $0.5793 | |
| ARB | <0.01% | $0.09599 | 5.9269 | $0.5689 | |
| ARB | <0.01% | $1 | 0.4811 | $0.481 | |
| ARB | <0.01% | $0.000043 | 10,746.9911 | $0.4582 | |
| ARB | <0.01% | $0.030173 | 13.5557 | $0.409 | |
| ARB | <0.01% | $0.004139 | 98.7671 | $0.4087 | |
| ARB | <0.01% | $0.007447 | 47.2512 | $0.3518 | |
| ARB | <0.01% | $5,049.86 | 0.000069 | $0.3484 | |
| ARB | <0.01% | $0.001997 | 173.8322 | $0.3471 | |
| ARB | <0.01% | $89,051 | 0.00000331 | $0.2947 | |
| ARB | <0.01% | $0.002246 | 117.1997 | $0.2631 | |
| ARB | <0.01% | $0.99974 | 0.2502 | $0.25 | |
| ARB | <0.01% | $0.008723 | 27.701 | $0.2416 | |
| ARB | <0.01% | $0.997393 | 0.2304 | $0.2298 | |
| ARB | <0.01% | $0.058493 | 3.2491 | $0.19 | |
| ARB | <0.01% | $0.946432 | 0.188 | $0.1779 | |
| ARB | <0.01% | $0.019539 | 8.6775 | $0.1695 | |
| ARB | <0.01% | $5,530.52 | 0.00002757 | $0.1524 | |
| ARB | <0.01% | $0.001592 | 88.5675 | $0.141 | |
| ARB | <0.01% | $0.210646 | 0.5881 | $0.1238 | |
| ARB | <0.01% | $0.000722 | 165.8443 | $0.1196 | |
| ARB | <0.01% | $0.141954 | 0.8304 | $0.1178 | |
| ARB | <0.01% | $0.000005 | 20,961.0478 | $0.1048 | |
| ETH | 0.05% | $1.18 | 784.1879 | $925.34 | |
| ETH | 0.05% | $0.999603 | 862.9912 | $862.65 | |
| ETH | 0.05% | $0.988774 | 862.4099 | $852.73 | |
| ETH | 0.04% | $2,953.21 | 0.2643 | $780.41 | |
| ETH | 0.04% | $5,087.95 | 0.1454 | $740.03 | |
| ETH | 0.04% | $12.18 | 60.4636 | $736.45 | |
| ETH | 0.04% | $0.066175 | 10,769.7384 | $712.69 | |
| ETH | 0.04% | $0.998699 | 685.0942 | $684.2 | |
| ETH | 0.04% | $88,925 | 0.00761501 | $677.16 | |
| ETH | 0.04% | $89,124 | 0.00755172 | $673.04 | |
| ETH | 0.04% | $0.996142 | 658.5012 | $655.96 | |
| ETH | 0.03% | $0.999641 | 638.5948 | $638.37 | |
| ETH | 0.03% | $0.999474 | 618.2571 | $617.93 | |
| ETH | 0.03% | $3,208.02 | 0.1776 | $569.7 | |
| ETH | 0.03% | $0.065773 | 8,174.0545 | $537.63 | |
| ETH | 0.03% | $1.01 | 499.1622 | $506.15 | |
| ETH | 0.03% | $0.999317 | 486.5762 | $486.24 | |
| ETH | 0.02% | $0.999155 | 448.3136 | $447.93 | |
| ETH | 0.02% | $0.999538 | 297.9299 | $297.79 | |
| ETH | 0.02% | $1.09 | 272.6459 | $296.09 | |
| ETH | 0.02% | $1.17 | 240.64 | $281.55 | |
| ETH | 0.01% | $89,249 | 0.00246475 | $219.98 | |
| ETH | 0.01% | $0.03724 | 5,811.7576 | $216.43 | |
| ETH | 0.01% | $0.173544 | 1,235.9737 | $214.5 | |
| ETH | 0.01% | $155.69 | 1.3299 | $207.06 | |
| ETH | 0.01% | $4.85 | 42.3135 | $205.22 | |
| ETH | <0.01% | $0.387785 | 445.9632 | $172.94 | |
| ETH | <0.01% | $88,987 | 0.00184978 | $164.61 | |
| ETH | <0.01% | $1.02 | 155.2725 | $157.6 | |
| ETH | <0.01% | $0.088083 | 1,727.6852 | $152.18 | |
| ETH | <0.01% | $1 | 150.1549 | $150.31 | |
| ETH | <0.01% | $3,618.2 | 0.0409 | $147.92 | |
| ETH | <0.01% | $3,146.88 | 0.0465 | $146.24 | |
| ETH | <0.01% | $0.008245 | 17,501.9541 | $144.31 | |
| ETH | <0.01% | $3,381.64 | 0.042 | $142.02 | |
| ETH | <0.01% | $0.327519 | 430.855 | $141.11 | |
| ETH | <0.01% | $2.5 | 56.2779 | $140.69 | |
| ETH | <0.01% | $2.03 | 63.4522 | $128.81 | |
| ETH | <0.01% | $2.61 | 47.7606 | $124.66 | |
| ETH | <0.01% | $0.605915 | 199.6214 | $120.95 | |
| ETH | <0.01% | $0.998338 | 115.0944 | $114.9 | |
| ETH | <0.01% | $1.18 | 94.1189 | $111.06 | |
| ETH | <0.01% | $237.09 | 0.4523 | $107.23 | |
| ETH | <0.01% | $0.003591 | 29,700.2452 | $106.66 | |
| ETH | <0.01% | $1.23 | 83.0835 | $102.19 | |
| ETH | <0.01% | $0.999817 | 98.7847 | $98.77 | |
| ETH | <0.01% | $1.28 | 70.2372 | $89.9 | |
| ETH | <0.01% | $2.25 | 38.0662 | $85.7 | |
| ETH | <0.01% | $1.08 | 76.8584 | $83.24 | |
| ETH | <0.01% | $0.379101 | 217.1276 | $82.31 | |
| ETH | <0.01% | $2,953.21 | 0.0273 | $80.65 | |
| ETH | <0.01% | $0.392881 | 199.4309 | $78.35 | |
| ETH | <0.01% | $1.18 | 62.235 | $73.44 | |
| ETH | <0.01% | $0.908595 | 67.1122 | $60.98 | |
| ETH | <0.01% | $3,291.9 | 0.0174 | $57.14 | |
| ETH | <0.01% | $0.176394 | 297.8768 | $52.54 | |
| ETH | <0.01% | $126.67 | 0.4129 | $52.3 | |
| ETH | <0.01% | $3,632.2 | 0.0141 | $51.19 | |
| ETH | <0.01% | $0.011943 | 4,090.8736 | $48.86 | |
| ETH | <0.01% | $3,414.29 | 0.0139 | $47.34 | |
| ETH | <0.01% | $0.823434 | 57.1721 | $47.08 | |
| ETH | <0.01% | $0.029711 | 1,508.1818 | $44.81 | |
| ETH | <0.01% | $1.18 | 37.9195 | $44.75 | |
| ETH | <0.01% | $88,987 | 0.00049911 | $44.41 | |
| ETH | <0.01% | $0.99963 | 42.7254 | $42.71 | |
| ETH | <0.01% | $1.19 | 34.1449 | $40.63 | |
| ETH | <0.01% | $0.34315 | 116.5981 | $40.01 | |
| ETH | <0.01% | $4.19 | 8.9604 | $37.54 | |
| ETH | <0.01% | $0.008262 | 4,488.1234 | $37.08 | |
| ETH | <0.01% | $10.53 | 3.4911 | $36.76 | |
| ETH | <0.01% | $0.009937 | 3,515.0429 | $34.93 | |
| ETH | <0.01% | $1 | 34.8474 | $34.86 | |
| ETH | <0.01% | $0.515099 | 65.8275 | $33.91 | |
| ETH | <0.01% | $0.146442 | 226.9393 | $33.23 | |
| ETH | <0.01% | $0.886809 | 34.1907 | $30.32 | |
| ETH | <0.01% | <$0.000001 | 93,271,045.0761 | $29.91 | |
| ETH | <0.01% | $0.956043 | 31.1853 | $29.81 | |
| ETH | <0.01% | $0.340168 | 87.5824 | $29.79 | |
| ETH | <0.01% | $1.18 | 24.3382 | $28.76 | |
| ETH | <0.01% | $0.288898 | 98.7269 | $28.52 | |
| ETH | <0.01% | $0.05709 | 491.1164 | $28.04 | |
| ETH | <0.01% | $1.18 | 23.5859 | $27.87 | |
| ETH | <0.01% | $0.998453 | 26.9185 | $26.88 | |
| ETH | <0.01% | $1.04 | 24.6154 | $25.55 | |
| ETH | <0.01% | $2,953.08 | 0.00859638 | $25.39 | |
| ETH | <0.01% | $0.998909 | 25.2674 | $25.24 | |
| ETH | <0.01% | $1.78 | 13.8763 | $24.73 | |
| ETH | <0.01% | $0.997009 | 24.6309 | $24.56 | |
| ETH | <0.01% | $0.996858 | 24.5508 | $24.47 | |
| ETH | <0.01% | $0.00117 | 20,854.8583 | $24.39 | |
| ETH | <0.01% | $0.000005 | 4,846,380.4561 | $24.23 | |
| ETH | <0.01% | $3,140.99 | 0.00765311 | $24.04 | |
| ETH | <0.01% | $0.998562 | 23.7228 | $23.69 | |
| ETH | <0.01% | $0.773621 | 30.4607 | $23.57 | |
| ETH | <0.01% | $3,617.82 | 0.0064468 | $23.32 | |
| ETH | <0.01% | $24.52 | 0.8912 | $21.85 | |
| ETH | <0.01% | $1.06 | 20.3859 | $21.53 | |
| ETH | <0.01% | $0.327987 | 65.3223 | $21.42 | |
| ETH | <0.01% | $4.52 | 4.6808 | $21.14 | |
| ETH | <0.01% | $0.415729 | 50.6764 | $21.07 | |
| ETH | <0.01% | $0.411409 | 50.5075 | $20.78 | |
| ETH | <0.01% | $0.752817 | 27.3473 | $20.59 | |
| ETH | <0.01% | $0.625533 | 31.0903 | $19.45 | |
| ETH | <0.01% | $0.073 | 258.8389 | $18.9 | |
| ETH | <0.01% | $0.999472 | 18.788 | $18.78 | |
| ETH | <0.01% | $27.88 | 0.6653 | $18.55 | |
| ETH | <0.01% | $0.954466 | 19.4074 | $18.52 | |
| ETH | <0.01% | $0.107043 | 168.0155 | $17.98 | |
| ETH | <0.01% | $86,136 | 0.00020691 | $17.82 | |
| ETH | <0.01% | $0.99708 | 17.7599 | $17.71 | |
| ETH | <0.01% | $1.18 | 14.9868 | $17.68 | |
| ETH | <0.01% | $0.333179 | 52.6874 | $17.55 | |
| ETH | <0.01% | $1.89 | 8.9352 | $16.89 | |
| ETH | <0.01% | $10.4 | 1.5516 | $16.14 | |
| ETH | <0.01% | $0.245872 | 64.5262 | $15.87 | |
| ETH | <0.01% | $179.97 | 0.0876 | $15.76 | |
| ETH | <0.01% | $1.13 | 13.6705 | $15.45 | |
| ETH | <0.01% | $89,150 | 0.00016742 | $14.93 | |
| ETH | <0.01% | $0.236611 | 62.0964 | $14.69 | |
| ETH | <0.01% | $0.178271 | 81.4825 | $14.53 | |
| ETH | <0.01% | $1 | 14.3858 | $14.39 | |
| ETH | <0.01% | $0.997801 | 14.0879 | $14.06 | |
| ETH | <0.01% | $0.096331 | 136.2726 | $13.13 | |
| ETH | <0.01% | $0.269531 | 46.5294 | $12.54 | |
| ETH | <0.01% | $0.99974 | 12.4793 | $12.48 | |
| ETH | <0.01% | $5,069.97 | 0.0023068 | $11.7 | |
| ETH | <0.01% | $4.85 | 2.4057 | $11.67 | |
| ETH | <0.01% | $0.380546 | 30.2252 | $11.5 | |
| ETH | <0.01% | $0.000006 | 1,919,126.5286 | $11.27 | |
| ETH | <0.01% | $0.090795 | 123.1987 | $11.19 | |
| ETH | <0.01% | $12.19 | 0.9155 | $11.16 | |
| ETH | <0.01% | $0.51965 | 20.9696 | $10.9 | |
| ETH | <0.01% | $2,952.99 | 0.00368129 | $10.87 | |
| ETH | <0.01% | $0.00249 | 4,241.4756 | $10.56 | |
| ETH | <0.01% | $0.004306 | 2,451.0278 | $10.55 | |
| ETH | <0.01% | <$0.000001 | 917,198,114.5361 | $10.43 | |
| ETH | <0.01% | $0.00709 | 1,453.6099 | $10.31 | |
| ETH | <0.01% | $3,157.74 | 0.00320055 | $10.11 | |
| ETH | <0.01% | $0.197094 | 50.6832 | $9.99 | |
| ETH | <0.01% | $0.17122 | 58.0842 | $9.95 | |
| ETH | <0.01% | $2,958.7 | 0.00327838 | $9.7 | |
| ETH | <0.01% | $0.030556 | 305.1312 | $9.32 | |
| ETH | <0.01% | $3,139.63 | 0.00295824 | $9.29 | |
| ETH | <0.01% | $0.030887 | 295.0039 | $9.11 | |
| ETH | <0.01% | $3,213.41 | 0.00280956 | $9.03 | |
| ETH | <0.01% | $1.05 | 8.4732 | $8.85 | |
| ETH | <0.01% | $0.013501 | 618.9044 | $8.36 | |
| ETH | <0.01% | $1.19 | 6.9385 | $8.26 | |
| ETH | <0.01% | $0.219728 | 37.1159 | $8.16 | |
| ETH | <0.01% | $0.123522 | 65.7499 | $8.12 | |
| ETH | <0.01% | $0.165212 | 48.3547 | $7.99 | |
| ETH | <0.01% | $88,310 | 0.00009041 | $7.98 | |
| ETH | <0.01% | $0.057843 | 137.1324 | $7.93 | |
| ETH | <0.01% | $0.247064 | 31.6264 | $7.81 | |
| ETH | <0.01% | $1.15 | 6.4041 | $7.36 | |
| ETH | <0.01% | $2 | 3.6737 | $7.35 | |
| ETH | <0.01% | $0.019542 | 345.9702 | $6.76 | |
| ETH | <0.01% | $0.005517 | 1,206.1706 | $6.66 | |
| ETH | <0.01% | $0.015176 | 420.2039 | $6.38 | |
| ETH | <0.01% | $0.006871 | 928.0394 | $6.38 | |
| ETH | <0.01% | $2.01 | 3.1357 | $6.3 | |
| ETH | <0.01% | $0.090383 | 69.674 | $6.3 | |
| ETH | <0.01% | $0.00414 | 1,520.3005 | $6.29 | |
| ETH | <0.01% | $0.000118 | 51,960.6189 | $6.16 | |
| ETH | <0.01% | $0.006438 | 937.1587 | $6.03 | |
| ETH | <0.01% | $0.000007 | 898,469.6113 | $6 | |
| ETH | <0.01% | $0.358834 | 16.6442 | $5.97 | |
| ETH | <0.01% | $0.147363 | 40.3757 | $5.95 | |
| ETH | <0.01% | $3.49 | 1.6992 | $5.93 | |
| ETH | <0.01% | $103.14 | 0.0561 | $5.79 | |
| ETH | <0.01% | $0.005736 | 979.638 | $5.62 | |
| ETH | <0.01% | $0.009739 | 560.9112 | $5.46 | |
| ETH | <0.01% | $0.092743 | 58.6528 | $5.44 | |
| ETH | <0.01% | $0.1749 | 30.7496 | $5.38 | |
| ETH | <0.01% | $0.048008 | 111.379 | $5.35 | |
| ETH | <0.01% | $0.006102 | 848.0082 | $5.17 | |
| ETH | <0.01% | $0.000008 | 656,427.29 | $5.12 | |
| ETH | <0.01% | $0.006545 | 756.076 | $4.95 | |
| ETH | <0.01% | $0.126081 | 38.9336 | $4.91 | |
| ETH | <0.01% | $0.014132 | 341.1703 | $4.82 | |
| ETH | <0.01% | $0.3928 | 12.0809 | $4.75 | |
| ETH | <0.01% | $0.993411 | 4.6679 | $4.64 | |
| ETH | <0.01% | $0.999335 | 4.6176 | $4.61 | |
| ETH | <0.01% | $0.000285 | 16,095.0813 | $4.58 | |
| ETH | <0.01% | $0.180967 | 25.2655 | $4.57 | |
| ETH | <0.01% | $0.696693 | 6.4248 | $4.48 | |
| ETH | <0.01% | $0.019895 | 224.001 | $4.46 | |
| ETH | <0.01% | $0.99799 | 4.35 | $4.34 | |
| ETH | <0.01% | $0.02722 | 153.5049 | $4.18 | |
| ETH | <0.01% | $0.125096 | 33.1263 | $4.14 | |
| ETH | <0.01% | $0.992285 | 4.1647 | $4.13 | |
| ETH | <0.01% | $0.017522 | 232.9925 | $4.08 | |
| ETH | <0.01% | $1.68 | 2.3459 | $3.94 | |
| ETH | <0.01% | $12.25 | 0.3182 | $3.9 | |
| ETH | <0.01% | $0.00236 | 1,562.2539 | $3.69 | |
| ETH | <0.01% | $0.007447 | 492.1978 | $3.67 | |
| ETH | <0.01% | $0.07122 | 49.8527 | $3.55 | |
| ETH | <0.01% | $0.01545 | 227.4826 | $3.51 | |
| ETH | <0.01% | $0.00078 | 4,484.8895 | $3.5 | |
| ETH | <0.01% | <$0.000001 | 95,634,444.5462 | $3.43 | |
| ETH | <0.01% | $2,952.4 | 0.00114333 | $3.38 | |
| ETH | <0.01% | $2,948.26 | 0.00114005 | $3.36 | |
| ETH | <0.01% | $0.025752 | 129.9932 | $3.35 | |
| ETH | <0.01% | $1.82 | 1.7895 | $3.26 | |
| ETH | <0.01% | $0.05931 | 54.8856 | $3.26 | |
| ETH | <0.01% | $3,309.4 | 0.00097502 | $3.23 | |
| ETH | <0.01% | $3.03 | 1.0573 | $3.2 | |
| ETH | <0.01% | $0.015805 | 201.7411 | $3.19 | |
| ETH | <0.01% | $0.998408 | 3.1806 | $3.18 | |
| ETH | <0.01% | $0.087629 | 35.9681 | $3.15 | |
| ETH | <0.01% | $0.186209 | 16.1887 | $3.01 | |
| ETH | <0.01% | $0.002771 | 1,074.4211 | $2.98 | |
| ETH | <0.01% | $0.393221 | 7.4681 | $2.94 | |
| ETH | <0.01% | $0.095664 | 29.2651 | $2.8 | |
| ETH | <0.01% | $0.012534 | 215.306 | $2.7 | |
| ETH | <0.01% | $0.003996 | 658.3098 | $2.63 | |
| ETH | <0.01% | $0.118387 | 22.1841 | $2.63 | |
| ETH | <0.01% | $0.998799 | 2.6237 | $2.62 | |
| ETH | <0.01% | $0.020517 | 126.1242 | $2.59 | |
| ETH | <0.01% | $0.175372 | 14.6911 | $2.58 | |
| ETH | <0.01% | $0.007852 | 325.0894 | $2.55 | |
| ETH | <0.01% | $0.002075 | 1,230.0789 | $2.55 | |
| ETH | <0.01% | $0.047894 | 52.2478 | $2.5 | |
| ETH | <0.01% | $2 | 1.2487 | $2.5 | |
| ETH | <0.01% | $88,946 | 0.00002789 | $2.48 | |
| ETH | <0.01% | $0.136036 | 18.2056 | $2.48 | |
| ETH | <0.01% | $0.008393 | 294.9608 | $2.48 | |
| ETH | <0.01% | $0.188596 | 13.1034 | $2.47 | |
| ETH | <0.01% | $0.150235 | 16.0436 | $2.41 | |
| ETH | <0.01% | <$0.000001 | 105,894,848.5451 | $2.4 | |
| ETH | <0.01% | $0.230621 | 10.316 | $2.38 | |
| ETH | <0.01% | $0.058473 | 40.6451 | $2.38 | |
| ETH | <0.01% | $0.012456 | 189.1335 | $2.36 | |
| ETH | <0.01% | $0.159557 | 14.6222 | $2.33 | |
| ETH | <0.01% | $1 | 2.2496 | $2.25 | |
| ETH | <0.01% | $0.05009 | 44.5477 | $2.23 | |
| ETH | <0.01% | $0.022441 | 99.0351 | $2.22 | |
| ETH | <0.01% | $0.776819 | 2.818 | $2.19 | |
| ETH | <0.01% | $161.88 | 0.0132 | $2.14 | |
| ETH | <0.01% | <$0.000001 | 22,734,743.4052 | $1.98 | |
| ETH | <0.01% | $0.108272 | 17.9537 | $1.94 | |
| ETH | <0.01% | $96.02 | 0.02 | $1.92 | |
| ETH | <0.01% | $0.00154 | 1,239.7851 | $1.91 | |
| ETH | <0.01% | $3,592.55 | 0.00051996 | $1.87 | |
| ETH | <0.01% | $0.752817 | 2.4237 | $1.82 | |
| ETH | <0.01% | $0.00005 | 36,578.2536 | $1.81 | |
| ETH | <0.01% | $0.714266 | 2.5237 | $1.8 | |
| ETH | <0.01% | $9.31 | 0.1936 | $1.8 | |
| ETH | <0.01% | $0.194478 | 9.2616 | $1.8 | |
| ETH | <0.01% | $0.088576 | 20.1738 | $1.79 | |
| ETH | <0.01% | $13.28 | 0.1346 | $1.79 | |
| ETH | <0.01% | $0.384051 | 4.6442 | $1.78 | |
| ETH | <0.01% | $2.02 | 0.82 | $1.66 | |
| ETH | <0.01% | $0.142435 | 11.5915 | $1.65 | |
| ETH | <0.01% | $0.006264 | 260.0547 | $1.63 | |
| ETH | <0.01% | $1.06 | 1.5084 | $1.6 | |
| ETH | <0.01% | $0.167734 | 9.4313 | $1.58 | |
| ETH | <0.01% | $0.004538 | 346.4246 | $1.57 | |
| ETH | <0.01% | $0.000106 | 14,687.5113 | $1.56 | |
| ETH | <0.01% | $0.050144 | 30.821 | $1.55 | |
| ETH | <0.01% | $0.946714 | 1.6279 | $1.54 | |
| ETH | <0.01% | $0.015898 | 95.9954 | $1.53 | |
| ETH | <0.01% | $0.025511 | 59.2472 | $1.51 | |
| ETH | <0.01% | $0.30448 | 4.786 | $1.46 | |
| ETH | <0.01% | $0.043137 | 33.7428 | $1.46 | |
| ETH | <0.01% | $0.03761 | 38.1085 | $1.43 | |
| ETH | <0.01% | $0.001339 | 1,061.0743 | $1.42 | |
| ETH | <0.01% | $13.24 | 0.1046 | $1.38 | |
| ETH | <0.01% | $0.09239 | 14.6036 | $1.35 | |
| ETH | <0.01% | $0.000105 | 12,852.3651 | $1.34 | |
| ETH | <0.01% | $0.004955 | 269.0939 | $1.33 | |
| ETH | <0.01% | $0.002957 | 448.1992 | $1.33 | |
| ETH | <0.01% | $0.28243 | 4.5964 | $1.3 | |
| ETH | <0.01% | $0.400024 | 3.1402 | $1.26 | |
| ETH | <0.01% | $0.167954 | 7.4479 | $1.25 | |
| ETH | <0.01% | $0.019498 | 63.6145 | $1.24 | |
| ETH | <0.01% | $0.012068 | 101.7026 | $1.23 | |
| ETH | <0.01% | $1.22 | 0.9902 | $1.21 | |
| ETH | <0.01% | $54.31 | 0.0222 | $1.2 | |
| ETH | <0.01% | $0.05145 | 22.8982 | $1.18 | |
| ETH | <0.01% | $0.053955 | 21.4344 | $1.16 | |
| ETH | <0.01% | $20.72 | 0.0554 | $1.15 | |
| ETH | <0.01% | $1.74 | 0.6557 | $1.14 | |
| ETH | <0.01% | $0.015155 | 74.3449 | $1.13 | |
| ETH | <0.01% | $0.000003 | 366,514.0837 | $1.06 | |
| ETH | <0.01% | $0.17528 | 6.0339 | $1.06 | |
| ETH | <0.01% | $0.707193 | 1.4924 | $1.06 | |
| ETH | <0.01% | $3,209.03 | 0.0003279 | $1.05 | |
| ETH | <0.01% | $0.000045 | 23,284.616 | $1.04 | |
| ETH | <0.01% | $1.03 | 1.0122 | $1.04 | |
| ETH | <0.01% | $0.030765 | 33.2762 | $1.02 | |
| ETH | <0.01% | $5.29 | 0.1889 | $0.9995 | |
| ETH | <0.01% | $0.013056 | 74.852 | $0.9772 | |
| ETH | <0.01% | $0.948197 | 1.03 | $0.9766 | |
| ETH | <0.01% | $0.095212 | 10.2028 | $0.9714 | |
| ETH | <0.01% | $0.044717 | 21.6893 | $0.9698 | |
| ETH | <0.01% | $0.003585 | 266.4104 | $0.9549 | |
| ETH | <0.01% | $0.003791 | 248.31 | $0.9413 | |
| ETH | <0.01% | $1.54 | 0.6094 | $0.9385 | |
| ETH | <0.01% | <$0.000001 | 42,028,550.1537 | $0.9329 | |
| ETH | <0.01% | $0.023158 | 40.1515 | $0.9298 | |
| ETH | <0.01% | $0.540121 | 1.675 | $0.9046 | |
| ETH | <0.01% | $0.000001 | 1,452,556.4204 | $0.8987 | |
| ETH | <0.01% | $0.007566 | 115.8498 | $0.8764 | |
| ETH | <0.01% | <$0.000001 | 95,202,185.2367 | $0.8725 | |
| ETH | <0.01% | $0.005436 | 160.4583 | $0.8723 | |
| ETH | <0.01% | $0.066986 | 13.0074 | $0.8713 | |
| ETH | <0.01% | $0.023017 | 37.8401 | $0.8709 | |
| ETH | <0.01% | $0.003535 | 239.9946 | $0.8483 | |
| ETH | <0.01% | $0.352875 | 2.3994 | $0.8466 | |
| ETH | <0.01% | <$0.000001 | 22,093,661.9857 | $0.8438 | |
| ETH | <0.01% | $0.006386 | 131.23 | $0.8379 | |
| ETH | <0.01% | $0.016845 | 49.1618 | $0.8281 | |
| ETH | <0.01% | $2.02 | 0.4098 | $0.8277 | |
| ETH | <0.01% | $0.067088 | 12.2731 | $0.8233 | |
| ETH | <0.01% | $0.016374 | 50.1513 | $0.8211 | |
| ETH | <0.01% | $0.000011 | 73,717.9845 | $0.816 | |
| ETH | <0.01% | $0.002385 | 335.1917 | $0.7995 | |
| ETH | <0.01% | $0.004749 | 162.6741 | $0.7725 | |
| ETH | <0.01% | $0.050662 | 15.1003 | $0.765 | |
| ETH | <0.01% | $3.63 | 0.209 | $0.7585 | |
| ETH | <0.01% | $0.00552 | 136.5673 | $0.7539 | |
| ETH | <0.01% | $0.119094 | 6.2959 | $0.7498 | |
| ETH | <0.01% | <$0.000001 | 307,120,757.0302 | $0.7447 | |
| ETH | <0.01% | $0.007679 | 94.7005 | $0.7271 | |
| ETH | <0.01% | $0.004872 | 148.4837 | $0.7234 | |
| ETH | <0.01% | $0.296526 | 2.4195 | $0.7174 | |
| ETH | <0.01% | $89,079 | 0.00000802 | $0.7144 | |
| ETH | <0.01% | $0.100671 | 6.9665 | $0.7013 | |
| ETH | <0.01% | $0.000844 | 829.3407 | $0.6995 | |
| ETH | <0.01% | $24.32 | 0.0279 | $0.6783 | |
| ETH | <0.01% | $0.000156 | 4,256.9244 | $0.6629 | |
| ETH | <0.01% | $0.011837 | 55.6889 | $0.6591 | |
| ETH | <0.01% | $0.006552 | 99.7394 | $0.6535 | |
| ETH | <0.01% | $0.039132 | 16.5837 | $0.6489 | |
| ETH | <0.01% | $0.512711 | 1.2509 | $0.6413 | |
| ETH | <0.01% | $0.007327 | 87.1065 | $0.6382 | |
| ETH | <0.01% | $0.233891 | 2.6466 | $0.619 | |
| ETH | <0.01% | $0.009744 | 63.1827 | $0.6156 | |
| ETH | <0.01% | $0.008035 | 75.934 | $0.6101 | |
| ETH | <0.01% | $0.001618 | 373.0451 | $0.6034 | |
| ETH | <0.01% | $1.12 | 0.5372 | $0.6016 | |
| ETH | <0.01% | $0.008201 | 72.7262 | $0.5964 | |
| ETH | <0.01% | $0.00044 | 1,338.5242 | $0.5884 | |
| ETH | <0.01% | $0.020483 | 28.6793 | $0.5874 | |
| ETH | <0.01% | $0.032217 | 17.9086 | $0.5769 | |
| ETH | <0.01% | $0.000119 | 4,804.5693 | $0.5702 | |
| ETH | <0.01% | $0.000036 | 15,793.7383 | $0.5647 | |
| ETH | <0.01% | $0.000949 | 586.0067 | $0.5561 | |
| ETH | <0.01% | $0.009324 | 59.5396 | $0.5551 | |
| ETH | <0.01% | $0.062823 | 8.7733 | $0.5511 | |
| ETH | <0.01% | $5,530.12 | 0.00009923 | $0.5487 | |
| ETH | <0.01% | $0.002783 | 194.3759 | $0.5408 | |
| ETH | <0.01% | $0.000002 | 257,459.0317 | $0.5382 | |
| ETH | <0.01% | $0.00043 | 1,248.3063 | $0.5365 | |
| ETH | <0.01% | $0.006334 | 84.275 | $0.5338 | |
| ETH | <0.01% | $0.092166 | 5.773 | $0.532 | |
| ETH | <0.01% | $0.131905 | 3.9561 | $0.5218 | |
| ETH | <0.01% | $0.000004 | 131,689.1452 | $0.5201 | |
| ETH | <0.01% | $0.000127 | 4,074.3605 | $0.5177 | |
| ETH | <0.01% | $0.391645 | 1.3158 | $0.5153 | |
| ETH | <0.01% | $0.008014 | 64.1461 | $0.514 | |
| ETH | <0.01% | $0.014668 | 34.808 | $0.5105 | |
| ETH | <0.01% | $0.007091 | 71.6199 | $0.5078 | |
| ETH | <0.01% | $23.91 | 0.0212 | $0.507 | |
| ETH | <0.01% | $0.050182 | 10.0215 | $0.5028 | |
| ETH | <0.01% | $0.000866 | 577.0802 | $0.4999 | |
| ETH | <0.01% | $88,806 | 0.00000559 | $0.4964 | |
| ETH | <0.01% | <$0.000001 | 2,732,948.7886 | $0.4911 | |
| ETH | <0.01% | $0.009083 | 53.6029 | $0.4868 | |
| ETH | <0.01% | $0.050956 | 9.5095 | $0.4845 | |
| ETH | <0.01% | $0.064541 | 7.4437 | $0.4804 | |
| ETH | <0.01% | $0.031258 | 15.2219 | $0.4758 | |
| ETH | <0.01% | $6.14 | 0.0772 | $0.4741 | |
| ETH | <0.01% | $24.31 | 0.0193 | $0.4695 | |
| ETH | <0.01% | $0.001661 | 280.2657 | $0.4656 | |
| ETH | <0.01% | $0.010281 | 44.9628 | $0.4622 | |
| ETH | <0.01% | $0.008238 | 55.3657 | $0.4561 | |
| ETH | <0.01% | $0.999424 | 0.4501 | $0.4498 | |
| ETH | <0.01% | $0.999546 | 0.4495 | $0.4493 | |
| ETH | <0.01% | $0.000043 | 10,419.4528 | $0.4473 | |
| ETH | <0.01% | $0.370718 | 1.1696 | $0.4336 | |
| ETH | <0.01% | $0.013515 | 31.7558 | $0.4291 | |
| ETH | <0.01% | $0.206378 | 2.067 | $0.4265 | |
| ETH | <0.01% | $0.007734 | 54.1611 | $0.4188 | |
| ETH | <0.01% | $0.00446 | 92.9627 | $0.4146 | |
| ETH | <0.01% | $0.147632 | 2.7906 | $0.4119 | |
| ETH | <0.01% | $17.32 | 0.0235 | $0.4073 | |
| ETH | <0.01% | $0.249169 | 1.6339 | $0.4071 | |
| ETH | <0.01% | <$0.000001 | 9,260,911.1736 | $0.3934 | |
| ETH | <0.01% | $0.000424 | 906.2576 | $0.3842 | |
| ETH | <0.01% | $0.001974 | 191.0888 | $0.3772 | |
| ETH | <0.01% | $0.000785 | 475.307 | $0.3729 | |
| ETH | <0.01% | $0.000141 | 2,634.897 | $0.3714 | |
| ETH | <0.01% | $0.023143 | 15.9377 | $0.3688 | |
| ETH | <0.01% | $0.122739 | 2.976 | $0.3652 | |
| ETH | <0.01% | $0.009856 | 36.5416 | $0.3601 | |
| ETH | <0.01% | $0.021328 | 16.647 | $0.355 | |
| ETH | <0.01% | $0.470606 | 0.7491 | $0.3525 | |
| ETH | <0.01% | $0.001188 | 296.2768 | $0.352 | |
| ETH | <0.01% | $0.02512 | 13.9948 | $0.3515 | |
| ETH | <0.01% | $0.006721 | 51.8778 | $0.3486 | |
| ETH | <0.01% | $1.27 | 0.2738 | $0.3477 | |
| ETH | <0.01% | $0.037491 | 9.1945 | $0.3447 | |
| ETH | <0.01% | $0.007723 | 43.1409 | $0.3331 | |
| ETH | <0.01% | $0.000475 | 694.442 | $0.3296 | |
| ETH | <0.01% | $0.042102 | 7.735 | $0.3256 | |
| ETH | <0.01% | $0.070674 | 4.4668 | $0.3156 | |
| ETH | <0.01% | $0.000752 | 419.4156 | $0.3155 | |
| ETH | <0.01% | $0.225972 | 1.3832 | $0.3125 | |
| ETH | <0.01% | $0.000005 | 58,303.242 | $0.3095 | |
| ETH | <0.01% | $0.011652 | 26.5014 | $0.3087 | |
| ETH | <0.01% | $0.006171 | 50.0107 | $0.3086 | |
| ETH | <0.01% | $1.29 | 0.2387 | $0.3079 | |
| ETH | <0.01% | $0.000058 | 5,300.2458 | $0.3072 | |
| ETH | <0.01% | $0.034135 | 8.9929 | $0.3069 | |
| ETH | <0.01% | $0.48267 | 0.6279 | $0.303 | |
| ETH | <0.01% | $0.946432 | 0.3201 | $0.3029 | |
| ETH | <0.01% | $0.003387 | 89.4024 | $0.3027 | |
| ETH | <0.01% | $0.007469 | 40.4857 | $0.3023 | |
| ETH | <0.01% | $1.17 | 0.2562 | $0.2997 | |
| ETH | <0.01% | $0.004036 | 73.5919 | $0.2969 | |
| ETH | <0.01% | $4,376.56 | 0.00006702 | $0.2933 | |
| ETH | <0.01% | $0.14395 | 2.0183 | $0.2905 | |
| ETH | <0.01% | $0.001481 | 193.5291 | $0.2866 | |
| ETH | <0.01% | $0.005267 | 54.1171 | $0.285 | |
| ETH | <0.01% | $0.004457 | 63.7447 | $0.284 | |
| ETH | <0.01% | $0.171423 | 1.639 | $0.2809 | |
| ETH | <0.01% | $0.140488 | 1.9759 | $0.2775 | |
| ETH | <0.01% | $0.001843 | 149.9693 | $0.2763 | |
| ETH | <0.01% | $1.01 | 0.2686 | $0.2723 | |
| ETH | <0.01% | $0.00459 | 58.9803 | $0.2707 | |
| ETH | <0.01% | $0.026009 | 10.3689 | $0.2696 | |
| ETH | <0.01% | $0.219868 | 1.2153 | $0.2672 | |
| ETH | <0.01% | $0.030256 | 8.7706 | $0.2653 | |
| ETH | <0.01% | $0.029002 | 9.1321 | $0.2648 | |
| ETH | <0.01% | $0.681247 | 0.3806 | $0.2592 | |
| ETH | <0.01% | $0.000019 | 13,391.3114 | $0.2591 | |
| ETH | <0.01% | $0.002304 | 111.9977 | $0.258 | |
| ETH | <0.01% | $0.004148 | 61.825 | $0.2564 | |
| ETH | <0.01% | $0.213787 | 1.1965 | $0.2557 | |
| ETH | <0.01% | $6.92 | 0.0368 | $0.2545 | |
| ETH | <0.01% | $0.010684 | 23.81 | $0.2543 | |
| ETH | <0.01% | $0.214317 | 1.1772 | $0.2522 | |
| ETH | <0.01% | $0.006509 | 37.2469 | $0.2424 | |
| ETH | <0.01% | $0.000009 | 27,149.4209 | $0.2421 | |
| ETH | <0.01% | $0.000369 | 639.2681 | $0.2357 | |
| ETH | <0.01% | $0.030521 | 7.6511 | $0.2335 | |
| ETH | <0.01% | $0.001239 | 182.4522 | $0.226 | |
| ETH | <0.01% | <$0.000001 | 166,614,592.359 | $0.2222 | |
| ETH | <0.01% | $0.134913 | 1.6415 | $0.2214 | |
| ETH | <0.01% | $0.004279 | 51.1664 | $0.2189 | |
| ETH | <0.01% | $0.000882 | 244.4117 | $0.2156 | |
| ETH | <0.01% | $0.000057 | 3,779.4645 | $0.215 | |
| ETH | <0.01% | $1.16 | 0.1827 | $0.2119 | |
| ETH | <0.01% | $0.99935 | 0.2109 | $0.2107 | |
| ETH | <0.01% | $0.02905 | 7.2343 | $0.2101 | |
| ETH | <0.01% | $0.000005 | 39,333.9457 | $0.2084 | |
| ETH | <0.01% | $0.013405 | 15.5183 | $0.208 | |
| ETH | <0.01% | $0.001031 | 198.2525 | $0.2044 | |
| ETH | <0.01% | $4.46 | 0.0457 | $0.2039 | |
| ETH | <0.01% | $0.143415 | 1.4079 | $0.2019 | |
| ETH | <0.01% | $0.057023 | 3.5378 | $0.2017 | |
| ETH | <0.01% | $93.86 | 0.00214067 | $0.2009 | |
| ETH | <0.01% | $0.105442 | 1.87 | $0.1971 | |
| ETH | <0.01% | $0.003562 | 55.3315 | $0.197 | |
| ETH | <0.01% | $0.106319 | 1.8503 | $0.1967 | |
| ETH | <0.01% | $0.00293 | 67.0529 | $0.1964 | |
| ETH | <0.01% | $0.025785 | 7.5285 | $0.1941 | |
| ETH | <0.01% | $0.002351 | 81.6539 | $0.1919 | |
| ETH | <0.01% | $0.00249 | 76.3498 | $0.1901 | |
| ETH | <0.01% | $0.003609 | 52.4774 | $0.1893 | |
| ETH | <0.01% | $0.024455 | 7.6267 | $0.1865 | |
| ETH | <0.01% | $0.010597 | 17.2743 | $0.183 | |
| ETH | <0.01% | $0.015253 | 11.917 | $0.1817 | |
| ETH | <0.01% | $0.006614 | 27.4771 | $0.1817 | |
| ETH | <0.01% | $0.166519 | 1.0701 | $0.1781 | |
| ETH | <0.01% | $0.000164 | 1,076.5346 | $0.1768 | |
| ETH | <0.01% | $2.54 | 0.0684 | $0.1736 | |
| ETH | <0.01% | $0.00905 | 18.961 | $0.1715 | |
| ETH | <0.01% | $0.998585 | 0.1714 | $0.1711 | |
| ETH | <0.01% | $89,047 | 0.0000019 | $0.1691 | |
| ETH | <0.01% | $0.037478 | 4.4757 | $0.1677 | |
| ETH | <0.01% | $0.239257 | 0.7006 | $0.1676 | |
| ETH | <0.01% | $0.165275 | 1.0111 | $0.1671 | |
| ETH | <0.01% | $0.002459 | 67.4597 | $0.1658 | |
| ETH | <0.01% | $0.00925 | 17.5679 | $0.1624 | |
| ETH | <0.01% | $0.003574 | 45.4516 | $0.1624 | |
| ETH | <0.01% | $0.01414 | 11.476 | $0.1622 | |
| ETH | <0.01% | $2.75 | 0.0587 | $0.1614 | |
| ETH | <0.01% | $0.065025 | 2.4696 | $0.1605 | |
| ETH | <0.01% | $0.00331 | 48.1186 | $0.1592 | |
| ETH | <0.01% | $0.222744 | 0.7094 | $0.158 | |
| ETH | <0.01% | $0.000717 | 216.4417 | $0.1552 | |
| ETH | <0.01% | $0.00204 | 75.1387 | $0.1532 | |
| ETH | <0.01% | $0.234464 | 0.6533 | $0.1531 | |
| ETH | <0.01% | $0.011192 | 13.641 | $0.1526 | |
| ETH | <0.01% | $54.71 | 0.00278443 | $0.1523 | |
| ETH | <0.01% | $0.007984 | 18.7721 | $0.1498 | |
| ETH | <0.01% | $0.999437 | 0.1499 | $0.1497 | |
| ETH | <0.01% | $0.000065 | 2,289.5405 | $0.1485 | |
| ETH | <0.01% | $0.017121 | 8.3349 | $0.1427 | |
| ETH | <0.01% | $0.177042 | 0.7883 | $0.1395 | |
| ETH | <0.01% | $0.00129 | 106.7338 | $0.1377 | |
| ETH | <0.01% | $0.000499 | 275.7226 | $0.1376 | |
| ETH | <0.01% | $0.00044 | 309.4266 | $0.1361 | |
| ETH | <0.01% | $0.000544 | 248.0727 | $0.1349 | |
| ETH | <0.01% | $0.000278 | 483.7606 | $0.1346 | |
| ETH | <0.01% | $0.004199 | 31.9995 | $0.1343 | |
| ETH | <0.01% | <$0.000001 | 105,339,149.5907 | $0.1322 | |
| ETH | <0.01% | $0.000235 | 551.5836 | $0.1295 | |
| ETH | <0.01% | $0.000476 | 265.3247 | $0.1262 | |
| ETH | <0.01% | $54.1 | 0.00233105 | $0.1261 | |
| ETH | <0.01% | $0.000928 | 135.8184 | $0.1259 | |
| ETH | <0.01% | $0.002406 | 51.9091 | $0.1248 | |
| ETH | <0.01% | $0.000012 | 10,095.9637 | $0.1234 | |
| ETH | <0.01% | $0.036401 | 3.3182 | $0.1207 | |
| ETH | <0.01% | $0.003331 | 36.1725 | $0.1204 | |
| ETH | <0.01% | $0.003187 | 37.7343 | $0.1202 | |
| ETH | <0.01% | $0.000009 | 12,567.5345 | $0.1163 | |
| ETH | <0.01% | $0.002081 | 55.3779 | $0.1152 | |
| ETH | <0.01% | $0.008829 | 13.0406 | $0.1151 | |
| ETH | <0.01% | $0.000011 | 10,448.1995 | $0.1129 | |
| ETH | <0.01% | $0.412389 | 0.2729 | $0.1125 | |
| ETH | <0.01% | $0.000329 | 342.7541 | $0.1125 | |
| ETH | <0.01% | $0.001007 | 110.6171 | $0.1113 | |
| ETH | <0.01% | <$0.000001 | 327,582.5498 | $0.1111 | |
| ETH | <0.01% | $0.045807 | 2.423 | $0.1109 | |
| ETH | <0.01% | $89,570 | 0.00000123 | $0.1105 | |
| ETH | <0.01% | $0.00106 | 104.278 | $0.1104 | |
| ETH | <0.01% | $0.000539 | 203.1207 | $0.1095 | |
| ETH | <0.01% | <$0.000001 | 10,662,460.0037 | $0.1094 | |
| ETH | <0.01% | $0.038026 | 2.8294 | $0.1075 | |
| ETH | <0.01% | $0.001058 | 99.7503 | $0.1055 | |
| ETH | <0.01% | $0.50352 | 0.2077 | $0.1045 | |
| ETH | <0.01% | $0.101731 | 1.0268 | $0.1044 | |
| ETH | <0.01% | $0.018486 | 5.5778 | $0.1031 | |
| ETH | <0.01% | $0.679463 | 0.1515 | $0.1029 | |
| ETH | <0.01% | $0.149283 | 0.6892 | $0.1028 | |
| ETH | <0.01% | $0.57493 | 0.1785 | $0.1026 | |
| ETH | <0.01% | $0.110772 | 0.9189 | $0.1017 | |
| ETH | <0.01% | $0.000956 | 105.7684 | $0.1011 | |
| ETH | <0.01% | $0.003291 | 30.5676 | $0.1006 | |
| BASE | <0.01% | $0.999613 | 110.7428 | $110.7 | |
| BASE | <0.01% | $3,314.67 | 0.0277 | $91.66 | |
| BASE | <0.01% | $0.985829 | 88.5559 | $87.3 | |
| BASE | <0.01% | $0.999316 | 82.8446 | $82.79 | |
| BASE | <0.01% | $88,930 | 0.00092615 | $82.36 | |
| BASE | <0.01% | $0.336909 | 241.8769 | $81.49 | |
| BASE | <0.01% | $0.998848 | 80.2865 | $80.19 | |
| BASE | <0.01% | $0.827237 | 94.4646 | $78.14 | |
| BASE | <0.01% | $9.76 | 7.3493 | $71.73 | |
| BASE | <0.01% | $155.69 | 0.4569 | $71.13 | |
| BASE | <0.01% | $1.27 | 53.1005 | $67.44 | |
| BASE | <0.01% | $0.730533 | 92.2683 | $67.41 | |
| BASE | <0.01% | $1.91 | 34.1418 | $65.21 | |
| BASE | <0.01% | $3,424.07 | 0.0184 | $62.9 | |
| BASE | <0.01% | $2,953.46 | 0.0213 | $62.79 | |
| BASE | <0.01% | $0.000921 | 63,619.5489 | $58.61 | |
| BASE | <0.01% | $1.18 | 48.1205 | $56.78 | |
| BASE | <0.01% | $0.025935 | 2,174.4561 | $56.39 | |
| BASE | <0.01% | $1.18 | 47.3171 | $55.83 | |
| BASE | <0.01% | $0.001957 | 28,048.8464 | $54.91 | |
| BASE | <0.01% | $0.00 | 0.0162 | $0.00 | |
| BASE | <0.01% | $0.01299 | 3,888.179 | $50.51 | |
| BASE | <0.01% | $0.013495 | 3,695.2308 | $49.87 | |
| BASE | <0.01% | $0.017691 | 2,816.7399 | $49.83 | |
| BASE | <0.01% | $89,151 | 0.00049359 | $44 | |
| BASE | <0.01% | $0.121478 | 357.5702 | $43.44 | |
| BASE | <0.01% | $0.000288 | 150,315.3611 | $43.3 | |
| BASE | <0.01% | $0.016112 | 2,671.5923 | $43.04 | |
| BASE | <0.01% | $0.999473 | 41.3125 | $41.29 | |
| BASE | <0.01% | $3,208.93 | 0.0128 | $41.01 | |
| BASE | <0.01% | $0.022385 | 1,754.8521 | $39.28 | |
| BASE | <0.01% | $0.002028 | 18,957.5943 | $38.44 | |
| BASE | <0.01% | $0.000007 | 5,679,615.2139 | $37.9 | |
| BASE | <0.01% | $0.999322 | 37.3341 | $37.31 | |
| BASE | <0.01% | $0.004859 | 7,483.5586 | $36.36 | |
| BASE | <0.01% | $0.006464 | 5,562.5538 | $35.96 | |
| BASE | <0.01% | $1.04 | 34.0139 | $35.2 | |
| BASE | <0.01% | $0.998374 | 35.2458 | $35.19 | |
| BASE | <0.01% | $0.190082 | 175.7234 | $33.4 | |
| BASE | <0.01% | $0.000149 | 222,898.3905 | $33.26 | |
| BASE | <0.01% | $1.19 | 26.8001 | $31.89 | |
| BASE | <0.01% | $0.285601 | 110.8158 | $31.65 | |
| BASE | <0.01% | $0.031283 | 958.203 | $29.98 | |
| BASE | <0.01% | $0.42548 | 67.4942 | $28.72 | |
| BASE | <0.01% | $0.082688 | 331.4659 | $27.41 | |
| BASE | <0.01% | $2.04 | 12.7281 | $25.97 | |
| BASE | <0.01% | $23.9 | 1.0864 | $25.96 | |
| BASE | <0.01% | $0.031057 | 833.8698 | $25.9 | |
| BASE | <0.01% | $0.026892 | 906.4196 | $24.38 | |
| BASE | <0.01% | $0.123412 | 196.3341 | $24.23 | |
| BASE | <0.01% | $26.12 | 0.8726 | $22.79 | |
| BASE | <0.01% | $3,147.19 | 0.00721017 | $22.69 | |
| BASE | <0.01% | $0.044901 | 495.4593 | $22.25 | |
| BASE | <0.01% | $0.007723 | 2,867.7816 | $22.15 | |
| BASE | <0.01% | $0.011304 | 1,896.9267 | $21.44 | |
| BASE | <0.01% | $0.999477 | 20.796 | $20.79 | |
| BASE | <0.01% | $0.00 | 19.2613 | $0.00 | |
| BASE | <0.01% | $0.013587 | 1,464.8054 | $19.9 | |
| BASE | <0.01% | $3,618.61 | 0.00548332 | $19.84 | |
| BASE | <0.01% | $0.387891 | 50.657 | $19.65 | |
| BASE | <0.01% | $0.368783 | 52.5952 | $19.4 | |
| BASE | <0.01% | $3.8 | 5.0696 | $19.26 | |
| BASE | <0.01% | $1.18 | 15.9636 | $18.84 | |
| BASE | <0.01% | $0.358801 | 52.1948 | $18.73 | |
| BASE | <0.01% | $89,151 | 0.00020266 | $18.07 | |
| BASE | <0.01% | $0.019895 | 800 | $15.92 | |
| BASE | <0.01% | $1.35 | 11.6988 | $15.79 | |
| BASE | <0.01% | $0.049943 | 278.4914 | $13.91 | |
| BASE | <0.01% | $3.09 | 4.4729 | $13.82 | |
| BASE | <0.01% | $86,136 | 0.00016009 | $13.79 | |
| BASE | <0.01% | $0.004596 | 2,890.4172 | $13.28 | |
| BASE | <0.01% | $0.67371 | 19.5887 | $13.2 | |
| BASE | <0.01% | $0.00 | 67.1352 | $0.00 | |
| BASE | <0.01% | $0.045812 | 273.6729 | $12.54 | |
| BASE | <0.01% | $0.011052 | 1,080.3088 | $11.94 | |
| BASE | <0.01% | $0.005683 | 2,074.6078 | $11.79 | |
| BASE | <0.01% | $88,986 | 0.00013071 | $11.63 | |
| BASE | <0.01% | $0.999614 | 10.9281 | $10.92 | |
| BASE | <0.01% | $0.007858 | 1,347.6864 | $10.59 | |
| BASE | <0.01% | $0.056909 | 179.16 | $10.2 | |
| BASE | <0.01% | $0.020224 | 494.9352 | $10.01 | |
| BASE | <0.01% | $0.059303 | 163.6129 | $9.7 | |
| BASE | <0.01% | $0.015796 | 589.0494 | $9.3 | |
| BASE | <0.01% | $0.063075 | 147.0581 | $9.28 | |
| BASE | <0.01% | $0.002984 | 3,055.0146 | $9.12 | |
| BASE | <0.01% | $0.007103 | 1,263.2412 | $8.97 | |
| BASE | <0.01% | $0.015726 | 550.0836 | $8.65 | |
| BASE | <0.01% | $0.356462 | 23.7251 | $8.46 | |
| BASE | <0.01% | $0.415749 | 20.2672 | $8.43 | |
| BASE | <0.01% | $127.1 | 0.0657 | $8.34 | |
| BASE | <0.01% | $3,312.72 | 0.00250644 | $8.3 | |
| BASE | <0.01% | $0.086463 | 94.7209 | $8.19 | |
| BASE | <0.01% | $0.000452 | 17,878.4994 | $8.08 | |
| BASE | <0.01% | $0.00 | 5.4009 | $0.00 | |
| BASE | <0.01% | $0.996937 | 7.741 | $7.72 | |
| BASE | <0.01% | $2,946.05 | 0.00259017 | $7.63 | |
| BASE | <0.01% | $0.000512 | 14,756.341 | $7.55 | |
| BASE | <0.01% | $0.593939 | 12.6285 | $7.5 | |
| BASE | <0.01% | $0.001057 | 6,799.3086 | $7.19 | |
| BASE | <0.01% | $0.00644 | 1,087.1433 | $7 | |
| BASE | <0.01% | $67.92 | 0.1024 | $6.95 | |
| BASE | <0.01% | $0.050952 | 133.5116 | $6.8 | |
| BASE | <0.01% | $0.027372 | 246.5859 | $6.75 | |
| BASE | <0.01% | $0.321209 | 18.8155 | $6.04 | |
| BASE | <0.01% | $0.000018 | 316,209.2163 | $5.72 | |
| BASE | <0.01% | $0.998697 | 5.7278 | $5.72 | |
| BASE | <0.01% | $0.000953 | 5,834.2284 | $5.56 | |
| BASE | <0.01% | $1 | 5.5316 | $5.53 | |
| BASE | <0.01% | $2,953.21 | 0.00183379 | $5.42 | |
| BASE | <0.01% | $0.09227 | 55.8524 | $5.15 | |
| BASE | <0.01% | $0.497967 | 10.3185 | $5.14 | |
| BASE | <0.01% | $3,317.25 | 0.00153537 | $5.09 | |
| BASE | <0.01% | $0.054129 | 93.5641 | $5.06 | |
| BASE | <0.01% | $0.00083 | 5,946.6336 | $4.94 | |
| BASE | <0.01% | $0.209808 | 22.6904 | $4.76 | |
| BASE | <0.01% | $0.17362 | 26.0546 | $4.52 | |
| BASE | <0.01% | $2.95 | 1.4673 | $4.33 | |
| BASE | <0.01% | $0.127654 | 33.646 | $4.3 | |
| BASE | <0.01% | $0.000091 | 46,179.6121 | $4.2 | |
| BASE | <0.01% | $0.030162 | 137.6809 | $4.15 | |
| BASE | <0.01% | <$0.000001 | 51,842,196.1825 | $4.05 | |
| BASE | <0.01% | $0.592358 | 6.5319 | $3.87 | |
| BASE | <0.01% | $3,211.86 | 0.00115467 | $3.71 | |
| BASE | <0.01% | $0.001317 | 2,750.1218 | $3.62 | |
| BASE | <0.01% | $0.030246 | 118.3518 | $3.58 | |
| BASE | <0.01% | $1.09 | 3.2944 | $3.58 | |
| BASE | <0.01% | $0.096328 | 36.2107 | $3.49 | |
| BASE | <0.01% | $0.013604 | 254.038 | $3.46 | |
| BASE | <0.01% | $0.796969 | 4.1097 | $3.28 | |
| BASE | <0.01% | $0.334416 | 9.719 | $3.25 | |
| BASE | <0.01% | $2,958.7 | 0.00109398 | $3.24 | |
| BASE | <0.01% | $0.244212 | 13.2419 | $3.23 | |
| BASE | <0.01% | $0.011819 | 271.665 | $3.21 | |
| BASE | <0.01% | $0.000389 | 7,964.4473 | $3.09 | |
| BASE | <0.01% | $0.061849 | 48.0295 | $2.97 | |
| BASE | <0.01% | $0.009923 | 299.3484 | $2.97 | |
| BASE | <0.01% | $0.1376 | 21.2396 | $2.92 | |
| BASE | <0.01% | <$0.000001 | 11,449,103.5142 | $2.86 | |
| BASE | <0.01% | $0.000015 | 182,928.3165 | $2.8 | |
| BASE | <0.01% | $0.000025 | 107,415.8222 | $2.67 | |
| BASE | <0.01% | <$0.000001 | 3,218,287,780.6264 | $2.57 | |
| BASE | <0.01% | $0.05218 | 48.3562 | $2.52 | |
| BASE | <0.01% | $0.707195 | 3.5249 | $2.49 | |
| BASE | <0.01% | $0.123044 | 18.9929 | $2.34 | |
| BASE | <0.01% | $1 | 2.3082 | $2.31 | |
| BASE | <0.01% | $0.605487 | 3.7943 | $2.3 | |
| BASE | <0.01% | $0.000655 | 3,504.3935 | $2.3 | |
| BASE | <0.01% | $88,323 | 0.00002481 | $2.19 | |
| BASE | <0.01% | $0.040041 | 54.362 | $2.18 | |
| BASE | <0.01% | $0.1079 | 20.081 | $2.17 | |
| BASE | <0.01% | $0.080115 | 26.9976 | $2.16 | |
| BASE | <0.01% | $1.22 | 1.7421 | $2.13 | |
| BASE | <0.01% | $0.911234 | 2.1617 | $1.97 | |
| BASE | <0.01% | $0.000168 | 11,324.4101 | $1.9 | |
| BASE | <0.01% | $0.008829 | 211.5168 | $1.87 | |
| BASE | <0.01% | $0.000175 | 10,421.0103 | $1.82 | |
| BASE | <0.01% | $0.000059 | 30,766.9799 | $1.82 | |
| BASE | <0.01% | $0.000451 | 4,015.1699 | $1.81 | |
| BASE | <0.01% | $0.000246 | 7,174.5312 | $1.76 | |
| BASE | <0.01% | $0.00121 | 1,434.6819 | $1.74 | |
| BASE | <0.01% | $2.01 | 0.8602 | $1.73 | |
| BASE | <0.01% | $0.028451 | 59.6279 | $1.7 | |
| BASE | <0.01% | $0.300753 | 5.598 | $1.68 | |
| BASE | <0.01% | $228.6 | 0.00708272 | $1.62 | |
| BASE | <0.01% | $0.003445 | 467.1365 | $1.61 | |
| BASE | <0.01% | $0.002027 | 779.8005 | $1.58 | |
| BASE | <0.01% | $0.000377 | 4,119.3558 | $1.55 | |
| BASE | <0.01% | $1.03 | 1.5006 | $1.54 | |
| BASE | <0.01% | $0.019498 | 71.5588 | $1.4 | |
| BASE | <0.01% | $0.053935 | 25.4711 | $1.37 | |
| BASE | <0.01% | $0.000011 | 120,512.9502 | $1.36 | |
| BASE | <0.01% | $0.035665 | 37.9732 | $1.35 | |
| BASE | <0.01% | $3,145.16 | 0.00041887 | $1.32 | |
| BASE | <0.01% | $0.003901 | 335.0404 | $1.31 | |
| BASE | <0.01% | $0.05057 | 25.705 | $1.3 | |
| BASE | <0.01% | $0.023516 | 53.3243 | $1.25 | |
| BASE | <0.01% | <$0.000001 | 186,738,635.0176 | $1.18 | |
| BASE | <0.01% | $0.993785 | 1.1633 | $1.16 | |
| BASE | <0.01% | $0.002045 | 546.371 | $1.12 | |
| BASE | <0.01% | $0.060746 | 18.2638 | $1.11 | |
| BASE | <0.01% | $0.468739 | 2.3388 | $1.1 | |
| BASE | <0.01% | $0.000544 | 1,941.2583 | $1.06 | |
| BASE | <0.01% | $0.001863 | 558.7838 | $1.04 | |
| BASE | <0.01% | $0.065027 | 15.8653 | $1.03 | |
| BASE | <0.01% | $0.006102 | 168.7719 | $1.03 | |
| BASE | <0.01% | $0.000003 | 298,799.7813 | $1.01 | |
| BASE | <0.01% | $0.009522 | 100.6168 | $0.958 | |
| BASE | <0.01% | $0.000042 | 22,788.499 | $0.953 | |
| BASE | <0.01% | $0.000296 | 3,157.7843 | $0.9352 | |
| BASE | <0.01% | $0.122694 | 7.6102 | $0.9337 | |
| BASE | <0.01% | $0.009314 | 97.615 | $0.9092 | |
| BASE | <0.01% | $0.000207 | 4,358.0805 | $0.9035 | |
| BASE | <0.01% | $0.011202 | 77.7443 | $0.8708 | |
| BASE | <0.01% | $0.000601 | 1,402.1116 | $0.8428 | |
| BASE | <0.01% | $0.09365 | 8.7779 | $0.822 | |
| BASE | <0.01% | $0.000259 | 2,892.4433 | $0.7496 | |
| BASE | <0.01% | $0.972252 | 0.7663 | $0.745 | |
| BASE | <0.01% | <$0.000001 | 57,348,307.748 | $0.7283 | |
| BASE | <0.01% | $0.827583 | 0.8565 | $0.7088 | |
| BASE | <0.01% | $0.01059 | 61.8923 | $0.6554 | |
| BASE | <0.01% | $0.000001 | 558,323.7779 | $0.6309 | |
| BASE | <0.01% | $0.036174 | 16.9672 | $0.6137 | |
| BASE | <0.01% | $2.01 | 0.3023 | $0.6075 | |
| BASE | <0.01% | $0.006108 | 97.1477 | $0.5933 | |
| BASE | <0.01% | $0.003001 | 182.0713 | $0.5463 | |
| BASE | <0.01% | $0.000171 | 3,144.6652 | $0.5362 | |
| BASE | <0.01% | $0.006802 | 77.1507 | $0.5247 | |
| BASE | <0.01% | $0.000335 | 1,532.9649 | $0.5127 | |
| BASE | <0.01% | $0.00077 | 661.9115 | $0.5097 | |
| BASE | <0.01% | $88,947 | 0.00000534 | $0.4748 | |
| BASE | <0.01% | $2.5 | 0.1898 | $0.4744 | |
| BASE | <0.01% | $0.000078 | 5,990.1696 | $0.4695 | |
| BASE | <0.01% | $257.39 | 0.00178782 | $0.4601 | |
| BASE | <0.01% | $0.002785 | 165.1401 | $0.4598 | |
| BASE | <0.01% | $0.003824 | 117.5065 | $0.4492 | |
| BASE | <0.01% | $0.006601 | 67.9079 | $0.4482 | |
| BASE | <0.01% | $0.042102 | 10.4456 | $0.4397 | |
| BASE | <0.01% | $0.071729 | 6.0866 | $0.4365 | |
| BASE | <0.01% | $0.000001 | 330,721.8805 | $0.4332 | |
| BASE | <0.01% | $0.025824 | 15.9138 | $0.4109 | |
| BASE | <0.01% | $0.00067 | 607.4106 | $0.4067 | |
| BASE | <0.01% | $0.54102 | 0.6936 | $0.3752 | |
| BASE | <0.01% | $0.000021 | 17,758.0078 | $0.3738 | |
| BASE | <0.01% | $0.002437 | 146.337 | $0.3566 | |
| BASE | <0.01% | $1.01 | 0.3499 | $0.3547 | |
| BASE | <0.01% | $0.001258 | 271.2856 | $0.3413 | |
| BASE | <0.01% | $190.34 | 0.00177057 | $0.337 | |
| BASE | <0.01% | $0.21974 | 1.4503 | $0.3186 | |
| BASE | <0.01% | $0.000279 | 1,132.046 | $0.3157 | |
| BASE | <0.01% | $0.111935 | 2.7512 | $0.3079 | |
| BASE | <0.01% | $2.33 | 0.1296 | $0.3019 | |
| BASE | <0.01% | $0.000004 | 61,805.905 | $0.2639 | |
| BASE | <0.01% | $1 | 0.2459 | $0.2459 | |
| BASE | <0.01% | $0.029952 | 7.9093 | $0.2369 | |
| BASE | <0.01% | $30.93 | 0.00764487 | $0.2364 | |
| BASE | <0.01% | $0.467486 | 0.4986 | $0.2331 | |
| BASE | <0.01% | $0.001833 | 118.301 | $0.2168 | |
| BASE | <0.01% | $19.01 | 0.011 | $0.2095 | |
| BASE | <0.01% | $90,306 | 0.00000229 | $0.2068 | |
| BASE | <0.01% | $0.000364 | 557.0321 | $0.2027 | |
| BASE | <0.01% | $0.257528 | 0.781 | $0.2011 | |
| BASE | <0.01% | $0.166513 | 1.1111 | $0.185 | |
| BASE | <0.01% | <$0.000001 | 67,133,872.1648 | $0.1812 | |
| BASE | <0.01% | $0.006365 | 27.8004 | $0.1769 | |
| BASE | <0.01% | $0.000005 | 33,019.1547 | $0.175 | |
| BASE | <0.01% | $0.002329 | 70.7469 | $0.1648 | |
| BASE | <0.01% | $0.000488 | 328.8231 | $0.1603 | |
| BASE | <0.01% | $0.064567 | 2.4622 | $0.1589 | |
| BASE | <0.01% | $0.68834 | 0.2304 | $0.1586 | |
| BASE | <0.01% | $0.000002 | 95,306.3388 | $0.1563 | |
| BASE | <0.01% | $0.022454 | 6.8021 | $0.1527 | |
| BASE | <0.01% | $0.000242 | 603.5441 | $0.146 | |
| BASE | <0.01% | $0.000237 | 583.4535 | $0.1381 | |
| BASE | <0.01% | $0.000305 | 441.2591 | $0.1344 | |
| BASE | <0.01% | $3,181.59 | 0.00004134 | $0.1315 | |
| BASE | <0.01% | $0.00414 | 30.1387 | $0.1247 | |
| BASE | <0.01% | <$0.000001 | 1,520,364.1342 | $0.1239 | |
| BASE | <0.01% | $0.000002 | 65,290.2216 | $0.1233 | |
| BASE | <0.01% | $0.000834 | 145.9505 | $0.1217 | |
| BASE | <0.01% | $0.006871 | 16.5775 | $0.1138 | |
| BASE | <0.01% | <$0.000001 | 2,970,253.6934 | $0.1134 | |
| BASE | <0.01% | $0.024033 | 4.6232 | $0.1111 | |
| BASE | <0.01% | $0.010138 | 10.437 | $0.1058 | |
| POL | <0.01% | $1.23 | 66.047 | $81.24 | |
| POL | <0.01% | $12.18 | 6.5849 | $80.2 | |
| POL | <0.01% | $0.147197 | 502.4841 | $73.96 | |
| POL | <0.01% | $2,953.03 | 0.0248 | $73.32 | |
| POL | <0.01% | $1.17 | 55.25 | $64.64 | |
| POL | <0.01% | $0.358742 | 172.0734 | $61.73 | |
| POL | <0.01% | $0.187922 | 294.871 | $55.41 | |
| POL | <0.01% | $1 | 53.1948 | $53.19 | |
| POL | <0.01% | $0.125171 | 372.4601 | $46.62 | |
| POL | <0.01% | $88,915 | 0.0004683 | $41.64 | |
| POL | <0.01% | $0.999346 | 40.3688 | $40.34 | |
| POL | <0.01% | $88,905 | 0.0004518 | $40.17 | |
| POL | <0.01% | $155.7 | 0.2452 | $38.17 | |
| POL | <0.01% | $0.999703 | 31.6022 | $31.59 | |
| POL | <0.01% | $0.999703 | 31.4295 | $31.42 | |
| POL | <0.01% | $2 | 11.6244 | $23.25 | |
| POL | <0.01% | $0.998313 | 18.8998 | $18.87 | |
| POL | <0.01% | $0.144054 | 128.8214 | $18.56 | |
| POL | <0.01% | $3,617.29 | 0.00451599 | $16.34 | |
| POL | <0.01% | $12.19 | 1.2759 | $15.55 | |
| POL | <0.01% | $0.519786 | 29.3652 | $15.26 | |
| POL | <0.01% | $0.126226 | 111.2549 | $14.04 | |
| POL | <0.01% | $0.178484 | 77.1884 | $13.78 | |
| POL | <0.01% | $0.000684 | 18,504.1725 | $12.66 | |
| POL | <0.01% | $0.785878 | 15.6484 | $12.3 | |
| POL | <0.01% | $5,091.82 | 0.00210267 | $10.71 | |
| POL | <0.01% | $89,249 | 0.00010233 | $9.13 | |
| POL | <0.01% | $0.147396 | 55.231 | $8.14 | |
| POL | <0.01% | $2,958.7 | 0.0027036 | $8 | |
| POL | <0.01% | $0.001108 | 6,077.0041 | $6.73 | |
| POL | <0.01% | $0.01234 | 545.1657 | $6.73 | |
| POL | <0.01% | $1.18 | 4.7449 | $5.6 | |
| POL | <0.01% | $1.18 | 4.7449 | $5.6 | |
| POL | <0.01% | $0.003785 | 1,252.74 | $4.74 | |
| POL | <0.01% | $0.781028 | 5.9113 | $4.62 | |
| POL | <0.01% | $0.147854 | 30.7619 | $4.55 | |
| POL | <0.01% | $2.5 | 1.6901 | $4.23 | |
| POL | <0.01% | $0.032597 | 123.1204 | $4.01 | |
| POL | <0.01% | $0.125044 | 31.4449 | $3.93 | |
| POL | <0.01% | $0.008243 | 470.2127 | $3.88 | |
| POL | <0.01% | $1.02 | 3.2954 | $3.36 | |
| POL | <0.01% | $0.155081 | 18.347 | $2.85 | |
| POL | <0.01% | $0.49617 | 5.1564 | $2.56 | |
| POL | <0.01% | $155.86 | 0.0153 | $2.39 | |
| POL | <0.01% | $0.189809 | 11.3055 | $2.15 | |
| POL | <0.01% | $0.000175 | 11,046.1412 | $1.93 | |
| POL | <0.01% | $0.050567 | 37.0167 | $1.87 | |
| POL | <0.01% | $0.992188 | 1.7597 | $1.75 | |
| POL | <0.01% | $0.000606 | 2,790.2614 | $1.69 | |
| POL | <0.01% | $4.85 | 0.3386 | $1.64 | |
| POL | <0.01% | $0.189067 | 8.275 | $1.56 | |
| POL | <0.01% | $0.99974 | 1.5263 | $1.53 | |
| POL | <0.01% | $0.095132 | 15.6666 | $1.49 | |
| POL | <0.01% | $0.12508 | 11.428 | $1.43 | |
| POL | <0.01% | $0.01472 | 95.1056 | $1.4 | |
| POL | <0.01% | $0.058496 | 20.2768 | $1.19 | |
| POL | <0.01% | $0.99974 | 1.183 | $1.18 | |
| POL | <0.01% | $58.55 | 0.0191 | $1.12 | |
| POL | <0.01% | $166.21 | 0.00639932 | $1.06 | |
| POL | <0.01% | $3,622.34 | 0.00029261 | $1.06 | |
| POL | <0.01% | $0.000004 | 252,479.0493 | $1.04 | |
| POL | <0.01% | $0.003998 | 248.6816 | $0.9942 | |
| POL | <0.01% | $0.000022 | 40,549.5553 | $0.8864 | |
| POL | <0.01% | $0.004677 | 188.9599 | $0.8838 | |
| POL | <0.01% | $0.129066 | 5.9179 | $0.7638 | |
| POL | <0.01% | $2.01 | 0.3601 | $0.7237 | |
| POL | <0.01% | $0.001079 | 615.0087 | $0.6634 | |
| POL | <0.01% | $0.155236 | 4.0747 | $0.6325 | |
| POL | <0.01% | $88,861 | 0.0000066 | $0.5864 | |
| POL | <0.01% | $0.186318 | 2.7915 | $0.5201 | |
| POL | <0.01% | $0.165275 | 3.0095 | $0.4973 | |
| POL | <0.01% | $0.187915 | 2.1588 | $0.4056 | |
| POL | <0.01% | $6.36 | 0.0629 | $0.4002 | |
| POL | <0.01% | $0.011473 | 34.4046 | $0.3947 | |
| POL | <0.01% | $0.000843 | 419.0327 | $0.3534 | |
| POL | <0.01% | $0.001826 | 192.7735 | $0.3519 | |
| POL | <0.01% | $0.017506 | 18.2953 | $0.3202 | |
| POL | <0.01% | $0.00047 | 652.7738 | $0.3069 | |
| POL | <0.01% | $0.000552 | 520.0438 | $0.2871 | |
| POL | <0.01% | $0.005435 | 51.6402 | $0.2806 | |
| POL | <0.01% | $23.91 | 0.00939279 | $0.2245 | |
| POL | <0.01% | $0.006269 | 34.7445 | $0.2178 | |
| POL | <0.01% | $0.234168 | 0.9027 | $0.2113 | |
| POL | <0.01% | $127.21 | 0.00150481 | $0.1914 | |
| POL | <0.01% | $0.000155 | 1,226.8847 | $0.1902 | |
| POL | <0.01% | $0.294171 | 0.6429 | $0.1891 | |
| POL | <0.01% | $0.008345 | 22.6575 | $0.189 | |
| POL | <0.01% | $0.001997 | 92.5879 | $0.1849 | |
| POL | <0.01% | $0.028966 | 5.6539 | $0.1637 | |
| POL | <0.01% | $0.101978 | 1.5623 | $0.1593 | |
| POL | <0.01% | $0.051136 | 3.0887 | $0.1579 | |
| POL | <0.01% | $0.17485 | 0.8547 | $0.1494 | |
| POL | <0.01% | $0.000008 | 18,855.8785 | $0.147 | |
| POL | <0.01% | $0.015789 | 9.2455 | $0.1459 | |
| POL | <0.01% | $0.000028 | 5,200.3381 | $0.1431 | |
| POL | <0.01% | $11.57 | 0.0118 | $0.1369 | |
| POL | <0.01% | $0.01179 | 10.3327 | $0.1218 | |
| POL | <0.01% | $0.003805 | 30.7886 | $0.1171 | |
| POL | <0.01% | $0.147557 | 0.7898 | $0.1165 | |
| POL | <0.01% | $0.000955 | 118.0553 | $0.1127 | |
| POL | <0.01% | $1.02 | 0.1097 | $0.1117 | |
| POL | <0.01% | $0.44991 | 0.225 | $0.1012 | |
| FRAXTAL | <0.01% | $2,946.79 | 0.0318 | $93.6 | |
| FRAXTAL | <0.01% | $0.998628 | 76.3305 | $76.23 | |
| FRAXTAL | <0.01% | $0.992854 | 62.3057 | $61.86 | |
| FRAXTAL | <0.01% | $1.22 | 48.1577 | $58.75 | |
| FRAXTAL | <0.01% | $0.00154 | 38,052.967 | $58.6 | |
| FRAXTAL | <0.01% | $0.99913 | 54.3696 | $54.32 | |
| FRAXTAL | <0.01% | $0.992854 | 48.9131 | $48.56 | |
| FRAXTAL | <0.01% | $0.999673 | 38.2062 | $38.19 | |
| FRAXTAL | <0.01% | $3,381.55 | 0.0112 | $37.74 | |
| FRAXTAL | <0.01% | $0.992854 | 27.0158 | $26.82 | |
| FRAXTAL | <0.01% | $0.358845 | 73.1998 | $26.27 | |
| FRAXTAL | <0.01% | $0.992854 | 21.0484 | $20.9 | |
| FRAXTAL | <0.01% | $1.01 | 20.2548 | $20.5 | |
| FRAXTAL | <0.01% | $0.00 | 0.00624196 | $0.00 | |
| FRAXTAL | <0.01% | $0.992854 | 16.6519 | $16.53 | |
| FRAXTAL | <0.01% | $0.99924 | 11.9473 | $11.94 | |
| FRAXTAL | <0.01% | $1.02 | 9.3643 | $9.57 | |
| FRAXTAL | <0.01% | $0.357946 | 18.5437 | $6.64 | |
| FRAXTAL | <0.01% | $1.14 | 3.4269 | $3.91 | |
| FRAXTAL | <0.01% | $0.171198 | 21.0842 | $3.61 | |
| FRAXTAL | <0.01% | $0.998537 | 2.0714 | $2.07 | |
| FRAXTAL | <0.01% | $1.18 | 0.6 | $0.7079 | |
| FRAXTAL | <0.01% | $0.002317 | 176.4801 | $0.4089 | |
| FRAXTAL | <0.01% | $88,893 | 0.00000338 | $0.3004 | |
| FRAXTAL | <0.01% | $0.00 | 13.6989 | $0.00 | |
| OP | <0.01% | $0.999725 | 86.4242 | $86.4 | |
| OP | <0.01% | $0.774189 | 83.3094 | $64.5 | |
| OP | <0.01% | $2,953.21 | 0.0193 | $56.96 | |
| OP | <0.01% | $2,953.25 | 0.0144 | $42.52 | |
| OP | <0.01% | $179.59 | 0.2354 | $42.28 | |
| OP | <0.01% | $0.301161 | 138.2862 | $41.65 | |
| OP | <0.01% | $1.28 | 24.2426 | $31.03 | |
| OP | <0.01% | $0.999099 | 30.3636 | $30.34 | |
| OP | <0.01% | $0.999725 | 27.4591 | $27.45 | |
| OP | <0.01% | $2,834.13 | 0.00950469 | $26.94 | |
| OP | <0.01% | $0.167737 | 141.066 | $23.66 | |
| OP | <0.01% | $0.999343 | 21.5399 | $21.53 | |
| OP | <0.01% | $12.18 | 1.4884 | $18.13 | |
| OP | <0.01% | $0.415753 | 35.2945 | $14.67 | |
| OP | <0.01% | $0.001079 | 13,493.1288 | $14.56 | |
| OP | <0.01% | $3,382.22 | 0.0038367 | $12.98 | |
| OP | <0.01% | $3,415.03 | 0.00379546 | $12.96 | |
| OP | <0.01% | $0.470516 | 25.2427 | $11.88 | |
| OP | <0.01% | $0.244264 | 45.8174 | $11.19 | |
| OP | <0.01% | $2,958.7 | 0.00362225 | $10.72 | |
| OP | <0.01% | $0.01182 | 742.5365 | $8.78 | |
| OP | <0.01% | $2.01 | 4.333 | $8.71 | |
| OP | <0.01% | $155.69 | 0.0369 | $5.74 | |
| OP | <0.01% | $0.031077 | 174.7971 | $5.43 | |
| OP | <0.01% | $0.358845 | 12.5025 | $4.49 | |
| OP | <0.01% | $0.998543 | 3.6833 | $3.68 | |
| OP | <0.01% | $0.99735 | 3.0406 | $3.03 | |
| OP | <0.01% | $0.02019 | 146.6987 | $2.96 | |
| OP | <0.01% | $0.277608 | 10.0534 | $2.79 | |
| OP | <0.01% | $4.85 | 0.4768 | $2.31 | |
| OP | <0.01% | $0.953728 | 2.0819 | $1.99 | |
| OP | <0.01% | $88,913 | 0.00002183 | $1.94 | |
| OP | <0.01% | $0.045819 | 40.1625 | $1.84 | |
| OP | <0.01% | $0.497981 | 2.8929 | $1.44 | |
| OP | <0.01% | $3,617.81 | 0.00033205 | $1.2 | |
| OP | <0.01% | $6.86 | 0.1747 | $1.2 | |
| OP | <0.01% | $0.077611 | 14.3941 | $1.12 | |
| OP | <0.01% | $0.998289 | 0.865 | $0.8635 | |
| OP | <0.01% | $3,617.82 | 0.00019408 | $0.7021 | |
| OP | <0.01% | $1.18 | 0.5202 | $0.6138 | |
| OP | <0.01% | $0.031651 | 18.8326 | $0.596 | |
| OP | <0.01% | $110,933 | 0.00000527 | $0.5846 | |
| OP | <0.01% | $0.519707 | 1.1155 | $0.5797 | |
| OP | <0.01% | $1.16 | 0.4909 | $0.5694 | |
| OP | <0.01% | $0.174869 | 2.947 | $0.5153 | |
| OP | <0.01% | $0.145583 | 2.899 | $0.422 | |
| OP | <0.01% | $0.015751 | 26.3862 | $0.4156 | |
| OP | <0.01% | $0.00 | 0.00012579 | $0.00 | |
| OP | <0.01% | $88,922 | 0.00000379 | $0.337 | |
| OP | <0.01% | $0.010691 | 30.0196 | $0.3209 | |
| OP | <0.01% | $2,281.89 | 0.00011894 | $0.2714 | |
| OP | <0.01% | $0.057035 | 4.6473 | $0.265 | |
| OP | <0.01% | $2,947.48 | 0.00007806 | $0.23 | |
| OP | <0.01% | $0.992074 | 0.1799 | $0.1784 | |
| OP | <0.01% | $0.001997 | 84.7314 | $0.1692 | |
| OP | <0.01% | $1 | 0.154 | $0.1539 | |
| SONIC | <0.01% | $0.998522 | 90.0102 | $89.88 | |
| SONIC | <0.01% | $1.19 | 71.2693 | $84.81 | |
| SONIC | <0.01% | $0.999184 | 56.5665 | $56.52 | |
| SONIC | <0.01% | $0.008204 | 6,272.3822 | $51.46 | |
| SONIC | <0.01% | $0.070154 | 685.8426 | $48.11 | |
| SONIC | <0.01% | $0.07594 | 572.2999 | $43.46 | |
| SONIC | <0.01% | $0.002236 | 18,230.1279 | $40.77 | |
| SONIC | <0.01% | $2,952.82 | 0.0137 | $40.58 | |
| SONIC | <0.01% | $3.39 | 10.2889 | $34.88 | |
| SONIC | <0.01% | $0.074032 | 295.574 | $21.88 | |
| SONIC | <0.01% | $0.00957 | 1,838.8011 | $17.6 | |
| SONIC | <0.01% | $0.013527 | 1,172.1672 | $15.86 | |
| SONIC | <0.01% | $1.58 | 9.6147 | $15.19 | |
| SONIC | <0.01% | $0.001039 | 14,017.1562 | $14.57 | |
| SONIC | <0.01% | $2,947.07 | 0.00361556 | $10.66 | |
| SONIC | <0.01% | $0.212976 | 40.0483 | $8.53 | |
| SONIC | <0.01% | $0.001778 | 4,542.2299 | $8.08 | |
| SONIC | <0.01% | $0.99717 | 7.4738 | $7.45 | |
| SONIC | <0.01% | $0.000441 | 14,673.3947 | $6.48 | |
| SONIC | <0.01% | $0.070068 | 57.413 | $4.02 | |
| SONIC | <0.01% | $1.18 | 3.3252 | $3.92 | |
| SONIC | <0.01% | $1.18 | 2.9709 | $3.51 | |
| SONIC | <0.01% | $1.06 | 3.1167 | $3.3 | |
| SONIC | <0.01% | $0.140326 | 16.2081 | $2.27 | |
| SONIC | <0.01% | $0.006309 | 342.4675 | $2.16 | |
| SONIC | <0.01% | $0.999703 | 1.7554 | $1.75 | |
| SONIC | <0.01% | $0.01826 | 93.5217 | $1.71 | |
| SONIC | <0.01% | $0.004674 | 298.3502 | $1.39 | |
| SONIC | <0.01% | $88,915 | 0.00001371 | $1.22 | |
| SONIC | <0.01% | <$0.000001 | 13,811,967.1267 | $0.964 | |
| SONIC | <0.01% | $1.01 | 0.8624 | $0.8736 | |
| SONIC | <0.01% | $0.000059 | 8,124.1585 | $0.4755 | |
| SONIC | <0.01% | $0.007688 | 30.7835 | $0.2366 | |
| SONIC | <0.01% | $228.68 | 0.00102595 | $0.2346 | |
| SONIC | <0.01% | $0.002654 | 80.1924 | $0.2128 | |
| SONIC | <0.01% | $0.001997 | 104.3244 | $0.2083 | |
| SONIC | <0.01% | $0.032466 | 6.3935 | $0.2075 | |
| SONIC | <0.01% | $1 | 0.1742 | $0.1745 | |
| SONIC | <0.01% | $0.001487 | 113.9181 | $0.1693 | |
| SONIC | <0.01% | $2.02 | 0.0616 | $0.1244 | |
| SONIC | <0.01% | $0.000243 | 465.7503 | $0.1132 | |
| SONIC | <0.01% | $0.070207 | 1.1988 | $0.084161 | |
| LINEA | <0.01% | $0.999725 | 82.3983 | $82.38 | |
| LINEA | <0.01% | $2,953.75 | 0.0277 | $81.95 | |
| LINEA | <0.01% | $0.006354 | 11,850.8993 | $75.3 | |
| LINEA | <0.01% | $3,617.81 | 0.0156 | $56.28 | |
| LINEA | <0.01% | $88,922 | 0.00062942 | $55.97 | |
| LINEA | <0.01% | $0.033192 | 1,000.0546 | $33.19 | |
| LINEA | <0.01% | $0.042289 | 695.772 | $29.42 | |
| LINEA | <0.01% | $0.999262 | 22.5783 | $22.56 | |
| LINEA | <0.01% | $0.000431 | 47,287.962 | $20.37 | |
| LINEA | <0.01% | $2,947.48 | 0.00600386 | $17.7 | |
| LINEA | <0.01% | $0.997899 | 16.8528 | $16.82 | |
| LINEA | <0.01% | $0.001869 | 8,363.2892 | $15.63 | |
| LINEA | <0.01% | $3,310.86 | 0.00427593 | $14.16 | |
| LINEA | <0.01% | $0.000184 | 76,689.4655 | $14.14 | |
| LINEA | <0.01% | $0.998543 | 14.0835 | $14.06 | |
| LINEA | <0.01% | $2,953.21 | 0.00349663 | $10.33 | |
| LINEA | <0.01% | $0.999343 | 9.2151 | $9.21 | |
| LINEA | <0.01% | $0.00 | 0.00205458 | $0.00 | |
| LINEA | <0.01% | $1 | 6.4022 | $6.4 | |
| LINEA | <0.01% | $1.18 | 5.3053 | $6.26 | |
| LINEA | <0.01% | $3,098.01 | 0.0008321 | $2.58 | |
| LINEA | <0.01% | $0.000005 | 443,342.758 | $2.03 | |
| LINEA | <0.01% | $0.007167 | 239.482 | $1.72 | |
| LINEA | <0.01% | $0.174869 | 9.7631 | $1.71 | |
| LINEA | <0.01% | $0.026648 | 62.8223 | $1.67 | |
| LINEA | <0.01% | $1.01 | 1.3028 | $1.32 | |
| LINEA | <0.01% | $0.993667 | 0.924 | $0.9181 | |
| LINEA | <0.01% | $0.998699 | 0.6863 | $0.6853 | |
| LINEA | <0.01% | $1.91 | 0.2453 | $0.4684 | |
| LINEA | <0.01% | $4.85 | 0.0352 | $0.1708 | |
| LINEA | <0.01% | $0.125039 | 0.9098 | $0.1137 | |
| AVAX | <0.01% | $264,122 | 0.00043852 | $115.82 | |
| AVAX | <0.01% | $89,043 | 0.00042801 | $38.11 | |
| AVAX | <0.01% | $0.999312 | 34.4214 | $34.4 | |
| AVAX | <0.01% | $12.02 | 2.6989 | $32.43 | |
| AVAX | <0.01% | $12.18 | 2.6579 | $32.36 | |
| AVAX | <0.01% | $2,952.82 | 0.00988547 | $29.19 | |
| AVAX | <0.01% | $0.998394 | 28.8521 | $28.81 | |
| AVAX | <0.01% | $1.18 | 23.5533 | $27.86 | |
| AVAX | <0.01% | $0.998394 | 26.3869 | $26.34 | |
| AVAX | <0.01% | $5,530.05 | 0.00379368 | $20.98 | |
| AVAX | <0.01% | $14.99 | 1.2457 | $18.67 | |
| AVAX | <0.01% | $0.99974 | 15.5321 | $15.53 | |
| AVAX | <0.01% | <$0.000001 | 108,430,568.7267 | $14.89 | |
| AVAX | <0.01% | $89,022.33 | 0.00013086 | $11.65 | |
| AVAX | <0.01% | $0.000434 | 24,166.5537 | $10.5 | |
| AVAX | <0.01% | $0.999625 | 9.9732 | $9.97 | |
| AVAX | <0.01% | $5,050.04 | 0.001927 | $9.73 | |
| AVAX | <0.01% | $12.02 | 0.6449 | $7.75 | |
| AVAX | <0.01% | $0.002419 | 2,576.9107 | $6.23 | |
| AVAX | <0.01% | $0.035615 | 126.3676 | $4.5 | |
| AVAX | <0.01% | $0.022098 | 200.8576 | $4.44 | |
| AVAX | <0.01% | $7.23 | 0.5867 | $4.24 | |
| AVAX | <0.01% | $0.000367 | 10,749.5832 | $3.95 | |
| AVAX | <0.01% | $89,010 | 0.00003253 | $2.9 | |
| AVAX | <0.01% | $0.99968 | 2.6795 | $2.68 | |
| AVAX | <0.01% | $0.033389 | 66.3656 | $2.22 | |
| AVAX | <0.01% | $0.003025 | 707.4826 | $2.14 | |
| AVAX | <0.01% | $0.001567 | 1,236.5111 | $1.94 | |
| AVAX | <0.01% | <$0.000001 | 711,191,071.0466 | $1.49 | |
| AVAX | <0.01% | $0.992964 | 1.4801 | $1.47 | |
| AVAX | <0.01% | $0.999625 | 1.4091 | $1.41 | |
| AVAX | <0.01% | $0.056583 | 21.4661 | $1.21 | |
| AVAX | <0.01% | $0.006386 | 181.3603 | $1.16 | |
| AVAX | <0.01% | $2,958.7 | 0.0003896 | $1.15 | |
| AVAX | <0.01% | $0.057261 | 18.3807 | $1.05 | |
| AVAX | <0.01% | $13.09 | 0.0508 | $0.6654 | |
| AVAX | <0.01% | $0.020467 | 26.4527 | $0.5414 | |
| AVAX | <0.01% | $0.000206 | 1,995.2811 | $0.41 | |
| AVAX | <0.01% | $0.99595 | 0.2492 | $0.2482 | |
| AVAX | <0.01% | $741.73 | 0.00031871 | $0.2363 | |
| AVAX | <0.01% | $89,052 | 0.00000265 | $0.2359 | |
| AVAX | <0.01% | $0.017506 | 10.4276 | $0.1825 | |
| AVAX | <0.01% | $2.38 | 0.0719 | $0.1711 | |
| MANTLE | <0.01% | $0.99955 | 82.661 | $82.62 | |
| MANTLE | <0.01% | $0.994042 | 72.7638 | $72.33 | |
| MANTLE | <0.01% | $0.907722 | 37.6183 | $34.15 | |
| MANTLE | <0.01% | $0.003817 | 8,717.2121 | $33.27 | |
| MANTLE | <0.01% | $3,209.03 | 0.00960807 | $30.83 | |
| MANTLE | <0.01% | $0.908777 | 31.9229 | $29.01 | |
| MANTLE | <0.01% | $3,209.7 | 0.00887563 | $28.49 | |
| MANTLE | <0.01% | $0.99829 | 23.9931 | $23.95 | |
| MANTLE | <0.01% | $1.22 | 15.857 | $19.35 | |
| MANTLE | <0.01% | $0.998697 | 12.1614 | $12.15 | |
| MANTLE | <0.01% | $0.999477 | 11.491 | $11.49 | |
| MANTLE | <0.01% | $0.023035 | 151.6489 | $3.49 | |
| MANTLE | <0.01% | $2,958.01 | 0.00073132 | $2.16 | |
| MANTLE | <0.01% | $1 | 0.4893 | $0.4898 | |
| MANTLE | <0.01% | $1.1 | 0.1218 | $0.1339 | |
| MANTLE | <0.01% | $0.982424 | 0.1342 | $0.1318 | |
| SCROLL | <0.01% | $2,952.83 | 0.021 | $61.91 | |
| SCROLL | <0.01% | $2,953.46 | 0.0165 | $48.75 | |
| SCROLL | <0.01% | $0.998398 | 42.1867 | $42.12 | |
| SCROLL | <0.01% | $0.999603 | 34.5528 | $34.54 | |
| SCROLL | <0.01% | $3,145.49 | 0.0107 | $33.79 | |
| SCROLL | <0.01% | $3,208.02 | 0.00373194 | $11.97 | |
| SCROLL | <0.01% | $89,017.22 | 0.00013211 | $11.76 | |
| SCROLL | <0.01% | $0.074513 | 47.2622 | $3.52 | |
| SCROLL | <0.01% | $3,424.07 | 0.00072974 | $2.5 | |
| SCROLL | <0.01% | $3,619.77 | 0.00008457 | $0.3061 | |
| UNI | <0.01% | $2,952.08 | 0.0117 | $34.66 | |
| UNI | <0.01% | $2,952.9 | 0.0089521 | $26.43 | |
| UNI | <0.01% | $0.999613 | 19.4038 | $19.4 | |
| UNI | <0.01% | $89,017.22 | 0.00016426 | $14.62 | |
| UNI | <0.01% | $4.85 | 1.4805 | $7.18 | |
| UNI | <0.01% | $23.49 | 0.0824 | $1.94 |
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.