Polygon Sponsored slots available. Book your slot here!
Source Code
Latest 25 from a total of 10,818 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Buy Tickets With... | 82043733 | 34 hrs ago | IN | 6.9488858 POL | 0.129811 | ||||
| Buy Tickets With... | 82035632 | 38 hrs ago | IN | 0.93006137 POL | 0.18625376 | ||||
| Buy Tickets | 82032642 | 40 hrs ago | IN | 0 POL | 0.19517803 | ||||
| Buy Tickets | 82032601 | 40 hrs ago | IN | 0 POL | 0.20480801 | ||||
| Buy Tickets | 82021467 | 46 hrs ago | IN | 0 POL | 0.09699352 | ||||
| Buy Tickets | 82021360 | 46 hrs ago | IN | 0 POL | 0.11552393 | ||||
| Buy Tickets With... | 82007091 | 2 days ago | IN | 26.78677116 POL | 0.25447372 | ||||
| Buy Tickets With... | 81995481 | 2 days ago | IN | 6.69669279 POL | 0.15314542 | ||||
| Buy Tickets | 81992518 | 2 days ago | IN | 0 POL | 0.06391841 | ||||
| Buy Tickets With... | 81975718 | 3 days ago | IN | 6.67207383 POL | 0.3792964 | ||||
| Buy Tickets | 81961492 | 3 days ago | IN | 0 POL | 0.0749638 | ||||
| Buy Tickets With... | 81953545 | 3 days ago | IN | 0.9061766 POL | 0.20216875 | ||||
| Buy Tickets | 81935249 | 3 days ago | IN | 0 POL | 0.08718635 | ||||
| Buy Tickets | 81934998 | 3 days ago | IN | 0 POL | 0.2095491 | ||||
| Buy Tickets With... | 81915510 | 4 days ago | IN | 6.86697637 POL | 0.05912955 | ||||
| Buy Tickets | 81914170 | 4 days ago | IN | 0 POL | 0.01361697 | ||||
| Buy Tickets With... | 81914009 | 4 days ago | IN | 6.929937 POL | 0.01730246 | ||||
| Buy Tickets With... | 81904155 | 4 days ago | IN | 0.95697086 POL | 0.31905024 | ||||
| Buy Tickets With... | 81882400 | 5 days ago | IN | 7.10381047 POL | 0.03624075 | ||||
| Buy Tickets With... | 81880731 | 5 days ago | IN | 0.96468948 POL | 0.05417275 | ||||
| Buy Tickets | 81875553 | 5 days ago | IN | 0 POL | 0.01746783 | ||||
| Buy Tickets With... | 81860109 | 5 days ago | IN | 50.48984992 POL | 0.37503668 | ||||
| Buy Tickets With... | 81860034 | 5 days ago | IN | 50.48984992 POL | 0.47345114 | ||||
| Buy Tickets With... | 81859016 | 5 days ago | IN | 0.97946386 POL | 0.25266623 | ||||
| Buy Tickets With... | 81852066 | 5 days ago | IN | 21.32297456 POL | 0.08410392 |
Latest 25 internal transactions (View All)
| Parent Transaction Hash | Block | From | To | |||
|---|---|---|---|---|---|---|
| 82043733 | 34 hrs ago | 0.60453644 POL | ||||
| 82043733 | 34 hrs ago | 0.60453644 POL | ||||
| 82043733 | 34 hrs ago | 6.9488858 POL | ||||
| 82035632 | 38 hrs ago | 0.07205868 POL | ||||
| 82035632 | 38 hrs ago | 0.07205868 POL | ||||
| 82035632 | 38 hrs ago | 0.93006137 POL | ||||
| 82007091 | 2 days ago | 2.376129 POL | ||||
| 82007091 | 2 days ago | 2.376129 POL | ||||
| 82007091 | 2 days ago | 26.78677116 POL | ||||
| 81995481 | 2 days ago | 0.60855685 POL | ||||
| 81995481 | 2 days ago | 0.60855685 POL | ||||
| 81995481 | 2 days ago | 6.69669279 POL | ||||
| 81975718 | 3 days ago | 0.55953277 POL | ||||
| 81975718 | 3 days ago | 0.55953277 POL | ||||
| 81975718 | 3 days ago | 6.67207383 POL | ||||
| 81953545 | 3 days ago | 0.08002383 POL | ||||
| 81953545 | 3 days ago | 0.08002383 POL | ||||
| 81953545 | 3 days ago | 0.9061766 POL | ||||
| 81915510 | 4 days ago | 0.69615807 POL | ||||
| 81915510 | 4 days ago | 0.69615807 POL | ||||
| 81915510 | 4 days ago | 6.86697637 POL | ||||
| 81914009 | 4 days ago | 0.66966319 POL | ||||
| 81914009 | 4 days ago | 0.66966319 POL | ||||
| 81914009 | 4 days ago | 6.929937 POL | ||||
| 81904155 | 4 days ago | 0.09670626 POL |
Cross-Chain Transactions
Loading...
Loading
Contract Name:
TicketRouterV3
Compiler Version
v0.8.25+commit.b61c2a91
Optimization Enabled:
Yes with 999999 runs
Other Settings:
shanghai EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: -- BCOM --
pragma solidity =0.8.25;
import "./Interfaces/IERC20V.sol";
import "./Interfaces/IWETH.sol";
import "./Interfaces/ISwapRouter.sol";
import "./Interfaces/IQuoter.sol";
import "./Interfaces/IScratchContract.sol";
contract TicketRouterV3 {
address public immutable WETH;
address public immutable VERSE_TOKEN;
address public immutable SWAP_ROUTER;
address public immutable QUOTER;
uint24 public constant DEFAULT_POOL_FEE = 3000;
uint24 public constant VERSE_WETH_POOL_FEE = 3000;
mapping(address => uint24) public customPoolFees;
address public constant WMATIC = 0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270;
receive()
external
payable {}
fallback()
external
payable {}
modifier onlyOwner() {
require(
msg.sender == owner,
"TicketRouterV3: NOT_OWNER"
);
_;
}
address private owner;
event TokenPurchase(
address indexed buyer,
address indexed token,
uint256 amount,
uint256 receivedAmount
);
event FeeUpdated(
address indexed token,
uint24 fee
);
constructor(
address _weth,
address _verseToken,
address _swapRouter,
address _quoter
) {
WETH = _weth;
VERSE_TOKEN = _verseToken;
SWAP_ROUTER = _swapRouter;
QUOTER = _quoter;
owner = msg.sender;
}
function setCustomPoolFee(
address _token,
uint24 _fee
)
external
onlyOwner
{
customPoolFees[_token] = _fee;
emit FeeUpdated(
_token,
_fee
);
}
function getPoolFee(
address _token
)
public
view
returns (uint24)
{
uint24 customFee = customPoolFees[
_token
];
return customFee > 0
? customFee
: DEFAULT_POOL_FEE;
}
function encodePath(
address _tokenIn,
address _tokenMid,
address _tokenOut,
uint24 _fee1,
uint24 _fee2
)
internal
pure
returns (bytes memory)
{
return abi.encodePacked(
_tokenOut,
_fee2,
_tokenMid,
_fee1,
_tokenIn
);
}
function _encodeDirectPath(
address _tokenIn,
address _tokenOut,
uint24 _fee
)
internal
pure
returns (bytes memory)
{
return abi.encodePacked(
_tokenOut,
_fee,
_tokenIn
);
}
function getNativePriceForTickets(
address _scratcherContract,
uint256 _ticketCount
)
public
returns (uint256 nativeAmount)
{
// Get the base cost of a ticket from the scratcher contract
IScratchContract scratcher = IScratchContract(
_scratcherContract
);
// Calculate total VERSE tokens needed for all tickets
uint256 totalVerseNeeded = scratcher.baseCost() * _ticketCount;
// Step 1: Get WETH needed for VERSE
bytes memory pathStep1 = abi.encodePacked(
VERSE_TOKEN,
VERSE_WETH_POOL_FEE,
WETH
);
// Get WETH amount needed for VERSE tokens
uint256 wethNeeded = IQuoter(QUOTER).quoteExactOutput(
pathStep1,
totalVerseNeeded
);
// Step 2: Get WMATIC needed for WETH
bytes memory pathStep2 = abi.encodePacked(
WETH,
getPoolFee(WMATIC),
WMATIC
);
// Get the final WMATIC amount needed
return IQuoter(QUOTER).quoteExactOutput(
pathStep2,
wethNeeded
);
}
function buyTicketsWithNative(
address _scratcherContract,
uint256 _ticketCount
)
external
payable
{
_buyTicketsWithNative(
_scratcherContract,
_ticketCount,
msg.sender
);
}
function giftTicketsWithNative(
address _scratcherContract,
uint256 _ticketCount,
address _recipient
)
external
payable
{
_buyTicketsWithNative(
_scratcherContract,
_ticketCount,
_recipient
);
}
function _buyTicketsWithNative(
address _scratcherContract,
uint256 _ticketCount,
address _recipient
)
internal
{
require(
_ticketCount > 0,
"TicketRouterV3: INVALID_COUNT"
);
IScratchContract scratcher = IScratchContract(
_scratcherContract
);
uint256 totalVerseNeeded = scratcher.baseCost()
* _ticketCount;
// On Polygon, native currency is MATIC, but VERSE pairs with WETH
// So we need to:
// 1. First wrap MATIC to WMATIC
// 2. Then swap WMATIC for WETH
// 3. Then swap WETH for VERSE
// First wrap native MATIC to WMATIC
IWETH(WMATIC).deposit{
value: msg.value
}();
uint256 nativeRequired = getNativePriceForTickets(
_scratcherContract,
_ticketCount
);
require(
msg.value >= nativeRequired,
"TicketRouterV3: INSUFFICIENT_NATIVE_CURRENCY"
);
// Approve WMATIC for swapping
IERC20V(WMATIC).approve(
SWAP_ROUTER,
msg.value
);
bytes memory wethToVersePath = abi.encodePacked(
VERSE_TOKEN,
VERSE_WETH_POOL_FEE,
WETH
);
// Quote how much WETH is needed
uint256 wethNeeded = IQuoter(QUOTER).quoteExactOutput(
wethToVersePath,
totalVerseNeeded
);
// Step 1: Convert WMATIC to WETH
ISwapRouter.ExactOutputSingleParams memory wmaticToWethParams = ISwapRouter.ExactOutputSingleParams({
tokenIn: WMATIC,
tokenOut: WETH,
fee: getPoolFee(WMATIC),
recipient: address(this),
deadline: block.timestamp,
amountOut: wethNeeded,
amountInMaximum: msg.value,
sqrtPriceLimitX96: 0
});
// Get WETH from WMATIC
uint256 wmaticUsed = ISwapRouter(SWAP_ROUTER).exactOutputSingle(
wmaticToWethParams
);
// Approve WETH for second swap
IERC20V(WETH).approve(
SWAP_ROUTER,
wethNeeded
);
// Step 2: Convert WETH to VERSE
ISwapRouter.ExactOutputSingleParams memory wethToVerseParams = ISwapRouter.ExactOutputSingleParams({
tokenIn: WETH,
tokenOut: VERSE_TOKEN,
fee: VERSE_WETH_POOL_FEE,
recipient: address(this),
deadline: block.timestamp,
amountOut: totalVerseNeeded,
amountInMaximum: wethNeeded,
sqrtPriceLimitX96: 0
});
// Get VERSE from WETH
ISwapRouter(SWAP_ROUTER).exactOutputSingle(
wethToVerseParams
);
// Refund unused WMATIC
if (msg.value > wmaticUsed) {
uint256 refundAmount = msg.value - wmaticUsed;
// Withdraw WMATIC back to native MATIC
IWETH(WMATIC).withdraw(
refundAmount
);
// Send the refund to the user
payable(msg.sender).transfer(
refundAmount
);
}
// Approve VERSE for the scratcher contract
IERC20V(VERSE_TOKEN).approve(
_scratcherContract,
totalVerseNeeded
);
// Purchase tickets
scratcher.bulkPurchase(
_recipient,
_ticketCount
);
emit TokenPurchase(
_recipient,
WMATIC,
wmaticUsed,
totalVerseNeeded
);
}
function buyTickets(
address scratcherContract,
uint256 _ticketCount
)
public
{
_buyTickets(
scratcherContract,
_ticketCount,
msg.sender
);
}
function giftTickets(
address scratcherContract,
uint256 _ticketCount,
address _recipient
)
public
{
_buyTickets(
scratcherContract,
_ticketCount,
_recipient
);
}
function _buyTickets(
address scratcherContract,
uint256 _ticketCount,
address _recipient
)
internal
{
require(
_ticketCount > 0,
"TicketRouterV3: INVALID_COUNT"
);
IScratchContract scratcher = IScratchContract(
scratcherContract
);
uint256 totalCost = scratcher.baseCost()
* _ticketCount;
IERC20V(VERSE_TOKEN).transferFrom(
msg.sender,
address(this),
totalCost
);
IERC20V(VERSE_TOKEN).approve(
scratcherContract,
totalCost
);
scratcher.bulkPurchase(
_recipient,
_ticketCount
);
emit TokenPurchase(
_recipient,
VERSE_TOKEN,
totalCost,
totalCost
);
}
function getTokenPriceForTickets(
address _scratcherContract,
uint256 _ticketCount,
address _inputToken
)
public
returns (uint256 tokenAmount)
{
IScratchContract scratcher = IScratchContract(
_scratcherContract
);
uint256 totalVerseNeeded = scratcher.baseCost()
* _ticketCount;
// If the input token is VERSE, return the exact amount
if (_inputToken == VERSE_TOKEN) {
return totalVerseNeeded;
}
// If the input token is WETH, use direct swap path
if (_inputToken == WETH) {
bytes memory pathWeth = abi.encodePacked(
VERSE_TOKEN,
VERSE_WETH_POOL_FEE,
WETH
);
return IQuoter(QUOTER).quoteExactOutput(
pathWeth,
totalVerseNeeded
);
}
uint24 tokenWethFee = getPoolFee(
_inputToken
);
bytes memory path = encodePath(
_inputToken,
WETH,
VERSE_TOKEN,
tokenWethFee,
VERSE_WETH_POOL_FEE
);
return IQuoter(QUOTER).quoteExactOutput(
path,
totalVerseNeeded
);
}
function testEncodePath(
address _tokenIn,
address _tokenMid,
address _tokenOut,
uint24 _fee1,
uint24 _fee2
)
public
pure
returns (bytes memory)
{
return encodePath(
_tokenIn,
_tokenMid,
_tokenOut,
_fee1,
_fee2
);
}
function testEncodeDirectPath(
address _tokenIn,
address _tokenOut,
uint24 _fee
)
public
pure
returns (bytes memory)
{
return _encodeDirectPath(
_tokenIn,
_tokenOut,
_fee
);
}
function _buyWithToken(
address _scratcherContract,
uint256 _ticketCount,
address _inputToken,
uint256 _maxTokenAmount,
address _recipient
)
internal
{
require(
_ticketCount > 0,
"TicketRouterV3: INVALID_COUNT"
);
// Special case for VERSE token to skip swapping
if (_inputToken == VERSE_TOKEN) {
buyTickets(
_scratcherContract,
_ticketCount
);
return;
}
IScratchContract scratcher = IScratchContract(
_scratcherContract
);
uint256 totalVerseNeeded = scratcher.baseCost()
* _ticketCount;
// Get required token amount
uint256 tokenRequired = getTokenPriceForTickets(
_scratcherContract,
_ticketCount,
_inputToken
);
require(
_maxTokenAmount >= tokenRequired,
"TicketRouterV3: INVALID_COUNT"
);
// Transfer tokens from user to this contract
IERC20V(_inputToken).transferFrom(
msg.sender,
address(this),
_maxTokenAmount
);
// Approve tokens for router
IERC20V(_inputToken).approve(
SWAP_ROUTER,
_maxTokenAmount
);
uint256 amountIn;
if (_inputToken == WETH) {
ISwapRouter.ExactOutputSingleParams memory params = ISwapRouter.ExactOutputSingleParams({
tokenIn: WETH,
tokenOut: VERSE_TOKEN,
fee: VERSE_WETH_POOL_FEE,
recipient: address(this),
deadline: block.timestamp,
amountOut: totalVerseNeeded,
amountInMaximum: _maxTokenAmount,
sqrtPriceLimitX96: 0
});
amountIn = ISwapRouter(SWAP_ROUTER).exactOutputSingle(
params
);
} else {
uint24 tokenWethFee = getPoolFee(
_inputToken
);
bytes memory wethToVersePath = abi.encodePacked(
VERSE_TOKEN,
VERSE_WETH_POOL_FEE,
WETH
);
uint256 wethNeeded = IQuoter(QUOTER).quoteExactOutput(
wethToVersePath,
totalVerseNeeded
);
// Step 2: Swap input token to WETH
ISwapRouter.ExactOutputSingleParams memory tokenToWethParams = ISwapRouter.ExactOutputSingleParams({
tokenIn: _inputToken,
tokenOut: WETH,
fee: tokenWethFee,
recipient: address(this),
deadline: block.timestamp,
amountOut: wethNeeded,
amountInMaximum: _maxTokenAmount,
sqrtPriceLimitX96: 0
});
amountIn = ISwapRouter(SWAP_ROUTER).exactOutputSingle(
tokenToWethParams
);
// Step 3: Swap WETH to VERSE
IERC20V(WETH).approve(
SWAP_ROUTER,
wethNeeded
);
ISwapRouter.ExactOutputSingleParams memory wethToVerseParams = ISwapRouter.ExactOutputSingleParams({
tokenIn: WETH,
tokenOut: VERSE_TOKEN,
fee: VERSE_WETH_POOL_FEE,
recipient: address(this),
deadline: block.timestamp,
amountOut: totalVerseNeeded,
amountInMaximum: wethNeeded,
sqrtPriceLimitX96: 0
});
ISwapRouter(SWAP_ROUTER).exactOutputSingle(
wethToVerseParams
);
}
// Refund unused tokens
if (_maxTokenAmount > amountIn) {
IERC20V(_inputToken).transfer(
msg.sender,
_maxTokenAmount - amountIn
);
}
// Approve VERSE for the scratcher contract
IERC20V(VERSE_TOKEN).approve(
_scratcherContract,
totalVerseNeeded
);
// Purchase tickets
scratcher.bulkPurchase(
_recipient,
_ticketCount
);
emit TokenPurchase(
_recipient,
_inputToken,
amountIn,
totalVerseNeeded
);
}
function buyWithToken(
address _scratcherContract,
uint256 _ticketCount,
address _inputToken,
uint256 _maxTokenAmount
)
public
{
_buyWithToken(
_scratcherContract,
_ticketCount,
_inputToken,
_maxTokenAmount,
msg.sender
);
}
function giftWithToken(
address _scratcherContract,
uint256 _ticketCount,
address _inputToken,
uint256 _maxTokenAmount,
address _recipient
)
public
{
_buyWithToken(
_scratcherContract,
_ticketCount,
_inputToken,
_maxTokenAmount,
_recipient
);
}
}// SPDX-License-Identifier: -- BCOM --
pragma solidity =0.8.25;
interface IERC20V {
function balanceOf(address account)
external
view
returns (uint256);
function approve(
address spender,
uint256 amount
)
external
returns (bool);
function transfer(
address recipient,
uint256 amount
)
external
returns (bool);
function transferFrom(
address sender,
address recipient,
uint256 amount
)
external
returns (bool);
}// SPDX-License-Identifier: -- BCOM --
pragma solidity =0.8.25;
import "./IERC20V.sol";
interface IWETH is IERC20V {
function deposit()
external
payable;
function withdraw(uint256)
external;
}// SPDX-License-Identifier: -- BCOM --
pragma solidity =0.8.25;
interface ISwapRouter {
struct ExactInputSingleParams {
address tokenIn;
address tokenOut;
uint24 fee;
address recipient;
uint256 deadline;
uint256 amountIn;
uint256 amountOutMinimum;
uint160 sqrtPriceLimitX96;
}
struct ExactInputParams {
bytes path;
address recipient;
uint256 deadline;
uint256 amountIn;
uint256 amountOutMinimum;
}
struct ExactOutputSingleParams {
address tokenIn;
address tokenOut;
uint24 fee;
address recipient;
uint256 deadline;
uint256 amountOut;
uint256 amountInMaximum;
uint160 sqrtPriceLimitX96;
}
struct ExactOutputParams {
bytes path;
address recipient;
uint256 deadline;
uint256 amountOut;
uint256 amountInMaximum;
}
function exactInputSingle(
ExactInputSingleParams calldata params
)
external
payable
returns (uint256 amountOut);
function exactInput(
ExactInputParams calldata params
)
external
payable
returns (uint256 amountOut);
function exactOutputSingle(
ExactOutputSingleParams calldata params
)
external
payable
returns (uint256 amountIn);
function exactOutput(
ExactOutputParams calldata params
)
external
payable
returns (uint256 amountIn);
}// SPDX-License-Identifier: -- BCOM --
pragma solidity =0.8.25;
interface IQuoter {
function quoteExactOutput(
bytes memory path,
uint256 amountOut
)
external
returns (uint256 amountIn);
}// SPDX-License-Identifier: -- BCOM --
pragma solidity =0.8.25;
interface IScratchContract {
function bulkPurchase(
address _receiver,
uint256 _ticketCount
)
external;
function baseCost()
external
view
returns (uint256);
}{
"remappings": [
"@ensdomains/=node_modules/@ensdomains/",
"@ethereum-waffle/=node_modules/@ethereum-waffle/",
"ds-test/=lib/forge-std/lib/ds-test/src/",
"eth-gas-reporter/=node_modules/eth-gas-reporter/",
"forge-std/=lib/forge-std/src/",
"hardhat/=node_modules/hardhat/"
],
"optimizer": {
"enabled": true,
"runs": 999999
},
"metadata": {
"useLiteralContent": false,
"bytecodeHash": "ipfs",
"appendCBOR": true
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"evmVersion": "shanghai",
"viaIR": false,
"libraries": {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_weth","type":"address"},{"internalType":"address","name":"_verseToken","type":"address"},{"internalType":"address","name":"_swapRouter","type":"address"},{"internalType":"address","name":"_quoter","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint24","name":"fee","type":"uint24"}],"name":"FeeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"buyer","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"receivedAmount","type":"uint256"}],"name":"TokenPurchase","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"DEFAULT_POOL_FEE","outputs":[{"internalType":"uint24","name":"","type":"uint24"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"QUOTER","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SWAP_ROUTER","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VERSE_TOKEN","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VERSE_WETH_POOL_FEE","outputs":[{"internalType":"uint24","name":"","type":"uint24"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WMATIC","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"scratcherContract","type":"address"},{"internalType":"uint256","name":"_ticketCount","type":"uint256"}],"name":"buyTickets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_scratcherContract","type":"address"},{"internalType":"uint256","name":"_ticketCount","type":"uint256"}],"name":"buyTicketsWithNative","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_scratcherContract","type":"address"},{"internalType":"uint256","name":"_ticketCount","type":"uint256"},{"internalType":"address","name":"_inputToken","type":"address"},{"internalType":"uint256","name":"_maxTokenAmount","type":"uint256"}],"name":"buyWithToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"customPoolFees","outputs":[{"internalType":"uint24","name":"","type":"uint24"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_scratcherContract","type":"address"},{"internalType":"uint256","name":"_ticketCount","type":"uint256"}],"name":"getNativePriceForTickets","outputs":[{"internalType":"uint256","name":"nativeAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"getPoolFee","outputs":[{"internalType":"uint24","name":"","type":"uint24"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_scratcherContract","type":"address"},{"internalType":"uint256","name":"_ticketCount","type":"uint256"},{"internalType":"address","name":"_inputToken","type":"address"}],"name":"getTokenPriceForTickets","outputs":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"scratcherContract","type":"address"},{"internalType":"uint256","name":"_ticketCount","type":"uint256"},{"internalType":"address","name":"_recipient","type":"address"}],"name":"giftTickets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_scratcherContract","type":"address"},{"internalType":"uint256","name":"_ticketCount","type":"uint256"},{"internalType":"address","name":"_recipient","type":"address"}],"name":"giftTicketsWithNative","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_scratcherContract","type":"address"},{"internalType":"uint256","name":"_ticketCount","type":"uint256"},{"internalType":"address","name":"_inputToken","type":"address"},{"internalType":"uint256","name":"_maxTokenAmount","type":"uint256"},{"internalType":"address","name":"_recipient","type":"address"}],"name":"giftWithToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint24","name":"_fee","type":"uint24"}],"name":"setCustomPoolFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenIn","type":"address"},{"internalType":"address","name":"_tokenOut","type":"address"},{"internalType":"uint24","name":"_fee","type":"uint24"}],"name":"testEncodeDirectPath","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenIn","type":"address"},{"internalType":"address","name":"_tokenMid","type":"address"},{"internalType":"address","name":"_tokenOut","type":"address"},{"internalType":"uint24","name":"_fee1","type":"uint24"},{"internalType":"uint24","name":"_fee2","type":"uint24"}],"name":"testEncodePath","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"pure","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
610100604052348015610010575f80fd5b50604051612fd6380380612fd683398101604081905261002f9161007e565b6001600160a01b0393841660805291831660a052821660c0521660e052600180546001600160a01b031916331790556100cf565b80516001600160a01b0381168114610079575f80fd5b919050565b5f805f8060808587031215610091575f80fd5b61009a85610063565b93506100a860208601610063565b92506100b660408601610063565b91506100c460608601610063565b905092959194509250565b60805160a05160c05160e051612d9961023d5f395f818161044f015281816107fe015281816109b001528181610bdf01528181610d85015281816112f4015261202801525f81816104f3015281816111580152818161145a015281816115a40152818161174c01528181611cbe01528181611e95015281816121410152818161226b015261241301525f818161028b0152818161064201528181610715015281816108b001528181610af1015281816112090152818161168a015281816118c201528181611a8f01528181611dd301528181611f3a015281816123510152818161259501528181612807015281816128d301526129e401525f81816104a10152818161069e015281816107670152818161090201528181610b4301528181610c5b0152818161125b015281816113ac015281816115d60152818161166501528181611d3b01528181611dae01528181611f8c015281816120c60152818161229d015261232c0152612d995ff3fe60806040526004361061014a575f3560e01c80637d1ca330116100b3578063b17419c51161006d578063c622cd8311610055578063c622cd8314610515578063e50ccd6d1461052a578063ed4df86e1461051557005b8063b17419c5146104c3578063c6005893146104e257005b80638dae88c21161009b5780638dae88c21461043e578063a301808614610471578063ad5c46481461049057005b80637d1ca3301461040c57806388f577671461041f57005b80634a144f5a116101045780634d95cad9116100ec5780634d95cad91461039957806356ff096e146103c05780636ba63846146103df57005b80634a144f5a146102d25780634ccf405b1461030257005b80633ae66b5c116101325780633ae66b5c1461022857806342fcc6fb1461024757806347c0127e1461027a57005b80630f2269c01461015357806333d7a4351461016657005b3661015157005b005b610151610161366004612a65565b610549565b348015610171575f80fd5b50610212610180366004612ab0565b604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606095861b811660208301527fffffff000000000000000000000000000000000000000000000000000000000060e894851b8116603484015296861b811660378301529390921b909416604b8201529390911b16604e830152805180830360420181526062909201905290565b60405161021f9190612b72565b60405180910390f35b348015610233575f80fd5b50610151610242366004612b84565b610559565b348015610252575f80fd5b50610266610261366004612bc5565b61056c565b60405162ffffff909116815260200161021f565b348015610285575f80fd5b506102ad7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161021f565b3480156102dd575f80fd5b506102666102ec366004612bc5565b5f6020819052908152604090205462ffffff1681565b34801561030d575f80fd5b5061021261031c366004612bde565b60408051606093841b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000908116602083015260e89390931b7fffffff00000000000000000000000000000000000000000000000000000000001660348201529390921b1660378301528051808303602b018152604b909201905290565b3480156103a4575f80fd5b506102ad730d500b1d8e8ef31e21c99d1db9a6444d3adf127081565b3480156103cb575f80fd5b506101516103da366004612c15565b6105ac565b3480156103ea575f80fd5b506103fe6103f9366004612a65565b6105c0565b60405190815260200161021f565b61015161041a366004612c5c565b610a33565b34801561042a575f80fd5b50610151610439366004612c5c565b610a42565b348015610449575f80fd5b506102ad7f000000000000000000000000000000000000000000000000000000000000000081565b34801561047c575f80fd5b506103fe61048b366004612c5c565b610a4d565b34801561049b575f80fd5b506102ad7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104ce575f80fd5b506101516104dd366004612c84565b610e0a565b3480156104ed575f80fd5b506102ad7f000000000000000000000000000000000000000000000000000000000000000081565b348015610520575f80fd5b50610266610bb881565b348015610535575f80fd5b50610151610544366004612a65565b610f1a565b610554838383610f25565b505050565b6105668484848433611a24565b50505050565b73ffffffffffffffffffffffffffffffffffffffff81165f9081526020819052604081205462ffffff16806105a357610bb86105a5565b805b9392505050565b6105b98585858585611a24565b5050505050565b5f808490505f848273ffffffffffffffffffffffffffffffffffffffff1663938225576040518163ffffffff1660e01b8152600401602060405180830381865afa158015610610573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106349190612cb5565b61063e9190612cf9565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361069c5791506105a59050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361087f576040517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000606090811b821660208401527e0bb8000000000000000000000000000000000000000000000000000000000060348401527f0000000000000000000000000000000000000000000000000000000000000000901b1660378201525f90604b01604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f2f80bb1d000000000000000000000000000000000000000000000000000000008252915073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690632f80bb1d906108359084908690600401612d10565b6020604051808303815f875af1158015610851573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108759190612cb5565b93505050506105a5565b5f6108898561056c565b604080517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000606090811b821660208401527e0bb8000000000000000000000000000000000000000000000000000000000060348401527f0000000000000000000000000000000000000000000000000000000000000000811b8216603784015260e885901b7fffffff000000000000000000000000000000000000000000000000000000000016604b84015289901b16604e8201528151808203604201815260628201928390527f2f80bb1d000000000000000000000000000000000000000000000000000000009092529192509073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690632f80bb1d906109e79084908790606601612d10565b6020604051808303815f875af1158015610a03573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a279190612cb5565b98975050505050505050565b610a3e828233610f25565b5050565b610a3e8282336126e3565b5f808390505f838273ffffffffffffffffffffffffffffffffffffffff1663938225576040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a9d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ac19190612cb5565b610acb9190612cf9565b6040517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000606090811b821660208401527e0bb8000000000000000000000000000000000000000000000000000000000060348401527f0000000000000000000000000000000000000000000000000000000000000000901b1660378201529091505f90604b01604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f2f80bb1d00000000000000000000000000000000000000000000000000000000825291505f9073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690632f80bb1d90610c169085908790600401612d10565b6020604051808303815f875af1158015610c32573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c569190612cb5565b90505f7f0000000000000000000000000000000000000000000000000000000000000000610c97730d500b1d8e8ef31e21c99d1db9a6444d3adf127061056c565b60405160609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016602083015260e81b7fffffff00000000000000000000000000000000000000000000000000000000001660348201527f0d500b1d8e8ef31e21c99d1db9a6444d3adf12700000000000000000000000006037820152604b01604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f2f80bb1d000000000000000000000000000000000000000000000000000000008252915073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690632f80bb1d90610dbc9084908690600401612d10565b6020604051808303815f875af1158015610dd8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dfc9190612cb5565b955050505050505b92915050565b60015473ffffffffffffffffffffffffffffffffffffffff163314610e90576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f5469636b6574526f7574657256333a204e4f545f4f574e45520000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82165f818152602081815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000001662ffffff861690811790915591519182527f424fce24d091d223a7a9fc24c28898d088a75d9d20d30ffef7f2a252ff440967910160405180910390a25050565b6105548383836126e3565b5f8211610f8e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f5469636b6574526f7574657256333a20494e56414c49445f434f554e540000006044820152606401610e87565b5f8390505f838273ffffffffffffffffffffffffffffffffffffffff1663938225576040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fdd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110019190612cb5565b61100b9190612cf9565b9050730d500b1d8e8ef31e21c99d1db9a6444d3adf127073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0346040518263ffffffff1660e01b81526004015f604051808303818588803b158015611067575f80fd5b505af1158015611079573d5f803e3d5ffd5b50505050505f6110898686610a4d565b90508034101561111b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f5469636b6574526f7574657256333a20494e53554646494349454e545f4e415460448201527f4956455f43555252454e435900000000000000000000000000000000000000006064820152608401610e87565b6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166004820152346024820152730d500b1d8e8ef31e21c99d1db9a6444d3adf12709063095ea7b3906044016020604051808303815f875af11580156111be573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111e29190612d31565b506040517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000606090811b821660208401527e0bb8000000000000000000000000000000000000000000000000000000000060348401527f0000000000000000000000000000000000000000000000000000000000000000901b1660378201525f90604b01604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f2f80bb1d00000000000000000000000000000000000000000000000000000000825291505f9073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690632f80bb1d9061132b9085908890600401612d10565b6020604051808303815f875af1158015611347573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061136b9190612cb5565b90505f604051806101000160405280730d500b1d8e8ef31e21c99d1db9a6444d3adf127073ffffffffffffffffffffffffffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168152602001611403730d500b1d8e8ef31e21c99d1db9a6444d3adf127061056c565b62ffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff1681526020014281526020018381526020013481526020015f73ffffffffffffffffffffffffffffffffffffffff1681525090505f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663db3e2198836040518263ffffffff1660e01b815260040161152791905f6101008201905073ffffffffffffffffffffffffffffffffffffffff80845116835280602085015116602084015262ffffff60408501511660408401528060608501511660608401526080840151608084015260a084015160a084015260c084015160c08401528060e08501511660e08401525092915050565b6020604051808303815f875af1158015611543573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115679190612cb5565b6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018690529192507f00000000000000000000000000000000000000000000000000000000000000009091169063095ea7b3906044016020604051808303815f875af115801561161e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116429190612d31565b50604080516101008101825273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811682527f0000000000000000000000000000000000000000000000000000000000000000811660208301908152610bb88385019081523060608501908152426080860190815260a086018d815260c087018b81525f60e0890190815298517fdb3e2198000000000000000000000000000000000000000000000000000000008152885188166004820152955187166024870152935162ffffff1660448601529151851660648501525160848401525160a48301525160c48201529251811660e484015290917f00000000000000000000000000000000000000000000000000000000000000009091169063db3e219890610104016020604051808303815f875af1158015611795573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117b99190612cb5565b5081341115611876575f6117cd8334612d50565b6040517f2e1a7d4d00000000000000000000000000000000000000000000000000000000815260048101829052909150730d500b1d8e8ef31e21c99d1db9a6444d3adf127090632e1a7d4d906024015f604051808303815f87803b158015611833575f80fd5b505af1158015611845573d5f803e3d5ffd5b505060405133925083156108fc02915083905f818181858888f19350505050158015611873573d5f803e3d5ffd5b50505b6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c81166004830152602482018990527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303815f875af1158015611908573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061192c9190612d31565b506040517f6cd6b5e700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152602482018c9052891690636cd6b5e7906044015f604051808303815f87803b15801561199a575f80fd5b505af11580156119ac573d5f803e3d5ffd5b505060408051858152602081018b9052730d500b1d8e8ef31e21c99d1db9a6444d3adf1270935073ffffffffffffffffffffffffffffffffffffffff8d1692507f623b3804fa71d67900d064613da8f94b9617215ee90799290593e1745087ad18910160405180910390a35050505050505050505050565b5f8411611a8d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f5469636b6574526f7574657256333a20494e56414c49445f434f554e540000006044820152606401610e87565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611aef57611aea8585610a42565b6105b9565b5f8590505f858273ffffffffffffffffffffffffffffffffffffffff1663938225576040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b3e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b629190612cb5565b611b6c9190612cf9565b90505f611b7a8888886105c0565b905080851015611be6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f5469636b6574526f7574657256333a20494e56414c49445f434f554e540000006044820152606401610e87565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810186905273ffffffffffffffffffffffffffffffffffffffff8716906323b872dd906064016020604051808303815f875af1158015611c5c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c809190612d31565b506040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301526024820187905287169063095ea7b3906044016020604051808303815f875af1158015611d13573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d379190612d31565b505f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1603611f0a57604080516101008101825273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811682527f0000000000000000000000000000000000000000000000000000000000000000811660208301908152610bb88385019081523060608501908152426080860190815260a086018a815260c087018e81525f60e0890190815298517fdb3e2198000000000000000000000000000000000000000000000000000000008152885188166004820152955187166024870152935162ffffff1660448601529151851660648501525160848401525160a48301525160c48201529251811660e484015290917f00000000000000000000000000000000000000000000000000000000000000009091169063db3e219890610104016020604051808303815f875af1158015611ede573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f029190612cb5565b915050612487565b5f611f148861056c565b6040517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000606090811b821660208401527e0bb8000000000000000000000000000000000000000000000000000000000060348401527f0000000000000000000000000000000000000000000000000000000000000000901b1660378201529091505f90604b01604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f2f80bb1d00000000000000000000000000000000000000000000000000000000825291505f9073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690632f80bb1d9061205f9085908a90600401612d10565b6020604051808303815f875af115801561207b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061209f9190612cb5565b604080516101008101825273ffffffffffffffffffffffffffffffffffffffff808e1682527f00000000000000000000000000000000000000000000000000000000000000008116602083015262ffffff87168284015230606083015242608083015260a0820184905260c082018d90525f60e083015291517fdb3e2198000000000000000000000000000000000000000000000000000000008152929350917f00000000000000000000000000000000000000000000000000000000000000009091169063db3e2198906121ee9084906004015f6101008201905073ffffffffffffffffffffffffffffffffffffffff80845116835280602085015116602084015262ffffff60408501511660408401528060608501511660608401526080840151608084015260a084015160a084015260c084015160c08401528060e08501511660e08401525092915050565b6020604051808303815f875af115801561220a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061222e9190612cb5565b6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018590529196507f00000000000000000000000000000000000000000000000000000000000000009091169063095ea7b3906044016020604051808303815f875af11580156122e5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123099190612d31565b50604080516101008101825273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811682527f0000000000000000000000000000000000000000000000000000000000000000811660208301908152610bb88385019081523060608501908152426080860190815260a086018e815260c087018a81525f60e0890190815298517fdb3e2198000000000000000000000000000000000000000000000000000000008152885188166004820152955187166024870152935162ffffff1660448601529151851660648501525160848401525160a48301525160c48201529251811660e484015290917f00000000000000000000000000000000000000000000000000000000000000009091169063db3e219890610104016020604051808303815f875af115801561245c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124809190612cb5565b5050505050505b808611156125495773ffffffffffffffffffffffffffffffffffffffff871663a9059cbb336124b6848a612d50565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044016020604051808303815f875af1158015612523573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125479190612d31565b505b6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152602482018590527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303815f875af11580156125db573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125ff9190612d31565b506040517f6cd6b5e700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152602482018a9052851690636cd6b5e7906044015f604051808303815f87803b15801561266d575f80fd5b505af115801561267f573d5f803e3d5ffd5b5050604080518481526020810187905273ffffffffffffffffffffffffffffffffffffffff808c169450891692507f623b3804fa71d67900d064613da8f94b9617215ee90799290593e1745087ad18910160405180910390a3505050505050505050565b5f821161274c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f5469636b6574526f7574657256333a20494e56414c49445f434f554e540000006044820152606401610e87565b5f8390505f838273ffffffffffffffffffffffffffffffffffffffff1663938225576040518163ffffffff1660e01b8152600401602060405180830381865afa15801561279b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127bf9190612cb5565b6127c99190612cf9565b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018290529091507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906323b872dd906064016020604051808303815f875af1158015612862573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128869190612d31565b506040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303815f875af1158015612919573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061293d9190612d31565b506040517f6cd6b5e700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201869052831690636cd6b5e7906044015f604051808303815f87803b1580156129ab575f80fd5b505af11580156129bd573d5f803e3d5ffd5b5050604080518481526020810185905273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081169450871692507f623b3804fa71d67900d064613da8f94b9617215ee90799290593e1745087ad18910160405180910390a35050505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114612a60575f80fd5b919050565b5f805f60608486031215612a77575f80fd5b612a8084612a3d565b925060208401359150612a9560408501612a3d565b90509250925092565b803562ffffff81168114612a60575f80fd5b5f805f805f60a08688031215612ac4575f80fd5b612acd86612a3d565b9450612adb60208701612a3d565b9350612ae960408701612a3d565b9250612af760608701612a9e565b9150612b0560808701612a9e565b90509295509295909350565b5f81518084525f5b81811015612b3557602081850181015186830182015201612b19565b505f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f6105a56020830184612b11565b5f805f8060808587031215612b97575f80fd5b612ba085612a3d565b935060208501359250612bb560408601612a3d565b9396929550929360600135925050565b5f60208284031215612bd5575f80fd5b6105a582612a3d565b5f805f60608486031215612bf0575f80fd5b612bf984612a3d565b9250612c0760208501612a3d565b9150612a9560408501612a9e565b5f805f805f60a08688031215612c29575f80fd5b612c3286612a3d565b945060208601359350612c4760408701612a3d565b925060608601359150612b0560808701612a3d565b5f8060408385031215612c6d575f80fd5b612c7683612a3d565b946020939093013593505050565b5f8060408385031215612c95575f80fd5b612c9e83612a3d565b9150612cac60208401612a9e565b90509250929050565b5f60208284031215612cc5575f80fd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8082028115828204841417610e0457610e04612ccc565b604081525f612d226040830185612b11565b90508260208301529392505050565b5f60208284031215612d41575f80fd5b815180151581146105a5575f80fd5b81810381811115610e0457610e04612ccc56fea2646970667358221220217361d571341738f17123d7ed2a91da25016ca95484be7adf7bd6e27144eea264736f6c634300081900330000000000000000000000007ceb23fd6bc0add59e62ac25578270cff1b9f619000000000000000000000000c708d6f2153933daa50b2d0758955be0a93a8fec000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564000000000000000000000000b27308f9f90d607463bb33ea1bebb41c27ce5ab6
Deployed Bytecode
0x60806040526004361061014a575f3560e01c80637d1ca330116100b3578063b17419c51161006d578063c622cd8311610055578063c622cd8314610515578063e50ccd6d1461052a578063ed4df86e1461051557005b8063b17419c5146104c3578063c6005893146104e257005b80638dae88c21161009b5780638dae88c21461043e578063a301808614610471578063ad5c46481461049057005b80637d1ca3301461040c57806388f577671461041f57005b80634a144f5a116101045780634d95cad9116100ec5780634d95cad91461039957806356ff096e146103c05780636ba63846146103df57005b80634a144f5a146102d25780634ccf405b1461030257005b80633ae66b5c116101325780633ae66b5c1461022857806342fcc6fb1461024757806347c0127e1461027a57005b80630f2269c01461015357806333d7a4351461016657005b3661015157005b005b610151610161366004612a65565b610549565b348015610171575f80fd5b50610212610180366004612ab0565b604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606095861b811660208301527fffffff000000000000000000000000000000000000000000000000000000000060e894851b8116603484015296861b811660378301529390921b909416604b8201529390911b16604e830152805180830360420181526062909201905290565b60405161021f9190612b72565b60405180910390f35b348015610233575f80fd5b50610151610242366004612b84565b610559565b348015610252575f80fd5b50610266610261366004612bc5565b61056c565b60405162ffffff909116815260200161021f565b348015610285575f80fd5b506102ad7f000000000000000000000000c708d6f2153933daa50b2d0758955be0a93a8fec81565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161021f565b3480156102dd575f80fd5b506102666102ec366004612bc5565b5f6020819052908152604090205462ffffff1681565b34801561030d575f80fd5b5061021261031c366004612bde565b60408051606093841b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000908116602083015260e89390931b7fffffff00000000000000000000000000000000000000000000000000000000001660348201529390921b1660378301528051808303602b018152604b909201905290565b3480156103a4575f80fd5b506102ad730d500b1d8e8ef31e21c99d1db9a6444d3adf127081565b3480156103cb575f80fd5b506101516103da366004612c15565b6105ac565b3480156103ea575f80fd5b506103fe6103f9366004612a65565b6105c0565b60405190815260200161021f565b61015161041a366004612c5c565b610a33565b34801561042a575f80fd5b50610151610439366004612c5c565b610a42565b348015610449575f80fd5b506102ad7f000000000000000000000000b27308f9f90d607463bb33ea1bebb41c27ce5ab681565b34801561047c575f80fd5b506103fe61048b366004612c5c565b610a4d565b34801561049b575f80fd5b506102ad7f0000000000000000000000007ceb23fd6bc0add59e62ac25578270cff1b9f61981565b3480156104ce575f80fd5b506101516104dd366004612c84565b610e0a565b3480156104ed575f80fd5b506102ad7f000000000000000000000000e592427a0aece92de3edee1f18e0157c0586156481565b348015610520575f80fd5b50610266610bb881565b348015610535575f80fd5b50610151610544366004612a65565b610f1a565b610554838383610f25565b505050565b6105668484848433611a24565b50505050565b73ffffffffffffffffffffffffffffffffffffffff81165f9081526020819052604081205462ffffff16806105a357610bb86105a5565b805b9392505050565b6105b98585858585611a24565b5050505050565b5f808490505f848273ffffffffffffffffffffffffffffffffffffffff1663938225576040518163ffffffff1660e01b8152600401602060405180830381865afa158015610610573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106349190612cb5565b61063e9190612cf9565b90507f000000000000000000000000c708d6f2153933daa50b2d0758955be0a93a8fec73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361069c5791506105a59050565b7f0000000000000000000000007ceb23fd6bc0add59e62ac25578270cff1b9f61973ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361087f576040517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000007f000000000000000000000000c708d6f2153933daa50b2d0758955be0a93a8fec606090811b821660208401527e0bb8000000000000000000000000000000000000000000000000000000000060348401527f0000000000000000000000007ceb23fd6bc0add59e62ac25578270cff1b9f619901b1660378201525f90604b01604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f2f80bb1d000000000000000000000000000000000000000000000000000000008252915073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000b27308f9f90d607463bb33ea1bebb41c27ce5ab61690632f80bb1d906108359084908690600401612d10565b6020604051808303815f875af1158015610851573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108759190612cb5565b93505050506105a5565b5f6108898561056c565b604080517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000007f000000000000000000000000c708d6f2153933daa50b2d0758955be0a93a8fec606090811b821660208401527e0bb8000000000000000000000000000000000000000000000000000000000060348401527f0000000000000000000000007ceb23fd6bc0add59e62ac25578270cff1b9f619811b8216603784015260e885901b7fffffff000000000000000000000000000000000000000000000000000000000016604b84015289901b16604e8201528151808203604201815260628201928390527f2f80bb1d000000000000000000000000000000000000000000000000000000009092529192509073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000b27308f9f90d607463bb33ea1bebb41c27ce5ab61690632f80bb1d906109e79084908790606601612d10565b6020604051808303815f875af1158015610a03573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a279190612cb5565b98975050505050505050565b610a3e828233610f25565b5050565b610a3e8282336126e3565b5f808390505f838273ffffffffffffffffffffffffffffffffffffffff1663938225576040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a9d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ac19190612cb5565b610acb9190612cf9565b6040517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000007f000000000000000000000000c708d6f2153933daa50b2d0758955be0a93a8fec606090811b821660208401527e0bb8000000000000000000000000000000000000000000000000000000000060348401527f0000000000000000000000007ceb23fd6bc0add59e62ac25578270cff1b9f619901b1660378201529091505f90604b01604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f2f80bb1d00000000000000000000000000000000000000000000000000000000825291505f9073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000b27308f9f90d607463bb33ea1bebb41c27ce5ab61690632f80bb1d90610c169085908790600401612d10565b6020604051808303815f875af1158015610c32573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c569190612cb5565b90505f7f0000000000000000000000007ceb23fd6bc0add59e62ac25578270cff1b9f619610c97730d500b1d8e8ef31e21c99d1db9a6444d3adf127061056c565b60405160609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016602083015260e81b7fffffff00000000000000000000000000000000000000000000000000000000001660348201527f0d500b1d8e8ef31e21c99d1db9a6444d3adf12700000000000000000000000006037820152604b01604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f2f80bb1d000000000000000000000000000000000000000000000000000000008252915073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000b27308f9f90d607463bb33ea1bebb41c27ce5ab61690632f80bb1d90610dbc9084908690600401612d10565b6020604051808303815f875af1158015610dd8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dfc9190612cb5565b955050505050505b92915050565b60015473ffffffffffffffffffffffffffffffffffffffff163314610e90576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f5469636b6574526f7574657256333a204e4f545f4f574e45520000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82165f818152602081815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000001662ffffff861690811790915591519182527f424fce24d091d223a7a9fc24c28898d088a75d9d20d30ffef7f2a252ff440967910160405180910390a25050565b6105548383836126e3565b5f8211610f8e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f5469636b6574526f7574657256333a20494e56414c49445f434f554e540000006044820152606401610e87565b5f8390505f838273ffffffffffffffffffffffffffffffffffffffff1663938225576040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fdd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110019190612cb5565b61100b9190612cf9565b9050730d500b1d8e8ef31e21c99d1db9a6444d3adf127073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0346040518263ffffffff1660e01b81526004015f604051808303818588803b158015611067575f80fd5b505af1158015611079573d5f803e3d5ffd5b50505050505f6110898686610a4d565b90508034101561111b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f5469636b6574526f7574657256333a20494e53554646494349454e545f4e415460448201527f4956455f43555252454e435900000000000000000000000000000000000000006064820152608401610e87565b6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564166004820152346024820152730d500b1d8e8ef31e21c99d1db9a6444d3adf12709063095ea7b3906044016020604051808303815f875af11580156111be573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111e29190612d31565b506040517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000007f000000000000000000000000c708d6f2153933daa50b2d0758955be0a93a8fec606090811b821660208401527e0bb8000000000000000000000000000000000000000000000000000000000060348401527f0000000000000000000000007ceb23fd6bc0add59e62ac25578270cff1b9f619901b1660378201525f90604b01604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f2f80bb1d00000000000000000000000000000000000000000000000000000000825291505f9073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000b27308f9f90d607463bb33ea1bebb41c27ce5ab61690632f80bb1d9061132b9085908890600401612d10565b6020604051808303815f875af1158015611347573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061136b9190612cb5565b90505f604051806101000160405280730d500b1d8e8ef31e21c99d1db9a6444d3adf127073ffffffffffffffffffffffffffffffffffffffff1681526020017f0000000000000000000000007ceb23fd6bc0add59e62ac25578270cff1b9f61973ffffffffffffffffffffffffffffffffffffffff168152602001611403730d500b1d8e8ef31e21c99d1db9a6444d3adf127061056c565b62ffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff1681526020014281526020018381526020013481526020015f73ffffffffffffffffffffffffffffffffffffffff1681525090505f7f000000000000000000000000e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663db3e2198836040518263ffffffff1660e01b815260040161152791905f6101008201905073ffffffffffffffffffffffffffffffffffffffff80845116835280602085015116602084015262ffffff60408501511660408401528060608501511660608401526080840151608084015260a084015160a084015260c084015160c08401528060e08501511660e08401525092915050565b6020604051808303815f875af1158015611543573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115679190612cb5565b6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000e592427a0aece92de3edee1f18e0157c0586156481166004830152602482018690529192507f0000000000000000000000007ceb23fd6bc0add59e62ac25578270cff1b9f6199091169063095ea7b3906044016020604051808303815f875af115801561161e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116429190612d31565b50604080516101008101825273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000007ceb23fd6bc0add59e62ac25578270cff1b9f619811682527f000000000000000000000000c708d6f2153933daa50b2d0758955be0a93a8fec811660208301908152610bb88385019081523060608501908152426080860190815260a086018d815260c087018b81525f60e0890190815298517fdb3e2198000000000000000000000000000000000000000000000000000000008152885188166004820152955187166024870152935162ffffff1660448601529151851660648501525160848401525160a48301525160c48201529251811660e484015290917f000000000000000000000000e592427a0aece92de3edee1f18e0157c058615649091169063db3e219890610104016020604051808303815f875af1158015611795573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117b99190612cb5565b5081341115611876575f6117cd8334612d50565b6040517f2e1a7d4d00000000000000000000000000000000000000000000000000000000815260048101829052909150730d500b1d8e8ef31e21c99d1db9a6444d3adf127090632e1a7d4d906024015f604051808303815f87803b158015611833575f80fd5b505af1158015611845573d5f803e3d5ffd5b505060405133925083156108fc02915083905f818181858888f19350505050158015611873573d5f803e3d5ffd5b50505b6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c81166004830152602482018990527f000000000000000000000000c708d6f2153933daa50b2d0758955be0a93a8fec169063095ea7b3906044016020604051808303815f875af1158015611908573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061192c9190612d31565b506040517f6cd6b5e700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152602482018c9052891690636cd6b5e7906044015f604051808303815f87803b15801561199a575f80fd5b505af11580156119ac573d5f803e3d5ffd5b505060408051858152602081018b9052730d500b1d8e8ef31e21c99d1db9a6444d3adf1270935073ffffffffffffffffffffffffffffffffffffffff8d1692507f623b3804fa71d67900d064613da8f94b9617215ee90799290593e1745087ad18910160405180910390a35050505050505050505050565b5f8411611a8d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f5469636b6574526f7574657256333a20494e56414c49445f434f554e540000006044820152606401610e87565b7f000000000000000000000000c708d6f2153933daa50b2d0758955be0a93a8fec73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611aef57611aea8585610a42565b6105b9565b5f8590505f858273ffffffffffffffffffffffffffffffffffffffff1663938225576040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b3e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b629190612cb5565b611b6c9190612cf9565b90505f611b7a8888886105c0565b905080851015611be6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f5469636b6574526f7574657256333a20494e56414c49445f434f554e540000006044820152606401610e87565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810186905273ffffffffffffffffffffffffffffffffffffffff8716906323b872dd906064016020604051808303815f875af1158015611c5c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c809190612d31565b506040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564811660048301526024820187905287169063095ea7b3906044016020604051808303815f875af1158015611d13573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d379190612d31565b505f7f0000000000000000000000007ceb23fd6bc0add59e62ac25578270cff1b9f61973ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1603611f0a57604080516101008101825273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000007ceb23fd6bc0add59e62ac25578270cff1b9f619811682527f000000000000000000000000c708d6f2153933daa50b2d0758955be0a93a8fec811660208301908152610bb88385019081523060608501908152426080860190815260a086018a815260c087018e81525f60e0890190815298517fdb3e2198000000000000000000000000000000000000000000000000000000008152885188166004820152955187166024870152935162ffffff1660448601529151851660648501525160848401525160a48301525160c48201529251811660e484015290917f000000000000000000000000e592427a0aece92de3edee1f18e0157c058615649091169063db3e219890610104016020604051808303815f875af1158015611ede573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f029190612cb5565b915050612487565b5f611f148861056c565b6040517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000007f000000000000000000000000c708d6f2153933daa50b2d0758955be0a93a8fec606090811b821660208401527e0bb8000000000000000000000000000000000000000000000000000000000060348401527f0000000000000000000000007ceb23fd6bc0add59e62ac25578270cff1b9f619901b1660378201529091505f90604b01604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f2f80bb1d00000000000000000000000000000000000000000000000000000000825291505f9073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000b27308f9f90d607463bb33ea1bebb41c27ce5ab61690632f80bb1d9061205f9085908a90600401612d10565b6020604051808303815f875af115801561207b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061209f9190612cb5565b604080516101008101825273ffffffffffffffffffffffffffffffffffffffff808e1682527f0000000000000000000000007ceb23fd6bc0add59e62ac25578270cff1b9f6198116602083015262ffffff87168284015230606083015242608083015260a0820184905260c082018d90525f60e083015291517fdb3e2198000000000000000000000000000000000000000000000000000000008152929350917f000000000000000000000000e592427a0aece92de3edee1f18e0157c058615649091169063db3e2198906121ee9084906004015f6101008201905073ffffffffffffffffffffffffffffffffffffffff80845116835280602085015116602084015262ffffff60408501511660408401528060608501511660608401526080840151608084015260a084015160a084015260c084015160c08401528060e08501511660e08401525092915050565b6020604051808303815f875af115801561220a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061222e9190612cb5565b6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000e592427a0aece92de3edee1f18e0157c0586156481166004830152602482018590529196507f0000000000000000000000007ceb23fd6bc0add59e62ac25578270cff1b9f6199091169063095ea7b3906044016020604051808303815f875af11580156122e5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123099190612d31565b50604080516101008101825273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000007ceb23fd6bc0add59e62ac25578270cff1b9f619811682527f000000000000000000000000c708d6f2153933daa50b2d0758955be0a93a8fec811660208301908152610bb88385019081523060608501908152426080860190815260a086018e815260c087018a81525f60e0890190815298517fdb3e2198000000000000000000000000000000000000000000000000000000008152885188166004820152955187166024870152935162ffffff1660448601529151851660648501525160848401525160a48301525160c48201529251811660e484015290917f000000000000000000000000e592427a0aece92de3edee1f18e0157c058615649091169063db3e219890610104016020604051808303815f875af115801561245c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124809190612cb5565b5050505050505b808611156125495773ffffffffffffffffffffffffffffffffffffffff871663a9059cbb336124b6848a612d50565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044016020604051808303815f875af1158015612523573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125479190612d31565b505b6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152602482018590527f000000000000000000000000c708d6f2153933daa50b2d0758955be0a93a8fec169063095ea7b3906044016020604051808303815f875af11580156125db573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125ff9190612d31565b506040517f6cd6b5e700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152602482018a9052851690636cd6b5e7906044015f604051808303815f87803b15801561266d575f80fd5b505af115801561267f573d5f803e3d5ffd5b5050604080518481526020810187905273ffffffffffffffffffffffffffffffffffffffff808c169450891692507f623b3804fa71d67900d064613da8f94b9617215ee90799290593e1745087ad18910160405180910390a3505050505050505050565b5f821161274c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f5469636b6574526f7574657256333a20494e56414c49445f434f554e540000006044820152606401610e87565b5f8390505f838273ffffffffffffffffffffffffffffffffffffffff1663938225576040518163ffffffff1660e01b8152600401602060405180830381865afa15801561279b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127bf9190612cb5565b6127c99190612cf9565b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018290529091507f000000000000000000000000c708d6f2153933daa50b2d0758955be0a93a8fec73ffffffffffffffffffffffffffffffffffffffff16906323b872dd906064016020604051808303815f875af1158015612862573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128869190612d31565b506040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152602482018390527f000000000000000000000000c708d6f2153933daa50b2d0758955be0a93a8fec169063095ea7b3906044016020604051808303815f875af1158015612919573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061293d9190612d31565b506040517f6cd6b5e700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201869052831690636cd6b5e7906044015f604051808303815f87803b1580156129ab575f80fd5b505af11580156129bd573d5f803e3d5ffd5b5050604080518481526020810185905273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000c708d6f2153933daa50b2d0758955be0a93a8fec81169450871692507f623b3804fa71d67900d064613da8f94b9617215ee90799290593e1745087ad18910160405180910390a35050505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114612a60575f80fd5b919050565b5f805f60608486031215612a77575f80fd5b612a8084612a3d565b925060208401359150612a9560408501612a3d565b90509250925092565b803562ffffff81168114612a60575f80fd5b5f805f805f60a08688031215612ac4575f80fd5b612acd86612a3d565b9450612adb60208701612a3d565b9350612ae960408701612a3d565b9250612af760608701612a9e565b9150612b0560808701612a9e565b90509295509295909350565b5f81518084525f5b81811015612b3557602081850181015186830182015201612b19565b505f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f6105a56020830184612b11565b5f805f8060808587031215612b97575f80fd5b612ba085612a3d565b935060208501359250612bb560408601612a3d565b9396929550929360600135925050565b5f60208284031215612bd5575f80fd5b6105a582612a3d565b5f805f60608486031215612bf0575f80fd5b612bf984612a3d565b9250612c0760208501612a3d565b9150612a9560408501612a9e565b5f805f805f60a08688031215612c29575f80fd5b612c3286612a3d565b945060208601359350612c4760408701612a3d565b925060608601359150612b0560808701612a3d565b5f8060408385031215612c6d575f80fd5b612c7683612a3d565b946020939093013593505050565b5f8060408385031215612c95575f80fd5b612c9e83612a3d565b9150612cac60208401612a9e565b90509250929050565b5f60208284031215612cc5575f80fd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8082028115828204841417610e0457610e04612ccc565b604081525f612d226040830185612b11565b90508260208301529392505050565b5f60208284031215612d41575f80fd5b815180151581146105a5575f80fd5b81810381811115610e0457610e04612ccc56fea2646970667358221220217361d571341738f17123d7ed2a91da25016ca95484be7adf7bd6e27144eea264736f6c63430008190033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000007ceb23fd6bc0add59e62ac25578270cff1b9f619000000000000000000000000c708d6f2153933daa50b2d0758955be0a93a8fec000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564000000000000000000000000b27308f9f90d607463bb33ea1bebb41c27ce5ab6
-----Decoded View---------------
Arg [0] : _weth (address): 0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619
Arg [1] : _verseToken (address): 0xc708D6F2153933DAA50B2D0758955Be0A93A8FEc
Arg [2] : _swapRouter (address): 0xE592427A0AEce92De3Edee1F18E0157C05861564
Arg [3] : _quoter (address): 0xb27308f9F90D607463bb33eA1BeBb41C27CE5AB6
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000007ceb23fd6bc0add59e62ac25578270cff1b9f619
Arg [1] : 000000000000000000000000c708d6f2153933daa50b2d0758955be0a93a8fec
Arg [2] : 000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564
Arg [3] : 000000000000000000000000b27308f9f90d607463bb33ea1bebb41c27ce5ab6
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in POL
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.