// SPDX-License-Identifier: MIT
pragma solidity 0.8.24;
/*
PrimeBrokers — 4,444 seats on Robinhood Chain.
Every mint pays out $PRIME, scaled to that specific token's trait rarity.
ERC-721C compliant (ICreatorToken interface) for OpenSea Studio creator-enforcement compatibility.
Deployment notes (Robinhood Chain):
- transferValidator defaults to address(0) — Limit Break V5 is not deployed on Robinhood Chain,
so no validator hooks fire. The ICreatorToken interface is still implemented so OpenSea Studio
recognizes this as an ERC-721C-compliant contract and lets you configure enforcement later
(e.g. if/when a validator is deployed on this chain).
- Compile with EVM version "shanghai".
- Optimizer: enabled, 200 runs, viaIR ON.
- Deploy order (simple, no address prediction needed):
1. Deploy PrimeToken() — no constructor args.
2. Deploy PrimeBrokers(primeToken = <address from step 1>, rewardData = <packed 17,776-byte blob>).
3. Call PrimeToken.setMinter(<PrimeBrokers address from step 2>) — one-time, locks after.
4. Call PrimeToken.executeTGE(...) — one-time, distributes Liquidity/Treasury/Marketing, starts Team vesting.
5. Call PrimeBrokers.setBaseURI(...), setMintPrice(...), setMaxPerWallet(...) as needed.
6. Call PrimeBrokers.setMintOpen(true) when ready to go live.
*/
/// @notice Minimal SSTORE2-style pointer: reward data (17,776 bytes, 4 bytes per tokenId,
/// big-endian uint32, ordered tokenId 1..4444) is stored as a contract's own bytecode
/// and read back via EXTCODECOPY — far cheaper than a storage array for 4,444 entries.
library RewardDataLib {
function write(bytes memory data) internal returns (address pointer) {
// Prefix with 0x00 (STOP) so the deployed bytecode can never be executed if called directly.
bytes memory runtimeCode = abi.encodePacked(hex"00", data);
uint32 len = uint32(runtimeCode.length);
// Creation code: copies `runtimeCode` (appended after this 14-byte preamble) into memory
// and returns it, so the deployed contract's bytecode becomes exactly `runtimeCode`.
bytes memory creationCode = abi.encodePacked(
hex"63", len,
hex"80",
hex"600E",
hex"6000",
hex"39",
hex"6000",
hex"F3",
runtimeCode
);
assembly {
pointer := create(0, add(creationCode, 0x20), mload(creationCode))
}
require(pointer != address(0), "reward data deploy failed");
}
function readUint32(address pointer, uint256 tokenId) internal view returns (uint32 value) {
uint256 offset = 1 + (tokenId - 1) * 4;
bytes4 raw;
assembly {
extcodecopy(pointer, 0x00, offset, 4)
raw := mload(0x00)
}
value = uint32(raw);
}
}
interface IPrimeToken {
function mint(address to, uint256 amount) external;
}
/// @notice Standard Limit Break ICreatorToken interface — lets marketplaces (OpenSea Studio)
/// detect and configure transfer validation for this collection.
interface ITransferValidator {
function validateTransfer(address caller, address from, address to, uint256 tokenId) external view;
}
contract PrimeBrokers {
using RewardDataLib for address;
string public constant name = "PrimeBrokers";
string public constant symbol = "PRIME";
uint256 public constant MAX_SUPPLY = 4444;
uint256 public constant OWNER_MINT_PRICE = 0; // free for owner
uint256 public mintPrice; // public mint price, owner-settable, starts at 0 (TBA)
uint256 public maxPerWallet; // owner-settable, starts at 5
address public owner;
address public immutable primeToken; // PrimeToken ERC-20 contract
address public immutable rewardData; // SSTORE2 pointer holding packed reward amounts
string public baseURI;
uint256 public totalSupply;
mapping(uint256 => address) public ownerOf;
mapping(address => uint256) public balanceOf;
mapping(uint256 => address) public getApproved;
mapping(address => mapping(address => bool)) public isApprovedForAll;
mapping(address => uint256) public mintedPerWallet;
bool public mintOpen; // master open/close switch
bool public paused; // separate temporary pause switch — both must allow minting
// ERC-721C / ICreatorToken
address public transferValidator; // address(0) = no validation (default on Robinhood Chain)
// ERC-2981 royalty
address public royaltyReceiver;
uint96 public royaltyBps; // basis points, e.g. 500 = 5%
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);
event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);
event ApprovalForAll(address indexed owner, address indexed operator, bool approved);
event RewardPaid(uint256 indexed tokenId, address indexed to, uint256 amount);
event TransferValidatorUpdated(address indexed oldValidator, address indexed newValidator);
event MintOpenUpdated(bool open_);
event PausedUpdated(bool paused_);
event MaxPerWalletUpdated(uint256 newMax);
event MintPriceUpdated(uint256 newPrice);
event OwnerMint(address indexed to, uint256 quantity);
error NotOwner();
error MintClosed();
error MintPaused();
error SoldOut();
error WalletLimitReached();
error WrongPrice();
error TooManyPerTx();
error NotTokenOwnerOrApproved();
error TokenDoesNotExist();
modifier onlyOwner() {
if (msg.sender != owner) revert NotOwner();
_;
}
/// @param _primeToken address of the already-deployed PrimeToken contract (minter must equal this contract)
/// @param _rewardDataBytes packed 17,776-byte reward table, deployed here via SSTORE2 in the constructor
constructor(address _primeToken, bytes memory _rewardDataBytes) {
owner = msg.sender;
primeToken = _primeToken;
rewardData = RewardDataLib.write(_rewardDataBytes);
maxPerWallet = 5;
mintPrice = 0.0004 ether; // public mint price, owner-adjustable via setMintPrice
royaltyReceiver = msg.sender;
royaltyBps = 500; // 5% default, owner-adjustable
}
// ---------------- Minting (public) ----------------
function mint(uint256 quantity) external payable {
if (!mintOpen) revert MintClosed();
if (paused) revert MintPaused();
if (totalSupply + quantity > MAX_SUPPLY) revert SoldOut();
if (mintedPerWallet[msg.sender] + quantity > maxPerWallet) revert WalletLimitReached();
if (msg.value != mintPrice * quantity) revert WrongPrice();
mintedPerWallet[msg.sender] += quantity;
_mintBatch(msg.sender, quantity);
}
// ---------------- Minting (owner, unlimited, bypasses wallet cap) ----------------
/// @notice Owner-only mint path. Free (0 ETH), unlimited per transaction — bounded only by
/// MAX_SUPPLY like every other mint path. NOT subject to the public maxPerWallet cap.
/// Ignores mintOpen/paused so the owner can mint for giveaways/reserves even while
/// public mint is closed.
function ownerMint(uint256 quantity) external payable onlyOwner {
if (quantity == 0) revert TooManyPerTx();
if (totalSupply + quantity > MAX_SUPPLY) revert SoldOut();
if (msg.value != OWNER_MINT_PRICE * quantity) revert WrongPrice();
_mintBatch(msg.sender, quantity);
emit OwnerMint(msg.sender, quantity);
}
function _mintBatch(address to, uint256 quantity) internal {
for (uint256 i = 0; i < quantity; i++) {
uint256 tokenId = totalSupply + 1; // 1-indexed, matches reward data ordering
totalSupply = tokenId;
ownerOf[tokenId] = to;
unchecked {
balanceOf[to] += 1;
}
emit Transfer(address(0), to, tokenId);
uint256 rewardWhole = rewardData.readUint32(tokenId);
uint256 rewardAmount = rewardWhole * 1e18; // PRIME has 18 decimals
IPrimeToken(primeToken).mint(to, rewardAmount);
emit RewardPaid(tokenId, to, rewardAmount);
}
}
function getRewardFor(uint256 tokenId) external view returns (uint256) {
return rewardData.readUint32(tokenId);
}
// ---------------- Admin ----------------
function setMintOpen(bool open_) external onlyOwner {
mintOpen = open_;
emit MintOpenUpdated(open_);
}
function setPaused(bool paused_) external onlyOwner {
paused = paused_;
emit PausedUpdated(paused_);
}
function setMintPrice(uint256 price) external onlyOwner {
mintPrice = price;
emit MintPriceUpdated(price);
}
function setMaxPerWallet(uint256 newMax) external onlyOwner {
maxPerWallet = newMax;
emit MaxPerWalletUpdated(newMax);
}
function setBaseURI(string calldata uri) external onlyOwner {
baseURI = uri;
}
function setRoyalty(address receiver, uint96 bps) external onlyOwner {
require(bps <= 10000, "bps too high");
royaltyReceiver = receiver;
royaltyBps = bps;
}
function withdraw() external onlyOwner {
(bool ok, ) = owner.call{value: address(this).balance}("");
require(ok, "withdraw failed");
}
function transferOwnership(address newOwner) external onlyOwner {
owner = newOwner;
}
// ---------------- ERC-721C / ICreatorToken ----------------
/// @notice address(0) means no transfer validation is active — the default and current
/// state on Robinhood Chain, since Limit Break V5 is not deployed there.
function getTransferValidator() external view returns (address) {
return transferValidator;
}
function setTransferValidator(address validator) external onlyOwner {
address old = transferValidator;
transferValidator = validator;
emit TransferValidatorUpdated(old, validator);
}
function getTransferValidationFunction() external pure returns (bytes4 functionSignature, bool isViewFunction) {
return (ITransferValidator.validateTransfer.selector, true);
}
// ---------------- ERC-2981 royalty ----------------
function royaltyInfo(uint256, uint256 salePrice) external view returns (address, uint256) {
return (royaltyReceiver, (salePrice * royaltyBps) / 10000);
}
// ---------------- ERC-721 core ----------------
function tokenURI(uint256 tokenId) external view returns (string memory) {
if (ownerOf[tokenId] == address(0)) revert TokenDoesNotExist();
return string(abi.encodePacked(baseURI, _toString(tokenId), ".json"));
}
function approve(address to, uint256 tokenId) external {
address tokenOwner = ownerOf[tokenId];
if (msg.sender != tokenOwner && !isApprovedForAll[tokenOwner][msg.sender]) revert NotTokenOwnerOrApproved();
getApproved[tokenId] = to;
emit Approval(tokenOwner, to, tokenId);
}
function setApprovalForAll(address operator, bool approved) external {
isApprovedForAll[msg.sender][operator] = approved;
emit ApprovalForAll(msg.sender, operator, approved);
}
function transferFrom(address from, address to, uint256 tokenId) public {
if (ownerOf[tokenId] != from) revert NotTokenOwnerOrApproved();
if (msg.sender != from && getApproved[tokenId] != msg.sender && !isApprovedForAll[from][msg.sender]) {
revert NotTokenOwnerOrApproved();
}
if (transferValidator != address(0)) {
ITransferValidator(transferValidator).validateTransfer(msg.sender, from, to, tokenId);
}
delete getApproved[tokenId];
ownerOf[tokenId] = to;
unchecked {
balanceOf[from] -= 1;
balanceOf[to] += 1;
}
emit Transfer(from, to, tokenId);
}
function safeTransferFrom(address from, address to, uint256 tokenId) external {
transferFrom(from, to, tokenId);
}
function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata) external {
transferFrom(from, to, tokenId);
}
function supportsInterface(bytes4 interfaceId) external pure returns (bool) {
return interfaceId == 0x80ac58cd // ERC721
|| interfaceId == 0x5b5e139f // ERC721Metadata
|| interfaceId == 0x01ffc9a7 // ERC165
|| interfaceId == 0x2a55205a // ERC2981 (royalty)
|| interfaceId == 0xad0d7f6c; // ICreatorToken (OpenSea/Limit Break ERC-721C)
}
function _toString(uint256 value) internal pure returns (string memory) {
if (value == 0) return "0";
uint256 temp = value;
uint256 digits;
while (temp != 0) { digits++; temp /= 10; }
bytes memory buffer = new bytes(digits);
while (value != 0) {
digits -= 1;
buffer[digits] = bytes1(uint8(48 + value % 10));
value /= 10;
}
return string(buffer);
}
}[
{
"type": "constructor",
"inputs": [
{
"name": "_primeToken",
"type": "address",
"internalType": "address"
},
{
"name": "_rewardDataBytes",
"type": "bytes",
"internalType": "bytes"
}
],
"stateMutability": "nonpayable"
},
{
"name": "MintClosed",
"type": "error",
"inputs": []
},
{
"name": "MintPaused",
"type": "error",
"inputs": []
},
{
"name": "NotOwner",
"type": "error",
"inputs": []
},
{
"name": "NotTokenOwnerOrApproved",
"type": "error",
"inputs": []
},
{
"name": "SoldOut",
"type": "error",
"inputs": []
},
{
"name": "TokenDoesNotExist",
"type": "error",
"inputs": []
},
{
"name": "TooManyPerTx",
"type": "error",
"inputs": []
},
{
"name": "WalletLimitReached",
"type": "error",
"inputs": []
},
{
"name": "WrongPrice",
"type": "error",
"inputs": []
},
{
"name": "Approval",
"type": "event",
"inputs": [
{
"name": "owner",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "approved",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "tokenId",
"type": "uint256",
"indexed": true,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "ApprovalForAll",
"type": "event",
"inputs": [
{
"name": "owner",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "operator",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "approved",
"type": "bool",
"indexed": false,
"internalType": "bool"
}
],
"anonymous": false
},
{
"name": "MaxPerWalletUpdated",
"type": "event",
"inputs": [
{
"name": "newMax",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "MintOpenUpdated",
"type": "event",
"inputs": [
{
"name": "open_",
"type": "bool",
"indexed": false,
"internalType": "bool"
}
],
"anonymous": false
},
{
"name": "MintPriceUpdated",
"type": "event",
"inputs": [
{
"name": "newPrice",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "OwnerMint",
"type": "event",
"inputs": [
{
"name": "to",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "quantity",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "PausedUpdated",
"type": "event",
"inputs": [
{
"name": "paused_",
"type": "bool",
"indexed": false,
"internalType": "bool"
}
],
"anonymous": false
},
{
"name": "RewardPaid",
"type": "event",
"inputs": [
{
"name": "tokenId",
"type": "uint256",
"indexed": true,
"internalType": "uint256"
},
{
"name": "to",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "amount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "Transfer",
"type": "event",
"inputs": [
{
"name": "from",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "to",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "tokenId",
"type": "uint256",
"indexed": true,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "TransferValidatorUpdated",
"type": "event",
"inputs": [
{
"name": "oldValidator",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "newValidator",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "MAX_SUPPLY",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "OWNER_MINT_PRICE",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "approve",
"type": "function",
"inputs": [
{
"name": "to",
"type": "address",
"internalType": "address"
},
{
"name": "tokenId",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "balanceOf",
"type": "function",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "baseURI",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "string",
"internalType": "string"
}
],
"stateMutability": "view"
},
{
"name": "getApproved",
"type": "function",
"inputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "getRewardFor",
"type": "function",
"inputs": [
{
"name": "tokenId",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "getTransferValidationFunction",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "functionSignature",
"type": "bytes4",
"internalType": "bytes4"
},
{
"name": "isViewFunction",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "pure"
},
{
"name": "getTransferValidator",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "isApprovedForAll",
"type": "function",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
},
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "maxPerWallet",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "mint",
"type": "function",
"inputs": [
{
"name": "quantity",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "payable"
},
{
"name": "mintOpen",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "mintPrice",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "mintedPerWallet",
"type": "function",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "name",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "string",
"internalType": "string"
}
],
"stateMutability": "view"
},
{
"name": "owner",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "ownerMint",
"type": "function",
"inputs": [
{
"name": "quantity",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "payable"
},
{
"name": "ownerOf",
"type": "function",
"inputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "paused",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "primeToken",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "rewardData",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "royaltyBps",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint96",
"internalType": "uint96"
}
],
"stateMutability": "view"
},
{
"name": "royaltyInfo",
"type": "function",
"inputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "salePrice",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
},
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "royaltyReceiver",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "safeTransferFrom",
"type": "function",
"inputs": [
{
"name": "from",
"type": "address",
"internalType": "address"
},
{
"name": "to",
"type": "address",
"internalType": "address"
},
{
"name": "tokenId",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "safeTransferFrom",
"type": "function",
"inputs": [
{
"name": "from",
"type": "address",
"internalType": "address"
},
{
"name": "to",
"type": "address",
"internalType": "address"
},
{
"name": "tokenId",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "",
"type": "bytes",
"internalType": "bytes"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setApprovalForAll",
"type": "function",
"inputs": [
{
"name": "operator",
"type": "address",
"internalType": "address"
},
{
"name": "approved",
"type": "bool",
"internalType": "bool"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setBaseURI",
"type": "function",
"inputs": [
{
"name": "uri",
"type": "string",
"internalType": "string"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setMaxPerWallet",
"type": "function",
"inputs": [
{
"name": "newMax",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setMintOpen",
"type": "function",
"inputs": [
{
"name": "open_",
"type": "bool",
"internalType": "bool"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setMintPrice",
"type": "function",
"inputs": [
{
"name": "price",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setPaused",
"type": "function",
"inputs": [
{
"name": "paused_",
"type": "bool",
"internalType": "bool"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setRoyalty",
"type": "function",
"inputs": [
{
"name": "receiver",
"type": "address",
"internalType": "address"
},
{
"name": "bps",
"type": "uint96",
"internalType": "uint96"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setTransferValidator",
"type": "function",
"inputs": [
{
"name": "validator",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "supportsInterface",
"type": "function",
"inputs": [
{
"name": "interfaceId",
"type": "bytes4",
"internalType": "bytes4"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "pure"
},
{
"name": "symbol",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "string",
"internalType": "string"
}
],
"stateMutability": "view"
},
{
"name": "tokenURI",
"type": "function",
"inputs": [
{
"name": "tokenId",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "string",
"internalType": "string"
}
],
"stateMutability": "view"
},
{
"name": "totalSupply",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "transferFrom",
"type": "function",
"inputs": [
{
"name": "from",
"type": "address",
"internalType": "address"
},
{
"name": "to",
"type": "address",
"internalType": "address"
},
{
"name": "tokenId",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "transferOwnership",
"type": "function",
"inputs": [
{
"name": "newOwner",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "transferValidator",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "withdraw",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
}
]0x60c060405234620000ef5762001c7280380380916200001e8262000107565b60c03960408160c0019112620000ef5760c051906001600160a01b0382168203620000ef5760e0516001600160401b039290838111620000ef578260df82011215620000ef578060c00151938411620000f357604051926200008b601f8601601f1916602001856200012e565b84845260e08583010111620000ef57620000b893620000b29160e060208601910162000152565b62000175565b6040516119909081620002e282396080518181816113530152611664015260a051818181610a2601528181610f6801526116890152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b60c0601f91909101601f19168101906001600160401b03821190821017620000f357604052565b601f909101601f19168101906001600160401b03821190821017620000f357604052565b5f5b838110620001645750505f910152565b818101518382015260200162000154565b3360018060a01b031960025416176002556080526200023f62000250602e604051620001cb60218260208101975f8952620001ba815180926020868601910162000152565b81010360018101845201826200012e565b8051604051606360f81b6020820190815260e09290921b6001600160e01b0319166021820152600160ff1b602582015261300760f11b6026820152600360fd1b60288201819052603960f81b602a830152602b82015260f360f81b602d820152915190959194859282908585019062000152565b810103600e8101845201826200012e565b51905ff06200026a6001600160a01b038216151562000294565b60a052620002786005600155565b6200028866016bcc41e900005f55565b607d60a21b3317600b55565b156200029c57565b60405162461bcd60e51b815260206004820152601960248201527f7265776172642064617461206465706c6f79206661696c6564000000000000006044820152606490fdfe60806040526004361015610011575f80fd5b5f3560e01c806301ffc9a7146102ba57806306fdde03146102b5578063081812fc146102b0578063095ea7b3146102ab578063098144d4146102925780630d705df6146102a657806316c38b3c146102a157806318160ddd1461029c57806323b872dd1461027957806324bbd0491461029757806329e38d5e146102925780632a55205a1461028d57806332cb6b0c146102885780633a602b4d146102835780633ccfd60b1461027e57806342842e0e14610279578063453c23101461027457806355f804b31461026f578063594d3a501461026a5780635c975abb146102655780636061ffc3146102605780636352211e1461025b5780636817c76c146102565780636c0360eb1461025157806370a082311461024c5780638da5cb5b146102475780638f2fc60b1461024257806395d89b411461023d5780639fbc871314610238578063a0712d6814610233578063a22cb4651461022e578063a9fc664e14610229578063b88d4fde14610224578063bd7f609b1461021f578063c63adb2b1461021a578063c87b56dd14610215578063e268e4d314610210578063e985e9c51461020b578063f19e75d414610206578063f2fde38b14610201578063f4a0a528146101fc578063f8004d31146101f75763fe5a451a146101f2575f80fd5b61133e565b6112d5565b61127e565b61123b565b611179565b61111d565b6110c5565b610fb5565b610f95565b610f48565b610ef7565b610e75565b610de8565b610d05565b610cdd565b610ca0565b610c04565b610bdc565b610ba4565b610adb565b610a87565b610a55565b610a11565b6109ec565b6109d2565b6108c0565b610875565b6106e4565b6107dd565b6107a5565b610789565b610746565b6105e4565b610724565b6106c7565b610646565b610610565b6104e9565b61048b565b610447565b346103655760203660031901126103655760043563ffffffff60e01b81168091036103655761031d906380ac58cd60e01b8114908115610354575b8115610343575b8115610332575b8115610321575b5060405190151581529081906020820190565b0390f35b632b435fdb60e21b1490505f61030a565b63152a902d60e11b81149150610303565b6301ffc9a760e01b811491506102fc565b635b5e139f60e01b811491506102f5565b5f80fd5b5f91031261036557565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff811161039b57604052565b610373565b6040810190811067ffffffffffffffff82111761039b57604052565b90601f8019910116810190811067ffffffffffffffff82111761039b57604052565b67ffffffffffffffff811161039b57601f01601f191660200190565b5f5b83811061040b5750505f910152565b81810151838201526020016103fc565b6040916020825261043b81518092816020860152602086860191016103fa565b601f01601f1916010190565b34610365575f3660031901126103655761031d604051610466816103a0565b600c81526b5072696d6542726f6b65727360a01b60208201526040519182918261041b565b34610365576020366003190112610365576004355f526007602052602060018060a01b0360405f205416604051908152f35b600435906001600160a01b038216820361036557565b602435906001600160a01b038216820361036557565b34610365576040366003190112610365576105026104bd565b60243590815f52600560205260018060a01b038060405f20541691823314158061059a575b6105885761056081610541865f52600760205260405f2090565b80546001600160a01b0319166001600160a01b03909216919091179055565b16907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9255f80a4005b604051634cd9539b60e11b8152600490fd5b506105df6105db6105d4336105bf8760018060a01b03165f52600860205260405f2090565b9060018060a01b03165f5260205260405f2090565b5460ff1690565b1590565b610527565b34610365575f36600319011261036557600a5460405160109190911c6001600160a01b03168152602090f35b34610365575f366003190112610365576040805163657711f560e11b815260016020820152f35b60043590811515820361036557565b346103655760203660031901126103655761065f610637565b6002546001600160a01b031633036106b55760207f31311016d7204faff81880133e3db244ae8a8b9ce15e83e2432258226d15f942911515600a5461ff008260081b169061ff00191617600a55604051908152a1005b6040516330cd747160e01b8152600490fd5b34610365575f366003190112610365576020600454604051908152f35b34610365576060366003190112610365576001600160a01b03600435818116810361036557602435918216820361036557610722916044359161138d565b005b34610365575f36600319011261036557602060ff600a54166040519015158152f35b3461036557604036600319011261036557600b5461271061076c8260a01c6024356115ad565b604080516001600160a01b03949094168452919004602083015290f35b34610365575f36600319011261036557602060405161115c8152f35b34610365576020366003190112610365576001600160a01b036107c66104bd565b165f526009602052602060405f2054604051908152f35b34610365575f366003190112610365576002546001600160a01b0316338190036106b5575f8080809347905af13d15610870573d61081a816103de565b9061082860405192836103bc565b81525f60203d92013e5b1561083957005b60405162461bcd60e51b815260206004820152600f60248201526e1dda5d1a191c985dc819985a5b1959608a1b6044820152606490fd5b610832565b34610365575f366003190112610365576020600154604051908152f35b9181601f840112156103655782359167ffffffffffffffff8311610365576020838186019501011161036557565b34610365576020806003193601126103655767ffffffffffffffff600435818111610365576108f3903690600401610892565b6002549092906001600160a01b031633036106b557821161039b576109228261091d600354610aa3565b6115c0565b5f92601f83116001146109605750610950925f9183610955575b50508160011b915f199060031b1c19161790565b600355005b013590505f8061093c565b90601f1983169361097f60035f525f8051602061193b83398151915290565b925f905b8682106109ba57505083600195106109a1575b505050811b01600355005b01355f19600384901b60f8161c191690555f8080610996565b80600184968294958701358155019501920190610983565b34610365575f3660031901126103655760206040515f8152f35b34610365575f36600319011261036557602060ff600a5460081c166040519015158152f35b34610365575f366003190112610365576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610365576020366003190112610365576004355f526005602052602060018060a01b0360405f205416604051908152f35b34610365575f3660031901126103655760205f54604051908152f35b90600182811c92168015610ad1575b6020831014610abd57565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610ab2565b34610365575f366003190112610365576040515f600354610afb81610aa3565b80845290602090600190818116908115610b7a5750600114610b34575b61031d85610b28818703826103bc565b6040519182918261041b565b60035f90815293505f8051602061193b8339815191525b838510610b6757505050508101602001610b288261031d610b18565b8054868601840152938201938101610b4b565b86955061031d96935060209250610b2894915060ff191682840152151560051b8201019293610b18565b34610365576020366003190112610365576001600160a01b03610bc56104bd565b165f526006602052602060405f2054604051908152f35b34610365575f366003190112610365576002546040516001600160a01b039091168152602090f35b3461036557604036600319011261036557610c1d6104bd565b6024356bffffffffffffffffffffffff811690818103610365576002546001600160a01b039290831633036106b55761271010610c6c57911660a09190911b6001600160a01b03191617600b55005b60405162461bcd60e51b815260206004820152600c60248201526b0c4e0e640e8dede40d0d2ced60a31b6044820152606490fd5b34610365575f3660031901126103655761031d604051610cbf816103a0565b60058152645052494d4560d81b60208201526040519182918261041b565b34610365575f36600319011261036557600b546040516001600160a01b039091168152602090f35b60203660031901126103655760048035600a5460ff811615610dd75760081c60ff16610dc75761115c610d39828454611636565b11610db757335f908152600960205260409020610d5890829054611636565b60015410610da757610d6b815f546115ad565b3403610d9757335f9081526009602052604090206107229190610d8f828254611636565b90553361165a565b5060405163f7760f2560e01b8152fd5b5060405163426d5b2360e11b8152fd5b506040516352df9fe560e01b8152fd5b50604051636be9245d60e11b8152fd5b60405163589ed34b60e01b81528390fd5b3461036557604036600319011261036557610e016104bd565b6024359081151580920361036557335f9081526008602090815260408083206001600160a01b0385168452909152902060ff1981541660ff841617905560405191825260018060a01b0316907f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3005b3461036557602036600319011261036557610e8e6104bd565b6002546001600160a01b0390811633036106b557600a805462010000600160b01b03198116601085811b62010000600160b01b03169190911790925592821692901c167fcc5dc080ff977b3c3a211fa63ab74f90f658f5ba9d3236e92c8f59570f442aac5f80a3005b3461036557608036600319011261036557610f106104bd565b610f186104d3565b906064359167ffffffffffffffff831161036557610f3d610722933690600401610892565b50506044359161138d565b3461036557602036600319011261036557602063ffffffff610f8c6004357f00000000000000000000000000000000000000000000000000000000000000006117fb565b16604051908152f35b34610365575f366003190112610365576020600b5460a01c604051908152f35b3461036557602080600319360112610365576004355f8181526005835260409020546001600160a01b0316156110b357610fee90611897565b604051905f9260035461100081610aa3565b90600190818116908115611094575060011461104b575b61031d85610b288161103d61102c8b8a611643565b64173539b7b760d91b815260050190565b03601f1981018352826103bc565b9091945060035f525f8051602061193b833981519152905f915b838310611081575050508201909201918161103d61102c611017565b8054868401880152918601918101611065565b60ff19168685015250508015150283010192508161103d61102c611017565b60405163677510db60e11b8152600490fd5b3461036557602036600319011261036557600254600435906001600160a01b031633036106b5576020817f97e4f91a4b7e108aff6d29a03d7b9f94705ad90ed51b377784a1943ea32257e792600155604051908152a1005b3461036557604036600319011261036557602060ff61116d61113d6104bd565b6111456104d3565b6001600160a01b039182165f9081526008865260408082209290931681526020919091522090565b54166040519015158152f35b60203660031901126103655760025460048035916001600160a01b0316330361122c57811561121d5761115c6111b0838354611636565b1161120e576111be8261157d565b34036111ff57506111cf813361165a565b60405190815233907f76dcb19d73dc6c5a49de41d75b9ab52e3d44ca8cd90c330c238bacb4f8b5b4f590602090a2005b60405163f7760f2560e01b8152fd5b6040516352df9fe560e01b8152fd5b604051637275e2eb60e01b8152fd5b6040516330cd747160e01b8152fd5b34610365576020366003190112610365576112546104bd565b600254906001600160a01b039081831633036106b5576001600160a01b0319909216911617600255005b3461036557602036600319011261036557600254600435906001600160a01b031633036106b5576020817f525b762709cc2a983aec5ccdfd807a061f993c91090b5bcd7da92ca254976aaa925f55604051908152a1005b34610365576020366003190112610365576112ee610637565b6002546001600160a01b031633036106b55760207fc6bf82b4da793e836f3a4189b7dfd276574a7301058b8e2f5100f372f18b4ece91151560ff19600a541660ff821617600a55604051908152a1005b34610365575f366003190112610365576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6040513d5f823e3d90fd5b906113b06113a3845f52600560205260405f2090565b546001600160a01b031690565b6001600160a01b0383811693909291831684900361058857833314158061153c575b80611512575b61058857600a5460101c83166001600160a01b0316908161149a575b61144d915061141e61140e875f52600760205260405f2090565b80546001600160a01b0319169055565b61143483610541885f52600560205260405f2090565b6001600160a01b03165f90815260066020526040902090565b80545f190190556001600160a01b0381165f9081526006602052604090206001815401905516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a4565b813b156103655760405163657711f560e11b81523360048201526001600160a01b0382811660248301528416604482015260648101879052915f90839060849082905afa91821561150d5761144d926114f4575b506113f4565b8061150161150792610387565b80610369565b5f6114ee565b611382565b506115376105db6105d4336105bf8560018060a01b03165f52600860205260405f2090565b6113d8565b50336115626115566113a3885f52600760205260405f2090565b6001600160a01b031690565b14156113d2565b634e487b7160e01b5f52601160045260245ffd5b905f91156001171561158b57565b611569565b90670de0b6b3a76400009182810292818404149015171561158b57565b8181029291811591840414171561158b57565b601f81116115cc575050565b60035f525f8051602061193b833981519152906020601f840160051c83019310611610575b601f0160051c01905b818110611605575050565b5f81556001016115fa565b90915081906115f1565b906001820180921161158b57565b603001908160301161158b57565b9190820180921161158b57565b90611656602092828151948592016103fa565b0190565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811692917f000000000000000000000000000000000000000000000000000000000000000091905f5b8481106116bb57505050505050565b6004906116c8825461161a565b6116d181600455565b6116e784610541835f52600560205260405f2090565b6001600160a01b0384165f908152600660205260409020600181540190558484169080825f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a461174e611749611740838a6117fb565b63ffffffff1690565b611590565b893b1561036557604080516340c10f1960e01b81526001600160a01b0388169681019687526020870183905290959091905f908390819003880181838f5af190811561150d576001967f04492fab062412e7e4e5f46c9e919f1640652946a5e163ad6e6c1c03d87954d2936117d1936117da575b50519081529081906020820190565b0390a3016116ac565b806115016117e792610387565b5f6117c2565b5f1981019190821161158b57565b905f19810190811161158b578060021b908082046004149015171561158b576001018060011161158b575f6004923c5f5160e01c90565b5f19811461158b5760010190565b9061184a826103de565b61185760405191826103bc565b8281528092611868601f19916103de565b0190602036910137565b908151811015611883570160200190565b634e487b7160e01b5f52603260045260245ffd5b801561191c57805f81805b61190457506118b081611840565b925b6118bb57505090565b6118c4906117ed565b90600a906118ef6118df6118d9848406611628565b60ff1690565b60f81b6001600160f81b03191690565b5f1a6118fb8486611872565b530490816118b2565b9150611911600a91611832565b9104808392916118a2565b50604051611929816103a0565b60018152600360fc1b60208201529056fec2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85ba26469706673582212209351256f57aac5f0ef10f21f1ecd9d94d1a213335cd419d006708f0b75302c7664736f6c634300081800330000000000000000000000007f5488b860f4ed7ae4ab925a817d50af745b3e1d000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000045700002e3550002871c0001db9b000343a600038ffb0001d82a0002640e00027f1500026f8600025a640002ee4f0002159800033c470002b61f00025dd50002871c000279d700025e520002a9820001b379000253830002d8850002cac30001fa9100035b3d0002b7c20003c26f000280b90001f6a200026c1500025dd50003053d00024ca200031d52000284290002ceb1000283ab0003142500030f8f000275e9000339fc0003660c0001fe0100032f020002509000029bc0000283ab00025a6400034d7a0002677f0002816000025a64000204e200024e450002bd7e00038484000261450001d82a0002816000035b3d0002cf5900021e1c0002350b0001bf9800024250000376c2000278340001fe01000338d70002abcd000269ca00034b2f0002a2a10002a4ec0002cf590002a17b0001eba90001d82a00030a510001aa4d00032f02000272f600023075000257710002f8a00001ef19000308ae000376c200027ba50001fa910003243300027f1500028c300002dd1b000245c000026c1500025d2d000343a60002c7d000032b1400023a490001ecce0002f40a00033fb80002ff820002b3d4000324b10002f40a0002c752000219080001e56f0002803b000321e800026de2000308ae0002bab500029e0b00037184000321400002e9b80002871c0002a7b5000294df00027cca0002c2140001bf980002a17b00023dba00023b6f0001e1ff0002cf5900032b14000281600002525d00030f8f00026cbd00028e7b000264b60002b61f0002b2af0003c26f000271d1000250900002871c0002a17b0002a3c70001f3af0002acf3000271530002b61f000226cb0002af3e0002677f0002d1a400020f340002795a0002faeb0002871c00021616000290480002feda00025e5200036fe0000226cb0002b452000242ce000289e50002cf59000283ab000347170002c0ef0002c99d0002f1170001f6a200024ca2000301cd0001c6f70002ea360002a4ec00029e0b00028a8d00026f86000298cd000293b90003368b00021d9f00037da3000268270002593f0002cf590001f6a200034b2f0002159800030663000212270002a31f0002bab500025a640002f77b0001e157000338d70002acf30002c1970002348d000223d80001e5ed000222b200027cca0002fd37000293b900033d6d0002525d0002311d0002dfe40002d88500032b1400029f3000026f86000291ec0002a98200024d1f0002c07100034d7a0001eba90002ae9600029f300002fd370002ea360002879a00035c620002df67000241a80002acf300024f6a00025a640002c75200025e52000298cd0002795a0001c3870003053d0002e08c00032f020002cf5900028674000275410002d885000286740001e5ed0001fe010002cb410002a85d0002bab50002c1970002e7eb00031d52000376c2000275e90002f77b0002a98200024d1f0002a6120001f3320003368b00026390000256f300024d1f0002d8850002f1bf0002af3e000214f00002f5300002a73700032e850002fe5c0002e6480002916e0001d82a0001de8e00024250000298cd0001fd8300026c150002dd1b00026de200026de20002bab500031670000338d70002b86a000280b90002a56a00022ed20002dbf600026b9700020bc40002a056000338d70001f3af00030d44000226cb0001fd83000245c0000214f000028286000285f70002e6480002803b000274c30001b5c40002c07100030f8f0002e64800022c870003100d0001bdcb000275e9000219080002dc74000242500001f03f000200f40002b9900002ea3600027ba50002eda7000308ae000237fe000321e800029f30000275e9000208530002ff820002984f0002d515000274c300023a4900020f3400024082000283ab0002f40a0002677f0002af3e00020f340002f7f9000269ca00025a6400025a640002387c0002c1970002c0ef00022623000338d7000256f30002a4ec00024d1f0001e1ff0002117f0002f40a00030f8f000316700003aad9000392470002af3e0002210f000219080003697d0002916e000268270002b0e10002b99000030a5100030c1f0001c13c0002b74500020f340003545b000272f600022a3b0001bf98000216160002795a0002a982000308ae000293b90002cac30002bab5000340dd0002ea360002f5ae00020fdc00026c1500031d520002677f0003053d0002972a0002577100027cca0002a61200033c470002b9900002b452000271d10002af3e000275e900032b14000237fe000283040002916e0001d43c0002871c00031796000264b60002d8850002d51500021598000274c30002c3e200025e520002c3e20002faeb00029f30000280b90002677f0001e5ed0001e27c0002c45f0001b25400028dfd0002bab50002640e000249af0002c07100023bec0002d885000226cb0002f7f90002274900025a6400024a57000242ce000271530002d1a400022c870002dd1b0002b3d40002c19700027cca00033cc5000343a60002cb4100029437000319e10001e95e00029bc00002f09a0002ed290002e648000275e90002311d0001f3af00023b6f0001de8e00037da30002d1a40003e4d50002dc740002bd7e0002cf5900024f6a00026cbd0002a3c700025e520002f8a000032e850002d1a40002e9b80002faeb0001fa13000204e20002702d000235b300025a6400020e0f00031b0700023bec00027278000268270001dde6000331f50002d63a0002df6700021fea0001de8e000256f3000253830002cf590002c0ef0002ee4f0002df670002c3e20002803b000226cb0002f77b0001fd8300026701000264b600026f0800031d520001e1ff00043083000275e90001ff2700025a64000237560002cbe8000392470002916e00029e0b0002b7c20002aa000001ccb30002cac30002f1bf000319e1000280b9000284d10001bf980002248000032b14000237fe0002fb690002451900026c15000226cb000227490003660c0001b935000265340002525d0002cc6600024375000284d1000259bc0001fa9100021fea0003415b0001f6a2000203bd0002ba0e0002c0ef0002c0ef0002af3e000280b90001df0c000241a800030c9c0002c0710002a31f00024dc70002190800034a0a00026de2000297a70002a56a00023b6f00022e2a0003100d0001c9420002c0710001a8020003b4ad000246e60002d63a0002b2af0001e5ed0002acf30002972a0002ed2900021fea000227490002493100023dba000260200002a4ec0003444e0002e2d700021908000232c000022d040002b2af0002017200025a640001d82a000376c20002a3c70002afbc0002b86a0002e76d0003415b0002f1bf0001f6a20002b61f0001ecce00035ead00021986000338d70002dd1b00023f5d0002be2600022ff7000325580002795a00036d9500024eed00026e600001e03100025a640002d88500030f8f0001c13c00028e7b0002af3e00039c980002783400033c470002a9820002ea360002ba0e0002a7370002b32c0002a8da00029ce500027cca0002972a00035ead0002f1bf000274c30001c13c0001c6f7000233e60001cb1000030d440003243300026cbd00038b6500022ff7000259bc0003053d00029bc00002c62d00021b5300029bc00002b9900002bd7e0002972a00023b6f0002766700026aef0002faeb0002593f000301cd000319e10002c0710001ef1900027a7f00026b970003092c0001ccb300031b070002451900025dd500028a8d0002b0e100035b3d0002f77b0002be260001bf980002df6700035b3d000275e900020bc40002916e000283ab0002e08c000271530003356600031b070002d3ef0002a61200023edf0002dd1b000293b9000311320002262300031b070002fc8f00024d1f000291ec000226230002a31f0002a85d0002593f0002bd7e0001e0310002a85d000274c30002a3c700030a510002dd1b0003214000029e0b00028e7b00020eb70001a8020002e2d7000314250002dc740002b32c000252db000331f500020bc40002739e000313000002867400022ed2000274c30002d63a000259bc00037da30001b5c40001aa4d0002a2a10003a0090002ff8200021598000260200002cb410002a9820002f1bf00023bec0003368b000264b60001e95e0002eade00028304000314250001e95e000343a60002a85d000271530002218d0002916e000319e10002bbdb0001e157000257710002acf3000207d5000224800002538300025a6400021fea0001ef190002b0e100024a570002972a0002fe5c00029a9a00029e0b00023bec000259bc0002c0ef000258970002972a0002b61f0002bf4b00020bc40002ceb10002c7d000027ba500027153000235b30002803b000272f600028a8d000274c30002f40a000264b60001f57d0002311d0002198600035ead00026534000328c900020e0f000245c0000452e9000321400002dc740002be260002a8da0002f7f900038484000283ab00025a6400030d440002581900032e850002aa00000256f300025dd500029f3000028e7b0002c5850002b69d0002fe5c000301cd000226cb00032e8500025e5200024d1f0002ad7100025e5200029a9a000289670002cfd70003368b000268a400031300000242ce00031796000358f20002198600022e2a00025dd50001bc280002218d0002bd0000024eed0002412a0002b3d400026a720001fa910002715300032cb700026e60000237fe000293b900020853000321400002f40a0001e95e0002b9900001935e0002f1170002c071000328210001b1d6000256f3000293b90002a85d0002311d00025383000222b20002e3550002a85d00025e520002984f0002210f00023dba0003621e0002ed29000320c200028286000316700002b9900002525d0001a8020002a31f0002dd1b0002cac300027a7f000358f200026e60000293b9000308ae0002ba0e000170f80001fa9100029e0b0001d5df000280b9000275410002b3d40002a56a000301cd0002350b00028d560002972a00038ffb000259bc0002577100025401000257710002525d00020c6b0002f40a000316700002896700022e2a0001d0cb0002609e0002387c0002b3d40001ca680002871c0002a8da000302f2000275e90002c2140002319a000258190003584a000301cd000254010001e95e0001d43c0002f5300003924700025a640002f5ae0003545b0002d63a000316ee000294df000268270001ca68000237fe00023bec000358f20002f40a0002af3e00026aef000284d10002715300027541000213ca0002493100021c790002702d00024375000293b90002f1170002348d000319e1000264b60002c5070002274900024ca20001db9b0002feda0002a8da000272f6000237fe000248890001f8ed00024f6a0002b2af0002b99000027f1500037b58000216160002eb5c00028e7b0002b3d40001d5df00023dba0002c0710003024a00021e1c00020a9e000302f20002682700036fe00002af3e000289e50002b61f000240820002879a00029c3e000260200002795a0002916e00027cca0002795a000302f20002803b00028cd800024eed00029bc00002c87800033d6d000284d10002392300035b3d0002984f000308ae00037da3000259bc000319e10002cac300027c220002cf590002ed29000305bb00034d7a00029f300002f77b0001ca680002ba0e0002ed290002a6120002f40a0002501200022ff7000293b90002ba0e0002f1bf000335660002d1a40003053d00030f8f00022b610002803b0002eda700027ba500025caf00018fee0002984f0002af3e000255260002a6120002d51500023756000340dd0002984f00029f3000039dbe0003660c0002d63a00021598000226cb0002c0ef00020c6b00020e0f00019d3200022a3b0002cb41000236d800031d52000204e2000320c200028a8d0002bd0000025e5200018fee0001c13c00023dba0002867400027f1500032e8500026e60000290c6000374770002dd1b0003545b000226cb0002c878000216160002dbf600029e890002b61f0002faeb0002cf590002e355000222b200021fea00026f080002c0ef0001dcc100028d560002f11700028d560002acf30002021a0002ff820002a85d000270ab00025dd5000293b900028dfd000374f40002b61f0002f530000226cb0002bea40002c752000308ae00033c470002640e000338d70002311d0001c6f70002e9b80003660c0002004c0002ae9600030c1f000320c2000249af0002d63a0001935e0001fe0100027a7f00035b3d0002ac4b000255ce0002ed2900029f300002085300029e89000319e10002677f000256f30002972a0002fe5c0002df670002085300028a8d00029a9a0002046500025efa0002ce3300022bdf00024dc700029f300002acf30002cac30003fcea0002803b0002bd000002aa0000034d7a0002d592000293b900020bc400022ab9000264b6000293b90002a68f000220670002ac4b00027ba500036fe00002190800027c2200021b53000294370002a98200027cca000226cb0002dad00002b0e100027f15000260200001c6f70003368b000242ce0002ed290002dad00002a56a000233e600024ca20002a8da00024889000282860002896700021c790002210f0001e1570001ca680002a3c70001a4910003214000030a5100026f860003053d0002ce3300032f0200035b3d0002dbf60002ceb10002cc660002972a0001ef1900026f08000274c3000204650002a3c7000308ae000237fe0002d88500023a490002c8780002350b000226230002ba0e00022d040003368b0002bab5000301cd0001cb1000022e2a000339fc000284d10002b0e10002d1a4000212a500031670000242ce000343a6000245c00002480b00026020000271530001fa910001df0c00039c980002a2a100029d6300026f080003da83000264b60002984f0002cf590002ac4b00024bfa000265340001f8ed0002984f00020d9100026f080002dbf600026b970002ceb10001f8ed0002e6480002eade0002f40a00025efa0002a4ec000293b90002be2600020b460002795a0002525d0002117f000280b9000314a300024ca20002bab5000316700001f6a20002acf3000285f700028e7b000271d100029bc00002ceb1000331f50002ed290001cb100002da2900025a64000243750002a4ec00022749000381130003545b0002916e0003735100022c8700029bc0000271530002c07100024ca2000264b60002387c00026aef000279d700024e450002b7c20002677f00033c470002871c0002a1f900025a640002a31f000253830002190800020f340002a61200028dfd0002b9900002564c0001c13c0002916e0002916e00028e7b00022c87000285f7000245190003368b0001e27c000226cb00030663000260200002d1a40002d1a400027c22000219860003a009000338d700027d4800023dba0001ff270002795a000324330002a68f0001f6a2000340dd000358f200027cca0001d0cb0002c878000215980002b61f0001d149000204e200022e2a0002b2af0002350b000256f30002b063000245190002f5300003545b0002acf3000316700001d26f00022c87000358f20003214000029604000338d70001f6a2000338d700022bdf00027cca000217e300028a8d00031a5f000207d50001e5ed00022b6100037da300029437000242ce00029f300001f6a20002b2af000212a500027d4800020f34000274c30002984f00023b6f0002e893000203bd0002acf30002cf59000331f5000256f300035ead000272f60002c8780002c7520002d63a00022e2a0002be26000274c300032433000215980002eb5c0002b0e10001d5df000324330001fd830002159800028a8d0001f6a20003b4ad00020172000376c2000296040002b0630002a56a000216160003167000028967000281600002626b0002400500029e0b000308ae00023b6f0002bab50002f5300001d43c0002319a0002bab50002319a000226cb0001d43c0002dbf6000274c300024250000319e10002dd1b00034d7a0002960400027f15000282860002e76d0002a56a00021cf70002ceb100022ed20002b61f00025401000245190002d2ca00021986000321e80002eda7000216160002e08c0002c8780002df670002b61f00021598000250900002e6480002984f000233e60002677f000248890002b61f0002210f000282860002d885000290480002871c0002f7f900038b6500033c470002cac3000289e50002e2d700020e0f0001db9b00032f02000290c60002faeb00031d520002acf30002bab50002bbdb00033c470003344000034699000290c600021598000305bb000226cb0002a85d00024eed0002984f0002cc660002803b00020ce900022c8700034d7a0002984f0002ea360002dd1b0002b74500030c1f0002ed290002e355000297a700023dba00025383000285f70002b9900002f09a0002f1bf0002c3e200025e520002d6b80003b4ad0002871c00032b1400026de20002ba0e000232c00002d2ca000268270002d63a0002eade000274c30002e3fd00028cd8000219080002cf590002803b00030f8f00026f080002842900029bc000028e7b00026b970002538300028e7b00022ab900025e5200035169000293b900022a3b000261450002f8a000025ae20002b61f0002375600021c790002a612000256f30002bab50002795a0002f8a00002dad00002d3ef0002c07100034d7a000291ec0002a31f00025dd50002694c000245c00002540100026f0800034328000220670002bab5000338d7000249af000203bd0002c45f0002640e0002609e000308ae0002b69d0002795a0002e9b8000256f30002cac3000200f40002a31f000170f80003621e00021cf70002a8da0002cc660002a9820002d63a000256f300025dd50002cbe8000208530002a31f0003415b0001d43c0002e6480002463e0002bab5000246e60002173b00022067000283ab00027ba500022ab900029bc00002795a0002d6b80001859c0002004c00028cd800027ba50001b5c4000308ae0001d82a00024ca20002b745000268270002fe5c000252db0002a6120003142500031670000243750002acf3000338d70002b69d0002e76d00035b3d0002ed2900031f9d0002e08c0002311d000232c00002218d00023dba00025a6400020a200002235a000328210002afbc0002f1bf0002bab500023d12000343a60002538300026f0800023a49000232c00002c58500023dba000208530002cc660002c197000222b200024d1f00033c47000275e9000248890002acf3000319e10002c3e20001fa910003092c00024eed000280b90002715300023a4900032b920002cbe800023f5d00029e890001d4ba000293b9000280b90002677f0001bef10002311d0002d8850002be26000250900002b2af0002b3d4000290480003545b0002c3e20002a98200034a8700020f3400028c30000204650002190800022d040002faeb00025caf00023b6f00026c150001d82a00026cbd0002ceb10002916e0002727800024eed000275e9000293b9000204650003368b000259bc00036a2500034a87000338d70002dc7400027c22000275410002bab500025b8a0002bab500023dba0002d63a0002acf30002ba0e00024b7c000274c300030f8f0002e3fd0001ecce0002916e000237fe0001a80200022b61000321e80002c7d000031d5200029e0b0002a3c700027cca000392470001f6a20002a2a10002c33a0003137e00023bec00025383000215980003811300022a3b00022dac0002feda0002c45f0002a68f0002f1bf00027153000263900002d5920002348d00028e7b0001aee3000283040002cbe80002cac300026f0800026c15000236d800030c9c0002fc110002021a0002ae96000258970002754100030f8f00022a3b0002350b0002235a00025dd500021908000237fe000245c0000354d900035fd30002387c0002df670002c7d0000284d1000220670002c7d00002984f00035ead0002b61f0002dad00002509000026c150002f40a0001a8020002d1a400026f08000297a70002bab50002871c0002916e0002955c0001c6f7000204650002b3d4000227490002830400034b2f00022ab9000240050001d43c00025383000208530002b2af00025ae2000230750002dbf60002117f00032f02000368ff000351690002593f0002b7450002faeb0002677f000204650002412a00021e1c0002b61f00031d52000201720002e1b20002803b00024f6a0002d1a400027cca0002f1bf0002d88500025dd50002828600023b6f00022c8700031d520003545b00025383000338d70002ac4b00028a8d00032b140002e9b80002e7eb00031ef50002795a000207d500037ec800025dd50002916e000293b90002dd1b00028a8d0002e9b800026b970002e3fd00028a8d00027541000219860001f720000285f7000358f20002d9ab000291ec0002cf5900025ae200027cca0002b61f000200f4000301cd00037b580002d1a40002f5ae0002795a00037da3000249310002795a0002dd1b0002afbc0002a612000212a50002c3e20002363100028e7b0002803b0002a56a00023edf000289e50002e9b80002f1bf00029bc0000283ab0003b4ad00026f080002c0ef0002ac4b000293b9000207d5000213ca00021e1c00020bc40003181400028c300002abcd0002972a00028674000242ce00025a64000296040002ff820003e8460002677f00026f080002425000032faa00022a3b0002d903000237fe0001a8020001bc2800025efa0002cf590002eade0002198600030f8f00036fe000023b6f0002faeb00032140000200f4000200f40002bab50002ed29000308ae00027cca0002cac3000285f70002d5920001de8e0001e0310001f4d500026a720001935e0002e6480001f03f0002b61f0001de8e0003024a000395b70001e95e00026b97000314250002387c00021598000271d10002803b00022ed20002e9b8000258190003167000026f0800024250000289e50001ed760001fe010002f1170002acf30002dad00002dc74000200f40002f11700032b140001d43c0001fa9100025caf000303700002d88500020d9100037351000347bf00036fe00003697d00027cca000249af000219080002c3e200024ca200027cca000237560002cac30001fd8300024b7c00029e8900029fae000338d70002d885000204e2000170f80002b2af0002ba0e00028a8d000358f20002400500024e450002cf59000265db0002b3d4000226cb000285f70001f8460002d63a000261c30002653400026534000271530002dbf60002d63a00035b3d000285f70002c7520002f09a0002f77b0002867400023b6f000291ec0002d1a40002c8780001fe0100022ff70002525d0002dbf60002916e0003100d0001f03f0002feda0002f40a000301cd00025dd5000237560001f3320002c62d00032433000208530002f40a000216160002df670002b3d4000314250002dfe40002d3470002210f0002da290003469900022e2a0002a85d00028dfd0002f5300002faeb0002b9900001e157000249af00027cca0003b4ad0001c6f70002ac4b0002e2d70002c45f000253830002b3d40002a2a10002b0e10002d9030001e95e0002c50700026d3a00028f230002916e0002916e00025ae20002d88500024dc70003bb8e0002916e0002117f00027c220002e6480002715300025dd500024ca2000290480001d0cb0002cf59000338d700020c6b00034d7a00026aef0002f5ae0002faeb0003053d0002960400021fea000357cc0001f33200028d56000203bd00028e7b0002e7eb0001f3af000316700002b9900002dc740001cdd90001e1570002fd370002626b0002577100025caf00033fb8000204e200021908000203bd0002a7370001db9b0002677f0001f3af00026c150001aa4d0002dbf60002d5150001f33200031b07000285f700025ae200020f3400023e37000271530002f8a0000204650002916e00022bdf000272780002eda700027cca00032b1400022d040002ec030002a73700026aef000346990002afbc00024764000261c30002d515000227490002677f000280b90002d2ca0001e95e0002d90300037da30002795a000338d70002cb4100020c6b0002795a00026c150001e95e0002f40a0002f1bf000250120002feda0002dc7400026c150003b4ad00029f300002754100025ae20002e2d7000207d50002871c0001a8020001fbb60002a8da0002ff8200022ff70002cac30003368b0002e2d7000216160002c3e20002602000031d52000264b60002e3fd0002274900019ed600031d52000268270003773f00037a320002be2600026c1500027cca0001f6a20002525d0001c13c000358f2000338d70002b3d40002a2a1000297a700020b4600020a9e000308ae0002fe5c0002bab500033cc5000319e10002235a0002c5070002984f0001f6a20002cb41000271530002ed2900030c1f000282860002faeb000274c30002a85d00032b14000213ca00031d520003b4ad0002a612000324b10001a49100035ead000260200001ed760002b99000029bc0000250900002c7520002d903000242ce000314250002004c0002593f00030c9c000392470002d0fc000222b20003b4ad0002f8a0000215980002004c00036d950002b3d40001f6a2000259bc00029bc00002828600035b3d00038484000308ae00030f8f0002d9ab00021598000331f50002984f000297a70002acf30002c7d0000237fe0002640e0001de8e00023bec0002f40a00027cca000224800002dd1b000302f2000282860001efc100023b6f0002d885000381910002d1a40002972a00027cca000237fe00026f860002e64800026f860002754100027cca000219080002a1f900027153000388720002159800027541000204650001fa910002e08c0003053d0001ccb300028cd8000308ae0001e95e00027c2200023dba0003053d0002f40a00033d6d00030d44000215980003584a00025a6400031b0700024dc70002c878000274c3000298cd0002dd1b0002a85d0002b063000316700001d6870002803b00036fe00001e95e0002cf5900026f86000328c90001bf980002bab500023a490002be260002b61f00031e77000204650003167000029f300003368b0002c7520002cac300032b140002795a0002e3fd0002af3e0002e3550001ef1900029bc000022c870002b9900002b61f0002a2a1000203bd0002021a00029f30000268270002c5850001cdd900024d1f000327a30002f91e0002ba0e000294df0002bd00000280b9000290480002c3e200026f080002f1170002f488000314250001d149000261c30001ef19000249310001e95e00025383000368ff00039dbe000319e10002b69d00031dcf0001fe0100028c30000212a5000237fe0002639000038239000204650002a68f0002375600029ce500020bc40002bd0000024ca200027f1500031300000293b90002cf5900022ed200030a5100025b8a0003545b0002e6480002677f00021fea00028e7b000242ce0002af3e00026f8600032e850002a6120002ac4b0002b9900002972a0002a73700029b1800024005000331f500023b6f000316700002a8da00030a5100026f080002b32c00028a8d000284d100033c470002b7450002dd1b00022a3b00034d7a000285f70002dc740002117f00028d560002b86a000293b90002509000030f8f000331f500028dfd000384840001f3af00026020000271530001e95e000257710002a85d0002a17b0002a8da0002d885000236d8000252db0002564c00027ba50002984f000214f00001f6a20002a17b0002c7d0000343a60002eb5c000264b60002f8a00002795a0002a17b0002a31f0002be260002d63a000268270002e08c0001935e00031d52000249310002004c00029e890002b2af00031d520002540100027ba50002d63a0002a31f0002206700029e0b0002d0fc0002b61f0002ed290001ff270002871c00030c9c00028e7b00018fee00022e2a00034b2f0002e3550003024a000200f40002871c00022e2a0001c9420001e1ff00037a320001b25400030f8f00024931000219080002dad00001e1ff000308ae00021fea000259bc0001fe010002c7d0000208530002a2a10002871c00026f080003545b00035ead0001e1570002004c0002871c0002f11700034d7a0002f40a0002b32c0002d2ca00028d5600027f15000343a60002c3e20002d6b80002cac3000297a70002dbf6000256f30002754100032b1400026c150003660c0003660c0002984f00024b7c0003100d0002ce330002004c0002d5150001aee30002e3fd00028cd800023b6f00028d56000293b90002be26000253830002f8a00002d1a40001f3320002dd1b0002c99d000226cb000381130002cf590002f1bf000347bf0002be260002eda70002dc74000278b200023e370002e08c000203bd000321400003179600020bc40002e7eb000245c00001eba900024f6a0002b3d400023f5d00025e520002639000036fe00001b2540002cbe80002e9b80001db9b00025dd5000350eb0002dbf60002b990000233e600026c150002795a000283ab0001b5c400018fee0002509000028cd80003660c00033d6d00031d5200022e2a000226cb0001f6a20002c62d000274c300020f340002451900026145000279d700035ead0002d88500031d520002b0630001f6a20001e03100019ed600029e0b00029bc0000258190002842900022b610002871c000241a80002b86a00032b14000284d100022ab90001de8e00021908000327a3000316700002c1970002e355000252db00024d1f0002a6120002c0710002b3d40002626b0002cac300026cbd0002640e0002b0630002ed290002f40a0002af3e0003243300026a7200029f300002bab500024250000256f30002ac4b0002311d0002afbc00022ab900040e1d0002d0fc000242500002348d0002df670001b5c40002795a00024931000271530002bd7e0001fa910002d885000220670002d3470002c07100024b7c0002b61f00022b610001d5df0002dd1b00031d520002916e00030c9c0001d4ba00028a8d0002f40a0002f77b0002eade00027a7f0001d43c000283ab00032b140002af3e00027c22000338d70002c3e200029bc000025caf0003368b0002319a0002d2ca0002916e00031b070002593f0002248000028cd800028f2300035b3d00023bec0002d51500024ca20002dd1b0002ce3300037da30002412a000264b60001e95e0001e1ff00023dba00024eed0002a2a10002f40a000321400001a491000256f30002564c0001ed76000265340001d82a00024eed00020fdc000259bc00022e2a0002e3550002727800027f150002387c000274c300020bc4000203bd000264b60002525d0002593f00026f08000233e6000319e10001d5df000331f50002f1bf0003053d0002ea36000387f5000240050002cac3000289670002235a0002bd000002e76d00032e850002c752000237fe0002803b0002d88500028286000250900002235a0002ff820001ecce000275e90003469900028f23000226cb00035b3d00029e8900028a8d0002f7f9000236d8000245c00002451900027d480001e5ed0002564c00031d520002bab50002afbc0003528e0002670100025a640002dbf60001ed76000253830002715300022ab9000253830002d1a4000272f60002afbc0002c0710002ba0e000233e60002984f00026f86000338d7000357cc00029f30000170f80001f6a20001de8e0002159800020bc4000291ec000282860002a6120002593f0001e95e0002b2af0001c13c000284d100021aac000242ce00027f150002021a00020d910002c19700026aef0002d222000319e100029f3000023dba0001cb100001e03100023edf0002210f000301cd000270ab0003053d000293b90002a8da0002ed290002afbc00025a64000293b90002795a0002198600021cf700032e8500034d7a00031d52000274c30002702d0001f6a200034d7a0002f5ae000264b60002a3c7000301cd0002cac3000339fc00028d560002e6480002a85d000233e6000250120002972a000282860002cac3000274c300029048000293b90001de8e0002916e00029e0b0002525d000256f30002bab500026c150002916e000331f50002c0ef000248890002af3e00034d7a0002b61f000284d10001e27c000338d700022623000256f3000200f40003368b00020d9100020f340002a68f0002626b0002984f0002871c0002ff820002f1bf0001bc28000313000002df670002d885000242500002aa000001fe010002d34700026f08000294df0002f1bf0002cf5900023b6f0001dfb30003545b00021b530002348d0003368b00030f8f0002b7450002a4ec000215980001ccb300027ba50002803b00022ff70002af3e0002f1bf000279d700026f080002943700022e2a000245c000029fae0002a6120002a4ec00027a7f000250900002cf590002d3470001f6a20001f8ed0002ce330002525d0001c6f70001f6a20002a4ec0002b3d4000331f5000200f400030c9c00026534000252db0002577100028e7b000305bb0002cf590002984f0001ef190001cb100002be26000204e20002b0e1000291ec0001c9420002173b0002072e0002564c00030c9c000245c000029e0b0001fe010001a802000248890002ba0e000274c30002dbf600025ae200038113000242ce0002795a000217e30001ea0500025819000222b20002916e0001de8e000293b90002d8850003167000021f420002cf590001f72000023756000245c000028c3000029a9a0002943700038b65000258190002dd1b000338d7000324330002ad7100025401000264b60002f40a000280b900028967000293b90002f1bf00029e890002525d00026c150002e08c0002fe5c00029f30000208530002ceb1000278b2000298cd00025e520002e7eb0002871c000321400002e2d7000274c300029f30000261450002916e00023b6f000216160002d903000200f40002f77b00040e1d000200f40002acf300035b3d000271530002b61f00028dfd0002a2a10002235a000271d1000280b900026f080002d5920001d1490002a6120002d2ca0002871c000275e900035b3d0002218d00026e6000027cca00022ed20002acf30002f1bf0001e1ff00026cbd0002984f0001f6a20002d51500022ff700022a3b0003887200026aef0002795a0002816000026827000243750002803b00027f150002a8da0002c3e20002425000021598000327a300024250000220670002a2a1000381130002fe5c0002ee4f0002dbf60002d0fc000226cb000294df0002d63a0001f4d5000226cb000285f700028e7b000331f5000291ec000283040002682700029e890002cac30002f1bf0002b452000259bc0002b2af0002235a0002de410002b2af00030d440002bea400026a720002a73700033fb80002e08c00024ca2000289e50002dad00002df67000249310002a737000274c30001f3af0002ac4b0002c5070002a68f0002cbe8000321e800027278000237fe00022749000264b6000301cd000265db0001aa4d0002f8a00002ea360002916e0003a6ea00028f23000215980002bab5000264b60002a8da000285f700026cbd00024519000314250002425000031ef50002a85d0002984f000275e90002b2af0002e6480002916e00034d7a0002a68f0002a2a100021861000275e900024d1f000328c90002795a0001f7200002f77b00033fb80002acf30002df67000319e1000404490002795a000268a400025caf00023b6f0002c752000280b9000251b60001859c000170f80002a31f0002b61f0002509000028b0a00026145000219860003c9500002a85d000218610001bef10002795a0003053d0002609e00021fea00024f6a000259bc00030dc2000264b60001f3af000243750003b4ad0001ef190002faeb0002c752000313000002f77b00025a640002159800031425000204e2000288420002682700023dba00030c1f0002a56a00025383000392470002aa0000025caf0002dbf60002da29000208530003f9790002ff820002f40a00032faa0002a7370002677f000293b90002a17b0001f6a200026020000267010002fc8f0002faeb0002be2600024f6a0002cf59000237fe00024d1f000230750002348d00033cc50002d1a4000328210002350b00028f230003621e00035ead0002262300023edf0002525d000320c2000299750002d2ca00032e8500035b3d000294370002a31f000271530002626b0001f6a20002ff820003142500026aef000203bd0002387c0001a802000246e60002972a000297a70002ef7400030f8f000294df000291ec000301cd0001f6a20002acf3000293b900026390000302f20002d8850002a85d0002c5850002d8850002b2af0002af3e000291ec0001f6a2000212a5000280b90002803b00027f150001fea9000274c30002b2af000245c00002ea36000271d100034203000260200001e1ff0002d88500026aef0002451900028cd8000271d1000245190001e03100033c470002b7450003b4ad0002b2af00023b6f00024bfa0002795a0002b2af0002682700022e2a00036c700002a17b00027ba50001fe010002190800020fdc000293b90001f3af0002c3e20002c1970002c7d00002e7eb000282860002955c00032433000237fe000245190003790d0002bab50002e355000219080002acf3000237fe0002a61200027f1500024ca2000220670002916e00021f42000259bc000319e100022067000275e90003053d00022e2a0001935e00025e520002198600022a3b0002b2af000271530003a6ea00024f6a0002dc740002ac4b000204650002803b00028e7b00035f2b0002509000026aef000308ae000310b50001de8e00028d560002a31f00023edf00026534000275410002c45f0003243300030a510002bd0000029b18000257710002972a0002593f0003b4ad0002a31f00037ec800020f340002f40a0001ff27000285f7000314250002d2ca00024a57000314250002b99000030f8f0002f530000249310002a2a1000338d7000264b60002ed290002dd1b0002b99000032b1400024ca2000338d7000253830002795a00028a8d0002972a000306630002dd1b0002795a0003b4ad000275410001bf980001c13c0002b9900002d88500026de20002b3d40002a982000215980002faeb000285f7000253830002a17b000236310002ff820001de8e0002a17b0002c3e20002b4520002602000027a7f0002842900023a490002dbf600021b5300024519000290c60002d0fc0002159800027ba500029a9a000264b600031670000242500001f3320001f4d5000258190002b61f00019d320002778c000308ae00032f020002867400025dd50003214000032b1400029f3000029bc00002cf5900029e0b0001d82a00025a640002a4ec0002c5850002b61f00039247000222b20002b32c0002ea36000282860002c3e20002161600035ead0002c0ef0001ecce0002afbc0002d8850001d82a00024f6a00025090000256f300029ce5000245c0000220670003e4d50002b61f000226cb0002ed29000302f20002c0ef0002117f0002879a0002cac30002e64800024d1f0002a4ec0002879a0002be260002d63a00028f23000319e1000268270001f6a200021cf70002c58500029048000282860002803b0003545b000284d10002a61200030663000308ae0001ecce0002b69d0002319a0002803b0002dbf6000324b100020bc40002984f0002e2d70002dbf60001c6f70002274900025efa000280b900027c22000302f20002879a00029bc000022ff7000274c3000384840003167000033fb800035ead000289e50002117f0001ef190002cf5900027f150002702d000384840002783400019ed60002faeb0001d82a0002626b000308ae00027c220001fa910002be26000328c900025a64000257710001bc280002b74500027f1500024eed0002dd1b00027153000321e80002a98200027cca0002acf30002159800022d04000271d100027153000319e10002d51500025d2d0002319a000208530003621e0001d43c00024889000284d10002795a000314250002c7d00002984f00029bc0000248890002c7d000026e600002bab5000245c0000215980002c7520001ed760002dbf60002dd1b0002f09a00031670000293b90002faeb00027c220002c197000246e600026f08000331f500024eed0002a31f0002ba0e0002e08c000308ae000226cb0002b3d400024eed00034b2f00022c870001e5ed0002677f00023a4900029bc00002795a0002525d00028a8d0002a85d0002e08c0002a56a00033cc50002d9ab000306630003100d00020fdc00027153000338d70002abcd00029f30000242500002e648000249af0003368b0001f7200002097900029bc0000237fe00032e850002a2a1000261450003167000021b5300030d44000289e50002d5150003b4ad0002b9900002525d0002eda700022b6100036fe000027cca0001a4910001ca680002803b0002a982000290c600029f3000024519000259bc0002871c0002bd000003d71300024eed0002307500021908000236d80002cf59000242500001e712000233e600022ff7000313000002bab5000294370002cac30003521000020bc4000305bb00024f6a0001ff2700025a6400020d9100029e89000260200002451900027cca0002a56a0002640e00026f0800022480000366b400028286000242ce000245c00002fe5c0002d5920003a009000373510002b18900028674000265db00026c15000289e50002262300027ba5000241a80003992800026e60000268270002ba0e00029bc00001d82a00022e2a000308ae000350eb0002a3c7000258190002004c000366b40002aa0000037da30002f77b0002d1a400038ffb0002955c0002a4ec00025dd50001bf980001f8ed000260200002a56a0002acf30002972a0002828600020f340001e1ff00020fdc00023edf00020bc400025526000256f30002727800027153000256f30002387c00025819000243750001d82a00027cca000219080002cac30002ceb1000373cf0002cf590002a2a10002feda000209790002117f0002b3d40001e95e0002f7f900034a0a0002f7f90002525d0002a3c70002f1bf00027cca0002e64800026de200022a3b000289e50002c0710002c19700022480000272780002682700029bc00002b69d0002c07100026b9700024ca2000368ff000314250002b61f000265340002871c00037b580002e6480001d0cb0001eba900023dba00028a8d0002984f0001bca600022e2a0002581900028a8d00024005000250900002640e00038113000291ec0003137e0002198600022480000319e10002acf30002c8780002350b0003100d00021cf70001b5c4000358f2000257710001e1ff00026390000213ca0003053d0002319a00023b6f0001935e000237fe000226cb0001bdcb000331f500022b610002acf3000279d70002c1970001d1490002235a0002e7eb0001a49100035b3d0002dc740002916e000224800002d8850001f8ed00036fe0000343a60002a8da0002c62d00032b14000316700002b2af0002b0630003142500024d1f00038be300032b14000271d1000264b6000301cd0002ea36000271d1000208fb000203bd00025a64000305bb000258190002350b00039c9800031670000236310002525d000294370002fe5c0002803b000284d10002faeb000261450002593f0002a56a0001f3af0002c8f60001f4d50003d713000275e90001ecce0002a98200023c94000298cd00035b3d000269ca00020bc40002235a000319e10001c6f7000264b60002b2070002b61f0001e1ff0001f3320002cf5900024dc70002ed290002af3e000338d7000249af0002d5150002a4ec000285f70002df6700022a3b00021c790002972a0001fa910003167000032f0200031670000328c9000248890001e5ed00020a20000283ab0002d2220002b61f000242ce0002e3fd00020f340002b3d400024d1f00027f1500030c9c0002b745000212a50002acf30002803b0001fd8300025e520002eb5c00036fe0000324330002a61200027cca0002830400027f930002b990000250900002e6480002f5ae0002d5150001bf9800029a9a0002f40a0002cf59000272f600031425000215980002bab50001f4d50002173b0002cf590003660c0002cf590001d26f000331f50001e95e00027c2200028d5600032e85000217e3000290c60002564c0002bab50002e2d70002ac4b00029bc000030663000278340002af3e0002c8780002173b0002c1970003621e0002a4ec00027df0000237fe00031670000306630003444e0003167000034d7a0002c45f000237fe0002faeb00024b7c0003142500026f8600033c47000204650002d5150002de410001d26f0002ba0e0003811300030a5100025a6400028cd80001e1ff0002b61f00027f9300032faa000255ce000259bc0002f40a00037b5800021fea000368ff000338d7000376c20002916e000250120002a61200037ab0000321e8000324b10002879a00029e8900030c9c000297a70002916e00021fea00034d7a0002311d00034d7a000275e9000296040001ca680002b61f00025dd500030f8f00027cca000269ca0003b2620003167000026534000293b9000285f70002525d0002e3550002206700019ed60002c75200031670000376c200025a640002871c0002350b00028a8d00037da300031d52000346990002feda000324330002904800028286000214f00002faeb000237fe0002c99d0001f6a20002ed2900021c7900027f150001ca68000241a80002ff820002f40a000236d8000233e600030f8f0001ca6800021c790002f5ae00025dd50002879a0003100d000280b90002bab50001d1490002b7c20002be26000328210001a80200024eed00025771000212a50002b9900002ed2900027ba50002f1bf000226cb000264b600024d1f00025dd50002a56a00025caf0002fe5c0002af3e0003c95000027f15000301cd0002916e0002ff820002727800028304000230750002bd000002cac3000346990002190800026f0800030c1f00027278000203bd000219080001b5c4000306630002ff820002ceb10002c07100022ff70001bef100024519000338d7000226cb0002f1bf0002319a0001de8e00033c4700028160000305bb0003053d0002b1890002235a00023edf0002387c00025a640002a17b00026e600002a17b0002904800023a490002677f00026b9700024931000280b90001e1ff0001db9b00021227000255260002c75200022d0400026534000291ec0001bf980002d1a4000327a300031d520002bd7e0002602000032140000321e800026020000268270001a802000272f600027f15000243750001ca6800030c1f0002b86a0002c0710002d88500027ba500021616000331f50002b99000026aef0001e03100033d6d00025e52000242ce0001cdd9000229940002b2af0002a4ec00025dd50002984f0002e9b80002715300026020000280b900025a640002b7c2000272f6000249af0002fe5c0003024a0001e1ff00023a49000338d700036fe00001db9b0001e1ff0002cf59000358f200025dd5000246e60002a17b0002a8da0002b2af0002dd1b000236d8000282860002451900023a490003924700036fe00002828600026020000203bd0002210f0001e1ff00023a490003100d00029bc00002d8850002dd1b0002a85d0002a85d00029f30000249310002cb41000226cb000280b900031a5f00029a9a000279d70002581900022480000331f500035b3d000325580002be26000308ae0002df670002b3d400022ff70001f332000399280002235a00025a6400032f020001ecce0002984f0002cf5900025e520001bf980002262300032b140001935e000255260002319a000264b600025e520002a85d0002c3e20003c9500002ba0e0001d14900020c6b0001d5df0002871c0002cf59000237fe0002021a0001f4d5000301cd0002f40a0002e6480001a8020002e2d700022a3b0002bd000002cf590002c7520002766700021fea00036fe0000268270002eade0002be2600030c9c000293b90002ac4b000271d10002e08c0002d885000274c300032b140002525d000298cd00021908000290480002ceb10002d34700026aef0002e3550002ba0e0001d4ba000331f500025a640003092c00029c3e0002984f0001b2540002c7520002bd00000285f700029c3e0002803b00025dd500033273000249af0001b5c40002702d00027cca00021aac0002766700025caf0001d82a0002626b00024889000222b20002d0fc00020fdc0002b2af00022ff7000250120002be260002816000029e0b00029bc000029ce500033c470002d1a40002aaa800023bec0002525d0002a85d00027f15000293b90001f7200002c507000250900002ceb100027cca0002d63a000283ab0003d7130003d0320002faeb0002b32c0002f1bf0002dd1b000260200002ed290002984f00024f6a0002a3c70002653400023b6f00027ba5000237fe000293b900024eed00027cca0002e355000278b2000285f70002916e0003167000020bc40002972a000248890002acf30002d1a4000222b2000319e100023b6f0002609e000226cb000331f50003b4ad0001c6f70002c5850002b61f0002803b000308ae000283ab0002b3d400028a8d00029e0b00029b180002c87800025a640001d5df00025dd50002984f00037ab000027cca0002235a00024ca200000000000000000000000000000000
0x60806040526004361015610011575f80fd5b5f3560e01c806301ffc9a7146102ba57806306fdde03146102b5578063081812fc146102b0578063095ea7b3146102ab578063098144d4146102925780630d705df6146102a657806316c38b3c146102a157806318160ddd1461029c57806323b872dd1461027957806324bbd0491461029757806329e38d5e146102925780632a55205a1461028d57806332cb6b0c146102885780633a602b4d146102835780633ccfd60b1461027e57806342842e0e14610279578063453c23101461027457806355f804b31461026f578063594d3a501461026a5780635c975abb146102655780636061ffc3146102605780636352211e1461025b5780636817c76c146102565780636c0360eb1461025157806370a082311461024c5780638da5cb5b146102475780638f2fc60b1461024257806395d89b411461023d5780639fbc871314610238578063a0712d6814610233578063a22cb4651461022e578063a9fc664e14610229578063b88d4fde14610224578063bd7f609b1461021f578063c63adb2b1461021a578063c87b56dd14610215578063e268e4d314610210578063e985e9c51461020b578063f19e75d414610206578063f2fde38b14610201578063f4a0a528146101fc578063f8004d31146101f75763fe5a451a146101f2575f80fd5b61133e565b6112d5565b61127e565b61123b565b611179565b61111d565b6110c5565b610fb5565b610f95565b610f48565b610ef7565b610e75565b610de8565b610d05565b610cdd565b610ca0565b610c04565b610bdc565b610ba4565b610adb565b610a87565b610a55565b610a11565b6109ec565b6109d2565b6108c0565b610875565b6106e4565b6107dd565b6107a5565b610789565b610746565b6105e4565b610724565b6106c7565b610646565b610610565b6104e9565b61048b565b610447565b346103655760203660031901126103655760043563ffffffff60e01b81168091036103655761031d906380ac58cd60e01b8114908115610354575b8115610343575b8115610332575b8115610321575b5060405190151581529081906020820190565b0390f35b632b435fdb60e21b1490505f61030a565b63152a902d60e11b81149150610303565b6301ffc9a760e01b811491506102fc565b635b5e139f60e01b811491506102f5565b5f80fd5b5f91031261036557565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff811161039b57604052565b610373565b6040810190811067ffffffffffffffff82111761039b57604052565b90601f8019910116810190811067ffffffffffffffff82111761039b57604052565b67ffffffffffffffff811161039b57601f01601f191660200190565b5f5b83811061040b5750505f910152565b81810151838201526020016103fc565b6040916020825261043b81518092816020860152602086860191016103fa565b601f01601f1916010190565b34610365575f3660031901126103655761031d604051610466816103a0565b600c81526b5072696d6542726f6b65727360a01b60208201526040519182918261041b565b34610365576020366003190112610365576004355f526007602052602060018060a01b0360405f205416604051908152f35b600435906001600160a01b038216820361036557565b602435906001600160a01b038216820361036557565b34610365576040366003190112610365576105026104bd565b60243590815f52600560205260018060a01b038060405f20541691823314158061059a575b6105885761056081610541865f52600760205260405f2090565b80546001600160a01b0319166001600160a01b03909216919091179055565b16907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9255f80a4005b604051634cd9539b60e11b8152600490fd5b506105df6105db6105d4336105bf8760018060a01b03165f52600860205260405f2090565b9060018060a01b03165f5260205260405f2090565b5460ff1690565b1590565b610527565b34610365575f36600319011261036557600a5460405160109190911c6001600160a01b03168152602090f35b34610365575f366003190112610365576040805163657711f560e11b815260016020820152f35b60043590811515820361036557565b346103655760203660031901126103655761065f610637565b6002546001600160a01b031633036106b55760207f31311016d7204faff81880133e3db244ae8a8b9ce15e83e2432258226d15f942911515600a5461ff008260081b169061ff00191617600a55604051908152a1005b6040516330cd747160e01b8152600490fd5b34610365575f366003190112610365576020600454604051908152f35b34610365576060366003190112610365576001600160a01b03600435818116810361036557602435918216820361036557610722916044359161138d565b005b34610365575f36600319011261036557602060ff600a54166040519015158152f35b3461036557604036600319011261036557600b5461271061076c8260a01c6024356115ad565b604080516001600160a01b03949094168452919004602083015290f35b34610365575f36600319011261036557602060405161115c8152f35b34610365576020366003190112610365576001600160a01b036107c66104bd565b165f526009602052602060405f2054604051908152f35b34610365575f366003190112610365576002546001600160a01b0316338190036106b5575f8080809347905af13d15610870573d61081a816103de565b9061082860405192836103bc565b81525f60203d92013e5b1561083957005b60405162461bcd60e51b815260206004820152600f60248201526e1dda5d1a191c985dc819985a5b1959608a1b6044820152606490fd5b610832565b34610365575f366003190112610365576020600154604051908152f35b9181601f840112156103655782359167ffffffffffffffff8311610365576020838186019501011161036557565b34610365576020806003193601126103655767ffffffffffffffff600435818111610365576108f3903690600401610892565b6002549092906001600160a01b031633036106b557821161039b576109228261091d600354610aa3565b6115c0565b5f92601f83116001146109605750610950925f9183610955575b50508160011b915f199060031b1c19161790565b600355005b013590505f8061093c565b90601f1983169361097f60035f525f8051602061193b83398151915290565b925f905b8682106109ba57505083600195106109a1575b505050811b01600355005b01355f19600384901b60f8161c191690555f8080610996565b80600184968294958701358155019501920190610983565b34610365575f3660031901126103655760206040515f8152f35b34610365575f36600319011261036557602060ff600a5460081c166040519015158152f35b34610365575f366003190112610365576040517f0000000000000000000000006e48fc2fc85d76b35355b8c3d1e92147a70565526001600160a01b03168152602090f35b34610365576020366003190112610365576004355f526005602052602060018060a01b0360405f205416604051908152f35b34610365575f3660031901126103655760205f54604051908152f35b90600182811c92168015610ad1575b6020831014610abd57565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610ab2565b34610365575f366003190112610365576040515f600354610afb81610aa3565b80845290602090600190818116908115610b7a5750600114610b34575b61031d85610b28818703826103bc565b6040519182918261041b565b60035f90815293505f8051602061193b8339815191525b838510610b6757505050508101602001610b288261031d610b18565b8054868601840152938201938101610b4b565b86955061031d96935060209250610b2894915060ff191682840152151560051b8201019293610b18565b34610365576020366003190112610365576001600160a01b03610bc56104bd565b165f526006602052602060405f2054604051908152f35b34610365575f366003190112610365576002546040516001600160a01b039091168152602090f35b3461036557604036600319011261036557610c1d6104bd565b6024356bffffffffffffffffffffffff811690818103610365576002546001600160a01b039290831633036106b55761271010610c6c57911660a09190911b6001600160a01b03191617600b55005b60405162461bcd60e51b815260206004820152600c60248201526b0c4e0e640e8dede40d0d2ced60a31b6044820152606490fd5b34610365575f3660031901126103655761031d604051610cbf816103a0565b60058152645052494d4560d81b60208201526040519182918261041b565b34610365575f36600319011261036557600b546040516001600160a01b039091168152602090f35b60203660031901126103655760048035600a5460ff811615610dd75760081c60ff16610dc75761115c610d39828454611636565b11610db757335f908152600960205260409020610d5890829054611636565b60015410610da757610d6b815f546115ad565b3403610d9757335f9081526009602052604090206107229190610d8f828254611636565b90553361165a565b5060405163f7760f2560e01b8152fd5b5060405163426d5b2360e11b8152fd5b506040516352df9fe560e01b8152fd5b50604051636be9245d60e11b8152fd5b60405163589ed34b60e01b81528390fd5b3461036557604036600319011261036557610e016104bd565b6024359081151580920361036557335f9081526008602090815260408083206001600160a01b0385168452909152902060ff1981541660ff841617905560405191825260018060a01b0316907f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3005b3461036557602036600319011261036557610e8e6104bd565b6002546001600160a01b0390811633036106b557600a805462010000600160b01b03198116601085811b62010000600160b01b03169190911790925592821692901c167fcc5dc080ff977b3c3a211fa63ab74f90f658f5ba9d3236e92c8f59570f442aac5f80a3005b3461036557608036600319011261036557610f106104bd565b610f186104d3565b906064359167ffffffffffffffff831161036557610f3d610722933690600401610892565b50506044359161138d565b3461036557602036600319011261036557602063ffffffff610f8c6004357f0000000000000000000000006e48fc2fc85d76b35355b8c3d1e92147a70565526117fb565b16604051908152f35b34610365575f366003190112610365576020600b5460a01c604051908152f35b3461036557602080600319360112610365576004355f8181526005835260409020546001600160a01b0316156110b357610fee90611897565b604051905f9260035461100081610aa3565b90600190818116908115611094575060011461104b575b61031d85610b288161103d61102c8b8a611643565b64173539b7b760d91b815260050190565b03601f1981018352826103bc565b9091945060035f525f8051602061193b833981519152905f915b838310611081575050508201909201918161103d61102c611017565b8054868401880152918601918101611065565b60ff19168685015250508015150283010192508161103d61102c611017565b60405163677510db60e11b8152600490fd5b3461036557602036600319011261036557600254600435906001600160a01b031633036106b5576020817f97e4f91a4b7e108aff6d29a03d7b9f94705ad90ed51b377784a1943ea32257e792600155604051908152a1005b3461036557604036600319011261036557602060ff61116d61113d6104bd565b6111456104d3565b6001600160a01b039182165f9081526008865260408082209290931681526020919091522090565b54166040519015158152f35b60203660031901126103655760025460048035916001600160a01b0316330361122c57811561121d5761115c6111b0838354611636565b1161120e576111be8261157d565b34036111ff57506111cf813361165a565b60405190815233907f76dcb19d73dc6c5a49de41d75b9ab52e3d44ca8cd90c330c238bacb4f8b5b4f590602090a2005b60405163f7760f2560e01b8152fd5b6040516352df9fe560e01b8152fd5b604051637275e2eb60e01b8152fd5b6040516330cd747160e01b8152fd5b34610365576020366003190112610365576112546104bd565b600254906001600160a01b039081831633036106b5576001600160a01b0319909216911617600255005b3461036557602036600319011261036557600254600435906001600160a01b031633036106b5576020817f525b762709cc2a983aec5ccdfd807a061f993c91090b5bcd7da92ca254976aaa925f55604051908152a1005b34610365576020366003190112610365576112ee610637565b6002546001600160a01b031633036106b55760207fc6bf82b4da793e836f3a4189b7dfd276574a7301058b8e2f5100f372f18b4ece91151560ff19600a541660ff821617600a55604051908152a1005b34610365575f366003190112610365576040517f0000000000000000000000007f5488b860f4ed7ae4ab925a817d50af745b3e1d6001600160a01b03168152602090f35b6040513d5f823e3d90fd5b906113b06113a3845f52600560205260405f2090565b546001600160a01b031690565b6001600160a01b0383811693909291831684900361058857833314158061153c575b80611512575b61058857600a5460101c83166001600160a01b0316908161149a575b61144d915061141e61140e875f52600760205260405f2090565b80546001600160a01b0319169055565b61143483610541885f52600560205260405f2090565b6001600160a01b03165f90815260066020526040902090565b80545f190190556001600160a01b0381165f9081526006602052604090206001815401905516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a4565b813b156103655760405163657711f560e11b81523360048201526001600160a01b0382811660248301528416604482015260648101879052915f90839060849082905afa91821561150d5761144d926114f4575b506113f4565b8061150161150792610387565b80610369565b5f6114ee565b611382565b506115376105db6105d4336105bf8560018060a01b03165f52600860205260405f2090565b6113d8565b50336115626115566113a3885f52600760205260405f2090565b6001600160a01b031690565b14156113d2565b634e487b7160e01b5f52601160045260245ffd5b905f91156001171561158b57565b611569565b90670de0b6b3a76400009182810292818404149015171561158b57565b8181029291811591840414171561158b57565b601f81116115cc575050565b60035f525f8051602061193b833981519152906020601f840160051c83019310611610575b601f0160051c01905b818110611605575050565b5f81556001016115fa565b90915081906115f1565b906001820180921161158b57565b603001908160301161158b57565b9190820180921161158b57565b90611656602092828151948592016103fa565b0190565b6001600160a01b037f0000000000000000000000007f5488b860f4ed7ae4ab925a817d50af745b3e1d811692917f0000000000000000000000006e48fc2fc85d76b35355b8c3d1e92147a705655291905f5b8481106116bb57505050505050565b6004906116c8825461161a565b6116d181600455565b6116e784610541835f52600560205260405f2090565b6001600160a01b0384165f908152600660205260409020600181540190558484169080825f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a461174e611749611740838a6117fb565b63ffffffff1690565b611590565b893b1561036557604080516340c10f1960e01b81526001600160a01b0388169681019687526020870183905290959091905f908390819003880181838f5af190811561150d576001967f04492fab062412e7e4e5f46c9e919f1640652946a5e163ad6e6c1c03d87954d2936117d1936117da575b50519081529081906020820190565b0390a3016116ac565b806115016117e792610387565b5f6117c2565b5f1981019190821161158b57565b905f19810190811161158b578060021b908082046004149015171561158b576001018060011161158b575f6004923c5f5160e01c90565b5f19811461158b5760010190565b9061184a826103de565b61185760405191826103bc565b8281528092611868601f19916103de565b0190602036910137565b908151811015611883570160200190565b634e487b7160e01b5f52603260045260245ffd5b801561191c57805f81805b61190457506118b081611840565b925b6118bb57505090565b6118c4906117ed565b90600a906118ef6118df6118d9848406611628565b60ff1690565b60f81b6001600160f81b03191690565b5f1a6118fb8486611872565b530490816118b2565b9150611911600a91611832565b9104808392916118a2565b50604051611929816103a0565b60018152600360fc1b60208201529056fec2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85ba26469706673582212209351256f57aac5f0ef10f21f1ecd9d94d1a213335cd419d006708f0b75302c7664736f6c63430008180033
| Token | Symbol | Balance | Price | Value |
|---|---|---|---|---|
| no token holdings | ||||
| Transaction Hash | Method | Block | Age | From | To | Type | Item | ||
|---|---|---|---|---|---|---|---|---|---|
| no NFT transfers for this address yet | |||||||||
| Transaction Hash | Method | Block | Age | From | To | Amount | Token | ||
|---|---|---|---|---|---|---|---|---|---|
| no token transfers for this address yet | |||||||||
| Type | Age | Block | Details |
|---|---|---|---|
| no cross-chain L1↔L2 transactions for this address | |||
| Transaction Hash | Method ? | Block | Age | From | To | Amount | Txn Fee ? | ||
|---|---|---|---|---|---|---|---|---|---|
| 0xb08ecd…38f219 | Set Approval For All | 36,557,820 | 1 day agoFri, 14 Aug 2026 20:57:55 UTC | 0x5f57…1947 | IN | PrimeBrokers | $0.000 ETH | 0.00000095 | |
| 0xe24ad6…fe98ed | Set Approval For All | 36,423,490 | 1 day agoFri, 14 Aug 2026 17:13:41 UTC | 0x095c…cf2c | IN | PrimeBrokers | $0.000 ETH | 0.00000097 | |
| 0x97e637…da5fa5 | Set Approval For All | 36,399,254 | 1 day agoFri, 14 Aug 2026 16:33:11 UTC | 0x0236…7dc1 | IN | PrimeBrokers | $0.000 ETH | 0.00000097 | |
| 0x4783d1…61f059 | Set Approval For All | 36,368,893 | 1 day agoFri, 14 Aug 2026 15:42:27 UTC | 0xb0be…e4c7 | IN | PrimeBrokers | $0.000 ETH | 0.00000098 | |
| 0x597fc4…470310 | Set Approval For All | 36,361,350 | 1 day agoFri, 14 Aug 2026 15:29:51 UTC | 0xdd04…4652 | IN | PrimeBrokers | $0.000 ETH | 0.00000097 | |
| 0x3a8fc9…8e332c | Set Approval For All | 36,059,656 | 1 day agoFri, 14 Aug 2026 07:05:50 UTC | 0x2be8…33cf | IN | PrimeBrokers | $0.000 ETH | 0.00000202 | |
| 0x365936…c0a801 | Set Approval For All | 35,752,704 | 2 days agoThu, 13 Aug 2026 22:33:28 UTC | 0xf866…74e8 | IN | PrimeBrokers | $0.000 ETH | 0.00000106 | |
| 0x9cff45…c08de5 | Set Approval For All | 35,624,188 | 2 days agoThu, 13 Aug 2026 18:58:52 UTC | 0x83f7…0c68 | IN | PrimeBrokers | $0.000 ETH | 0.00000211 | |
| 0xf2a0be…99d302 | Set Approval For All | 34,998,533 | 2 days agoThu, 13 Aug 2026 01:33:01 UTC | 0xc45f…fdab | IN | PrimeBrokers | $0.000 ETH | 0.00000130 | |
| 0xa54c7d…387fb6 | Set Approval For All | 34,851,545 | 3 days agoWed, 12 Aug 2026 21:27:38 UTC | 0x2be8…33cf | IN | PrimeBrokers | $0.000 ETH | 0.00000125 | |
| 0xcf4309…498ac1 | Set Approval For All | 34,842,715 | 3 days agoWed, 12 Aug 2026 21:12:54 UTC | 0xaf9a…bf1e | IN | PrimeBrokers | $0.000 ETH | 0.00000233 | |
| 0x817ae9…e73055 | Set Approval For All | 34,813,132 | 3 days agoWed, 12 Aug 2026 20:23:29 UTC | 0x3cb1…745a | IN | PrimeBrokers | $0.000 ETH | 0.00000124 | |
| 0xaf7648…e39408 | Set Approval For All | 34,554,503 | 3 days agoWed, 12 Aug 2026 13:11:47 UTC | 0xab29…2a90 | IN | PrimeBrokers | $0.000 ETH | 0.00000124 | |
| 0xd3efd0…1eab20 | Set Approval For All | 34,094,071 | 3 days agoWed, 12 Aug 2026 00:27:18 UTC | 0x5b6c…2afb | IN | PrimeBrokers | $0.000 ETH | 0.00005018 | |
| 0x1d6af6…e84d50 | Set Approval For All | 34,074,202 | 3 days agoTue, 11 Aug 2026 23:54:38 UTC | 0xb780…0ac1 | IN | PrimeBrokers | $0.000 ETH | 0.00000085 | |
| 0xbc424f…dcc5a5 | Set Approval For All | 34,066,919 | 3 days agoTue, 11 Aug 2026 23:42:41 UTC | 0x14d6…d283 | IN | PrimeBrokers | $0.000 ETH | 0.00000083 | |
| 0x2bf760…4dfa71 | Set Approval For All | 33,876,804 | 4 days agoTue, 11 Aug 2026 18:26:39 UTC | 0xcaf5…ebfa | IN | PrimeBrokers | $0.000 ETH | 0.00000135 | |
| 0xf73c7e…0dd02c | Set Approval For All | 33,794,121 | 4 days agoTue, 11 Aug 2026 16:09:06 UTC | 0xaf9a…bf1e | IN | PrimeBrokers | $0.000 ETH | 0.00000067 | |
| 0x3a08cf…53e9af | Set Approval For All | 33,439,992 | 4 days agoTue, 11 Aug 2026 06:18:29 UTC | 0xf866…74e8 | IN | PrimeBrokers | $0.000 ETH | 0.00000130 | |
| 0xdc7c58…45015d | Safe Transfer From | 33,354,835 | 4 days agoTue, 11 Aug 2026 03:56:36 UTC | 0x268d…cf15 | IN | PrimeBrokers | $0.000 ETH | 0.00000141 | |
| 0xdc4626…b24529 | Safe Transfer From | 33,354,199 | 4 days agoTue, 11 Aug 2026 03:55:32 UTC | 0x268d…cf15 | IN | PrimeBrokers | $0.000 ETH | 0.00000192 | |
| 0xa11fae…f3b27d | Set Approval For All | 33,300,592 | 4 days agoTue, 11 Aug 2026 02:26:05 UTC | 0x41c5…4de8 | IN | PrimeBrokers | $0.000 ETH | 0.00000130 | |
| 0xb3b5fb…dc5563 | Set Approval For All | 33,273,904 | 4 days agoTue, 11 Aug 2026 01:41:33 UTC | 0x820b…1aee | IN | PrimeBrokers | $0.000 ETH | 0.00000128 | |
| 0x721ea1…fbb401 | Set Approval For All | 33,199,765 | 4 days agoMon, 10 Aug 2026 23:37:55 UTC | 0x1b32…8a77 | IN | PrimeBrokers | $0.000 ETH | 0.00000067 | |
| 0xe94b13…537a08 | Set Approval For All | 33,199,517 | 4 days agoMon, 10 Aug 2026 23:37:30 UTC | 0x74ac…b648 | IN | PrimeBrokers | $0.000 ETH | 0.00000067 |
| Block | Age | Parent Transaction Hash | Type | Method | From | To | Value | |
|---|---|---|---|---|---|---|---|---|
| 32,454,073 | 5 days agoMon, 10 Aug 2026 02:53:04 UTC | 0x8c1024…b3e99c | CALL | withdraw | 0xe566…e2dc | OUT | 0x3423…3a86 | 1.7616 ETH |
| 32,376,215 | 5 days agoMon, 10 Aug 2026 00:43:05 UTC | 0xe332da…54ec94 | CALL | 0x8ca81767 | 0x0843…169e | IN | 0xe566…e2dc | 0.0004 ETH |
| 32,376,215 | 5 days agoMon, 10 Aug 2026 00:43:05 UTC | 0xe332da…54ec94 | CALL | 0x8ca81767 | 0x11dc…394e | IN | 0xe566…e2dc | 0.0004 ETH |
| 32,376,215 | 5 days agoMon, 10 Aug 2026 00:43:05 UTC | 0xe332da…54ec94 | CALL | 0x8ca81767 | 0xadb6…295f | IN | 0xe566…e2dc | 0.0004 ETH |
| 32,376,215 | 5 days agoMon, 10 Aug 2026 00:43:05 UTC | 0xe332da…54ec94 | CALL | 0x8ca81767 | 0xf1a5…f5f7 | IN | 0xe566…e2dc | 0.0004 ETH |
| 32,376,215 | 5 days agoMon, 10 Aug 2026 00:43:05 UTC | 0xe332da…54ec94 | CALL | 0x8ca81767 | 0x1a95…b35b | IN | 0xe566…e2dc | 0.0004 ETH |
| 32,376,215 | 5 days agoMon, 10 Aug 2026 00:43:05 UTC | 0xe332da…54ec94 | CALL | 0x8ca81767 | 0xaa2b…f72c | IN | 0xe566…e2dc | 0.0004 ETH |
| 32,376,215 | 5 days agoMon, 10 Aug 2026 00:43:05 UTC | 0xe332da…54ec94 | CALL | 0x8ca81767 | 0x3840…837e | IN | 0xe566…e2dc | 0.0004 ETH |
| 32,376,215 | 5 days agoMon, 10 Aug 2026 00:43:05 UTC | 0xe332da…54ec94 | CALL | 0x8ca81767 | 0x56a0…60ec | IN | 0xe566…e2dc | 0.0004 ETH |
| 32,376,215 | 5 days agoMon, 10 Aug 2026 00:43:05 UTC | 0xe332da…54ec94 | CALL | 0x8ca81767 | 0x43bd…acea | IN | 0xe566…e2dc | 0.0004 ETH |
| 32,376,215 | 5 days agoMon, 10 Aug 2026 00:43:05 UTC | 0xe332da…54ec94 | CALL | 0x8ca81767 | 0x5d71…ce5b | IN | 0xe566…e2dc | 0.0004 ETH |
| 32,376,130 | 5 days agoMon, 10 Aug 2026 00:42:56 UTC | 0x67ca1b…c0b60b | CALL | 0x8ca81767 | 0xb2f5…91f4 | IN | 0xe566…e2dc | 0.0004 ETH |
| 32,376,130 | 5 days agoMon, 10 Aug 2026 00:42:56 UTC | 0x67ca1b…c0b60b | CALL | 0x8ca81767 | 0x9c5b…600b | IN | 0xe566…e2dc | 0.0004 ETH |
| 32,376,130 | 5 days agoMon, 10 Aug 2026 00:42:56 UTC | 0x67ca1b…c0b60b | CALL | 0x8ca81767 | 0x8f81…1d16 | IN | 0xe566…e2dc | 0.0004 ETH |
| 32,376,130 | 5 days agoMon, 10 Aug 2026 00:42:56 UTC | 0x67ca1b…c0b60b | CALL | 0x8ca81767 | 0x45f8…f0c1 | IN | 0xe566…e2dc | 0.0004 ETH |
| 32,376,130 | 5 days agoMon, 10 Aug 2026 00:42:56 UTC | 0x67ca1b…c0b60b | CALL | 0x8ca81767 | 0xd2f5…e92f | IN | 0xe566…e2dc | 0.0004 ETH |
| 32,376,130 | 5 days agoMon, 10 Aug 2026 00:42:56 UTC | 0x67ca1b…c0b60b | CALL | 0x8ca81767 | 0xc8a1…4595 | IN | 0xe566…e2dc | 0.0004 ETH |
| 32,376,130 | 5 days agoMon, 10 Aug 2026 00:42:56 UTC | 0x67ca1b…c0b60b | CALL | 0x8ca81767 | 0x53ac…c8a9 | IN | 0xe566…e2dc | 0.0004 ETH |
| 32,376,130 | 5 days agoMon, 10 Aug 2026 00:42:56 UTC | 0x67ca1b…c0b60b | CALL | 0x8ca81767 | 0xaf43…3eba | IN | 0xe566…e2dc | 0.0004 ETH |
| 32,376,130 | 5 days agoMon, 10 Aug 2026 00:42:56 UTC | 0x67ca1b…c0b60b | CALL | 0x8ca81767 | 0xf91b…9f09 | IN | 0xe566…e2dc | 0.0004 ETH |
| 32,376,130 | 5 days agoMon, 10 Aug 2026 00:42:56 UTC | 0x67ca1b…c0b60b | CALL | 0x8ca81767 | 0xe85a…243a | IN | 0xe566…e2dc | 0.0004 ETH |
| 32,376,130 | 5 days agoMon, 10 Aug 2026 00:42:56 UTC | 0x67ca1b…c0b60b | CALL | 0x8ca81767 | 0x7fff…97ea | IN | 0xe566…e2dc | 0.0004 ETH |
| 32,376,130 | 5 days agoMon, 10 Aug 2026 00:42:56 UTC | 0x67ca1b…c0b60b | CALL | 0x8ca81767 | 0x4426…7bdf | IN | 0xe566…e2dc | 0.0004 ETH |
| 32,376,130 | 5 days agoMon, 10 Aug 2026 00:42:56 UTC | 0x67ca1b…c0b60b | CALL | 0x8ca81767 | 0x39fc…4808 | IN | 0xe566…e2dc | 0.0004 ETH |
| 32,376,130 | 5 days agoMon, 10 Aug 2026 00:42:56 UTC | 0x67ca1b…c0b60b | CALL | 0x8ca81767 | 0x80ee…a0a0 | IN | 0xe566…e2dc | 0.0004 ETH |
| Txn Hash | Age | Event | Topics / Data |
|---|---|---|---|
| 0xb08ecd…38f219 | 1 day agoFri, 14 Aug 2026 20:57:55 UTC | ApprovalForAll | [0] 0x000000000000…79c71947 [1] 0x000000000000…0000c300 data: 0x000000000000000000…00000000 |
| 0xe24ad6…fe98ed | 1 day agoFri, 14 Aug 2026 17:13:41 UTC | ApprovalForAll | [0] 0x000000000000…f577cf2c [1] 0x000000000000…0000c300 data: 0x000000000000000000…00000000 |
| 0x97e637…da5fa5 | 1 day agoFri, 14 Aug 2026 16:33:11 UTC | ApprovalForAll | [0] 0x000000000000…5aef7dc1 [1] 0x000000000000…0000c300 data: 0x000000000000000000…00000000 |
| 0x4783d1…61f059 | 1 day agoFri, 14 Aug 2026 15:42:27 UTC | ApprovalForAll | [0] 0x000000000000…b29ae4c7 [1] 0x000000000000…0000c300 data: 0x000000000000000000…00000000 |
| 0x597fc4…470310 | 1 day agoFri, 14 Aug 2026 15:29:51 UTC | ApprovalForAll | [0] 0x000000000000…25e34652 [1] 0x000000000000…0000c300 data: 0x000000000000000000…00000000 |
| 0x3a8fc9…8e332c | 1 day agoFri, 14 Aug 2026 07:05:50 UTC | ApprovalForAll | [0] 0x000000000000…90b633cf [1] 0x000000000000…0000c300 data: 0x000000000000000000…00000001 |
| 0x365936…c0a801 | 2 days agoThu, 13 Aug 2026 22:33:28 UTC | ApprovalForAll | [0] 0x000000000000…6a9a74e8 [1] 0x000000000000…0000c300 data: 0x000000000000000000…00000000 |
| 0x9cff45…c08de5 | 2 days agoThu, 13 Aug 2026 18:58:52 UTC | ApprovalForAll | [0] 0x000000000000…8de00c68 [1] 0x000000000000…0000c300 data: 0x000000000000000000…00000001 |
| 0xf2a0be…99d302 | 2 days agoThu, 13 Aug 2026 01:33:01 UTC | ApprovalForAll | [0] 0x000000000000…0e53fdab [1] 0x000000000000…0000c300 data: 0x000000000000000000…00000000 |
| 0xa54c7d…387fb6 | 3 days agoWed, 12 Aug 2026 21:27:38 UTC | ApprovalForAll | [0] 0x000000000000…90b633cf [1] 0x000000000000…0000c300 data: 0x000000000000000000…00000000 |
| 0xcf4309…498ac1 | 3 days agoWed, 12 Aug 2026 21:12:54 UTC | ApprovalForAll | [0] 0x000000000000…730bbf1e [1] 0x000000000000…0000c300 data: 0x000000000000000000…00000001 |
| 0x817ae9…e73055 | 3 days agoWed, 12 Aug 2026 20:23:29 UTC | ApprovalForAll | [0] 0x000000000000…09f9745a [1] 0x000000000000…0000c300 data: 0x000000000000000000…00000000 |
| 0xaf7648…e39408 | 3 days agoWed, 12 Aug 2026 13:11:47 UTC | ApprovalForAll | [0] 0x000000000000…b98b2a90 [1] 0x000000000000…0000c300 data: 0x000000000000000000…00000000 |
| 0xd3efd0…1eab20 | 3 days agoWed, 12 Aug 2026 00:27:18 UTC | ApprovalForAll | [0] 0x000000000000…5f6e2afb [1] 0x000000000000…0000c300 data: 0x000000000000000000…00000000 |
| 0x1d6af6…e84d50 | 3 days agoTue, 11 Aug 2026 23:54:38 UTC | ApprovalForAll | [0] 0x000000000000…77490ac1 [1] 0x000000000000…0000c300 data: 0x000000000000000000…00000000 |
| 0xbc424f…dcc5a5 | 3 days agoTue, 11 Aug 2026 23:42:41 UTC | ApprovalForAll | [0] 0x000000000000…93b9d283 [1] 0x000000000000…0000c300 data: 0x000000000000000000…00000000 |
| 0x2bf760…4dfa71 | 4 days agoTue, 11 Aug 2026 18:26:39 UTC | ApprovalForAll | [0] 0x000000000000…b488ebfa [1] 0x000000000000…0000c300 data: 0x000000000000000000…00000001 |
| 0xf73c7e…0dd02c | 4 days agoTue, 11 Aug 2026 16:09:06 UTC | ApprovalForAll | [0] 0x000000000000…730bbf1e [1] 0x000000000000…0000c300 data: 0x000000000000000000…00000000 |
| 0x263d77…b43f2b | 4 days agoTue, 11 Aug 2026 10:44:37 UTC | Transfer | [0] 0x000000000000…68ce64a0 [1] 0x000000000000…bf95161f [2] 0x000000000000…00000a05 |
| 0x82ec3a…5ebecb | 4 days agoTue, 11 Aug 2026 10:43:13 UTC | Transfer | [0] 0x000000000000…6a9a74e8 [1] 0x000000000000…bf95161f [2] 0x000000000000…00000bd8 |
| 0x355056…02575c | 4 days agoTue, 11 Aug 2026 07:06:49 UTC | Transfer | [0] 0x000000000000…6a9a74e8 [1] 0x000000000000…134a2682 [2] 0x000000000000…00000709 |
| 0x3a08cf…53e9af | 4 days agoTue, 11 Aug 2026 06:18:29 UTC | ApprovalForAll | [0] 0x000000000000…6a9a74e8 [1] 0x000000000000…0000c300 data: 0x000000000000000000…00000001 |
| 0xdc7c58…45015d | 4 days agoTue, 11 Aug 2026 03:56:36 UTC | Transfer | [0] 0x000000000000…bb5ecf15 [1] 0x000000000000…0000dead [2] 0x000000000000…00000d66 |
| 0xdc4626…b24529 | 4 days agoTue, 11 Aug 2026 03:55:32 UTC | Transfer | [0] 0x000000000000…bb5ecf15 [1] 0x000000000000…0000dead [2] 0x000000000000…00000fe1 |
| 0xa11fae…f3b27d | 4 days agoTue, 11 Aug 2026 02:26:05 UTC | ApprovalForAll | [0] 0x000000000000…437e4de8 [1] 0x000000000000…0000c300 data: 0x000000000000000000…00000001 |