Source Code
Latest 10 from a total of 10 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Request Draw | 24264214 | 50 days ago | IN | 0 ETH | 0.00000334 | ||||
| Set VRF Config | 24264210 | 50 days ago | IN | 0 ETH | 0.00000111 | ||||
| Request Draw | 24264208 | 50 days ago | IN | 0 ETH | 0.00000321 | ||||
| Set VRF Extra Ar... | 24264189 | 50 days ago | IN | 0 ETH | 0.000002 | ||||
| Request Draw | 24264120 | 50 days ago | IN | 0 ETH | 0.00000352 | ||||
| Request Draw | 24264032 | 50 days ago | IN | 0 ETH | 0.00000333 | ||||
| Retry VRF | 24263976 | 50 days ago | IN | 0 ETH | 0.00000073 | ||||
| Request Draw | 24263931 | 50 days ago | IN | 0 ETH | 0.00000305 | ||||
| Enter | 24214519 | 57 days ago | IN | 0 ETH | 0.00001196 | ||||
| Enter | 24214491 | 57 days ago | IN | 0 ETH | 0.00009976 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
LotteryClaimVRF
Compiler Version
v0.8.31+commit.fd3a2265
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
/*
LotteryClaimVRF — single-file implementation
- Chainlink VRF v2.5 (Coordinator calls rawFulfillRandomWords)
- Chainlink Automation-compatible (checkUpkeep/performUpkeep)
- Claim payouts (winner pays gas), claim window = 30 days
- Tickets = entries array with repeats (probability ∝ tickets)
- Timer starts only when entries reach 10; duration 48 hours
- Economy:
BPS = 10_000
Fee = 10% (FEE_BPS = 1000)
Prizes (of TOTAL collected):
1st: 50% (5000)
2nd: 15% (1500)
3rd: 15% (1500)
4th-8th: 2% each (200 x 5 = 1000)
Total prizes = 9000 (90%), fee = 1000 (10%)
*/
interface IERC20 {
function balanceOf(address account) external view returns (uint256);
function allowance(address owner, address spender) external view returns (uint256);
function transfer(address to, uint256 value) external returns (bool);
function transferFrom(address from, address to, uint256 value) external returns (bool);
}
library SafeERC20 {
error SafeERC20FailedOperation(address token);
function safeTransfer(IERC20 token, address to, uint256 value) internal {
(bool ok, bytes memory data) = address(token).call(
abi.encodeWithSelector(token.transfer.selector, to, value)
);
if (!ok) revert SafeERC20FailedOperation(address(token));
if (data.length > 0 && !abi.decode(data, (bool))) revert SafeERC20FailedOperation(address(token));
}
function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {
(bool ok, bytes memory data) = address(token).call(
abi.encodeWithSelector(token.transferFrom.selector, from, to, value)
);
if (!ok) revert SafeERC20FailedOperation(address(token));
if (data.length > 0 && !abi.decode(data, (bool))) revert SafeERC20FailedOperation(address(token));
}
}
abstract contract Ownable {
error NotOwner();
address public owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
constructor() {
owner = msg.sender;
emit OwnershipTransferred(address(0), msg.sender);
}
modifier onlyOwner() {
if (msg.sender != owner) revert NotOwner();
_;
}
function transferOwnership(address newOwner) external onlyOwner {
require(newOwner != address(0), "zero");
emit OwnershipTransferred(owner, newOwner);
owner = newOwner;
}
}
interface AutomationCompatibleInterface {
function checkUpkeep(bytes calldata checkData) external returns (bool upkeepNeeded, bytes memory performData);
function performUpkeep(bytes calldata performData) external;
}
// Minimal Chainlink VRF v2.5 coordinator interface
interface IVRFCoordinatorV2_5 {
function requestRandomWords(
bytes32 keyHash,
uint256 subId,
uint16 requestConfirmations,
uint32 callbackGasLimit,
uint32 numWords,
bytes calldata extraArgs
) external returns (uint256 requestId);
}
// Minimal VRFConsumerBase style (v2.5 coordinator calls rawFulfillRandomWords)
abstract contract VRFConsumerBaseV2_5 {
error OnlyCoordinatorCanFulfill(address have, address want);
address private immutable i_vrfCoordinator;
constructor(address coordinator) {
i_vrfCoordinator = coordinator;
}
function rawFulfillRandomWords(uint256 requestId, uint256[] calldata randomWords) external {
if (msg.sender != i_vrfCoordinator) {
revert OnlyCoordinatorCanFulfill(msg.sender, i_vrfCoordinator);
}
fulfillRandomWords(requestId, randomWords);
}
function fulfillRandomWords(uint256 requestId, uint256[] calldata randomWords) internal virtual;
}
contract LotteryClaimVRF is Ownable, AutomationCompatibleInterface, VRFConsumerBaseV2_5 {
using SafeERC20 for IERC20;
// ======= Constants (Business Logic) =======
uint256 public constant BPS = 10_000;
uint256 public constant FEE_BPS = 1000; // 10%
uint256 public constant MIN_TICKETS_TO_START = 10;
uint256 public constant ROUND_DURATION = 48 hours;
uint256 public constant CLAIM_WINDOW = 30 days;
// Prize distribution in BPS of TOTAL collected (sum = 9000)
uint16[8] public PRIZE_BPS = [5000, 1500, 1500, 200, 200, 200, 200, 200];
// ======= Token & Economics =======
IERC20 public immutable token; // USDT mainnet
uint256 public immutable ticketPrice; // in token's smallest units (USDT: 6 decimals)
address public feeWallet;
// ======= VRF Config =======
IVRFCoordinatorV2_5 public immutable vrfCoordinator;
uint256 public vrfSubId;
bytes32 public vrfKeyHash;
uint16 public vrfRequestConfirmations = 3;
uint32 public vrfCallbackGasLimit = 700_000; // safe default for storage writes
bytes public vrfExtraArgs; // can be empty. For v2.5 Plus you can set extra args if needed.
uint32 public constant VRF_NUM_WORDS = 8;
// ======= Round State =======
enum State { OPEN, DRAWING }
State public state;
uint256 public currentRoundId;
uint256 public roundEnd; // 0 until MIN_TICKETS_TO_START reached
address[] public entries;
// tickets per user per round (for UI: "Current entries")
mapping(uint256 => mapping(address => uint256)) private _ticketsOf;
// ======= Draw bookkeeping =======
uint256 public lastRequestId;
uint256 public lastRequestTime;
struct RoundResult {
bool resolved;
bool swept;
uint256 totalCollected;
uint256 feeAmount;
uint256 drawTime;
uint256 claimDeadline;
uint256 unclaimed; // remaining claimable amount (starts as total prizes sum)
address[8] winners;
uint256[8] prizes;
}
mapping(uint256 => RoundResult) public results;
// claimable amount per address per round (aggregated, supports repeated winner indices)
mapping(uint256 => mapping(address => uint256)) public claimable;
// ======= Events =======
event Entered(uint256 indexed roundId, address indexed user, uint256 tickets, uint256 paid, uint256 newTotalEntries);
event TimerStarted(uint256 indexed roundId, uint256 roundEnd);
event DrawRequested(uint256 indexed roundId, uint256 requestId);
event DrawResolved(uint256 indexed roundId, address[8] winners, uint256[8] prizes, uint256 feeAmount, uint256 claimDeadline);
event Claimed(uint256 indexed roundId, address indexed user, uint256 amount);
event Swept(uint256 indexed roundId, uint256 amount, address to);
event RetryRequested(uint256 indexed roundId, uint256 requestId);
event FeeWalletUpdated(address indexed oldWallet, address indexed newWallet);
event VRFConfigUpdated(uint256 subId, bytes32 keyHash, uint16 confs, uint32 gasLimit);
event VRFExtraArgsUpdated(bytes extraArgs);
constructor(
address token_,
uint256 ticketPrice_,
address feeWallet_,
address vrfCoordinator_,
uint256 vrfSubId_,
bytes32 vrfKeyHash_
)
VRFConsumerBaseV2_5(vrfCoordinator_)
{
require(token_ != address(0), "token=0");
require(feeWallet_ != address(0), "feeWallet=0");
require(vrfCoordinator_ != address(0), "vrf=0");
require(ticketPrice_ > 0, "price=0");
token = IERC20(token_);
ticketPrice = ticketPrice_;
feeWallet = feeWallet_;
vrfCoordinator = IVRFCoordinatorV2_5(vrfCoordinator_);
vrfSubId = vrfSubId_;
vrfKeyHash = vrfKeyHash_;
state = State.OPEN;
currentRoundId = 1;
}
// =======================
// Views
// =======================
function entriesCount() external view returns (uint256) {
return entries.length;
}
function entriesCount(uint256 roundId) external view returns (uint256) {
if (roundId == currentRoundId) return entries.length;
// past rounds: not stored (we store results instead); return 0 to avoid heavy storage
return 0;
}
function ticketsOf(address user) external view returns (uint256) {
return _ticketsOf[currentRoundId][user];
}
function ticketsOf(uint256 roundId, address user) external view returns (uint256) {
return _ticketsOf[roundId][user];
}
function canDraw() public view returns (bool) {
return (state == State.OPEN && roundEnd != 0 && block.timestamp >= roundEnd && entries.length > 0);
}
// =======================
// Entry
// =======================
function enter(uint256 tickets) external {
require(state == State.OPEN, "not open");
require(tickets > 0, "tickets=0");
uint256 cost = tickets * ticketPrice;
// Pull tokens
token.safeTransferFrom(msg.sender, address(this), cost);
// 1 ticket = 1 entry in array (repeats allowed)
for (uint256 i = 0; i < tickets; i++) {
entries.push(msg.sender);
}
_ticketsOf[currentRoundId][msg.sender] += tickets;
emit Entered(currentRoundId, msg.sender, tickets, cost, entries.length);
// Start timer ONLY when threshold reached, and only once
if (roundEnd == 0 && entries.length >= MIN_TICKETS_TO_START) {
roundEnd = block.timestamp + ROUND_DURATION;
emit TimerStarted(currentRoundId, roundEnd);
}
}
// =======================
// Draw (VRF)
// =======================
function requestDraw() public {
require(canDraw(), "cannot draw");
state = State.DRAWING;
// Record collected amount for this round (in contract balance delta approach is tricky)
// Here we use total collected as: contract balance - sum of future obligations of previous rounds not swept/claimed.
// For MVP safety, we store totalCollected as current token balance (works if you sweep/claim per round cleanly).
// If you want strict accounting across concurrent rounds later, we can track deposits per round.
uint256 totalCollected = token.balanceOf(address(this));
// Store round totals (snap at request time)
RoundResult storage r = results[currentRoundId];
r.totalCollected = totalCollected;
r.feeAmount = (totalCollected * FEE_BPS) / BPS;
// VRF request
// extraArgs can be empty; coordinator accepts it (common for v2.5)
uint256 requestId = vrfCoordinator.requestRandomWords(
vrfKeyHash,
vrfSubId,
vrfRequestConfirmations,
vrfCallbackGasLimit,
VRF_NUM_WORDS,
vrfExtraArgs
);
lastRequestId = requestId;
lastRequestTime = block.timestamp;
emit DrawRequested(currentRoundId, requestId);
}
function fulfillRandomWords(uint256 requestId, uint256[] calldata randomWords) internal override {
require(state == State.DRAWING, "not drawing");
require(requestId == lastRequestId, "bad request");
require(randomWords.length >= 8, "need 8 words");
require(entries.length > 0, "no entries");
uint256 roundId = currentRoundId;
RoundResult storage r = results[roundId];
// Compute prizes of TOTAL collected (matches your economics)
uint256 total = r.totalCollected;
uint256 fee = r.feeAmount;
// Transfer fee immediately to feeWallet (cheap; avoids later ambiguity)
// This is safe in CLAIM model; doesn't risk heavy callback.
if (fee > 0) {
token.safeTransfer(feeWallet, fee);
}
// Determine winners + set claimables
address[8] memory winners;
uint256[8] memory prizes;
uint256 prizesSum = 0;
for (uint256 i = 0; i < 8; i++) {
uint256 idx = randomWords[i] % entries.length;
address w = entries[idx];
winners[i] = w;
uint256 prize = (total * uint256(PRIZE_BPS[i])) / BPS;
prizes[i] = prize;
prizesSum += prize;
// aggregate per address (supports repeated winner indices)
claimable[roundId][w] += prize;
}
// Save result
r.resolved = true;
r.drawTime = block.timestamp;
r.claimDeadline = block.timestamp + CLAIM_WINDOW;
r.unclaimed = prizesSum;
r.winners = winners;
r.prizes = prizes;
emit DrawResolved(roundId, winners, prizes, fee, r.claimDeadline);
// Reset round (OPEN again)
delete entries;
roundEnd = 0;
state = State.OPEN;
// Next round
currentRoundId = roundId + 1;
}
// =======================
// Claim / Sweep
// =======================
function claim(uint256 roundId) external {
RoundResult storage r = results[roundId];
require(r.resolved, "not resolved");
require(block.timestamp <= r.claimDeadline, "claim closed");
uint256 amount = claimable[roundId][msg.sender];
require(amount > 0, "nothing");
// effects
claimable[roundId][msg.sender] = 0;
// r.unclaimed is total remaining; safe underflow not possible due to amount>0 and tracked sum
r.unclaimed -= amount;
// interaction
token.safeTransfer(msg.sender, amount);
emit Claimed(roundId, msg.sender, amount);
}
function sweepUnclaimed(uint256 roundId) external {
RoundResult storage r = results[roundId];
require(r.resolved, "not resolved");
require(!r.swept, "already swept");
require(block.timestamp > r.claimDeadline, "too early");
uint256 amount = r.unclaimed;
r.unclaimed = 0;
r.swept = true;
if (amount > 0) {
token.safeTransfer(feeWallet, amount);
}
emit Swept(roundId, amount, feeWallet);
}
// =======================
// Retry VRF
// =======================
function retryVRF() external {
require(state == State.DRAWING, "not drawing");
// MVP safety: allow retry if stuck for >= 30 minutes
require(block.timestamp >= lastRequestTime + 30 minutes, "too soon");
// re-request using same roundId state (entries not reset)
uint256 requestId = vrfCoordinator.requestRandomWords(
vrfKeyHash,
vrfSubId,
vrfRequestConfirmations,
vrfCallbackGasLimit,
VRF_NUM_WORDS,
vrfExtraArgs
);
lastRequestId = requestId;
lastRequestTime = block.timestamp;
emit RetryRequested(currentRoundId, requestId);
}
// =======================
// Automation
// =======================
function checkUpkeep(bytes calldata) external view override returns (bool upkeepNeeded, bytes memory performData) {
upkeepNeeded = canDraw();
performData = bytes("");
}
function performUpkeep(bytes calldata) external override {
if (canDraw()) {
requestDraw();
}
}
// =======================
// Admin
// =======================
function setFeeWallet(address newFeeWallet) external onlyOwner {
require(newFeeWallet != address(0), "zero");
address old = feeWallet;
feeWallet = newFeeWallet;
emit FeeWalletUpdated(old, newFeeWallet);
}
function setVRFConfig(
uint256 subId,
bytes32 keyHash,
uint16 confs,
uint32 gasLimit
) external onlyOwner {
require(subId != 0, "subId=0");
require(keyHash != bytes32(0), "keyHash=0");
require(confs >= 1 && confs <= 200, "confs");
require(gasLimit >= 200_000, "gasLimit low");
vrfSubId = subId;
vrfKeyHash = keyHash;
vrfRequestConfirmations = confs;
vrfCallbackGasLimit = gasLimit;
emit VRFConfigUpdated(subId, keyHash, confs, gasLimit);
}
function setVRFExtraArgs(bytes calldata extraArgs) external onlyOwner {
vrfExtraArgs = extraArgs;
emit VRFExtraArgsUpdated(extraArgs);
}
}{
"optimizer": {
"enabled": false,
"runs": 200
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"remappings": []
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"token_","type":"address"},{"internalType":"uint256","name":"ticketPrice_","type":"uint256"},{"internalType":"address","name":"feeWallet_","type":"address"},{"internalType":"address","name":"vrfCoordinator_","type":"address"},{"internalType":"uint256","name":"vrfSubId_","type":"uint256"},{"internalType":"bytes32","name":"vrfKeyHash_","type":"bytes32"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"NotOwner","type":"error"},{"inputs":[{"internalType":"address","name":"have","type":"address"},{"internalType":"address","name":"want","type":"address"}],"name":"OnlyCoordinatorCanFulfill","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"SafeERC20FailedOperation","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"roundId","type":"uint256"},{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Claimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"roundId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"requestId","type":"uint256"}],"name":"DrawRequested","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"roundId","type":"uint256"},{"indexed":false,"internalType":"address[8]","name":"winners","type":"address[8]"},{"indexed":false,"internalType":"uint256[8]","name":"prizes","type":"uint256[8]"},{"indexed":false,"internalType":"uint256","name":"feeAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"claimDeadline","type":"uint256"}],"name":"DrawResolved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"roundId","type":"uint256"},{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"tickets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"paid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newTotalEntries","type":"uint256"}],"name":"Entered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"},{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"FeeWalletUpdated","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":true,"internalType":"uint256","name":"roundId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"requestId","type":"uint256"}],"name":"RetryRequested","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"roundId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"address","name":"to","type":"address"}],"name":"Swept","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"roundId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"roundEnd","type":"uint256"}],"name":"TimerStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"subId","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"keyHash","type":"bytes32"},{"indexed":false,"internalType":"uint16","name":"confs","type":"uint16"},{"indexed":false,"internalType":"uint32","name":"gasLimit","type":"uint32"}],"name":"VRFConfigUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"extraArgs","type":"bytes"}],"name":"VRFExtraArgsUpdated","type":"event"},{"inputs":[],"name":"BPS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CLAIM_WINDOW","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"FEE_BPS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MIN_TICKETS_TO_START","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"PRIZE_BPS","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ROUND_DURATION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VRF_NUM_WORDS","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"canDraw","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"","type":"bytes"}],"name":"checkUpkeep","outputs":[{"internalType":"bool","name":"upkeepNeeded","type":"bool"},{"internalType":"bytes","name":"performData","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"roundId","type":"uint256"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"claimable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentRoundId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tickets","type":"uint256"}],"name":"enter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"entries","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"roundId","type":"uint256"}],"name":"entriesCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"entriesCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastRequestId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastRequestTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"","type":"bytes"}],"name":"performUpkeep","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"requestId","type":"uint256"},{"internalType":"uint256[]","name":"randomWords","type":"uint256[]"}],"name":"rawFulfillRandomWords","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"requestDraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"results","outputs":[{"internalType":"bool","name":"resolved","type":"bool"},{"internalType":"bool","name":"swept","type":"bool"},{"internalType":"uint256","name":"totalCollected","type":"uint256"},{"internalType":"uint256","name":"feeAmount","type":"uint256"},{"internalType":"uint256","name":"drawTime","type":"uint256"},{"internalType":"uint256","name":"claimDeadline","type":"uint256"},{"internalType":"uint256","name":"unclaimed","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"retryVRF","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"roundEnd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newFeeWallet","type":"address"}],"name":"setFeeWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"subId","type":"uint256"},{"internalType":"bytes32","name":"keyHash","type":"bytes32"},{"internalType":"uint16","name":"confs","type":"uint16"},{"internalType":"uint32","name":"gasLimit","type":"uint32"}],"name":"setVRFConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"extraArgs","type":"bytes"}],"name":"setVRFExtraArgs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"state","outputs":[{"internalType":"enum LotteryClaimVRF.State","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"roundId","type":"uint256"}],"name":"sweepUnclaimed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ticketPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"roundId","type":"uint256"},{"internalType":"address","name":"user","type":"address"}],"name":"ticketsOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"ticketsOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"vrfCallbackGasLimit","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vrfCoordinator","outputs":[{"internalType":"contract IVRFCoordinatorV2_5","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vrfExtraArgs","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vrfKeyHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vrfRequestConfirmations","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vrfSubId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]Contract Creation Code
61010060405260405180610100016040528061138861ffff1681526020016105dc61ffff1681526020016105dc61ffff16815260200160c861ffff16815260200160c861ffff16815260200160c861ffff16815260200160c861ffff16815260200160c861ffff16815250600190600861007a92919061043e565b50600360055f6101000a81548161ffff021916908361ffff160217905550620aae60600560026101000a81548163ffffffff021916908363ffffffff1602179055503480156100c7575f5ffd5b506040516147e63803806147e683398181016040528101906100e991906105b9565b82335f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050505f73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603610226576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161021d9061069c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610294576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161028b90610704565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610302576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f99061076c565b60405180910390fd5b5f8511610344576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161033b906107d4565b60405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250508460c081815250508360025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff1660e08173ffffffffffffffffffffffffffffffffffffffff168152505081600381905550806004819055505f60075f6101000a81548160ff02191690836001811115610426576104256107f2565b5b0217905550600160088190555050505050505061081f565b826008600f016010900481019282156104c9579160200282015f5b8382111561049957835183826101000a81548161ffff021916908361ffff1602179055509260200192600201602081600101049283019260010302610459565b80156104c75782816101000a81549061ffff0219169055600201602081600101049283019260010302610499565b505b5090506104d691906104da565b5090565b5b808211156104f1575f815f9055506001016104db565b5090565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610522826104f9565b9050919050565b61053281610518565b811461053c575f5ffd5b50565b5f8151905061054d81610529565b92915050565b5f819050919050565b61056581610553565b811461056f575f5ffd5b50565b5f815190506105808161055c565b92915050565b5f819050919050565b61059881610586565b81146105a2575f5ffd5b50565b5f815190506105b38161058f565b92915050565b5f5f5f5f5f5f60c087890312156105d3576105d26104f5565b5b5f6105e089828a0161053f565b96505060206105f189828a01610572565b955050604061060289828a0161053f565b945050606061061389828a0161053f565b935050608061062489828a01610572565b92505060a061063589828a016105a5565b9150509295509295509295565b5f82825260208201905092915050565b7f746f6b656e3d30000000000000000000000000000000000000000000000000005f82015250565b5f610686600783610642565b915061069182610652565b602082019050919050565b5f6020820190508181035f8301526106b38161067a565b9050919050565b7f66656557616c6c65743d300000000000000000000000000000000000000000005f82015250565b5f6106ee600b83610642565b91506106f9826106ba565b602082019050919050565b5f6020820190508181035f83015261071b816106e2565b9050919050565b7f7672663d300000000000000000000000000000000000000000000000000000005f82015250565b5f610756600583610642565b915061076182610722565b602082019050919050565b5f6020820190508181035f8301526107838161074a565b9050919050565b7f70726963653d30000000000000000000000000000000000000000000000000005f82015250565b5f6107be600783610642565b91506107c98261078a565b602082019050919050565b5f6020820190508181035f8301526107eb816107b2565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60805160a05160c05160e051613f556108915f395f818161107f0152818161149d015261161001525f818161083401526117e001525f8181610ddd015281816115330152818161181401528181611bc401528181611e3f015261200701525f81816108ce01526109220152613f555ff3fe608060405234801561000f575f5ffd5b506004361061025c575f3560e01c80636e04ff0d11610144578063ab4ccf01116100c1578063c19d93fb11610085578063c19d93fb146106f9578063e50e64d514610717578063f25f4b5614610733578063f2fde38b14610751578063fc0c546a1461076d578063fc2a88c31461078b5761025c565b8063ab4ccf0114610651578063b30906d41461066f578063b48ac18e1461069f578063bf333f2c146106bd578063c02e580e146106db5761025c565b80639f34fc80116101085780639f34fc80146105bf578063a0c7f71c146105dd578063a3e56fa81461060d578063a57848b61461062b578063a59f3e0c146106355761025c565b80636e04ff0d1461051a57806370d626671461054b5780638da5cb5b1461056757806390d49b9d146105855780639cbe5efd146105a15761025c565b806332615640116101dd5780633cf396d0116101a15780633cf396d01461047c5780634585e33b1461049a578063598bc486146104b65780635c900a1a146104d45780635fef4b4e146104f25780636641ea08146104fc5761025c565b806332615640146103e8578063379607f5146104065780633b7ed734146104225780633c4048c4146104405780633cc82e091461045e5761025c565b80631b9934ec116102245780631b9934ec146103325780631fe543e314610362578063249d39e91461037e5780632b36e2971461039c57806331657926146103b85761025c565b8063041d443e1461026057806306820b601461027e57806309c79735146102ae5780631209b1f6146102de5780631b0c27da146102fc575b5f5ffd5b6102686107a9565b604051610275919061278a565b60405180910390f35b610298600480360381019061029391906127de565b6107af565b6040516102a59190612825565b60405180910390f35b6102c860048036038101906102c39190612898565b6107dc565b6040516102d591906128e5565b60405180910390f35b6102e6610832565b6040516102f391906128e5565b60405180910390f35b610316600480360381019061031191906127de565b610856565b6040516103299796959493929190612918565b60405180910390f35b61034c600480360381019061034791906127de565b6108ac565b60405161035991906128e5565b60405180910390f35b61037c600480360381019061037791906129e6565b6108cc565b005b61038661098e565b60405161039391906128e5565b60405180910390f35b6103b660048036038101906103b19190612ad0565b610994565b005b6103d260048036038101906103cd9190612b34565b610bd2565b6040516103df91906128e5565b60405180910390f35b6103f0610c29565b6040516103fd91906128e5565b60405180910390f35b610420600480360381019061041b91906127de565b610c2f565b005b61042a610e75565b6040516104379190612b6e565b60405180910390f35b610448610e8b565b6040516104559190612bf7565b60405180910390f35b610466610f17565b6040516104739190612c17565b60405180910390f35b610484610f7e565b60405161049191906128e5565b60405180910390f35b6104b460048036038101906104af9190612c85565b610f84565b005b6104be610f9e565b6040516104cb9190612825565b60405180910390f35b6104dc610fb1565b6040516104e99190612b6e565b60405180910390f35b6104fa610fb6565b005b610504611194565b60405161051191906128e5565b60405180910390f35b610534600480360381019061052f9190612c85565b61119b565b604051610542929190612cd0565b60405180910390f35b61056560048036038101906105609190612c85565b6111c0565b005b61056f611294565b60405161057c9190612d0d565b60405180910390f35b61059f600480360381019061059a9190612b34565b6112b8565b005b6105a961146e565b6040516105b691906128e5565b60405180910390f35b6105c7611474565b6040516105d491906128e5565b60405180910390f35b6105f760048036038101906105f29190612898565b61147b565b60405161060491906128e5565b60405180910390f35b61061561149b565b6040516106229190612d81565b60405180910390f35b6106336114bf565b005b61064f600480360381019061064a91906127de565b611727565b005b610659611a03565b60405161066691906128e5565b60405180910390f35b610689600480360381019061068491906127de565b611a0f565b6040516106969190612d0d565b60405180910390f35b6106a7611a4a565b6040516106b491906128e5565b60405180910390f35b6106c5611a4f565b6040516106d291906128e5565b60405180910390f35b6106e3611a55565b6040516106f091906128e5565b60405180910390f35b610701611a5b565b60405161070e9190612e0d565b60405180910390f35b610731600480360381019061072c91906127de565b611a6d565b005b61073b611c69565b6040516107489190612d0d565b60405180910390f35b61076b60048036038101906107669190612b34565b611c8e565b005b610775611e3d565b6040516107829190612e46565b60405180910390f35b610793611e61565b6040516107a091906128e5565b60405180910390f35b60045481565b600181600881106107be575f80fd5b60109182820401919006600202915054906101000a900461ffff1681565b5f600b5f8481526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600e602052805f5260405f205f91509050805f015f9054906101000a900460ff1690805f0160019054906101000a900460ff16908060010154908060020154908060030154908060040154908060050154905087565b5f60085482036108c357600a8054905090506108c7565b5f90505b919050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461097e57337f00000000000000000000000000000000000000000000000000000000000000006040517f1cf993f4000000000000000000000000000000000000000000000000000000008152600401610975929190612e5f565b60405180910390fd5b610989838383611e67565b505050565b61271081565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a19576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8403610a5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5290612ee0565b60405180910390fd5b5f5f1b8303610a9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9690612f48565b60405180910390fd5b60018261ffff1610158015610ab9575060c88261ffff1611155b610af8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aef90612fb0565b60405180910390fd5b62030d408163ffffffff161015610b44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3b90613018565b60405180910390fd5b83600381905550826004819055508160055f6101000a81548161ffff021916908361ffff16021790555080600560026101000a81548163ffffffff021916908363ffffffff1602179055507f163bf9b5bf64f3835fe8fa3ad7f427b7ebac8c1681d8c0b2b30455db96f11cbe84848484604051610bc49493929190613036565b60405180910390a150505050565b5f600b5f60085481526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b60035481565b5f600e5f8381526020019081526020015f209050805f015f9054906101000a900460ff16610c92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c89906130c3565b60405180910390fd5b8060040154421115610cd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd09061312b565b60405180910390fd5b5f600f5f8481526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f8111610d6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6290613193565b60405180910390fd5b5f600f5f8581526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555080826005015f828254610dcf91906131de565b92505081905550610e2133827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1661231a9092919063ffffffff16565b3373ffffffffffffffffffffffffffffffffffffffff16837f4ec90e965519d92681267467f775ada5bd214aa92c0dc93d90a5e880ce9ed02683604051610e6891906128e5565b60405180910390a3505050565b600560029054906101000a900463ffffffff1681565b60068054610e989061323e565b80601f0160208091040260200160405190810160405280929190818152602001828054610ec49061323e565b8015610f0f5780601f10610ee657610100808354040283529160200191610f0f565b820191905f5260205f20905b815481529060010190602001808311610ef257829003601f168201915b505050505081565b5f5f6001811115610f2b57610f2a612d9a565b5b60075f9054906101000a900460ff166001811115610f4c57610f4b612d9a565b5b148015610f5b57505f60095414155b8015610f6957506009544210155b8015610f7957505f600a80549050115b905090565b600d5481565b610f8c610f17565b15610f9a57610f996114bf565b5b5050565b60055f9054906101000a900461ffff1681565b600881565b600180811115610fc957610fc8612d9a565b5b60075f9054906101000a900460ff166001811115610fea57610fe9612d9a565b5b1461102a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611021906132b8565b60405180910390fd5b610708600d5461103a91906132d6565b42101561107c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107390613353565b60405180910390fd5b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639ff308b060045460035460055f9054906101000a900461ffff16600560029054906101000a900463ffffffff16600860066040518763ffffffff1660e01b815260040161110796959493929190613404565b6020604051808303815f875af1158015611123573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611147919061347e565b905080600c8190555042600d819055506008547fd7c89428f02c0f77173ea8ae9c34ed8e391dbfcdb64f3753dc2e30cb3b05d9a68260405161118991906128e5565b60405180910390a250565b6202a30081565b5f60606111a6610f17565b915060405180602001604052805f81525090509250929050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611245576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818160069182611256929190613665565b507f67f4435c5217d88ad39e9b7d6fa5eae245856cf4f4d65eeb5b68afdb205cc98d828260405161128892919061376c565b60405180910390a15050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461133d576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036113ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a2906137d8565b60405180910390fd5b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f362a006325d32978b283e449d254cfcf93e2cccc321603ead9a74238d8dbf36e60405160405180910390a35050565b60085481565b62278d0081565b600f602052815f5260405f20602052805f5260405f205f91509150505481565b7f000000000000000000000000000000000000000000000000000000000000000081565b6114c7610f17565b611506576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fd90613840565b60405180910390fd5b600160075f6101000a81548160ff0219169083600181111561152b5761152a612d9a565b5b02179055505f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161158a9190612d0d565b602060405180830381865afa1580156115a5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115c9919061347e565b90505f600e5f60085481526020019081526020015f2090508181600101819055506127106103e8836115fb919061385e565b61160591906138cc565b81600201819055505f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639ff308b060045460035460055f9054906101000a900461ffff16600560029054906101000a900463ffffffff16600860066040518763ffffffff1660e01b815260040161169896959493929190613404565b6020604051808303815f875af11580156116b4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116d8919061347e565b905080600c8190555042600d819055506008547fa87d18931b669b94d135986745ba30491257a77c255767cdd6796f697c1172f18260405161171a91906128e5565b60405180910390a2505050565b5f600181111561173a57611739612d9a565b5b60075f9054906101000a900460ff16600181111561175b5761175a612d9a565b5b1461179b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179290613946565b60405180910390fd5b5f81116117dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d4906139ae565b60405180910390fd5b5f7f00000000000000000000000000000000000000000000000000000000000000008261180a919061385e565b90506118593330837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166124a7909392919063ffffffff16565b5f5f90505b828110156118d357600a33908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808060010191505061185e565b5081600b5f60085481526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461193191906132d6565b925050819055503373ffffffffffffffffffffffffffffffffffffffff166008547fa6032b9e702317e14754d2060e54d6d45f3d32b66d6ce527a467ccf3e93d5dc08484600a8054905060405161198a939291906139cc565b60405180910390a35f6009541480156119a85750600a808054905010155b156119ff576202a300426119bc91906132d6565b6009819055506008547ff51f7437278a388702c00ddb04f3e0a5df923ea1e998d3ae4bdf278947d2e2166009546040516119f691906128e5565b60405180910390a25b5050565b5f600a80549050905090565b600a8181548110611a1e575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a81565b6103e881565b60095481565b60075f9054906101000a900460ff1681565b5f600e5f8381526020019081526020015f209050805f015f9054906101000a900460ff16611ad0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac7906130c3565b60405180910390fd5b805f0160019054906101000a900460ff1615611b21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1890613a4b565b60405180910390fd5b80600401544211611b67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5e90613ab3565b60405180910390fd5b5f816005015490505f82600501819055506001825f0160016101000a81548160ff0219169083151502179055505f811115611c0957611c0860025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1661231a9092919063ffffffff16565b5b827ffff0ca327099835eb56561b1562ee7b025a27cebb9b51ea3501224fc258945618260025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051611c5c929190613ad1565b60405180910390a2505050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d13576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611d81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d78906137d8565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600c5481565b600180811115611e7a57611e79612d9a565b5b60075f9054906101000a900460ff166001811115611e9b57611e9a612d9a565b5b14611edb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed2906132b8565b60405180910390fd5b600c548314611f1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1690613b42565b60405180910390fd5b6008828290501015611f66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5d90613baa565b60405180910390fd5b5f600a8054905011611fad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa490613c12565b60405180910390fd5b5f60085490505f600e5f8381526020019081526020015f2090505f816001015490505f826002015490505f81111561204c5761204b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1661231a9092919063ffffffff16565b5b612054612637565b61205c61265a565b5f5f90505f5f90505b600881101561220f575f600a805490508b8b8481811061208857612087613c30565b5b905060200201356120999190613c5d565b90505f600a82815481106120b0576120af613c30565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050808684600881106120ee576120ed613c30565b5b602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f6127106001856008811061213d5761213c613c30565b5b601091828204019190066002029054906101000a900461ffff1661ffff168a612166919061385e565b61217091906138cc565b90508086856008811061218657612185613c30565b5b602002018181525050808561219b91906132d6565b945080600f5f8d81526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546121f891906132d6565b925050819055505050508080600101915050612065565b506001865f015f6101000a81548160ff02191690831515021790555042866003018190555062278d004261224391906132d6565b8660040181905550808660050181905550828660060190600861226792919061267d565b508186600e0190600861227b9291906126f9565b50867f2d6ee140239c9ec8715c1096966db199fe090391fe61f7c98e598c2131294c948484878a600401546040516122b69493929190613dd7565b60405180910390a2600a5f6122cb9190612739565b5f6009819055505f60075f6101000a81548160ff021916908360018111156122f6576122f5612d9a565b5b021790555060018761230891906132d6565b60088190555050505050505050505050565b5f5f8473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b858560405160240161234e929190613e1e565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516123b89190613e7f565b5f604051808303815f865af19150503d805f81146123f1576040519150601f19603f3d011682016040523d82523d5f602084013e6123f6565b606091505b50915091508161243d57846040517f5274afe70000000000000000000000000000000000000000000000000000000081526004016124349190612d0d565b60405180910390fd5b5f815111801561245e57508080602001905181019061245c9190613ebf565b155b156124a057846040517f5274afe70000000000000000000000000000000000000000000000000000000081526004016124979190612d0d565b60405180910390fd5b5050505050565b5f5f8573ffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b8686866040516024016124dd93929190613eea565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516125479190613e7f565b5f604051808303815f865af19150503d805f8114612580576040519150601f19603f3d011682016040523d82523d5f602084013e612585565b606091505b5091509150816125cc57856040517f5274afe70000000000000000000000000000000000000000000000000000000081526004016125c39190612d0d565b60405180910390fd5b5f81511180156125ed5750808060200190518101906125eb9190613ebf565b155b1561262f57856040517f5274afe70000000000000000000000000000000000000000000000000000000081526004016126269190612d0d565b60405180910390fd5b505050505050565b604051806101000160405280600890602082028036833780820191505090505090565b604051806101000160405280600890602082028036833780820191505090505090565b82600881019282156126e8579160200282015b828111156126e7578251825f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190612690565b5b5090506126f59190612757565b5090565b8260088101928215612728579160200282015b8281111561272757825182559160200191906001019061270c565b5b5090506127359190612757565b5090565b5080545f8255905f5260205f20908101906127549190612757565b50565b5b8082111561276e575f815f905550600101612758565b5090565b5f819050919050565b61278481612772565b82525050565b5f60208201905061279d5f83018461277b565b92915050565b5f5ffd5b5f5ffd5b5f819050919050565b6127bd816127ab565b81146127c7575f5ffd5b50565b5f813590506127d8816127b4565b92915050565b5f602082840312156127f3576127f26127a3565b5b5f612800848285016127ca565b91505092915050565b5f61ffff82169050919050565b61281f81612809565b82525050565b5f6020820190506128385f830184612816565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6128678261283e565b9050919050565b6128778161285d565b8114612881575f5ffd5b50565b5f813590506128928161286e565b92915050565b5f5f604083850312156128ae576128ad6127a3565b5b5f6128bb858286016127ca565b92505060206128cc85828601612884565b9150509250929050565b6128df816127ab565b82525050565b5f6020820190506128f85f8301846128d6565b92915050565b5f8115159050919050565b612912816128fe565b82525050565b5f60e08201905061292b5f83018a612909565b6129386020830189612909565b61294560408301886128d6565b61295260608301876128d6565b61295f60808301866128d6565b61296c60a08301856128d6565b61297960c08301846128d6565b98975050505050505050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f8401126129a6576129a5612985565b5b8235905067ffffffffffffffff8111156129c3576129c2612989565b5b6020830191508360208202830111156129df576129de61298d565b5b9250929050565b5f5f5f604084860312156129fd576129fc6127a3565b5b5f612a0a868287016127ca565b935050602084013567ffffffffffffffff811115612a2b57612a2a6127a7565b5b612a3786828701612991565b92509250509250925092565b612a4c81612772565b8114612a56575f5ffd5b50565b5f81359050612a6781612a43565b92915050565b612a7681612809565b8114612a80575f5ffd5b50565b5f81359050612a9181612a6d565b92915050565b5f63ffffffff82169050919050565b612aaf81612a97565b8114612ab9575f5ffd5b50565b5f81359050612aca81612aa6565b92915050565b5f5f5f5f60808587031215612ae857612ae76127a3565b5b5f612af5878288016127ca565b9450506020612b0687828801612a59565b9350506040612b1787828801612a83565b9250506060612b2887828801612abc565b91505092959194509250565b5f60208284031215612b4957612b486127a3565b5b5f612b5684828501612884565b91505092915050565b612b6881612a97565b82525050565b5f602082019050612b815f830184612b5f565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612bc982612b87565b612bd38185612b91565b9350612be3818560208601612ba1565b612bec81612baf565b840191505092915050565b5f6020820190508181035f830152612c0f8184612bbf565b905092915050565b5f602082019050612c2a5f830184612909565b92915050565b5f5f83601f840112612c4557612c44612985565b5b8235905067ffffffffffffffff811115612c6257612c61612989565b5b602083019150836001820283011115612c7e57612c7d61298d565b5b9250929050565b5f5f60208385031215612c9b57612c9a6127a3565b5b5f83013567ffffffffffffffff811115612cb857612cb76127a7565b5b612cc485828601612c30565b92509250509250929050565b5f604082019050612ce35f830185612909565b8181036020830152612cf58184612bbf565b90509392505050565b612d078161285d565b82525050565b5f602082019050612d205f830184612cfe565b92915050565b5f819050919050565b5f612d49612d44612d3f8461283e565b612d26565b61283e565b9050919050565b5f612d5a82612d2f565b9050919050565b5f612d6b82612d50565b9050919050565b612d7b81612d61565b82525050565b5f602082019050612d945f830184612d72565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60028110612dd857612dd7612d9a565b5b50565b5f819050612de882612dc7565b919050565b5f612df782612ddb565b9050919050565b612e0781612ded565b82525050565b5f602082019050612e205f830184612dfe565b92915050565b5f612e3082612d50565b9050919050565b612e4081612e26565b82525050565b5f602082019050612e595f830184612e37565b92915050565b5f604082019050612e725f830185612cfe565b612e7f6020830184612cfe565b9392505050565b5f82825260208201905092915050565b7f73756249643d30000000000000000000000000000000000000000000000000005f82015250565b5f612eca600783612e86565b9150612ed582612e96565b602082019050919050565b5f6020820190508181035f830152612ef781612ebe565b9050919050565b7f6b6579486173683d3000000000000000000000000000000000000000000000005f82015250565b5f612f32600983612e86565b9150612f3d82612efe565b602082019050919050565b5f6020820190508181035f830152612f5f81612f26565b9050919050565b7f636f6e66730000000000000000000000000000000000000000000000000000005f82015250565b5f612f9a600583612e86565b9150612fa582612f66565b602082019050919050565b5f6020820190508181035f830152612fc781612f8e565b9050919050565b7f6761734c696d6974206c6f7700000000000000000000000000000000000000005f82015250565b5f613002600c83612e86565b915061300d82612fce565b602082019050919050565b5f6020820190508181035f83015261302f81612ff6565b9050919050565b5f6080820190506130495f8301876128d6565b613056602083018661277b565b6130636040830185612816565b6130706060830184612b5f565b95945050505050565b7f6e6f74207265736f6c76656400000000000000000000000000000000000000005f82015250565b5f6130ad600c83612e86565b91506130b882613079565b602082019050919050565b5f6020820190508181035f8301526130da816130a1565b9050919050565b7f636c61696d20636c6f73656400000000000000000000000000000000000000005f82015250565b5f613115600c83612e86565b9150613120826130e1565b602082019050919050565b5f6020820190508181035f83015261314281613109565b9050919050565b7f6e6f7468696e67000000000000000000000000000000000000000000000000005f82015250565b5f61317d600783612e86565b915061318882613149565b602082019050919050565b5f6020820190508181035f8301526131aa81613171565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6131e8826127ab565b91506131f3836127ab565b925082820390508181111561320b5761320a6131b1565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061325557607f821691505b60208210810361326857613267613211565b5b50919050565b7f6e6f742064726177696e670000000000000000000000000000000000000000005f82015250565b5f6132a2600b83612e86565b91506132ad8261326e565b602082019050919050565b5f6020820190508181035f8301526132cf81613296565b9050919050565b5f6132e0826127ab565b91506132eb836127ab565b9250828201905080821115613303576133026131b1565b5b92915050565b7f746f6f20736f6f6e0000000000000000000000000000000000000000000000005f82015250565b5f61333d600883612e86565b915061334882613309565b602082019050919050565b5f6020820190508181035f83015261336a81613331565b9050919050565b5f819050815f5260205f209050919050565b5f815461338f8161323e565b6133998186612b91565b9450600182165f81146133b357600181146133c9576133fb565b60ff1983168652811515602002860193506133fb565b6133d285613371565b5f5b838110156133f3578154818901526001820191506020810190506133d4565b808801955050505b50505092915050565b5f60c0820190506134175f83018961277b565b61342460208301886128d6565b6134316040830187612816565b61343e6060830186612b5f565b61344b6080830185612b5f565b81810360a083015261345d8184613383565b9050979650505050505050565b5f81519050613478816127b4565b92915050565b5f60208284031215613493576134926127a3565b5b5f6134a08482850161346a565b91505092915050565b5f82905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830261352a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826134ef565b61353486836134ef565b95508019841693508086168417925050509392505050565b5f61356661356161355c846127ab565b612d26565b6127ab565b9050919050565b5f819050919050565b61357f8361354c565b61359361358b8261356d565b8484546134fb565b825550505050565b5f5f905090565b6135aa61359b565b6135b5818484613576565b505050565b5b818110156135d8576135cd5f826135a2565b6001810190506135bb565b5050565b601f82111561361d576135ee81613371565b6135f7846134e0565b81016020851015613606578190505b61361a613612856134e0565b8301826135ba565b50505b505050565b5f82821c905092915050565b5f61363d5f1984600802613622565b1980831691505092915050565b5f613655838361362e565b9150826002028217905092915050565b61366f83836134a9565b67ffffffffffffffff811115613688576136876134b3565b5b613692825461323e565b61369d8282856135dc565b5f601f8311600181146136ca575f84156136b8578287013590505b6136c2858261364a565b865550613729565b601f1984166136d886613371565b5f5b828110156136ff578489013582556001820191506020850194506020810190506136da565b8683101561371c5784890135613718601f89168261362e565b8355505b6001600288020188555050505b50505050505050565b828183375f83830152505050565b5f61374b8385612b91565b9350613758838584613732565b61376183612baf565b840190509392505050565b5f6020820190508181035f830152613785818486613740565b90509392505050565b7f7a65726f000000000000000000000000000000000000000000000000000000005f82015250565b5f6137c2600483612e86565b91506137cd8261378e565b602082019050919050565b5f6020820190508181035f8301526137ef816137b6565b9050919050565b7f63616e6e6f7420647261770000000000000000000000000000000000000000005f82015250565b5f61382a600b83612e86565b9150613835826137f6565b602082019050919050565b5f6020820190508181035f8301526138578161381e565b9050919050565b5f613868826127ab565b9150613873836127ab565b9250828202613881816127ab565b91508282048414831517613898576138976131b1565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6138d6826127ab565b91506138e1836127ab565b9250826138f1576138f061389f565b5b828204905092915050565b7f6e6f74206f70656e0000000000000000000000000000000000000000000000005f82015250565b5f613930600883612e86565b915061393b826138fc565b602082019050919050565b5f6020820190508181035f83015261395d81613924565b9050919050565b7f7469636b6574733d3000000000000000000000000000000000000000000000005f82015250565b5f613998600983612e86565b91506139a382613964565b602082019050919050565b5f6020820190508181035f8301526139c58161398c565b9050919050565b5f6060820190506139df5f8301866128d6565b6139ec60208301856128d6565b6139f960408301846128d6565b949350505050565b7f616c7265616479207377657074000000000000000000000000000000000000005f82015250565b5f613a35600d83612e86565b9150613a4082613a01565b602082019050919050565b5f6020820190508181035f830152613a6281613a29565b9050919050565b7f746f6f206561726c7900000000000000000000000000000000000000000000005f82015250565b5f613a9d600983612e86565b9150613aa882613a69565b602082019050919050565b5f6020820190508181035f830152613aca81613a91565b9050919050565b5f604082019050613ae45f8301856128d6565b613af16020830184612cfe565b9392505050565b7f62616420726571756573740000000000000000000000000000000000000000005f82015250565b5f613b2c600b83612e86565b9150613b3782613af8565b602082019050919050565b5f6020820190508181035f830152613b5981613b20565b9050919050565b7f6e656564203820776f72647300000000000000000000000000000000000000005f82015250565b5f613b94600c83612e86565b9150613b9f82613b60565b602082019050919050565b5f6020820190508181035f830152613bc181613b88565b9050919050565b7f6e6f20656e7472696573000000000000000000000000000000000000000000005f82015250565b5f613bfc600a83612e86565b9150613c0782613bc8565b602082019050919050565b5f6020820190508181035f830152613c2981613bf0565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f613c67826127ab565b9150613c72836127ab565b925082613c8257613c8161389f565b5b828206905092915050565b5f60089050919050565b5f81905092915050565b5f819050919050565b613cb38161285d565b82525050565b5f613cc48383613caa565b60208301905092915050565b5f602082019050919050565b613ce581613c8d565b613cef8184613c97565b9250613cfa82613ca1565b805f5b83811015613d2a578151613d118782613cb9565b9650613d1c83613cd0565b925050600181019050613cfd565b505050505050565b5f60089050919050565b5f81905092915050565b5f819050919050565b613d58816127ab565b82525050565b5f613d698383613d4f565b60208301905092915050565b5f602082019050919050565b613d8a81613d32565b613d948184613d3c565b9250613d9f82613d46565b805f5b83811015613dcf578151613db68782613d5e565b9650613dc183613d75565b925050600181019050613da2565b505050505050565b5f61024082019050613deb5f830187613cdc565b613df9610100830186613d81565b613e076102008301856128d6565b613e156102208301846128d6565b95945050505050565b5f604082019050613e315f830185612cfe565b613e3e60208301846128d6565b9392505050565b5f81905092915050565b5f613e5982612b87565b613e638185613e45565b9350613e73818560208601612ba1565b80840191505092915050565b5f613e8a8284613e4f565b915081905092915050565b613e9e816128fe565b8114613ea8575f5ffd5b50565b5f81519050613eb981613e95565b92915050565b5f60208284031215613ed457613ed36127a3565b5b5f613ee184828501613eab565b91505092915050565b5f606082019050613efd5f830186612cfe565b613f0a6020830185612cfe565b613f1760408301846128d6565b94935050505056fea264697066735822122039e9fb578d3d922d82e4fb90802a1a8e6638696b8fbfa02638d78368667f283e64736f6c634300081f0033000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec700000000000000000000000000000000000000000000000000000000000f4240000000000000000000000000353552a83be0a3182376378a4e4f2576d0ab205b000000000000000000000000d7f86b4b8cae7d942340ff628f82735b7a20893aae2d009d62a397f22f38a7efaf7cc97d3724ad4c450c4c811fcaa48057d260293fd2fec10d06ee8f65e7f2e95f5c56511359ece3f33960ad8a866ae24a8ff10b
Deployed Bytecode
0x608060405234801561000f575f5ffd5b506004361061025c575f3560e01c80636e04ff0d11610144578063ab4ccf01116100c1578063c19d93fb11610085578063c19d93fb146106f9578063e50e64d514610717578063f25f4b5614610733578063f2fde38b14610751578063fc0c546a1461076d578063fc2a88c31461078b5761025c565b8063ab4ccf0114610651578063b30906d41461066f578063b48ac18e1461069f578063bf333f2c146106bd578063c02e580e146106db5761025c565b80639f34fc80116101085780639f34fc80146105bf578063a0c7f71c146105dd578063a3e56fa81461060d578063a57848b61461062b578063a59f3e0c146106355761025c565b80636e04ff0d1461051a57806370d626671461054b5780638da5cb5b1461056757806390d49b9d146105855780639cbe5efd146105a15761025c565b806332615640116101dd5780633cf396d0116101a15780633cf396d01461047c5780634585e33b1461049a578063598bc486146104b65780635c900a1a146104d45780635fef4b4e146104f25780636641ea08146104fc5761025c565b806332615640146103e8578063379607f5146104065780633b7ed734146104225780633c4048c4146104405780633cc82e091461045e5761025c565b80631b9934ec116102245780631b9934ec146103325780631fe543e314610362578063249d39e91461037e5780632b36e2971461039c57806331657926146103b85761025c565b8063041d443e1461026057806306820b601461027e57806309c79735146102ae5780631209b1f6146102de5780631b0c27da146102fc575b5f5ffd5b6102686107a9565b604051610275919061278a565b60405180910390f35b610298600480360381019061029391906127de565b6107af565b6040516102a59190612825565b60405180910390f35b6102c860048036038101906102c39190612898565b6107dc565b6040516102d591906128e5565b60405180910390f35b6102e6610832565b6040516102f391906128e5565b60405180910390f35b610316600480360381019061031191906127de565b610856565b6040516103299796959493929190612918565b60405180910390f35b61034c600480360381019061034791906127de565b6108ac565b60405161035991906128e5565b60405180910390f35b61037c600480360381019061037791906129e6565b6108cc565b005b61038661098e565b60405161039391906128e5565b60405180910390f35b6103b660048036038101906103b19190612ad0565b610994565b005b6103d260048036038101906103cd9190612b34565b610bd2565b6040516103df91906128e5565b60405180910390f35b6103f0610c29565b6040516103fd91906128e5565b60405180910390f35b610420600480360381019061041b91906127de565b610c2f565b005b61042a610e75565b6040516104379190612b6e565b60405180910390f35b610448610e8b565b6040516104559190612bf7565b60405180910390f35b610466610f17565b6040516104739190612c17565b60405180910390f35b610484610f7e565b60405161049191906128e5565b60405180910390f35b6104b460048036038101906104af9190612c85565b610f84565b005b6104be610f9e565b6040516104cb9190612825565b60405180910390f35b6104dc610fb1565b6040516104e99190612b6e565b60405180910390f35b6104fa610fb6565b005b610504611194565b60405161051191906128e5565b60405180910390f35b610534600480360381019061052f9190612c85565b61119b565b604051610542929190612cd0565b60405180910390f35b61056560048036038101906105609190612c85565b6111c0565b005b61056f611294565b60405161057c9190612d0d565b60405180910390f35b61059f600480360381019061059a9190612b34565b6112b8565b005b6105a961146e565b6040516105b691906128e5565b60405180910390f35b6105c7611474565b6040516105d491906128e5565b60405180910390f35b6105f760048036038101906105f29190612898565b61147b565b60405161060491906128e5565b60405180910390f35b61061561149b565b6040516106229190612d81565b60405180910390f35b6106336114bf565b005b61064f600480360381019061064a91906127de565b611727565b005b610659611a03565b60405161066691906128e5565b60405180910390f35b610689600480360381019061068491906127de565b611a0f565b6040516106969190612d0d565b60405180910390f35b6106a7611a4a565b6040516106b491906128e5565b60405180910390f35b6106c5611a4f565b6040516106d291906128e5565b60405180910390f35b6106e3611a55565b6040516106f091906128e5565b60405180910390f35b610701611a5b565b60405161070e9190612e0d565b60405180910390f35b610731600480360381019061072c91906127de565b611a6d565b005b61073b611c69565b6040516107489190612d0d565b60405180910390f35b61076b60048036038101906107669190612b34565b611c8e565b005b610775611e3d565b6040516107829190612e46565b60405180910390f35b610793611e61565b6040516107a091906128e5565b60405180910390f35b60045481565b600181600881106107be575f80fd5b60109182820401919006600202915054906101000a900461ffff1681565b5f600b5f8481526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b7f00000000000000000000000000000000000000000000000000000000000f424081565b600e602052805f5260405f205f91509050805f015f9054906101000a900460ff1690805f0160019054906101000a900460ff16908060010154908060020154908060030154908060040154908060050154905087565b5f60085482036108c357600a8054905090506108c7565b5f90505b919050565b7f000000000000000000000000d7f86b4b8cae7d942340ff628f82735b7a20893a73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461097e57337f000000000000000000000000d7f86b4b8cae7d942340ff628f82735b7a20893a6040517f1cf993f4000000000000000000000000000000000000000000000000000000008152600401610975929190612e5f565b60405180910390fd5b610989838383611e67565b505050565b61271081565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a19576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8403610a5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5290612ee0565b60405180910390fd5b5f5f1b8303610a9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9690612f48565b60405180910390fd5b60018261ffff1610158015610ab9575060c88261ffff1611155b610af8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aef90612fb0565b60405180910390fd5b62030d408163ffffffff161015610b44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3b90613018565b60405180910390fd5b83600381905550826004819055508160055f6101000a81548161ffff021916908361ffff16021790555080600560026101000a81548163ffffffff021916908363ffffffff1602179055507f163bf9b5bf64f3835fe8fa3ad7f427b7ebac8c1681d8c0b2b30455db96f11cbe84848484604051610bc49493929190613036565b60405180910390a150505050565b5f600b5f60085481526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b60035481565b5f600e5f8381526020019081526020015f209050805f015f9054906101000a900460ff16610c92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c89906130c3565b60405180910390fd5b8060040154421115610cd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd09061312b565b60405180910390fd5b5f600f5f8481526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f8111610d6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6290613193565b60405180910390fd5b5f600f5f8581526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555080826005015f828254610dcf91906131de565b92505081905550610e2133827f000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec773ffffffffffffffffffffffffffffffffffffffff1661231a9092919063ffffffff16565b3373ffffffffffffffffffffffffffffffffffffffff16837f4ec90e965519d92681267467f775ada5bd214aa92c0dc93d90a5e880ce9ed02683604051610e6891906128e5565b60405180910390a3505050565b600560029054906101000a900463ffffffff1681565b60068054610e989061323e565b80601f0160208091040260200160405190810160405280929190818152602001828054610ec49061323e565b8015610f0f5780601f10610ee657610100808354040283529160200191610f0f565b820191905f5260205f20905b815481529060010190602001808311610ef257829003601f168201915b505050505081565b5f5f6001811115610f2b57610f2a612d9a565b5b60075f9054906101000a900460ff166001811115610f4c57610f4b612d9a565b5b148015610f5b57505f60095414155b8015610f6957506009544210155b8015610f7957505f600a80549050115b905090565b600d5481565b610f8c610f17565b15610f9a57610f996114bf565b5b5050565b60055f9054906101000a900461ffff1681565b600881565b600180811115610fc957610fc8612d9a565b5b60075f9054906101000a900460ff166001811115610fea57610fe9612d9a565b5b1461102a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611021906132b8565b60405180910390fd5b610708600d5461103a91906132d6565b42101561107c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107390613353565b60405180910390fd5b5f7f000000000000000000000000d7f86b4b8cae7d942340ff628f82735b7a20893a73ffffffffffffffffffffffffffffffffffffffff16639ff308b060045460035460055f9054906101000a900461ffff16600560029054906101000a900463ffffffff16600860066040518763ffffffff1660e01b815260040161110796959493929190613404565b6020604051808303815f875af1158015611123573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611147919061347e565b905080600c8190555042600d819055506008547fd7c89428f02c0f77173ea8ae9c34ed8e391dbfcdb64f3753dc2e30cb3b05d9a68260405161118991906128e5565b60405180910390a250565b6202a30081565b5f60606111a6610f17565b915060405180602001604052805f81525090509250929050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611245576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818160069182611256929190613665565b507f67f4435c5217d88ad39e9b7d6fa5eae245856cf4f4d65eeb5b68afdb205cc98d828260405161128892919061376c565b60405180910390a15050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461133d576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036113ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a2906137d8565b60405180910390fd5b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f362a006325d32978b283e449d254cfcf93e2cccc321603ead9a74238d8dbf36e60405160405180910390a35050565b60085481565b62278d0081565b600f602052815f5260405f20602052805f5260405f205f91509150505481565b7f000000000000000000000000d7f86b4b8cae7d942340ff628f82735b7a20893a81565b6114c7610f17565b611506576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fd90613840565b60405180910390fd5b600160075f6101000a81548160ff0219169083600181111561152b5761152a612d9a565b5b02179055505f7f000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec773ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161158a9190612d0d565b602060405180830381865afa1580156115a5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115c9919061347e565b90505f600e5f60085481526020019081526020015f2090508181600101819055506127106103e8836115fb919061385e565b61160591906138cc565b81600201819055505f7f000000000000000000000000d7f86b4b8cae7d942340ff628f82735b7a20893a73ffffffffffffffffffffffffffffffffffffffff16639ff308b060045460035460055f9054906101000a900461ffff16600560029054906101000a900463ffffffff16600860066040518763ffffffff1660e01b815260040161169896959493929190613404565b6020604051808303815f875af11580156116b4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116d8919061347e565b905080600c8190555042600d819055506008547fa87d18931b669b94d135986745ba30491257a77c255767cdd6796f697c1172f18260405161171a91906128e5565b60405180910390a2505050565b5f600181111561173a57611739612d9a565b5b60075f9054906101000a900460ff16600181111561175b5761175a612d9a565b5b1461179b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179290613946565b60405180910390fd5b5f81116117dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d4906139ae565b60405180910390fd5b5f7f00000000000000000000000000000000000000000000000000000000000f42408261180a919061385e565b90506118593330837f000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec773ffffffffffffffffffffffffffffffffffffffff166124a7909392919063ffffffff16565b5f5f90505b828110156118d357600a33908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808060010191505061185e565b5081600b5f60085481526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461193191906132d6565b925050819055503373ffffffffffffffffffffffffffffffffffffffff166008547fa6032b9e702317e14754d2060e54d6d45f3d32b66d6ce527a467ccf3e93d5dc08484600a8054905060405161198a939291906139cc565b60405180910390a35f6009541480156119a85750600a808054905010155b156119ff576202a300426119bc91906132d6565b6009819055506008547ff51f7437278a388702c00ddb04f3e0a5df923ea1e998d3ae4bdf278947d2e2166009546040516119f691906128e5565b60405180910390a25b5050565b5f600a80549050905090565b600a8181548110611a1e575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a81565b6103e881565b60095481565b60075f9054906101000a900460ff1681565b5f600e5f8381526020019081526020015f209050805f015f9054906101000a900460ff16611ad0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac7906130c3565b60405180910390fd5b805f0160019054906101000a900460ff1615611b21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1890613a4b565b60405180910390fd5b80600401544211611b67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5e90613ab3565b60405180910390fd5b5f816005015490505f82600501819055506001825f0160016101000a81548160ff0219169083151502179055505f811115611c0957611c0860025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16827f000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec773ffffffffffffffffffffffffffffffffffffffff1661231a9092919063ffffffff16565b5b827ffff0ca327099835eb56561b1562ee7b025a27cebb9b51ea3501224fc258945618260025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051611c5c929190613ad1565b60405180910390a2505050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d13576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611d81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d78906137d8565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b7f000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec781565b600c5481565b600180811115611e7a57611e79612d9a565b5b60075f9054906101000a900460ff166001811115611e9b57611e9a612d9a565b5b14611edb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed2906132b8565b60405180910390fd5b600c548314611f1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1690613b42565b60405180910390fd5b6008828290501015611f66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5d90613baa565b60405180910390fd5b5f600a8054905011611fad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa490613c12565b60405180910390fd5b5f60085490505f600e5f8381526020019081526020015f2090505f816001015490505f826002015490505f81111561204c5761204b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16827f000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec773ffffffffffffffffffffffffffffffffffffffff1661231a9092919063ffffffff16565b5b612054612637565b61205c61265a565b5f5f90505f5f90505b600881101561220f575f600a805490508b8b8481811061208857612087613c30565b5b905060200201356120999190613c5d565b90505f600a82815481106120b0576120af613c30565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050808684600881106120ee576120ed613c30565b5b602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f6127106001856008811061213d5761213c613c30565b5b601091828204019190066002029054906101000a900461ffff1661ffff168a612166919061385e565b61217091906138cc565b90508086856008811061218657612185613c30565b5b602002018181525050808561219b91906132d6565b945080600f5f8d81526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546121f891906132d6565b925050819055505050508080600101915050612065565b506001865f015f6101000a81548160ff02191690831515021790555042866003018190555062278d004261224391906132d6565b8660040181905550808660050181905550828660060190600861226792919061267d565b508186600e0190600861227b9291906126f9565b50867f2d6ee140239c9ec8715c1096966db199fe090391fe61f7c98e598c2131294c948484878a600401546040516122b69493929190613dd7565b60405180910390a2600a5f6122cb9190612739565b5f6009819055505f60075f6101000a81548160ff021916908360018111156122f6576122f5612d9a565b5b021790555060018761230891906132d6565b60088190555050505050505050505050565b5f5f8473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b858560405160240161234e929190613e1e565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516123b89190613e7f565b5f604051808303815f865af19150503d805f81146123f1576040519150601f19603f3d011682016040523d82523d5f602084013e6123f6565b606091505b50915091508161243d57846040517f5274afe70000000000000000000000000000000000000000000000000000000081526004016124349190612d0d565b60405180910390fd5b5f815111801561245e57508080602001905181019061245c9190613ebf565b155b156124a057846040517f5274afe70000000000000000000000000000000000000000000000000000000081526004016124979190612d0d565b60405180910390fd5b5050505050565b5f5f8573ffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b8686866040516024016124dd93929190613eea565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516125479190613e7f565b5f604051808303815f865af19150503d805f8114612580576040519150601f19603f3d011682016040523d82523d5f602084013e612585565b606091505b5091509150816125cc57856040517f5274afe70000000000000000000000000000000000000000000000000000000081526004016125c39190612d0d565b60405180910390fd5b5f81511180156125ed5750808060200190518101906125eb9190613ebf565b155b1561262f57856040517f5274afe70000000000000000000000000000000000000000000000000000000081526004016126269190612d0d565b60405180910390fd5b505050505050565b604051806101000160405280600890602082028036833780820191505090505090565b604051806101000160405280600890602082028036833780820191505090505090565b82600881019282156126e8579160200282015b828111156126e7578251825f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190612690565b5b5090506126f59190612757565b5090565b8260088101928215612728579160200282015b8281111561272757825182559160200191906001019061270c565b5b5090506127359190612757565b5090565b5080545f8255905f5260205f20908101906127549190612757565b50565b5b8082111561276e575f815f905550600101612758565b5090565b5f819050919050565b61278481612772565b82525050565b5f60208201905061279d5f83018461277b565b92915050565b5f5ffd5b5f5ffd5b5f819050919050565b6127bd816127ab565b81146127c7575f5ffd5b50565b5f813590506127d8816127b4565b92915050565b5f602082840312156127f3576127f26127a3565b5b5f612800848285016127ca565b91505092915050565b5f61ffff82169050919050565b61281f81612809565b82525050565b5f6020820190506128385f830184612816565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6128678261283e565b9050919050565b6128778161285d565b8114612881575f5ffd5b50565b5f813590506128928161286e565b92915050565b5f5f604083850312156128ae576128ad6127a3565b5b5f6128bb858286016127ca565b92505060206128cc85828601612884565b9150509250929050565b6128df816127ab565b82525050565b5f6020820190506128f85f8301846128d6565b92915050565b5f8115159050919050565b612912816128fe565b82525050565b5f60e08201905061292b5f83018a612909565b6129386020830189612909565b61294560408301886128d6565b61295260608301876128d6565b61295f60808301866128d6565b61296c60a08301856128d6565b61297960c08301846128d6565b98975050505050505050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f8401126129a6576129a5612985565b5b8235905067ffffffffffffffff8111156129c3576129c2612989565b5b6020830191508360208202830111156129df576129de61298d565b5b9250929050565b5f5f5f604084860312156129fd576129fc6127a3565b5b5f612a0a868287016127ca565b935050602084013567ffffffffffffffff811115612a2b57612a2a6127a7565b5b612a3786828701612991565b92509250509250925092565b612a4c81612772565b8114612a56575f5ffd5b50565b5f81359050612a6781612a43565b92915050565b612a7681612809565b8114612a80575f5ffd5b50565b5f81359050612a9181612a6d565b92915050565b5f63ffffffff82169050919050565b612aaf81612a97565b8114612ab9575f5ffd5b50565b5f81359050612aca81612aa6565b92915050565b5f5f5f5f60808587031215612ae857612ae76127a3565b5b5f612af5878288016127ca565b9450506020612b0687828801612a59565b9350506040612b1787828801612a83565b9250506060612b2887828801612abc565b91505092959194509250565b5f60208284031215612b4957612b486127a3565b5b5f612b5684828501612884565b91505092915050565b612b6881612a97565b82525050565b5f602082019050612b815f830184612b5f565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612bc982612b87565b612bd38185612b91565b9350612be3818560208601612ba1565b612bec81612baf565b840191505092915050565b5f6020820190508181035f830152612c0f8184612bbf565b905092915050565b5f602082019050612c2a5f830184612909565b92915050565b5f5f83601f840112612c4557612c44612985565b5b8235905067ffffffffffffffff811115612c6257612c61612989565b5b602083019150836001820283011115612c7e57612c7d61298d565b5b9250929050565b5f5f60208385031215612c9b57612c9a6127a3565b5b5f83013567ffffffffffffffff811115612cb857612cb76127a7565b5b612cc485828601612c30565b92509250509250929050565b5f604082019050612ce35f830185612909565b8181036020830152612cf58184612bbf565b90509392505050565b612d078161285d565b82525050565b5f602082019050612d205f830184612cfe565b92915050565b5f819050919050565b5f612d49612d44612d3f8461283e565b612d26565b61283e565b9050919050565b5f612d5a82612d2f565b9050919050565b5f612d6b82612d50565b9050919050565b612d7b81612d61565b82525050565b5f602082019050612d945f830184612d72565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60028110612dd857612dd7612d9a565b5b50565b5f819050612de882612dc7565b919050565b5f612df782612ddb565b9050919050565b612e0781612ded565b82525050565b5f602082019050612e205f830184612dfe565b92915050565b5f612e3082612d50565b9050919050565b612e4081612e26565b82525050565b5f602082019050612e595f830184612e37565b92915050565b5f604082019050612e725f830185612cfe565b612e7f6020830184612cfe565b9392505050565b5f82825260208201905092915050565b7f73756249643d30000000000000000000000000000000000000000000000000005f82015250565b5f612eca600783612e86565b9150612ed582612e96565b602082019050919050565b5f6020820190508181035f830152612ef781612ebe565b9050919050565b7f6b6579486173683d3000000000000000000000000000000000000000000000005f82015250565b5f612f32600983612e86565b9150612f3d82612efe565b602082019050919050565b5f6020820190508181035f830152612f5f81612f26565b9050919050565b7f636f6e66730000000000000000000000000000000000000000000000000000005f82015250565b5f612f9a600583612e86565b9150612fa582612f66565b602082019050919050565b5f6020820190508181035f830152612fc781612f8e565b9050919050565b7f6761734c696d6974206c6f7700000000000000000000000000000000000000005f82015250565b5f613002600c83612e86565b915061300d82612fce565b602082019050919050565b5f6020820190508181035f83015261302f81612ff6565b9050919050565b5f6080820190506130495f8301876128d6565b613056602083018661277b565b6130636040830185612816565b6130706060830184612b5f565b95945050505050565b7f6e6f74207265736f6c76656400000000000000000000000000000000000000005f82015250565b5f6130ad600c83612e86565b91506130b882613079565b602082019050919050565b5f6020820190508181035f8301526130da816130a1565b9050919050565b7f636c61696d20636c6f73656400000000000000000000000000000000000000005f82015250565b5f613115600c83612e86565b9150613120826130e1565b602082019050919050565b5f6020820190508181035f83015261314281613109565b9050919050565b7f6e6f7468696e67000000000000000000000000000000000000000000000000005f82015250565b5f61317d600783612e86565b915061318882613149565b602082019050919050565b5f6020820190508181035f8301526131aa81613171565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6131e8826127ab565b91506131f3836127ab565b925082820390508181111561320b5761320a6131b1565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061325557607f821691505b60208210810361326857613267613211565b5b50919050565b7f6e6f742064726177696e670000000000000000000000000000000000000000005f82015250565b5f6132a2600b83612e86565b91506132ad8261326e565b602082019050919050565b5f6020820190508181035f8301526132cf81613296565b9050919050565b5f6132e0826127ab565b91506132eb836127ab565b9250828201905080821115613303576133026131b1565b5b92915050565b7f746f6f20736f6f6e0000000000000000000000000000000000000000000000005f82015250565b5f61333d600883612e86565b915061334882613309565b602082019050919050565b5f6020820190508181035f83015261336a81613331565b9050919050565b5f819050815f5260205f209050919050565b5f815461338f8161323e565b6133998186612b91565b9450600182165f81146133b357600181146133c9576133fb565b60ff1983168652811515602002860193506133fb565b6133d285613371565b5f5b838110156133f3578154818901526001820191506020810190506133d4565b808801955050505b50505092915050565b5f60c0820190506134175f83018961277b565b61342460208301886128d6565b6134316040830187612816565b61343e6060830186612b5f565b61344b6080830185612b5f565b81810360a083015261345d8184613383565b9050979650505050505050565b5f81519050613478816127b4565b92915050565b5f60208284031215613493576134926127a3565b5b5f6134a08482850161346a565b91505092915050565b5f82905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830261352a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826134ef565b61353486836134ef565b95508019841693508086168417925050509392505050565b5f61356661356161355c846127ab565b612d26565b6127ab565b9050919050565b5f819050919050565b61357f8361354c565b61359361358b8261356d565b8484546134fb565b825550505050565b5f5f905090565b6135aa61359b565b6135b5818484613576565b505050565b5b818110156135d8576135cd5f826135a2565b6001810190506135bb565b5050565b601f82111561361d576135ee81613371565b6135f7846134e0565b81016020851015613606578190505b61361a613612856134e0565b8301826135ba565b50505b505050565b5f82821c905092915050565b5f61363d5f1984600802613622565b1980831691505092915050565b5f613655838361362e565b9150826002028217905092915050565b61366f83836134a9565b67ffffffffffffffff811115613688576136876134b3565b5b613692825461323e565b61369d8282856135dc565b5f601f8311600181146136ca575f84156136b8578287013590505b6136c2858261364a565b865550613729565b601f1984166136d886613371565b5f5b828110156136ff578489013582556001820191506020850194506020810190506136da565b8683101561371c5784890135613718601f89168261362e565b8355505b6001600288020188555050505b50505050505050565b828183375f83830152505050565b5f61374b8385612b91565b9350613758838584613732565b61376183612baf565b840190509392505050565b5f6020820190508181035f830152613785818486613740565b90509392505050565b7f7a65726f000000000000000000000000000000000000000000000000000000005f82015250565b5f6137c2600483612e86565b91506137cd8261378e565b602082019050919050565b5f6020820190508181035f8301526137ef816137b6565b9050919050565b7f63616e6e6f7420647261770000000000000000000000000000000000000000005f82015250565b5f61382a600b83612e86565b9150613835826137f6565b602082019050919050565b5f6020820190508181035f8301526138578161381e565b9050919050565b5f613868826127ab565b9150613873836127ab565b9250828202613881816127ab565b91508282048414831517613898576138976131b1565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6138d6826127ab565b91506138e1836127ab565b9250826138f1576138f061389f565b5b828204905092915050565b7f6e6f74206f70656e0000000000000000000000000000000000000000000000005f82015250565b5f613930600883612e86565b915061393b826138fc565b602082019050919050565b5f6020820190508181035f83015261395d81613924565b9050919050565b7f7469636b6574733d3000000000000000000000000000000000000000000000005f82015250565b5f613998600983612e86565b91506139a382613964565b602082019050919050565b5f6020820190508181035f8301526139c58161398c565b9050919050565b5f6060820190506139df5f8301866128d6565b6139ec60208301856128d6565b6139f960408301846128d6565b949350505050565b7f616c7265616479207377657074000000000000000000000000000000000000005f82015250565b5f613a35600d83612e86565b9150613a4082613a01565b602082019050919050565b5f6020820190508181035f830152613a6281613a29565b9050919050565b7f746f6f206561726c7900000000000000000000000000000000000000000000005f82015250565b5f613a9d600983612e86565b9150613aa882613a69565b602082019050919050565b5f6020820190508181035f830152613aca81613a91565b9050919050565b5f604082019050613ae45f8301856128d6565b613af16020830184612cfe565b9392505050565b7f62616420726571756573740000000000000000000000000000000000000000005f82015250565b5f613b2c600b83612e86565b9150613b3782613af8565b602082019050919050565b5f6020820190508181035f830152613b5981613b20565b9050919050565b7f6e656564203820776f72647300000000000000000000000000000000000000005f82015250565b5f613b94600c83612e86565b9150613b9f82613b60565b602082019050919050565b5f6020820190508181035f830152613bc181613b88565b9050919050565b7f6e6f20656e7472696573000000000000000000000000000000000000000000005f82015250565b5f613bfc600a83612e86565b9150613c0782613bc8565b602082019050919050565b5f6020820190508181035f830152613c2981613bf0565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f613c67826127ab565b9150613c72836127ab565b925082613c8257613c8161389f565b5b828206905092915050565b5f60089050919050565b5f81905092915050565b5f819050919050565b613cb38161285d565b82525050565b5f613cc48383613caa565b60208301905092915050565b5f602082019050919050565b613ce581613c8d565b613cef8184613c97565b9250613cfa82613ca1565b805f5b83811015613d2a578151613d118782613cb9565b9650613d1c83613cd0565b925050600181019050613cfd565b505050505050565b5f60089050919050565b5f81905092915050565b5f819050919050565b613d58816127ab565b82525050565b5f613d698383613d4f565b60208301905092915050565b5f602082019050919050565b613d8a81613d32565b613d948184613d3c565b9250613d9f82613d46565b805f5b83811015613dcf578151613db68782613d5e565b9650613dc183613d75565b925050600181019050613da2565b505050505050565b5f61024082019050613deb5f830187613cdc565b613df9610100830186613d81565b613e076102008301856128d6565b613e156102208301846128d6565b95945050505050565b5f604082019050613e315f830185612cfe565b613e3e60208301846128d6565b9392505050565b5f81905092915050565b5f613e5982612b87565b613e638185613e45565b9350613e73818560208601612ba1565b80840191505092915050565b5f613e8a8284613e4f565b915081905092915050565b613e9e816128fe565b8114613ea8575f5ffd5b50565b5f81519050613eb981613e95565b92915050565b5f60208284031215613ed457613ed36127a3565b5b5f613ee184828501613eab565b91505092915050565b5f606082019050613efd5f830186612cfe565b613f0a6020830185612cfe565b613f1760408301846128d6565b94935050505056fea264697066735822122039e9fb578d3d922d82e4fb90802a1a8e6638696b8fbfa02638d78368667f283e64736f6c634300081f0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec700000000000000000000000000000000000000000000000000000000000f4240000000000000000000000000353552a83be0a3182376378a4e4f2576d0ab205b000000000000000000000000d7f86b4b8cae7d942340ff628f82735b7a20893aae2d009d62a397f22f38a7efaf7cc97d3724ad4c450c4c811fcaa48057d260293fd2fec10d06ee8f65e7f2e95f5c56511359ece3f33960ad8a866ae24a8ff10b
-----Decoded View---------------
Arg [0] : token_ (address): 0xdAC17F958D2ee523a2206206994597C13D831ec7
Arg [1] : ticketPrice_ (uint256): 1000000
Arg [2] : feeWallet_ (address): 0x353552A83Be0a3182376378a4E4f2576d0ab205B
Arg [3] : vrfCoordinator_ (address): 0xD7f86b4b8Cae7D942340FF628F82735b7a20893a
Arg [4] : vrfSubId_ (uint256): 78781948014502908676530709750612421510853537084875252597404666031700658249769
Arg [5] : vrfKeyHash_ (bytes32): 0x3fd2fec10d06ee8f65e7f2e95f5c56511359ece3f33960ad8a866ae24a8ff10b
-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7
Arg [1] : 00000000000000000000000000000000000000000000000000000000000f4240
Arg [2] : 000000000000000000000000353552a83be0a3182376378a4e4f2576d0ab205b
Arg [3] : 000000000000000000000000d7f86b4b8cae7d942340ff628f82735b7a20893a
Arg [4] : ae2d009d62a397f22f38a7efaf7cc97d3724ad4c450c4c811fcaa48057d26029
Arg [5] : 3fd2fec10d06ee8f65e7f2e95f5c56511359ece3f33960ad8a866ae24a8ff10b
Loading...
Loading
Loading...
Loading
Net Worth in USD
$10.00
Net Worth in ETH
0.004819
Token Allocations
USDT
100.00%
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|---|---|---|---|---|
| ETH | 100.00% | $1 | 10 | $10 |
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.