// SPDX-License-Identifier: MIT
pragma solidity ^0.8.22;
import { WrappedLilMutantV2 } from "./WrappedLilMutantV2.sol";
import { IERC6551Registry } from "./interfaces/IERC6551Registry.sol";
/**
* @title WrappedLilMutantRobinhood
* @notice Robinhood Chain wrapped ONFT with ERC-6551 token-bound accounts on mint.
* @dev Each bridged NFT gets a deterministic wallet (TBA) via the ERC-6551 registry.
* Limit Break transfer validation + ERC-2981 royalties are configured at deploy.
*/
contract WrappedLilMutantRobinhood is WrappedLilMutantV2 {
IERC6551Registry public immutable erc6551Registry;
address public immutable erc6551AccountImplementation;
bytes32 public constant ERC6551_SALT = bytes32(0);
event TokenBoundAccountCreated(uint256 indexed tokenId, address account);
constructor(
string memory _name,
string memory _symbol,
address _lzEndpoint,
address _delegate,
address _royaltyReceiver,
address _transferValidator,
address _erc6551Registry,
address _erc6551AccountImplementation
)
WrappedLilMutantV2(
_name,
_symbol,
_lzEndpoint,
_delegate,
false,
_royaltyReceiver,
_transferValidator
)
{
require(_erc6551Registry != address(0), "ERC6551: Registry cannot be zero");
require(_erc6551AccountImplementation != address(0), "ERC6551: Implementation cannot be zero");
erc6551Registry = IERC6551Registry(_erc6551Registry);
erc6551AccountImplementation = _erc6551AccountImplementation;
}
function _credit(
address _to,
uint256 _tokenId,
uint32 _srcEid
) internal virtual override {
super._credit(_to, _tokenId, _srcEid);
_createTokenBoundAccount(_tokenId);
}
function _createTokenBoundAccount(uint256 tokenId) internal {
address account = erc6551Registry.createAccount(
erc6551AccountImplementation,
ERC6551_SALT,
block.chainid,
address(this),
tokenId
);
emit TokenBoundAccountCreated(tokenId, account);
}
function getTokenBoundAccount(uint256 tokenId) external view returns (address) {
return erc6551Registry.account(
erc6551AccountImplementation,
ERC6551_SALT,
block.chainid,
address(this),
tokenId
);
}
}[
{
"type": "constructor",
"inputs": [
{
"name": "_name",
"type": "string",
"internalType": "string"
},
{
"name": "_symbol",
"type": "string",
"internalType": "string"
},
{
"name": "_lzEndpoint",
"type": "address",
"internalType": "address"
},
{
"name": "_delegate",
"type": "address",
"internalType": "address"
},
{
"name": "_royaltyReceiver",
"type": "address",
"internalType": "address"
},
{
"name": "_transferValidator",
"type": "address",
"internalType": "address"
},
{
"name": "_erc6551Registry",
"type": "address",
"internalType": "address"
},
{
"name": "_erc6551AccountImplementation",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "nonpayable"
},
{
"name": "ERC721IncorrectOwner",
"type": "error",
"inputs": [
{
"name": "sender",
"type": "address",
"internalType": "address"
},
{
"name": "tokenId",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "owner",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "ERC721InsufficientApproval",
"type": "error",
"inputs": [
{
"name": "operator",
"type": "address",
"internalType": "address"
},
{
"name": "tokenId",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "ERC721InvalidApprover",
"type": "error",
"inputs": [
{
"name": "approver",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "ERC721InvalidOperator",
"type": "error",
"inputs": [
{
"name": "operator",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "ERC721InvalidOwner",
"type": "error",
"inputs": [
{
"name": "owner",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "ERC721InvalidReceiver",
"type": "error",
"inputs": [
{
"name": "receiver",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "ERC721InvalidSender",
"type": "error",
"inputs": [
{
"name": "sender",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "ERC721NonexistentToken",
"type": "error",
"inputs": [
{
"name": "tokenId",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "EnforcedPause",
"type": "error",
"inputs": []
},
{
"name": "ExpectedPause",
"type": "error",
"inputs": []
},
{
"name": "InvalidDelegate",
"type": "error",
"inputs": []
},
{
"name": "InvalidEndpointCall",
"type": "error",
"inputs": []
},
{
"name": "InvalidOptions",
"type": "error",
"inputs": [
{
"name": "options",
"type": "bytes",
"internalType": "bytes"
}
]
},
{
"name": "InvalidReceiver",
"type": "error",
"inputs": []
},
{
"name": "LzTokenUnavailable",
"type": "error",
"inputs": []
},
{
"name": "NoPeer",
"type": "error",
"inputs": [
{
"name": "eid",
"type": "uint32",
"internalType": "uint32"
}
]
},
{
"name": "NotEnoughNative",
"type": "error",
"inputs": [
{
"name": "msgValue",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "OnlyEndpoint",
"type": "error",
"inputs": [
{
"name": "addr",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "OnlyNFTOwner",
"type": "error",
"inputs": [
{
"name": "caller",
"type": "address",
"internalType": "address"
},
{
"name": "owner",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "OnlyPeer",
"type": "error",
"inputs": [
{
"name": "eid",
"type": "uint32",
"internalType": "uint32"
},
{
"name": "sender",
"type": "bytes32",
"internalType": "bytes32"
}
]
},
{
"name": "OnlySelf",
"type": "error",
"inputs": []
},
{
"name": "OwnableInvalidOwner",
"type": "error",
"inputs": [
{
"name": "owner",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "OwnableUnauthorizedAccount",
"type": "error",
"inputs": [
{
"name": "account",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "ReentrancyGuardReentrantCall",
"type": "error",
"inputs": []
},
{
"name": "SafeERC20FailedOperation",
"type": "error",
"inputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "SimulationResult",
"type": "error",
"inputs": [
{
"name": "result",
"type": "bytes",
"internalType": "bytes"
}
]
},
{
"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": "BaseURISet",
"type": "event",
"inputs": [
{
"name": "baseURI",
"type": "string",
"indexed": false,
"internalType": "string"
}
],
"anonymous": false
},
{
"name": "ChainTypeSet",
"type": "event",
"inputs": [
{
"name": "isApeChain",
"type": "bool",
"indexed": false,
"internalType": "bool"
}
],
"anonymous": false
},
{
"name": "EmergencyWithdraw",
"type": "event",
"inputs": [
{
"name": "owner",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "tokenId",
"type": "uint256",
"indexed": true,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "EnforcedOptionSet",
"type": "event",
"inputs": [
{
"name": "_enforcedOptions",
"type": "tuple[]",
"indexed": false,
"components": [
{
"name": "eid",
"type": "uint32",
"internalType": "uint32"
},
{
"name": "msgType",
"type": "uint16",
"internalType": "uint16"
},
{
"name": "options",
"type": "bytes",
"internalType": "bytes"
}
],
"internalType": "struct EnforcedOptionParam[]"
}
],
"anonymous": false
},
{
"name": "MsgInspectorSet",
"type": "event",
"inputs": [
{
"name": "inspector",
"type": "address",
"indexed": false,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "ONFTReceived",
"type": "event",
"inputs": [
{
"name": "guid",
"type": "bytes32",
"indexed": true,
"internalType": "bytes32"
},
{
"name": "srcEid",
"type": "uint32",
"indexed": false,
"internalType": "uint32"
},
{
"name": "toAddress",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "tokenId",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "ONFTSent",
"type": "event",
"inputs": [
{
"name": "guid",
"type": "bytes32",
"indexed": true,
"internalType": "bytes32"
},
{
"name": "dstEid",
"type": "uint32",
"indexed": false,
"internalType": "uint32"
},
{
"name": "fromAddress",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "tokenId",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "OwnershipTransferred",
"type": "event",
"inputs": [
{
"name": "previousOwner",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "newOwner",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "Paused",
"type": "event",
"inputs": [
{
"name": "account",
"type": "address",
"indexed": false,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "PeerSet",
"type": "event",
"inputs": [
{
"name": "eid",
"type": "uint32",
"indexed": false,
"internalType": "uint32"
},
{
"name": "peer",
"type": "bytes32",
"indexed": false,
"internalType": "bytes32"
}
],
"anonymous": false
},
{
"name": "PlatformFeeCollected",
"type": "event",
"inputs": [
{
"name": "from",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "amount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "destinationChain",
"type": "uint32",
"indexed": false,
"internalType": "uint32"
}
],
"anonymous": false
},
{
"name": "PlatformFeeUpdated",
"type": "event",
"inputs": [
{
"name": "newFeeETH",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "newFeeAPE",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "PlatformFeeWithdrawn",
"type": "event",
"inputs": [
{
"name": "to",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "amount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "PreCrimeSet",
"type": "event",
"inputs": [
{
"name": "preCrimeAddress",
"type": "address",
"indexed": false,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "RoyaltyInfoUpdated",
"type": "event",
"inputs": [
{
"name": "receiver",
"type": "address",
"indexed": false,
"internalType": "address"
},
{
"name": "feeNumerator",
"type": "uint96",
"indexed": false,
"internalType": "uint96"
}
],
"anonymous": false
},
{
"name": "TokenBoundAccountCreated",
"type": "event",
"inputs": [
{
"name": "tokenId",
"type": "uint256",
"indexed": true,
"internalType": "uint256"
},
{
"name": "account",
"type": "address",
"indexed": false,
"internalType": "address"
}
],
"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": false,
"internalType": "address"
},
{
"name": "newValidator",
"type": "address",
"indexed": false,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "Unpaused",
"type": "event",
"inputs": [
{
"name": "account",
"type": "address",
"indexed": false,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "ERC6551_SALT",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bytes32",
"internalType": "bytes32"
}
],
"stateMutability": "view"
},
{
"name": "SEND",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint16",
"internalType": "uint16"
}
],
"stateMutability": "view"
},
{
"name": "SEND_AND_COMPOSE",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint16",
"internalType": "uint16"
}
],
"stateMutability": "view"
},
{
"name": "accumulatedFees",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "allowInitializePath",
"type": "function",
"inputs": [
{
"name": "",
"type": "tuple",
"components": [
{
"name": "srcEid",
"type": "uint32",
"internalType": "uint32"
},
{
"name": "sender",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "nonce",
"type": "uint64",
"internalType": "uint64"
}
],
"internalType": "struct Origin"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "approvalRequired",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "pure"
},
{
"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": "owner",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "combineOptions",
"type": "function",
"inputs": [
{
"name": "_eid",
"type": "uint32",
"internalType": "uint32"
},
{
"name": "_msgType",
"type": "uint16",
"internalType": "uint16"
},
{
"name": "_extraOptions",
"type": "bytes",
"internalType": "bytes"
}
],
"outputs": [
{
"name": "",
"type": "bytes",
"internalType": "bytes"
}
],
"stateMutability": "view"
},
{
"name": "emergencyWithdraw",
"type": "function",
"inputs": [
{
"name": "tokenId",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "to",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "endpoint",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "contract ILayerZeroEndpointV2"
}
],
"stateMutability": "view"
},
{
"name": "enforcedOptions",
"type": "function",
"inputs": [
{
"name": "eid",
"type": "uint32",
"internalType": "uint32"
},
{
"name": "msgType",
"type": "uint16",
"internalType": "uint16"
}
],
"outputs": [
{
"name": "enforcedOption",
"type": "bytes",
"internalType": "bytes"
}
],
"stateMutability": "view"
},
{
"name": "erc6551AccountImplementation",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "erc6551Registry",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "contract IERC6551Registry"
}
],
"stateMutability": "view"
},
{
"name": "getAccumulatedFees",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "getApproved",
"type": "function",
"inputs": [
{
"name": "tokenId",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "getChainType",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "getPlatformFee",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "getTokenBoundAccount",
"type": "function",
"inputs": [
{
"name": "tokenId",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "getTransferValidationFunction",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bytes4",
"internalType": "bytes4"
},
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "pure"
},
{
"name": "getTransferValidator",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "isApeChain",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "isApprovedForAll",
"type": "function",
"inputs": [
{
"name": "owner",
"type": "address",
"internalType": "address"
},
{
"name": "operator",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "isComposeMsgSender",
"type": "function",
"inputs": [
{
"name": "",
"type": "tuple",
"components": [
{
"name": "srcEid",
"type": "uint32",
"internalType": "uint32"
},
{
"name": "sender",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "nonce",
"type": "uint64",
"internalType": "uint64"
}
],
"internalType": "struct Origin"
},
{
"name": "",
"type": "bytes",
"internalType": "bytes"
},
{
"name": "_sender",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "isPaused",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "isPeer",
"type": "function",
"inputs": [
{
"name": "_eid",
"type": "uint32",
"internalType": "uint32"
},
{
"name": "_peer",
"type": "bytes32",
"internalType": "bytes32"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "lzReceive",
"type": "function",
"inputs": [
{
"name": "_origin",
"type": "tuple",
"components": [
{
"name": "srcEid",
"type": "uint32",
"internalType": "uint32"
},
{
"name": "sender",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "nonce",
"type": "uint64",
"internalType": "uint64"
}
],
"internalType": "struct Origin"
},
{
"name": "_guid",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "_message",
"type": "bytes",
"internalType": "bytes"
},
{
"name": "_executor",
"type": "address",
"internalType": "address"
},
{
"name": "_extraData",
"type": "bytes",
"internalType": "bytes"
}
],
"outputs": [],
"stateMutability": "payable"
},
{
"name": "lzReceiveAndRevert",
"type": "function",
"inputs": [
{
"name": "_packets",
"type": "tuple[]",
"components": [
{
"name": "origin",
"type": "tuple",
"components": [
{
"name": "srcEid",
"type": "uint32",
"internalType": "uint32"
},
{
"name": "sender",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "nonce",
"type": "uint64",
"internalType": "uint64"
}
],
"internalType": "struct Origin"
},
{
"name": "dstEid",
"type": "uint32",
"internalType": "uint32"
},
{
"name": "receiver",
"type": "address",
"internalType": "address"
},
{
"name": "guid",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "value",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "executor",
"type": "address",
"internalType": "address"
},
{
"name": "message",
"type": "bytes",
"internalType": "bytes"
},
{
"name": "extraData",
"type": "bytes",
"internalType": "bytes"
}
],
"internalType": "struct InboundPacket[]"
}
],
"outputs": [],
"stateMutability": "payable"
},
{
"name": "lzReceiveSimulate",
"type": "function",
"inputs": [
{
"name": "_origin",
"type": "tuple",
"components": [
{
"name": "srcEid",
"type": "uint32",
"internalType": "uint32"
},
{
"name": "sender",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "nonce",
"type": "uint64",
"internalType": "uint64"
}
],
"internalType": "struct Origin"
},
{
"name": "_guid",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "_message",
"type": "bytes",
"internalType": "bytes"
},
{
"name": "_executor",
"type": "address",
"internalType": "address"
},
{
"name": "_extraData",
"type": "bytes",
"internalType": "bytes"
}
],
"outputs": [],
"stateMutability": "payable"
},
{
"name": "msgInspector",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "name",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "string",
"internalType": "string"
}
],
"stateMutability": "view"
},
{
"name": "nextNonce",
"type": "function",
"inputs": [
{
"name": "",
"type": "uint32",
"internalType": "uint32"
},
{
"name": "",
"type": "bytes32",
"internalType": "bytes32"
}
],
"outputs": [
{
"name": "nonce",
"type": "uint64",
"internalType": "uint64"
}
],
"stateMutability": "view"
},
{
"name": "oApp",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "oAppVersion",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "senderVersion",
"type": "uint64",
"internalType": "uint64"
},
{
"name": "receiverVersion",
"type": "uint64",
"internalType": "uint64"
}
],
"stateMutability": "pure"
},
{
"name": "onftVersion",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "interfaceId",
"type": "bytes4",
"internalType": "bytes4"
},
{
"name": "version",
"type": "uint64",
"internalType": "uint64"
}
],
"stateMutability": "pure"
},
{
"name": "owner",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "ownerOf",
"type": "function",
"inputs": [
{
"name": "tokenId",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "pause",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "paused",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "peers",
"type": "function",
"inputs": [
{
"name": "eid",
"type": "uint32",
"internalType": "uint32"
}
],
"outputs": [
{
"name": "peer",
"type": "bytes32",
"internalType": "bytes32"
}
],
"stateMutability": "view"
},
{
"name": "platformFeeAPE",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "platformFeeETH",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "preCrime",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "quoteSend",
"type": "function",
"inputs": [
{
"name": "_sendParam",
"type": "tuple",
"components": [
{
"name": "dstEid",
"type": "uint32",
"internalType": "uint32"
},
{
"name": "to",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "tokenId",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "extraOptions",
"type": "bytes",
"internalType": "bytes"
},
{
"name": "composeMsg",
"type": "bytes",
"internalType": "bytes"
},
{
"name": "onftCmd",
"type": "bytes",
"internalType": "bytes"
}
],
"internalType": "struct SendParam"
},
{
"name": "_payInLzToken",
"type": "bool",
"internalType": "bool"
}
],
"outputs": [
{
"name": "msgFee",
"type": "tuple",
"components": [
{
"name": "nativeFee",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "lzTokenFee",
"type": "uint256",
"internalType": "uint256"
}
],
"internalType": "struct MessagingFee"
}
],
"stateMutability": "view"
},
{
"name": "renounceOwnership",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "royaltyFeeNumerator",
"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": "receiver",
"type": "address",
"internalType": "address"
},
{
"name": "royaltyAmount",
"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": "data",
"type": "bytes",
"internalType": "bytes"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "send",
"type": "function",
"inputs": [
{
"name": "_sendParam",
"type": "tuple",
"components": [
{
"name": "dstEid",
"type": "uint32",
"internalType": "uint32"
},
{
"name": "to",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "tokenId",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "extraOptions",
"type": "bytes",
"internalType": "bytes"
},
{
"name": "composeMsg",
"type": "bytes",
"internalType": "bytes"
},
{
"name": "onftCmd",
"type": "bytes",
"internalType": "bytes"
}
],
"internalType": "struct SendParam"
},
{
"name": "_fee",
"type": "tuple",
"components": [
{
"name": "nativeFee",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "lzTokenFee",
"type": "uint256",
"internalType": "uint256"
}
],
"internalType": "struct MessagingFee"
},
{
"name": "_refundAddress",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "msgReceipt",
"type": "tuple",
"components": [
{
"name": "guid",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "nonce",
"type": "uint64",
"internalType": "uint64"
},
{
"name": "fee",
"type": "tuple",
"components": [
{
"name": "nativeFee",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "lzTokenFee",
"type": "uint256",
"internalType": "uint256"
}
],
"internalType": "struct MessagingFee"
}
],
"internalType": "struct MessagingReceipt"
}
],
"stateMutability": "payable"
},
{
"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": "_baseTokenURI",
"type": "string",
"internalType": "string"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setDelegate",
"type": "function",
"inputs": [
{
"name": "_delegate",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setEnforcedOptions",
"type": "function",
"inputs": [
{
"name": "_enforcedOptions",
"type": "tuple[]",
"components": [
{
"name": "eid",
"type": "uint32",
"internalType": "uint32"
},
{
"name": "msgType",
"type": "uint16",
"internalType": "uint16"
},
{
"name": "options",
"type": "bytes",
"internalType": "bytes"
}
],
"internalType": "struct EnforcedOptionParam[]"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setMsgInspector",
"type": "function",
"inputs": [
{
"name": "_msgInspector",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setPeer",
"type": "function",
"inputs": [
{
"name": "_eid",
"type": "uint32",
"internalType": "uint32"
},
{
"name": "_peer",
"type": "bytes32",
"internalType": "bytes32"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setPlatformFees",
"type": "function",
"inputs": [
{
"name": "newFeeETH",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "newFeeAPE",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setPreCrime",
"type": "function",
"inputs": [
{
"name": "_preCrime",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setRoyaltyInfo",
"type": "function",
"inputs": [
{
"name": "_royaltyReceiver",
"type": "address",
"internalType": "address"
},
{
"name": "_royaltyFeeNumerator",
"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": "view"
},
{
"name": "symbol",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "string",
"internalType": "string"
}
],
"stateMutability": "view"
},
{
"name": "token",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "tokenURI",
"type": "function",
"inputs": [
{
"name": "tokenId",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "string",
"internalType": "string"
}
],
"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": "unpause",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "withdrawPlatformFees",
"type": "function",
"inputs": [
{
"name": "to",
"type": "address",
"internalType": "address payable"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "receive",
"stateMutability": "payable"
}
]0x60e060405265886c98b76000600e55671bc16d674ec80000600f55601280546001600160601b0319166101f41790553480156200003a575f80fd5b5060405162004be738038062004be78339810160408190526200005d916200045d565b878787875f8888868686868383838381818181806001600160a01b038116620000a057604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b620000ab8162000331565b506001600160a01b038083166080528116620000da57604051632d618d8160e21b815260040160405180910390fd5b60805160405163ca5eb5e160e01b81526001600160a01b0383811660048301529091169063ca5eb5e1906024015f604051808303815f87803b1580156200011f575f80fd5b505af115801562000132573d5f803e3d5ffd5b5050505050505050505081600590816200014d9190620005ba565b5060066200015c8282620005ba565b50506001600d5550506010805460ff1916871515908117909155601280546001600160601b03166c010000000000000000000000006001600160a01b038981169190910291909117909155601380546001600160a01b0319169187169190911790556040519081527ffca8826ab14280aa396c6028216ab56d3c5ae2cc185f828698ea1ba25976241993506020019150620001f49050565b60405180910390a1601254604080516001600160a01b03851681526001600160601b0390921660208301527fae1d656a1268648b04ffa79c1416f05879338ae295aae3234d8db217356a1c62910160405180910390a15050506001600160a01b0386169350620002ab925050505760405162461bcd60e51b815260206004820181905260248201527f455243363535313a2052656769737472792063616e6e6f74206265207a65726f604482015260640162000097565b6001600160a01b038116620003125760405162461bcd60e51b815260206004820152602660248201527f455243363535313a20496d706c656d656e746174696f6e2063616e6e6f74206260448201526565207a65726f60d01b606482015260840162000097565b6001600160a01b0391821660a0521660c0525062000686945050505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112620003a4575f80fd5b81516001600160401b0380821115620003c157620003c162000380565b604051601f8301601f19908116603f01168101908282118183101715620003ec57620003ec62000380565b816040528381526020925086602085880101111562000409575f80fd5b5f91505b838210156200042c57858201830151818301840152908201906200040d565b5f602085830101528094505050505092915050565b80516001600160a01b038116811462000458575f80fd5b919050565b5f805f805f805f80610100898b03121562000476575f80fd5b88516001600160401b03808211156200048d575f80fd5b6200049b8c838d0162000394565b995060208b0151915080821115620004b1575f80fd5b50620004c08b828c0162000394565b975050620004d160408a0162000441565b9550620004e160608a0162000441565b9450620004f160808a0162000441565b93506200050160a08a0162000441565b92506200051160c08a0162000441565b91506200052160e08a0162000441565b90509295985092959890939650565b600181811c908216806200054557607f821691505b6020821081036200056457634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620005b557805f5260205f20601f840160051c81016020851015620005915750805b601f840160051c820191505b81811015620005b2575f81556001016200059d565b50505b505050565b81516001600160401b03811115620005d657620005d662000380565b620005ee81620005e7845462000530565b846200056a565b602080601f83116001811462000624575f84156200060c5750858301515b5f19600386901b1c1916600185901b1785556200067e565b5f85815260208120601f198616915b82811015620006545788860151825594840194600190910190840162000633565b50858210156200067257878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b60805160a05160c0516144e9620006fe5f395f81816109840152818161155b015261306501525f81816104690152818161159f01526130a901525f81816107ee01528181610eeb01528181611a3a01528181611ebd015281816121f2015281816128ac01528181612cff0152612db601526144e95ff3fe6080604052600436106103f8575f3560e01c8063715018a61161020a578063b21a33e41161011e578063c87b56dd116100a8578063e985e9c511610078578063e985e9c514610c24578063ec3889b514610c43578063f2fde38b14610c62578063fc0c546a14610718578063ff7bd03d14610c81575f80fd5b8063c87b56dd14610bb4578063ca5eb5e114610bd3578063d045a0dc14610bf2578063d424388514610c05575f80fd5b8063b98bd070116100ee578063b98bd07014610b0c578063bb0b6a5314610b2b578063bc70b35414610b56578063bd815db014610b75578063c6414e7b14610b88575f80fd5b8063b21a33e414610aa1578063b37322d114610ab5578063b731ea0a14610ace578063b88d4fde14610aed575f80fd5b806395d89b411161019f578063a22cb4651161016f578063a22cb46514610a09578063a72f5dd814610a28578063a9fc664e14610a4f578063abb23f5b14610a6e578063b187bd2614610a8d575f80fd5b806395d89b41146109a657806397e67c3b146109ba5780639f68b964146109d15780639fbc8713146109e3575f80fd5b806382413eac116101da57806382413eac146109245780638456cb59146109435780638da5cb5b14610957578063918372de14610973575f80fd5b8063715018a61461088157806372b49161146108955780637d25a05e146108b457806381ddcc1f146108ed575f80fd5b80632a55205a1161030c578063587f5ed7116102965780635e280f11116102665780635e280f11146107dd5780636352211e146108105780636ea8bc101461082f5780636fc1b31e1461084357806370a0823114610862575f80fd5b8063587f5ed7146107685780635a0dfe4d1461077d5780635c975abb146107b25780635df45a37146107c9575f80fd5b806342842e0e116102dc57806342842e0e146106e457806346dedcc51461070357806352ae2879146107185780635535d4611461072a57806355f804b314610749575f80fd5b80632a55205a146106545780632f940c70146106925780633400288b146106b15780633f4ba83a146106d0575f80fd5b80630e3896591161038d5780631d57bc621161035d5780631d57bc62146105bc5780631f5e1334146105cf57806321eb730b146105f657806323b872dd1461061657806329e38d5e14610635575f80fd5b80630e38965914610546578063111ecdad1461056957806313137d651461058857806317442b701461059b575f80fd5b8063081812fc116103c8578063081812fc146104c4578063095ea7b3146104e3578063098144d4146105025780630d705df61461051f575f80fd5b806301ffc9a71461040357806302fa7c4714610437578063056d5afe1461045857806306fdde03146104a3575f80fd5b366103ff57005b5f80fd5b34801561040e575f80fd5b5061042261041d3660046133e0565b610ca1565b60405190151581526020015b60405180910390f35b348015610442575f80fd5b5061045661045136600461340f565b610ce6565b005b348015610463575f80fd5b5061048b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161042e565b3480156104ae575f80fd5b506104b7610e23565b60405161042e919061349e565b3480156104cf575f80fd5b5061048b6104de3660046134b0565b610eb3565b3480156104ee575f80fd5b506104566104fd3660046134c7565b610eda565b34801561050d575f80fd5b506013546001600160a01b031661048b565b34801561052a575f80fd5b506040805163657711f560e11b8152600160208201520161042e565b348015610551575f80fd5b5061055b600e5481565b60405190815260200161042e565b348015610574575f80fd5b5060045461048b906001600160a01b031681565b61045661059636600461354b565b610ee9565b3480156105a6575f80fd5b506040805160018152600260208201520161042e565b3480156105c7575f80fd5b5061055b5f81565b3480156105da575f80fd5b506105e3600181565b60405161ffff909116815260200161042e565b6106096106043660046135f3565b610fa4565b60405161042e919061365b565b348015610621575f80fd5b5061045661063036600461369c565b61105c565b348015610640575f80fd5b5060135461048b906001600160a01b031681565b34801561065f575f80fd5b5061067361066e3660046136da565b6110e5565b604080516001600160a01b03909316835260208301919091520161042e565b34801561069d575f80fd5b506104566106ac3660046136fa565b611125565b3480156106bc575f80fd5b506104566106cb366004613735565b611257565b3480156106db575f80fd5b50610456611269565b3480156106ef575f80fd5b506104566106fe36600461369c565b61127b565b34801561070e575f80fd5b5061055b600f5481565b348015610723575f80fd5b503061048b565b348015610735575f80fd5b506104b7610744366004613760565b61129a565b348015610754575f80fd5b50610456610763366004613788565b61133c565b348015610773575f80fd5b5061055b60115481565b348015610788575f80fd5b50610422610797366004613735565b63ffffffff919091165f908152600160205260409020541490565b3480156107bd575f80fd5b50600c5460ff16610422565b3480156107d4575f80fd5b5060115461055b565b3480156107e8575f80fd5b5061048b7f000000000000000000000000000000000000000000000000000000000000000081565b34801561081b575f80fd5b5061048b61082a3660046134b0565b611382565b34801561083a575f80fd5b5061055b61138c565b34801561084e575f80fd5b5061045661085d3660046137c6565b6113a8565b34801561086d575f80fd5b5061055b61087c3660046137c6565b611405565b34801561088c575f80fd5b5061045661144a565b3480156108a0575f80fd5b506104566108af3660046136da565b61145b565b3480156108bf575f80fd5b506108d56108ce366004613735565b5f92915050565b6040516001600160401b03909116815260200161042e565b3480156108f8575f80fd5b5060125461090c906001600160601b031681565b6040516001600160601b03909116815260200161042e565b34801561092f575f80fd5b5061042261093e3660046137e1565b6114a3565b34801561094e575f80fd5b506104566114b8565b348015610962575f80fd5b505f546001600160a01b031661048b565b34801561097e575f80fd5b5061048b7f000000000000000000000000000000000000000000000000000000000000000081565b3480156109b1575f80fd5b506104b76114c8565b3480156109c5575f80fd5b5060105460ff16610422565b3480156109dc575f80fd5b505f610422565b3480156109ee575f80fd5b5060125461048b90600160601b90046001600160a01b031681565b348015610a14575f80fd5b50610456610a23366004613850565b6114d7565b348015610a33575f80fd5b50604080516311f0c6d360e11b8152600160208201520161042e565b348015610a5a575f80fd5b50610456610a693660046137c6565b6114e2565b348015610a79575f80fd5b5061048b610a883660046134b0565b611544565b348015610a98575f80fd5b5061042261160a565b348015610aac575f80fd5b506105e3600281565b348015610ac0575f80fd5b506010546104229060ff1681565b348015610ad9575f80fd5b5060025461048b906001600160a01b031681565b348015610af8575f80fd5b50610456610b07366004613982565b611617565b348015610b17575f80fd5b50610456610b26366004613a29565b61162f565b348015610b36575f80fd5b5061055b610b45366004613a5b565b60016020525f908152604090205481565b348015610b61575f80fd5b506104b7610b70366004613a74565b611649565b610456610b83366004613a29565b6117ea565b348015610b93575f80fd5b50610ba7610ba2366004613ad0565b61196a565b60405161042e9190613b13565b348015610bbf575f80fd5b506104b7610bce3660046134b0565b6119ae565b348015610bde575f80fd5b50610456610bed3660046137c6565b611a13565b610456610c0036600461354b565b611a94565b348015610c10575f80fd5b50610456610c1f3660046137c6565b611ac3565b348015610c2f575f80fd5b50610422610c3e366004613b2a565b611b19565b348015610c4e575f80fd5b50610456610c5d3660046137c6565b611b46565b348015610c6d575f80fd5b50610456610c7c3660046137c6565b611cfe565b348015610c8c575f80fd5b50610422610c9b366004613b56565b50600190565b5f6001600160e01b0319821663152a902d60e11b1480610cd157506001600160e01b03198216632b435fdb60e21b145b80610ce05750610ce082611d38565b92915050565b610cee611d87565b612710816001600160601b03161115610d4e5760405162461bcd60e51b815260206004820152601f60248201527f526f79616c74793a204665652063616e6e6f742065786365656420313030250060448201526064015b60405180910390fd5b6001600160a01b038216610db55760405162461bcd60e51b815260206004820152602860248201527f526f79616c74793a2052656365697665722063616e6e6f74206265207a65726f604482015267206164647265737360c01b6064820152608401610d45565b6001600160601b0381166001600160a01b038316600160601b81026bffffffffffffffffffffffff191682176012556040805191825260208201929092527fae1d656a1268648b04ffa79c1416f05879338ae295aae3234d8db217356a1c6291015b60405180910390a15050565b606060058054610e3290613b70565b80601f0160208091040260200160405190810160405280929190818152602001828054610e5e90613b70565b8015610ea95780601f10610e8057610100808354040283529160200191610ea9565b820191905f5260205f20905b815481529060010190602001808311610e8c57829003601f168201915b5050505050905090565b5f610ebd82611db3565b505f828152600960205260409020546001600160a01b0316610ce0565b610ee5828233611deb565b5050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163314610f34576040516391ac5e4f60e01b8152336004820152602401610d45565b60208701803590610f4e90610f49908a613a5b565b611df8565b14610f8c57610f606020880188613a5b565b60405163309afaf360e21b815263ffffffff909116600482015260208801356024820152604401610d45565b610f9b87878787878787611e33565b50505050505050565b610fac613388565b610fc7336040860135610fc26020880188613a5b565b611f89565b5f80610fd286612087565b9092509050610ffe610fe76020880188613a5b565b8383610ff8368a90038a018a613ba2565b886121c1565b805190935033907f986156872b2ee0022b9585231dbbfde457f87f8a16b6c45e1a81c54c4ad8351f61103360208a018a613a5b565b6040805163ffffffff9092168252808b013560208301520160405180910390a350509392505050565b6001600160a01b03821661108557604051633250574960e11b81525f6004820152602401610d45565b5f6110918383336122c7565b9050836001600160a01b0316816001600160a01b0316146110df576040516364283d7b60e01b81526001600160a01b0380861660048301526024820184905282166044820152606401610d45565b50505050565b6012546001600160a01b03600160601b820416905f9061271090611112906001600160601b031685613be6565b61111c9190613bfd565b90509250929050565b61112d611d87565b6111356123a3565b6001600160a01b03811661119a5760405162461bcd60e51b815260206004820152602660248201527f456d657267656e63793a2043616e6e6f742073656e6420746f207a65726f206160448201526564647265737360d01b6064820152608401610d45565b5f828152600760205260409020546001600160a01b0316301461120d5760405162461bcd60e51b815260206004820152602560248201527f456d657267656e63793a20546f6b656e206e6f742068656c6420627920636f6e6044820152641d1c9858dd60da1b6064820152608401610d45565b6112183082846123cd565b60405182906001600160a01b038316907f5fafa99d0643513820be26656b45130b01e1c03062e1266bf36f88cbd3bd9695905f90a3610ee56001600d55565b61125f611d87565b610ee5828261247a565b611271611d87565b6112796124c7565b565b61129583838360405180602001604052805f815250611617565b505050565b600360209081525f9283526040808420909152908252902080546112bd90613b70565b80601f01602080910402602001604051908101604052809291908181526020018280546112e990613b70565b80156113345780601f1061130b57610100808354040283529160200191611334565b820191905f5260205f20905b81548152906001019060200180831161131757829003601f168201915b505050505081565b611344611d87565b600b611351828483613c60565b507ff9c7803e94e0d3c02900d8a90893a6d5e90dd04d32a4cfe825520f82bf9f32f6600b604051610e179190613d19565b5f610ce082611db3565b6010545f9060ff1661139f5750600e5490565b600f545b905090565b6113b0611d87565b600480546001600160a01b0319166001600160a01b0383169081179091556040519081527ff0be4f1e87349231d80c36b33f9e8639658eeaf474014dee15a3e6a4d4414197906020015b60405180910390a150565b5f6001600160a01b03821661142f576040516322718ad960e21b81525f6004820152602401610d45565b506001600160a01b03165f9081526008602052604090205490565b611452611d87565b6112795f612519565b611463611d87565b600e829055600f81905560408051838152602081018390527fd347e206f25a89b917fc9482f1a2d294d749baa4dc9bde7fb495ee11fe4916439101610e17565b6001600160a01b03811630145b949350505050565b6114c0611d87565b611279612568565b606060068054610e3290613b70565b610ee53383836125a5565b6114ea611d87565b601380546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527fcc5dc080ff977b3c3a211fa63ab74f90f658f5ba9d3236e92c8f59570f442aac9101610e17565b60405163246a002160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f6024830181905246604484015230606484015260848301849052917f00000000000000000000000000000000000000000000000000000000000000009091169063246a00219060a401602060405180830381865afa1580156115e6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ce09190613da3565b5f6113a3600c5460ff1690565b61162284848461105c565b6110df3385858585612643565b611637611d87565b610ee56116448284613dbe565b61276a565b63ffffffff84165f90815260036020908152604080832061ffff8716845290915281208054606092919061167c90613b70565b80601f01602080910402602001604051908101604052809291908181526020018280546116a890613b70565b80156116f35780601f106116ca576101008083540402835291602001916116f3565b820191905f5260205f20905b8154815290600101906020018083116116d657829003601f168201915b5050505050905080515f036117415783838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152509294506114b09350505050565b5f8390036117505790506114b0565b600283106117cd5761179684848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061286b92505050565b806117a48460028188613e8b565b6040516020016117b693929190613eb2565b6040516020818303038152906040529150506114b0565b8383604051639a6d49cd60e01b8152600401610d45929190613f00565b5f5b818110156118ed573683838381811061180757611807613f13565b90506020028101906118199190613f27565b905061184b61182b6020830183613a5b565b602083013563ffffffff919091165f908152600160205260409020541490565b61185557506118e5565b3063d045a0dc60c08301358360a0810135611874610100830183613f46565b611885610100890160e08a016137c6565b6118936101208a018a613f46565b6040518963ffffffff1660e01b81526004016118b59796959493929190613f9c565b5f604051808303818588803b1580156118cc575f80fd5b505af11580156118de573d5f803e3d5ffd5b5050505050505b6001016117ec565b50336001600160a01b0316638e9e70996040518163ffffffff1660e01b81526004015f60405180830381865afa158015611929573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526119509190810190614021565b604051638351eea760e01b8152600401610d45919061349e565b604080518082019091525f80825260208201525f8061198885612087565b90925090506119a561199d6020870187613a5b565b838387612897565b95945050505050565b60606119b982611db3565b505f6119c361296c565b90505f8151116119e15760405180602001604052805f815250611a0c565b806119eb8461297b565b6040516020016119fc929190614089565b6040516020818303038152906040525b9392505050565b611a1b611d87565b60405163ca5eb5e160e01b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063ca5eb5e1906024015f604051808303815f87803b158015611a7b575f80fd5b505af1158015611a8d573d5f803e3d5ffd5b5050505050565b333014611ab45760405163029a949d60e31b815260040160405180910390fd5b610f9b87878787878787610f8c565b611acb611d87565b600280546001600160a01b0319166001600160a01b0383169081179091556040519081527fd48d879cef83a1c0bdda516f27b13ddb1b3f8bbac1c9e1511bb2a659c2427760906020016113fa565b6001600160a01b039182165f908152600a6020908152604080832093909416825291909152205460ff1690565b611b4e611d87565b611b566123a3565b6001600160a01b038116611bba5760405162461bcd60e51b815260206004820152602560248201527f57697468647261773a2043616e6e6f742073656e6420746f207a65726f206164604482015264647265737360d81b6064820152608401610d45565b60115480611c0a5760405162461bcd60e51b815260206004820152601b60248201527f57697468647261773a204e6f206665657320617661696c61626c6500000000006044820152606401610d45565b5f60118190556040516001600160a01b0384169083908381818185875af1925050503d805f8114611c56576040519150601f19603f3d011682016040523d82523d5f602084013e611c5b565b606091505b5050905080611cac5760405162461bcd60e51b815260206004820152601d60248201527f57697468647261773a20455448207472616e73666572206661696c65640000006044820152606401610d45565b826001600160a01b03167fd116803f8b8538a601b6096e8d1196e3ce3ef43dec6dbbe4cd4e5c69dd171d8b83604051611ce791815260200190565b60405180910390a25050611cfb6001600d55565b50565b611d06611d87565b6001600160a01b038116611d2f57604051631e4fbdf760e01b81525f6004820152602401610d45565b611cfb81612519565b5f6001600160e01b031982166380ac58cd60e01b1480611d6857506001600160e01b03198216635b5e139f60e01b145b80610ce057506301ffc9a760e01b6001600160e01b0319831614610ce0565b5f546001600160a01b031633146112795760405163118cdaa760e01b8152336004820152602401610d45565b5f818152600760205260408120546001600160a01b031680610ce057604051637e27328960e01b815260048101849052602401610d45565b6112958383836001612a0a565b63ffffffff81165f9081526001602052604081205480610ce05760405163f6ff4fb760e01b815263ffffffff84166004820152602401610d45565b5f611e44611e418787612b0e565b90565b90505f611e518787612b25565b9050611e6a8282611e6560208d018d613a5b565b612b34565b6040861115611f27575f611ea3611e8760608c0160408d016140c7565b611e9460208d018d613a5b565b611e9e8b8b612b48565b612b92565b604051633e5ac80960e11b81529091506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690637cb5901290611ef89086908d905f9087906004016140e2565b5f604051808303815f87803b158015611f0f575f80fd5b505af1158015611f21573d5f803e3d5ffd5b50505050505b6001600160a01b038216887f7883fa30ea56937810e36990b0bbb8d629d0cf59f68baf8431ff657cebe7eef5611f6060208d018d613a5b565b6040805163ffffffff9092168252602082018690520160405180910390a3505050505050505050565b611f91612bc1565b611f996123a3565b6010545f9060ff16611fad57600e54611fb1565b600f545b9050803410156120125760405162461bcd60e51b815260206004820152602660248201527f4272696467653a20496e73756666696369656e7420706c6174666f726d20666560448201526519481cd95b9d60d21b6064820152608401610d45565b8060115f828254612023919061411c565b90915550506040805182815263ffffffff841660208201526001600160a01b038616917f7edb6f3580196f5e917d236d1d5016815305e8e82a0dc6abd72db13689609d4f910160405180910390a261207c848484612be5565b506112956001600d55565b60608060208301356120ac57604051631e4ec46b60e01b815260040160405180910390fd5b5f612100602085013560408601356120c76080880188613f46565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250612c4592505050565b90935090505f81612112576001612115565b60025b90506121356121276020870187613a5b565b82610b706060890189613f46565b6004549093506001600160a01b031680156121b95760405163043a78eb60e01b81526001600160a01b0382169063043a78eb90612178908890889060040161412f565b602060405180830381865afa158015612193573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121b79190614153565b505b505050915091565b6121c9613388565b5f6121d6845f0151612caa565b6020850151909150156121f0576121f08460200151612cfc565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632637a450826040518060a001604052808b63ffffffff1681526020016122408c611df8565b81526020018a81526020018981526020015f8960200151111515815250866040518463ffffffff1660e01b815260040161227b92919061416e565b60806040518083038185885af1158015612297573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906122bc9190614214565b979650505050505050565b5f828152600760205260408120546013546001600160a01b039182169116158015906122fb57506001600160a01b03811615155b801561230f57506001600160a01b03851615155b80156123245750336001600160a01b03821614155b156123985760135460405163657711f560e11b81523360048201526001600160a01b0383811660248301528781166044830152606482018790529091169063caee23ea906084015f6040518083038186803b158015612381575f80fd5b505afa158015612393573d5f803e3d5ffd5b505050505b6119a5858585612ddb565b6002600d54036123c657604051633ee5aeb560e01b815260040160405180910390fd5b6002600d55565b6001600160a01b0382166123f657604051633250574960e11b81525f6004820152602401610d45565b5f61240283835f6122c7565b90506001600160a01b03811661242e57604051637e27328960e01b815260048101839052602401610d45565b836001600160a01b0316816001600160a01b0316146110df576040516364283d7b60e01b81526001600160a01b0380861660048301526024820184905282166044820152606401610d45565b63ffffffff82165f81815260016020908152604091829020849055815192835282018390527f238399d427b947898edb290f5ff0f9109849b1c3ba196a42e35f00c50a54b98b9101610e17565b6124cf612ecd565b600c805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b612570612bc1565b600c805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586124fc3390565b6001600160a01b0382166125d757604051630b61174360e31b81526001600160a01b0383166004820152602401610d45565b6001600160a01b038381165f818152600a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b15611a8d57604051630a85bd0160e11b81526001600160a01b0384169063150b7a029061268590889088908790879060040161425c565b6020604051808303815f875af19250505080156126bf575060408051601f3d908101601f191682019092526126bc9181019061428e565b60015b612726573d8080156126ec576040519150601f19603f3d011682016040523d82523d5f602084013e6126f1565b606091505b5080515f0361271e57604051633250574960e11b81526001600160a01b0385166004820152602401610d45565b805160208201fd5b6001600160e01b03198116630a85bd0160e11b1461276257604051633250574960e11b81526001600160a01b0385166004820152602401610d45565b505050505050565b5f5b815181101561283b5761279b82828151811061278a5761278a613f13565b60200260200101516040015161286b565b8181815181106127ad576127ad613f13565b60200260200101516040015160035f8484815181106127ce576127ce613f13565b60200260200101515f015163ffffffff1663ffffffff1681526020019081526020015f205f84848151811061280557612805613f13565b60200260200101516020015161ffff1661ffff1681526020019081526020015f20908161283291906142a9565b5060010161276c565b507fbe4864a8e820971c0247f5992e2da559595f7bf076a21cb5928d443d2a13b674816040516113fa9190614364565b600281015161ffff8116600314610ee55781604051639a6d49cd60e01b8152600401610d45919061349e565b604080518082019091525f80825260208201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ddc28c586040518060a001604052808863ffffffff1681526020016128f989611df8565b8152602001878152602001868152602001851515815250306040518363ffffffff1660e01b815260040161292e92919061416e565b6040805180830381865afa158015612948573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119a591906143ed565b6060600b8054610e3290613b70565b60605f61298783612ef0565b60010190505f816001600160401b038111156129a5576129a561387c565b6040519080825280601f01601f1916602001820160405280156129cf576020820181803683370190505b5090508181016020015b5f19016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846129d957509392505050565b8080612a1e57506001600160a01b03821615155b15612adf575f612a2d84611db3565b90506001600160a01b03831615801590612a595750826001600160a01b0316816001600160a01b031614155b8015612a6c5750612a6a8184611b19565b155b15612a955760405163a9fbf51f60e01b81526001600160a01b0384166004820152602401610d45565b8115612add5783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b50505f90815260096020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b5f612b1c6020828486613e8b565b611a0c91614407565b5f612b1c604060208486613e8b565b612b3f838383612fc7565b6112958261304e565b6060612b578260408186613e8b565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250929695505050505050565b6060838383604051602001612ba993929190614424565b60405160208183030381529060405290509392505050565b600c5460ff16156112795760405163d93c066560e01b815260040160405180910390fd5b612bee82611382565b6001600160a01b0316836001600160a01b031614612c3c5782612c1083611382565b604051634342715b60e11b81526001600160a01b03928316600482015291166024820152604401610d45565b6112958261315a565b8051606090151580612c79576040805160208101879052908101859052606001604051602081830303815290604052612ca0565b84843385604051602001612c90949392919061446d565b6040516020818303038152906040525b9150935093915050565b6010545f90819060ff16612cc057600e54612cc4565b600f545b9050612cd0838261411c565b341015612cf2576040516304fb820960e51b8152346004820152602401610d45565b611a0c81346144a0565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e4fe1d946040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d59573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d7d9190613da3565b90506001600160a01b038116612da6576040516329b99a9560e11b815260040160405180910390fd5b610ee56001600160a01b038216337f000000000000000000000000000000000000000000000000000000000000000085613192565b5f828152600760205260408120546001600160a01b0390811690831615612e0757612e078184866131ec565b6001600160a01b03811615612e4157612e225f855f80612a0a565b6001600160a01b0381165f90815260086020526040902080545f190190555b6001600160a01b03851615612e6f576001600160a01b0385165f908152600860205260409020805460010190555b5f8481526007602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b600c5460ff1661127957604051638dfc202b60e01b815260040160405180910390fd5b5f8072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310612f2e5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310612f5a576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310612f7857662386f26fc10000830492506010015b6305f5e1008310612f90576305f5e100830492506008015b6127108310612fa457612710830492506004015b60648310612fb6576064830492506002015b600a8310610ce05760010192915050565b612fcf612bc1565b612fd76123a3565b6001600160a01b0383166130395760405162461bcd60e51b815260206004820152602360248201527f4272696467653a2043616e6e6f74206d696e7420746f207a65726f206164647260448201526265737360e81b6064820152608401610d45565b613044838383613250565b6112956001600d55565b604051638a54c52f60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f6024830181905246604484015230606484015260848301849052917f000000000000000000000000000000000000000000000000000000000000000090911690638a54c52f9060a4016020604051808303815f875af11580156130f1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131159190613da3565b6040516001600160a01b038216815290915082907fc4b8a8d86d64119f34964e927b7da67edd99b17cd62a7c5f1c00f27c3dfb68e89060200160405180910390a25050565b5f6131665f835f6122c7565b90506001600160a01b038116610ee557604051637e27328960e01b815260048101839052602401610d45565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b1790526110df90859061325a565b6131f78383836132c6565b611295576001600160a01b03831661322557604051637e27328960e01b815260048101829052602401610d45565b60405163177e802f60e01b81526001600160a01b038316600482015260248101829052604401610d45565b6112958383613327565b5f8060205f8451602086015f885af180613279576040513d5f823e3d81fd5b50505f513d9150811561329057806001141561329d565b6001600160a01b0384163b155b156110df57604051635274afe760e01b81526001600160a01b0385166004820152602401610d45565b5f6001600160a01b038316158015906114b05750826001600160a01b0316846001600160a01b031614806132ff57506132ff8484611b19565b806114b05750505f908152600960205260409020546001600160a01b03908116911614919050565b6001600160a01b03821661335057604051633250574960e11b81525f6004820152602401610d45565b5f61335c83835f6122c7565b90506001600160a01b03811615611295576040516339e3563760e11b81525f6004820152602401610d45565b60405180606001604052805f80191681526020015f6001600160401b031681526020016133c660405180604001604052805f81526020015f81525090565b905290565b6001600160e01b031981168114611cfb575f80fd5b5f602082840312156133f0575f80fd5b8135611a0c816133cb565b6001600160a01b0381168114611cfb575f80fd5b5f8060408385031215613420575f80fd5b823561342b816133fb565b915060208301356001600160601b0381168114613446575f80fd5b809150509250929050565b5f5b8381101561346b578181015183820152602001613453565b50505f910152565b5f815180845261348a816020860160208601613451565b601f01601f19169290920160200192915050565b602081525f611a0c6020830184613473565b5f602082840312156134c0575f80fd5b5035919050565b5f80604083850312156134d8575f80fd5b82356134e3816133fb565b946020939093013593505050565b5f60608284031215613501575f80fd5b50919050565b5f8083601f840112613517575f80fd5b5081356001600160401b0381111561352d575f80fd5b602083019150836020828501011115613544575f80fd5b9250929050565b5f805f805f805f60e0888a031215613561575f80fd5b61356b89896134f1565b96506060880135955060808801356001600160401b038082111561358d575f80fd5b6135998b838c01613507565b909750955060a08a013591506135ae826133fb565b90935060c089013590808211156135c3575f80fd5b506135d08a828b01613507565b989b979a50959850939692959293505050565b5f60c08284031215613501575f80fd5b5f805f8385036080811215613606575f80fd5b84356001600160401b0381111561361b575f80fd5b613627878288016135e3565b9450506040601f198201121561363b575f80fd5b506020840191506060840135613650816133fb565b809150509250925092565b5f608082019050825182526001600160401b0360208401511660208301526040830151613695604084018280518252602090810151910152565b5092915050565b5f805f606084860312156136ae575f80fd5b83356136b9816133fb565b925060208401356136c9816133fb565b929592945050506040919091013590565b5f80604083850312156136eb575f80fd5b50508035926020909101359150565b5f806040838503121561370b575f80fd5b823591506020830135613446816133fb565b803563ffffffff81168114613730575f80fd5b919050565b5f8060408385031215613746575f80fd5b6134e38361371d565b803561ffff81168114613730575f80fd5b5f8060408385031215613771575f80fd5b61377a8361371d565b915061111c6020840161374f565b5f8060208385031215613799575f80fd5b82356001600160401b038111156137ae575f80fd5b6137ba85828601613507565b90969095509350505050565b5f602082840312156137d6575f80fd5b8135611a0c816133fb565b5f805f8060a085870312156137f4575f80fd5b6137fe86866134f1565b935060608501356001600160401b03811115613818575f80fd5b61382487828801613507565b9094509250506080850135613838816133fb565b939692955090935050565b8015158114611cfb575f80fd5b5f8060408385031215613861575f80fd5b823561386c816133fb565b9150602083013561344681613843565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156138b2576138b261387c565b60405290565b604051606081016001600160401b03811182821017156138b2576138b261387c565b604051601f8201601f191681016001600160401b03811182821017156139025761390261387c565b604052919050565b5f6001600160401b038211156139225761392261387c565b50601f01601f191660200190565b5f82601f83011261393f575f80fd5b813561395261394d8261390a565b6138da565b818152846020838601011115613966575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f8060808587031215613995575f80fd5b84356139a0816133fb565b935060208501356139b0816133fb565b92506040850135915060608501356001600160401b038111156139d1575f80fd5b6139dd87828801613930565b91505092959194509250565b5f8083601f8401126139f9575f80fd5b5081356001600160401b03811115613a0f575f80fd5b6020830191508360208260051b8501011115613544575f80fd5b5f8060208385031215613a3a575f80fd5b82356001600160401b03811115613a4f575f80fd5b6137ba858286016139e9565b5f60208284031215613a6b575f80fd5b611a0c8261371d565b5f805f8060608587031215613a87575f80fd5b613a908561371d565b9350613a9e6020860161374f565b925060408501356001600160401b03811115613ab8575f80fd5b613ac487828801613507565b95989497509550505050565b5f8060408385031215613ae1575f80fd5b82356001600160401b03811115613af6575f80fd5b613b02858286016135e3565b925050602083013561344681613843565b815181526020808301519082015260408101610ce0565b5f8060408385031215613b3b575f80fd5b8235613b46816133fb565b91506020830135613446816133fb565b5f60608284031215613b66575f80fd5b611a0c83836134f1565b600181811c90821680613b8457607f821691505b60208210810361350157634e487b7160e01b5f52602260045260245ffd5b5f60408284031215613bb2575f80fd5b613bba613890565b82358152602083013560208201528091505092915050565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610ce057610ce0613bd2565b5f82613c1757634e487b7160e01b5f52601260045260245ffd5b500490565b601f82111561129557805f5260205f20601f840160051c81016020851015613c415750805b601f840160051c820191505b81811015611a8d575f8155600101613c4d565b6001600160401b03831115613c7757613c7761387c565b613c8b83613c858354613b70565b83613c1c565b5f601f841160018114613cbc575f8515613ca55750838201355b5f19600387901b1c1916600186901b178355611a8d565b5f83815260208120601f198716915b82811015613ceb5786850135825560209485019460019092019101613ccb565b5086821015613d07575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b5f60208083525f8454613d2b81613b70565b806020870152604060018084165f8114613d4c5760018114613d6857613d95565b60ff19851660408a0152604084151560051b8a01019550613d95565b895f5260205f205f5b85811015613d8c5781548b8201860152908301908801613d71565b8a016040019650505b509398975050505050505050565b5f60208284031215613db3575f80fd5b8151611a0c816133fb565b5f6001600160401b0380841115613dd757613dd761387c565b8360051b6020613de88183016138da565b868152918501918181019036841115613dff575f80fd5b865b84811015613e7f57803586811115613e17575f80fd5b88016060368290031215613e29575f80fd5b613e316138b8565b613e3a8261371d565b8152613e4786830161374f565b8682015260408083013589811115613e5d575f80fd5b613e6936828601613930565b9183019190915250845250918301918301613e01565b50979650505050505050565b5f8085851115613e99575f80fd5b83861115613ea5575f80fd5b5050820193919092039150565b5f8451613ec3818460208901613451565b8201838582375f930192835250909392505050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b602081525f6114b0602083018486613ed8565b634e487b7160e01b5f52603260045260245ffd5b5f823561013e19833603018112613f3c575f80fd5b9190910192915050565b5f808335601e19843603018112613f5b575f80fd5b8301803591506001600160401b03821115613f74575f80fd5b602001915036819003821315613544575f80fd5b6001600160401b0381168114611cfb575f80fd5b63ffffffff613faa8961371d565b168152602088013560208201525f6040890135613fc681613f88565b6001600160401b03811660408401525087606083015260e06080830152613ff160e083018789613ed8565b6001600160a01b03861660a084015282810360c0840152614013818587613ed8565b9a9950505050505050505050565b5f60208284031215614031575f80fd5b81516001600160401b03811115614046575f80fd5b8201601f81018413614056575f80fd5b805161406461394d8261390a565b818152856020838501011115614078575f80fd5b6119a5826020830160208601613451565b5f835161409a818460208801613451565b8351908301906140ae818360208801613451565b64173539b7b760d91b9101908152600501949350505050565b5f602082840312156140d7575f80fd5b8135611a0c81613f88565b60018060a01b038516815283602082015261ffff83166040820152608060608201525f6141126080830184613473565b9695505050505050565b80820180821115610ce057610ce0613bd2565b604081525f6141416040830185613473565b82810360208401526119a58185613473565b5f60208284031215614163575f80fd5b8151611a0c81613843565b6040815263ffffffff8351166040820152602083015160608201525f604084015160a060808401526141a360e0840182613473565b90506060850151603f198483030160a08501526141c08282613473565b60809690960151151560c08501525050506001600160a01b039190911660209091015290565b5f604082840312156141f6575f80fd5b6141fe613890565b9050815181526020820151602082015292915050565b5f60808284031215614224575f80fd5b61422c6138b8565b82518152602083015161423e81613f88565b602082015261425084604085016141e6565b60408201529392505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f9061411290830184613473565b5f6020828403121561429e575f80fd5b8151611a0c816133cb565b81516001600160401b038111156142c2576142c261387c565b6142d6816142d08454613b70565b84613c1c565b602080601f831160018114614309575f84156142f25750858301515b5f19600386901b1c1916600185901b178555612762565b5f85815260208120601f198616915b8281101561433757888601518255948401946001909101908401614318565b508582101561435457878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f60208083018184528085518083526040925060408601915060408160051b8701018488015f5b838110156143df57888303603f190185528151805163ffffffff1684528781015161ffff168885015286015160608785018190526143cb81860183613473565b96890196945050509086019060010161438b565b509098975050505050505050565b5f604082840312156143fd575f80fd5b611a0c83836141e6565b80356020831015610ce0575f19602084900360031b1b1692915050565b60c084901b6001600160c01b031916815260e083901b6001600160e01b031916600882015281515f9061445e81600c850160208701613451565b91909101600c01949350505050565b8481528360208201528260408201525f8251614490816060850160208701613451565b9190910160600195945050505050565b81810381811115610ce057610ce0613bd256fea26469706673582212203c57d472fc779f356d64f7e6092a1a1ba36fce1e130d07f1f995523e1936875764736f6c63430008180033000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001400000000000000000000000006f475642a6e85809b1c36fa62763669b1b48dd5b0000000000000000000000005418b7b0438b06d5681b3357695eb249219011640000000000000000000000005418b7b0438b06d5681b3357695eb24921901164000000000000000000000000a000027a9b2802e1ddf7000061001e5c005a0000000000000000000000000000000000006551c19487814612e58fe068137757580000000000000000000000007913e88718669f92d91fdd6a6a4413aceff5d65b00000000000000000000000000000000000000000000000000000000000000184c696c204d7574616e7473204f6e20526f62696e686f6f64000000000000000000000000000000000000000000000000000000000000000000000000000000044c4d4f5200000000000000000000000000000000000000000000000000000000
0x6080604052600436106103f8575f3560e01c8063715018a61161020a578063b21a33e41161011e578063c87b56dd116100a8578063e985e9c511610078578063e985e9c514610c24578063ec3889b514610c43578063f2fde38b14610c62578063fc0c546a14610718578063ff7bd03d14610c81575f80fd5b8063c87b56dd14610bb4578063ca5eb5e114610bd3578063d045a0dc14610bf2578063d424388514610c05575f80fd5b8063b98bd070116100ee578063b98bd07014610b0c578063bb0b6a5314610b2b578063bc70b35414610b56578063bd815db014610b75578063c6414e7b14610b88575f80fd5b8063b21a33e414610aa1578063b37322d114610ab5578063b731ea0a14610ace578063b88d4fde14610aed575f80fd5b806395d89b411161019f578063a22cb4651161016f578063a22cb46514610a09578063a72f5dd814610a28578063a9fc664e14610a4f578063abb23f5b14610a6e578063b187bd2614610a8d575f80fd5b806395d89b41146109a657806397e67c3b146109ba5780639f68b964146109d15780639fbc8713146109e3575f80fd5b806382413eac116101da57806382413eac146109245780638456cb59146109435780638da5cb5b14610957578063918372de14610973575f80fd5b8063715018a61461088157806372b49161146108955780637d25a05e146108b457806381ddcc1f146108ed575f80fd5b80632a55205a1161030c578063587f5ed7116102965780635e280f11116102665780635e280f11146107dd5780636352211e146108105780636ea8bc101461082f5780636fc1b31e1461084357806370a0823114610862575f80fd5b8063587f5ed7146107685780635a0dfe4d1461077d5780635c975abb146107b25780635df45a37146107c9575f80fd5b806342842e0e116102dc57806342842e0e146106e457806346dedcc51461070357806352ae2879146107185780635535d4611461072a57806355f804b314610749575f80fd5b80632a55205a146106545780632f940c70146106925780633400288b146106b15780633f4ba83a146106d0575f80fd5b80630e3896591161038d5780631d57bc621161035d5780631d57bc62146105bc5780631f5e1334146105cf57806321eb730b146105f657806323b872dd1461061657806329e38d5e14610635575f80fd5b80630e38965914610546578063111ecdad1461056957806313137d651461058857806317442b701461059b575f80fd5b8063081812fc116103c8578063081812fc146104c4578063095ea7b3146104e3578063098144d4146105025780630d705df61461051f575f80fd5b806301ffc9a71461040357806302fa7c4714610437578063056d5afe1461045857806306fdde03146104a3575f80fd5b366103ff57005b5f80fd5b34801561040e575f80fd5b5061042261041d3660046133e0565b610ca1565b60405190151581526020015b60405180910390f35b348015610442575f80fd5b5061045661045136600461340f565b610ce6565b005b348015610463575f80fd5b5061048b7f000000000000000000000000000000006551c19487814612e58fe0681377575881565b6040516001600160a01b03909116815260200161042e565b3480156104ae575f80fd5b506104b7610e23565b60405161042e919061349e565b3480156104cf575f80fd5b5061048b6104de3660046134b0565b610eb3565b3480156104ee575f80fd5b506104566104fd3660046134c7565b610eda565b34801561050d575f80fd5b506013546001600160a01b031661048b565b34801561052a575f80fd5b506040805163657711f560e11b8152600160208201520161042e565b348015610551575f80fd5b5061055b600e5481565b60405190815260200161042e565b348015610574575f80fd5b5060045461048b906001600160a01b031681565b61045661059636600461354b565b610ee9565b3480156105a6575f80fd5b506040805160018152600260208201520161042e565b3480156105c7575f80fd5b5061055b5f81565b3480156105da575f80fd5b506105e3600181565b60405161ffff909116815260200161042e565b6106096106043660046135f3565b610fa4565b60405161042e919061365b565b348015610621575f80fd5b5061045661063036600461369c565b61105c565b348015610640575f80fd5b5060135461048b906001600160a01b031681565b34801561065f575f80fd5b5061067361066e3660046136da565b6110e5565b604080516001600160a01b03909316835260208301919091520161042e565b34801561069d575f80fd5b506104566106ac3660046136fa565b611125565b3480156106bc575f80fd5b506104566106cb366004613735565b611257565b3480156106db575f80fd5b50610456611269565b3480156106ef575f80fd5b506104566106fe36600461369c565b61127b565b34801561070e575f80fd5b5061055b600f5481565b348015610723575f80fd5b503061048b565b348015610735575f80fd5b506104b7610744366004613760565b61129a565b348015610754575f80fd5b50610456610763366004613788565b61133c565b348015610773575f80fd5b5061055b60115481565b348015610788575f80fd5b50610422610797366004613735565b63ffffffff919091165f908152600160205260409020541490565b3480156107bd575f80fd5b50600c5460ff16610422565b3480156107d4575f80fd5b5060115461055b565b3480156107e8575f80fd5b5061048b7f0000000000000000000000006f475642a6e85809b1c36fa62763669b1b48dd5b81565b34801561081b575f80fd5b5061048b61082a3660046134b0565b611382565b34801561083a575f80fd5b5061055b61138c565b34801561084e575f80fd5b5061045661085d3660046137c6565b6113a8565b34801561086d575f80fd5b5061055b61087c3660046137c6565b611405565b34801561088c575f80fd5b5061045661144a565b3480156108a0575f80fd5b506104566108af3660046136da565b61145b565b3480156108bf575f80fd5b506108d56108ce366004613735565b5f92915050565b6040516001600160401b03909116815260200161042e565b3480156108f8575f80fd5b5060125461090c906001600160601b031681565b6040516001600160601b03909116815260200161042e565b34801561092f575f80fd5b5061042261093e3660046137e1565b6114a3565b34801561094e575f80fd5b506104566114b8565b348015610962575f80fd5b505f546001600160a01b031661048b565b34801561097e575f80fd5b5061048b7f0000000000000000000000007913e88718669f92d91fdd6a6a4413aceff5d65b81565b3480156109b1575f80fd5b506104b76114c8565b3480156109c5575f80fd5b5060105460ff16610422565b3480156109dc575f80fd5b505f610422565b3480156109ee575f80fd5b5060125461048b90600160601b90046001600160a01b031681565b348015610a14575f80fd5b50610456610a23366004613850565b6114d7565b348015610a33575f80fd5b50604080516311f0c6d360e11b8152600160208201520161042e565b348015610a5a575f80fd5b50610456610a693660046137c6565b6114e2565b348015610a79575f80fd5b5061048b610a883660046134b0565b611544565b348015610a98575f80fd5b5061042261160a565b348015610aac575f80fd5b506105e3600281565b348015610ac0575f80fd5b506010546104229060ff1681565b348015610ad9575f80fd5b5060025461048b906001600160a01b031681565b348015610af8575f80fd5b50610456610b07366004613982565b611617565b348015610b17575f80fd5b50610456610b26366004613a29565b61162f565b348015610b36575f80fd5b5061055b610b45366004613a5b565b60016020525f908152604090205481565b348015610b61575f80fd5b506104b7610b70366004613a74565b611649565b610456610b83366004613a29565b6117ea565b348015610b93575f80fd5b50610ba7610ba2366004613ad0565b61196a565b60405161042e9190613b13565b348015610bbf575f80fd5b506104b7610bce3660046134b0565b6119ae565b348015610bde575f80fd5b50610456610bed3660046137c6565b611a13565b610456610c0036600461354b565b611a94565b348015610c10575f80fd5b50610456610c1f3660046137c6565b611ac3565b348015610c2f575f80fd5b50610422610c3e366004613b2a565b611b19565b348015610c4e575f80fd5b50610456610c5d3660046137c6565b611b46565b348015610c6d575f80fd5b50610456610c7c3660046137c6565b611cfe565b348015610c8c575f80fd5b50610422610c9b366004613b56565b50600190565b5f6001600160e01b0319821663152a902d60e11b1480610cd157506001600160e01b03198216632b435fdb60e21b145b80610ce05750610ce082611d38565b92915050565b610cee611d87565b612710816001600160601b03161115610d4e5760405162461bcd60e51b815260206004820152601f60248201527f526f79616c74793a204665652063616e6e6f742065786365656420313030250060448201526064015b60405180910390fd5b6001600160a01b038216610db55760405162461bcd60e51b815260206004820152602860248201527f526f79616c74793a2052656365697665722063616e6e6f74206265207a65726f604482015267206164647265737360c01b6064820152608401610d45565b6001600160601b0381166001600160a01b038316600160601b81026bffffffffffffffffffffffff191682176012556040805191825260208201929092527fae1d656a1268648b04ffa79c1416f05879338ae295aae3234d8db217356a1c6291015b60405180910390a15050565b606060058054610e3290613b70565b80601f0160208091040260200160405190810160405280929190818152602001828054610e5e90613b70565b8015610ea95780601f10610e8057610100808354040283529160200191610ea9565b820191905f5260205f20905b815481529060010190602001808311610e8c57829003601f168201915b5050505050905090565b5f610ebd82611db3565b505f828152600960205260409020546001600160a01b0316610ce0565b610ee5828233611deb565b5050565b7f0000000000000000000000006f475642a6e85809b1c36fa62763669b1b48dd5b6001600160a01b03163314610f34576040516391ac5e4f60e01b8152336004820152602401610d45565b60208701803590610f4e90610f49908a613a5b565b611df8565b14610f8c57610f606020880188613a5b565b60405163309afaf360e21b815263ffffffff909116600482015260208801356024820152604401610d45565b610f9b87878787878787611e33565b50505050505050565b610fac613388565b610fc7336040860135610fc26020880188613a5b565b611f89565b5f80610fd286612087565b9092509050610ffe610fe76020880188613a5b565b8383610ff8368a90038a018a613ba2565b886121c1565b805190935033907f986156872b2ee0022b9585231dbbfde457f87f8a16b6c45e1a81c54c4ad8351f61103360208a018a613a5b565b6040805163ffffffff9092168252808b013560208301520160405180910390a350509392505050565b6001600160a01b03821661108557604051633250574960e11b81525f6004820152602401610d45565b5f6110918383336122c7565b9050836001600160a01b0316816001600160a01b0316146110df576040516364283d7b60e01b81526001600160a01b0380861660048301526024820184905282166044820152606401610d45565b50505050565b6012546001600160a01b03600160601b820416905f9061271090611112906001600160601b031685613be6565b61111c9190613bfd565b90509250929050565b61112d611d87565b6111356123a3565b6001600160a01b03811661119a5760405162461bcd60e51b815260206004820152602660248201527f456d657267656e63793a2043616e6e6f742073656e6420746f207a65726f206160448201526564647265737360d01b6064820152608401610d45565b5f828152600760205260409020546001600160a01b0316301461120d5760405162461bcd60e51b815260206004820152602560248201527f456d657267656e63793a20546f6b656e206e6f742068656c6420627920636f6e6044820152641d1c9858dd60da1b6064820152608401610d45565b6112183082846123cd565b60405182906001600160a01b038316907f5fafa99d0643513820be26656b45130b01e1c03062e1266bf36f88cbd3bd9695905f90a3610ee56001600d55565b61125f611d87565b610ee5828261247a565b611271611d87565b6112796124c7565b565b61129583838360405180602001604052805f815250611617565b505050565b600360209081525f9283526040808420909152908252902080546112bd90613b70565b80601f01602080910402602001604051908101604052809291908181526020018280546112e990613b70565b80156113345780601f1061130b57610100808354040283529160200191611334565b820191905f5260205f20905b81548152906001019060200180831161131757829003601f168201915b505050505081565b611344611d87565b600b611351828483613c60565b507ff9c7803e94e0d3c02900d8a90893a6d5e90dd04d32a4cfe825520f82bf9f32f6600b604051610e179190613d19565b5f610ce082611db3565b6010545f9060ff1661139f5750600e5490565b600f545b905090565b6113b0611d87565b600480546001600160a01b0319166001600160a01b0383169081179091556040519081527ff0be4f1e87349231d80c36b33f9e8639658eeaf474014dee15a3e6a4d4414197906020015b60405180910390a150565b5f6001600160a01b03821661142f576040516322718ad960e21b81525f6004820152602401610d45565b506001600160a01b03165f9081526008602052604090205490565b611452611d87565b6112795f612519565b611463611d87565b600e829055600f81905560408051838152602081018390527fd347e206f25a89b917fc9482f1a2d294d749baa4dc9bde7fb495ee11fe4916439101610e17565b6001600160a01b03811630145b949350505050565b6114c0611d87565b611279612568565b606060068054610e3290613b70565b610ee53383836125a5565b6114ea611d87565b601380546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527fcc5dc080ff977b3c3a211fa63ab74f90f658f5ba9d3236e92c8f59570f442aac9101610e17565b60405163246a002160e01b81526001600160a01b037f0000000000000000000000007913e88718669f92d91fdd6a6a4413aceff5d65b811660048301525f6024830181905246604484015230606484015260848301849052917f000000000000000000000000000000006551c19487814612e58fe068137757589091169063246a00219060a401602060405180830381865afa1580156115e6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ce09190613da3565b5f6113a3600c5460ff1690565b61162284848461105c565b6110df3385858585612643565b611637611d87565b610ee56116448284613dbe565b61276a565b63ffffffff84165f90815260036020908152604080832061ffff8716845290915281208054606092919061167c90613b70565b80601f01602080910402602001604051908101604052809291908181526020018280546116a890613b70565b80156116f35780601f106116ca576101008083540402835291602001916116f3565b820191905f5260205f20905b8154815290600101906020018083116116d657829003601f168201915b5050505050905080515f036117415783838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152509294506114b09350505050565b5f8390036117505790506114b0565b600283106117cd5761179684848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061286b92505050565b806117a48460028188613e8b565b6040516020016117b693929190613eb2565b6040516020818303038152906040529150506114b0565b8383604051639a6d49cd60e01b8152600401610d45929190613f00565b5f5b818110156118ed573683838381811061180757611807613f13565b90506020028101906118199190613f27565b905061184b61182b6020830183613a5b565b602083013563ffffffff919091165f908152600160205260409020541490565b61185557506118e5565b3063d045a0dc60c08301358360a0810135611874610100830183613f46565b611885610100890160e08a016137c6565b6118936101208a018a613f46565b6040518963ffffffff1660e01b81526004016118b59796959493929190613f9c565b5f604051808303818588803b1580156118cc575f80fd5b505af11580156118de573d5f803e3d5ffd5b5050505050505b6001016117ec565b50336001600160a01b0316638e9e70996040518163ffffffff1660e01b81526004015f60405180830381865afa158015611929573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526119509190810190614021565b604051638351eea760e01b8152600401610d45919061349e565b604080518082019091525f80825260208201525f8061198885612087565b90925090506119a561199d6020870187613a5b565b838387612897565b95945050505050565b60606119b982611db3565b505f6119c361296c565b90505f8151116119e15760405180602001604052805f815250611a0c565b806119eb8461297b565b6040516020016119fc929190614089565b6040516020818303038152906040525b9392505050565b611a1b611d87565b60405163ca5eb5e160e01b81526001600160a01b0382811660048301527f0000000000000000000000006f475642a6e85809b1c36fa62763669b1b48dd5b169063ca5eb5e1906024015f604051808303815f87803b158015611a7b575f80fd5b505af1158015611a8d573d5f803e3d5ffd5b5050505050565b333014611ab45760405163029a949d60e31b815260040160405180910390fd5b610f9b87878787878787610f8c565b611acb611d87565b600280546001600160a01b0319166001600160a01b0383169081179091556040519081527fd48d879cef83a1c0bdda516f27b13ddb1b3f8bbac1c9e1511bb2a659c2427760906020016113fa565b6001600160a01b039182165f908152600a6020908152604080832093909416825291909152205460ff1690565b611b4e611d87565b611b566123a3565b6001600160a01b038116611bba5760405162461bcd60e51b815260206004820152602560248201527f57697468647261773a2043616e6e6f742073656e6420746f207a65726f206164604482015264647265737360d81b6064820152608401610d45565b60115480611c0a5760405162461bcd60e51b815260206004820152601b60248201527f57697468647261773a204e6f206665657320617661696c61626c6500000000006044820152606401610d45565b5f60118190556040516001600160a01b0384169083908381818185875af1925050503d805f8114611c56576040519150601f19603f3d011682016040523d82523d5f602084013e611c5b565b606091505b5050905080611cac5760405162461bcd60e51b815260206004820152601d60248201527f57697468647261773a20455448207472616e73666572206661696c65640000006044820152606401610d45565b826001600160a01b03167fd116803f8b8538a601b6096e8d1196e3ce3ef43dec6dbbe4cd4e5c69dd171d8b83604051611ce791815260200190565b60405180910390a25050611cfb6001600d55565b50565b611d06611d87565b6001600160a01b038116611d2f57604051631e4fbdf760e01b81525f6004820152602401610d45565b611cfb81612519565b5f6001600160e01b031982166380ac58cd60e01b1480611d6857506001600160e01b03198216635b5e139f60e01b145b80610ce057506301ffc9a760e01b6001600160e01b0319831614610ce0565b5f546001600160a01b031633146112795760405163118cdaa760e01b8152336004820152602401610d45565b5f818152600760205260408120546001600160a01b031680610ce057604051637e27328960e01b815260048101849052602401610d45565b6112958383836001612a0a565b63ffffffff81165f9081526001602052604081205480610ce05760405163f6ff4fb760e01b815263ffffffff84166004820152602401610d45565b5f611e44611e418787612b0e565b90565b90505f611e518787612b25565b9050611e6a8282611e6560208d018d613a5b565b612b34565b6040861115611f27575f611ea3611e8760608c0160408d016140c7565b611e9460208d018d613a5b565b611e9e8b8b612b48565b612b92565b604051633e5ac80960e11b81529091506001600160a01b037f0000000000000000000000006f475642a6e85809b1c36fa62763669b1b48dd5b1690637cb5901290611ef89086908d905f9087906004016140e2565b5f604051808303815f87803b158015611f0f575f80fd5b505af1158015611f21573d5f803e3d5ffd5b50505050505b6001600160a01b038216887f7883fa30ea56937810e36990b0bbb8d629d0cf59f68baf8431ff657cebe7eef5611f6060208d018d613a5b565b6040805163ffffffff9092168252602082018690520160405180910390a3505050505050505050565b611f91612bc1565b611f996123a3565b6010545f9060ff16611fad57600e54611fb1565b600f545b9050803410156120125760405162461bcd60e51b815260206004820152602660248201527f4272696467653a20496e73756666696369656e7420706c6174666f726d20666560448201526519481cd95b9d60d21b6064820152608401610d45565b8060115f828254612023919061411c565b90915550506040805182815263ffffffff841660208201526001600160a01b038616917f7edb6f3580196f5e917d236d1d5016815305e8e82a0dc6abd72db13689609d4f910160405180910390a261207c848484612be5565b506112956001600d55565b60608060208301356120ac57604051631e4ec46b60e01b815260040160405180910390fd5b5f612100602085013560408601356120c76080880188613f46565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250612c4592505050565b90935090505f81612112576001612115565b60025b90506121356121276020870187613a5b565b82610b706060890189613f46565b6004549093506001600160a01b031680156121b95760405163043a78eb60e01b81526001600160a01b0382169063043a78eb90612178908890889060040161412f565b602060405180830381865afa158015612193573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121b79190614153565b505b505050915091565b6121c9613388565b5f6121d6845f0151612caa565b6020850151909150156121f0576121f08460200151612cfc565b7f0000000000000000000000006f475642a6e85809b1c36fa62763669b1b48dd5b6001600160a01b0316632637a450826040518060a001604052808b63ffffffff1681526020016122408c611df8565b81526020018a81526020018981526020015f8960200151111515815250866040518463ffffffff1660e01b815260040161227b92919061416e565b60806040518083038185885af1158015612297573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906122bc9190614214565b979650505050505050565b5f828152600760205260408120546013546001600160a01b039182169116158015906122fb57506001600160a01b03811615155b801561230f57506001600160a01b03851615155b80156123245750336001600160a01b03821614155b156123985760135460405163657711f560e11b81523360048201526001600160a01b0383811660248301528781166044830152606482018790529091169063caee23ea906084015f6040518083038186803b158015612381575f80fd5b505afa158015612393573d5f803e3d5ffd5b505050505b6119a5858585612ddb565b6002600d54036123c657604051633ee5aeb560e01b815260040160405180910390fd5b6002600d55565b6001600160a01b0382166123f657604051633250574960e11b81525f6004820152602401610d45565b5f61240283835f6122c7565b90506001600160a01b03811661242e57604051637e27328960e01b815260048101839052602401610d45565b836001600160a01b0316816001600160a01b0316146110df576040516364283d7b60e01b81526001600160a01b0380861660048301526024820184905282166044820152606401610d45565b63ffffffff82165f81815260016020908152604091829020849055815192835282018390527f238399d427b947898edb290f5ff0f9109849b1c3ba196a42e35f00c50a54b98b9101610e17565b6124cf612ecd565b600c805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b612570612bc1565b600c805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586124fc3390565b6001600160a01b0382166125d757604051630b61174360e31b81526001600160a01b0383166004820152602401610d45565b6001600160a01b038381165f818152600a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b15611a8d57604051630a85bd0160e11b81526001600160a01b0384169063150b7a029061268590889088908790879060040161425c565b6020604051808303815f875af19250505080156126bf575060408051601f3d908101601f191682019092526126bc9181019061428e565b60015b612726573d8080156126ec576040519150601f19603f3d011682016040523d82523d5f602084013e6126f1565b606091505b5080515f0361271e57604051633250574960e11b81526001600160a01b0385166004820152602401610d45565b805160208201fd5b6001600160e01b03198116630a85bd0160e11b1461276257604051633250574960e11b81526001600160a01b0385166004820152602401610d45565b505050505050565b5f5b815181101561283b5761279b82828151811061278a5761278a613f13565b60200260200101516040015161286b565b8181815181106127ad576127ad613f13565b60200260200101516040015160035f8484815181106127ce576127ce613f13565b60200260200101515f015163ffffffff1663ffffffff1681526020019081526020015f205f84848151811061280557612805613f13565b60200260200101516020015161ffff1661ffff1681526020019081526020015f20908161283291906142a9565b5060010161276c565b507fbe4864a8e820971c0247f5992e2da559595f7bf076a21cb5928d443d2a13b674816040516113fa9190614364565b600281015161ffff8116600314610ee55781604051639a6d49cd60e01b8152600401610d45919061349e565b604080518082019091525f80825260208201527f0000000000000000000000006f475642a6e85809b1c36fa62763669b1b48dd5b6001600160a01b031663ddc28c586040518060a001604052808863ffffffff1681526020016128f989611df8565b8152602001878152602001868152602001851515815250306040518363ffffffff1660e01b815260040161292e92919061416e565b6040805180830381865afa158015612948573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119a591906143ed565b6060600b8054610e3290613b70565b60605f61298783612ef0565b60010190505f816001600160401b038111156129a5576129a561387c565b6040519080825280601f01601f1916602001820160405280156129cf576020820181803683370190505b5090508181016020015b5f19016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846129d957509392505050565b8080612a1e57506001600160a01b03821615155b15612adf575f612a2d84611db3565b90506001600160a01b03831615801590612a595750826001600160a01b0316816001600160a01b031614155b8015612a6c5750612a6a8184611b19565b155b15612a955760405163a9fbf51f60e01b81526001600160a01b0384166004820152602401610d45565b8115612add5783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b50505f90815260096020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b5f612b1c6020828486613e8b565b611a0c91614407565b5f612b1c604060208486613e8b565b612b3f838383612fc7565b6112958261304e565b6060612b578260408186613e8b565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250929695505050505050565b6060838383604051602001612ba993929190614424565b60405160208183030381529060405290509392505050565b600c5460ff16156112795760405163d93c066560e01b815260040160405180910390fd5b612bee82611382565b6001600160a01b0316836001600160a01b031614612c3c5782612c1083611382565b604051634342715b60e11b81526001600160a01b03928316600482015291166024820152604401610d45565b6112958261315a565b8051606090151580612c79576040805160208101879052908101859052606001604051602081830303815290604052612ca0565b84843385604051602001612c90949392919061446d565b6040516020818303038152906040525b9150935093915050565b6010545f90819060ff16612cc057600e54612cc4565b600f545b9050612cd0838261411c565b341015612cf2576040516304fb820960e51b8152346004820152602401610d45565b611a0c81346144a0565b5f7f0000000000000000000000006f475642a6e85809b1c36fa62763669b1b48dd5b6001600160a01b031663e4fe1d946040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d59573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d7d9190613da3565b90506001600160a01b038116612da6576040516329b99a9560e11b815260040160405180910390fd5b610ee56001600160a01b038216337f0000000000000000000000006f475642a6e85809b1c36fa62763669b1b48dd5b85613192565b5f828152600760205260408120546001600160a01b0390811690831615612e0757612e078184866131ec565b6001600160a01b03811615612e4157612e225f855f80612a0a565b6001600160a01b0381165f90815260086020526040902080545f190190555b6001600160a01b03851615612e6f576001600160a01b0385165f908152600860205260409020805460010190555b5f8481526007602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b600c5460ff1661127957604051638dfc202b60e01b815260040160405180910390fd5b5f8072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310612f2e5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310612f5a576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310612f7857662386f26fc10000830492506010015b6305f5e1008310612f90576305f5e100830492506008015b6127108310612fa457612710830492506004015b60648310612fb6576064830492506002015b600a8310610ce05760010192915050565b612fcf612bc1565b612fd76123a3565b6001600160a01b0383166130395760405162461bcd60e51b815260206004820152602360248201527f4272696467653a2043616e6e6f74206d696e7420746f207a65726f206164647260448201526265737360e81b6064820152608401610d45565b613044838383613250565b6112956001600d55565b604051638a54c52f60e01b81526001600160a01b037f0000000000000000000000007913e88718669f92d91fdd6a6a4413aceff5d65b811660048301525f6024830181905246604484015230606484015260848301849052917f000000000000000000000000000000006551c19487814612e58fe0681377575890911690638a54c52f9060a4016020604051808303815f875af11580156130f1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131159190613da3565b6040516001600160a01b038216815290915082907fc4b8a8d86d64119f34964e927b7da67edd99b17cd62a7c5f1c00f27c3dfb68e89060200160405180910390a25050565b5f6131665f835f6122c7565b90506001600160a01b038116610ee557604051637e27328960e01b815260048101839052602401610d45565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b1790526110df90859061325a565b6131f78383836132c6565b611295576001600160a01b03831661322557604051637e27328960e01b815260048101829052602401610d45565b60405163177e802f60e01b81526001600160a01b038316600482015260248101829052604401610d45565b6112958383613327565b5f8060205f8451602086015f885af180613279576040513d5f823e3d81fd5b50505f513d9150811561329057806001141561329d565b6001600160a01b0384163b155b156110df57604051635274afe760e01b81526001600160a01b0385166004820152602401610d45565b5f6001600160a01b038316158015906114b05750826001600160a01b0316846001600160a01b031614806132ff57506132ff8484611b19565b806114b05750505f908152600960205260409020546001600160a01b03908116911614919050565b6001600160a01b03821661335057604051633250574960e11b81525f6004820152602401610d45565b5f61335c83835f6122c7565b90506001600160a01b03811615611295576040516339e3563760e11b81525f6004820152602401610d45565b60405180606001604052805f80191681526020015f6001600160401b031681526020016133c660405180604001604052805f81526020015f81525090565b905290565b6001600160e01b031981168114611cfb575f80fd5b5f602082840312156133f0575f80fd5b8135611a0c816133cb565b6001600160a01b0381168114611cfb575f80fd5b5f8060408385031215613420575f80fd5b823561342b816133fb565b915060208301356001600160601b0381168114613446575f80fd5b809150509250929050565b5f5b8381101561346b578181015183820152602001613453565b50505f910152565b5f815180845261348a816020860160208601613451565b601f01601f19169290920160200192915050565b602081525f611a0c6020830184613473565b5f602082840312156134c0575f80fd5b5035919050565b5f80604083850312156134d8575f80fd5b82356134e3816133fb565b946020939093013593505050565b5f60608284031215613501575f80fd5b50919050565b5f8083601f840112613517575f80fd5b5081356001600160401b0381111561352d575f80fd5b602083019150836020828501011115613544575f80fd5b9250929050565b5f805f805f805f60e0888a031215613561575f80fd5b61356b89896134f1565b96506060880135955060808801356001600160401b038082111561358d575f80fd5b6135998b838c01613507565b909750955060a08a013591506135ae826133fb565b90935060c089013590808211156135c3575f80fd5b506135d08a828b01613507565b989b979a50959850939692959293505050565b5f60c08284031215613501575f80fd5b5f805f8385036080811215613606575f80fd5b84356001600160401b0381111561361b575f80fd5b613627878288016135e3565b9450506040601f198201121561363b575f80fd5b506020840191506060840135613650816133fb565b809150509250925092565b5f608082019050825182526001600160401b0360208401511660208301526040830151613695604084018280518252602090810151910152565b5092915050565b5f805f606084860312156136ae575f80fd5b83356136b9816133fb565b925060208401356136c9816133fb565b929592945050506040919091013590565b5f80604083850312156136eb575f80fd5b50508035926020909101359150565b5f806040838503121561370b575f80fd5b823591506020830135613446816133fb565b803563ffffffff81168114613730575f80fd5b919050565b5f8060408385031215613746575f80fd5b6134e38361371d565b803561ffff81168114613730575f80fd5b5f8060408385031215613771575f80fd5b61377a8361371d565b915061111c6020840161374f565b5f8060208385031215613799575f80fd5b82356001600160401b038111156137ae575f80fd5b6137ba85828601613507565b90969095509350505050565b5f602082840312156137d6575f80fd5b8135611a0c816133fb565b5f805f8060a085870312156137f4575f80fd5b6137fe86866134f1565b935060608501356001600160401b03811115613818575f80fd5b61382487828801613507565b9094509250506080850135613838816133fb565b939692955090935050565b8015158114611cfb575f80fd5b5f8060408385031215613861575f80fd5b823561386c816133fb565b9150602083013561344681613843565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156138b2576138b261387c565b60405290565b604051606081016001600160401b03811182821017156138b2576138b261387c565b604051601f8201601f191681016001600160401b03811182821017156139025761390261387c565b604052919050565b5f6001600160401b038211156139225761392261387c565b50601f01601f191660200190565b5f82601f83011261393f575f80fd5b813561395261394d8261390a565b6138da565b818152846020838601011115613966575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f8060808587031215613995575f80fd5b84356139a0816133fb565b935060208501356139b0816133fb565b92506040850135915060608501356001600160401b038111156139d1575f80fd5b6139dd87828801613930565b91505092959194509250565b5f8083601f8401126139f9575f80fd5b5081356001600160401b03811115613a0f575f80fd5b6020830191508360208260051b8501011115613544575f80fd5b5f8060208385031215613a3a575f80fd5b82356001600160401b03811115613a4f575f80fd5b6137ba858286016139e9565b5f60208284031215613a6b575f80fd5b611a0c8261371d565b5f805f8060608587031215613a87575f80fd5b613a908561371d565b9350613a9e6020860161374f565b925060408501356001600160401b03811115613ab8575f80fd5b613ac487828801613507565b95989497509550505050565b5f8060408385031215613ae1575f80fd5b82356001600160401b03811115613af6575f80fd5b613b02858286016135e3565b925050602083013561344681613843565b815181526020808301519082015260408101610ce0565b5f8060408385031215613b3b575f80fd5b8235613b46816133fb565b91506020830135613446816133fb565b5f60608284031215613b66575f80fd5b611a0c83836134f1565b600181811c90821680613b8457607f821691505b60208210810361350157634e487b7160e01b5f52602260045260245ffd5b5f60408284031215613bb2575f80fd5b613bba613890565b82358152602083013560208201528091505092915050565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610ce057610ce0613bd2565b5f82613c1757634e487b7160e01b5f52601260045260245ffd5b500490565b601f82111561129557805f5260205f20601f840160051c81016020851015613c415750805b601f840160051c820191505b81811015611a8d575f8155600101613c4d565b6001600160401b03831115613c7757613c7761387c565b613c8b83613c858354613b70565b83613c1c565b5f601f841160018114613cbc575f8515613ca55750838201355b5f19600387901b1c1916600186901b178355611a8d565b5f83815260208120601f198716915b82811015613ceb5786850135825560209485019460019092019101613ccb565b5086821015613d07575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b5f60208083525f8454613d2b81613b70565b806020870152604060018084165f8114613d4c5760018114613d6857613d95565b60ff19851660408a0152604084151560051b8a01019550613d95565b895f5260205f205f5b85811015613d8c5781548b8201860152908301908801613d71565b8a016040019650505b509398975050505050505050565b5f60208284031215613db3575f80fd5b8151611a0c816133fb565b5f6001600160401b0380841115613dd757613dd761387c565b8360051b6020613de88183016138da565b868152918501918181019036841115613dff575f80fd5b865b84811015613e7f57803586811115613e17575f80fd5b88016060368290031215613e29575f80fd5b613e316138b8565b613e3a8261371d565b8152613e4786830161374f565b8682015260408083013589811115613e5d575f80fd5b613e6936828601613930565b9183019190915250845250918301918301613e01565b50979650505050505050565b5f8085851115613e99575f80fd5b83861115613ea5575f80fd5b5050820193919092039150565b5f8451613ec3818460208901613451565b8201838582375f930192835250909392505050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b602081525f6114b0602083018486613ed8565b634e487b7160e01b5f52603260045260245ffd5b5f823561013e19833603018112613f3c575f80fd5b9190910192915050565b5f808335601e19843603018112613f5b575f80fd5b8301803591506001600160401b03821115613f74575f80fd5b602001915036819003821315613544575f80fd5b6001600160401b0381168114611cfb575f80fd5b63ffffffff613faa8961371d565b168152602088013560208201525f6040890135613fc681613f88565b6001600160401b03811660408401525087606083015260e06080830152613ff160e083018789613ed8565b6001600160a01b03861660a084015282810360c0840152614013818587613ed8565b9a9950505050505050505050565b5f60208284031215614031575f80fd5b81516001600160401b03811115614046575f80fd5b8201601f81018413614056575f80fd5b805161406461394d8261390a565b818152856020838501011115614078575f80fd5b6119a5826020830160208601613451565b5f835161409a818460208801613451565b8351908301906140ae818360208801613451565b64173539b7b760d91b9101908152600501949350505050565b5f602082840312156140d7575f80fd5b8135611a0c81613f88565b60018060a01b038516815283602082015261ffff83166040820152608060608201525f6141126080830184613473565b9695505050505050565b80820180821115610ce057610ce0613bd2565b604081525f6141416040830185613473565b82810360208401526119a58185613473565b5f60208284031215614163575f80fd5b8151611a0c81613843565b6040815263ffffffff8351166040820152602083015160608201525f604084015160a060808401526141a360e0840182613473565b90506060850151603f198483030160a08501526141c08282613473565b60809690960151151560c08501525050506001600160a01b039190911660209091015290565b5f604082840312156141f6575f80fd5b6141fe613890565b9050815181526020820151602082015292915050565b5f60808284031215614224575f80fd5b61422c6138b8565b82518152602083015161423e81613f88565b602082015261425084604085016141e6565b60408201529392505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f9061411290830184613473565b5f6020828403121561429e575f80fd5b8151611a0c816133cb565b81516001600160401b038111156142c2576142c261387c565b6142d6816142d08454613b70565b84613c1c565b602080601f831160018114614309575f84156142f25750858301515b5f19600386901b1c1916600185901b178555612762565b5f85815260208120601f198616915b8281101561433757888601518255948401946001909101908401614318565b508582101561435457878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f60208083018184528085518083526040925060408601915060408160051b8701018488015f5b838110156143df57888303603f190185528151805163ffffffff1684528781015161ffff168885015286015160608785018190526143cb81860183613473565b96890196945050509086019060010161438b565b509098975050505050505050565b5f604082840312156143fd575f80fd5b611a0c83836141e6565b80356020831015610ce0575f19602084900360031b1b1692915050565b60c084901b6001600160c01b031916815260e083901b6001600160e01b031916600882015281515f9061445e81600c850160208701613451565b91909101600c01949350505050565b8481528360208201528260408201525f8251614490816060850160208701613451565b9190910160600195945050505050565b81810381811115610ce057610ce0613bd256fea26469706673582212203c57d472fc779f356d64f7e6092a1a1ba36fce1e130d07f1f995523e1936875764736f6c63430008180033
| Token | Symbol | Balance | Price | Value |
|---|---|---|---|---|
| no token holdings | ||||
| Transaction Hash | Method | Block | Age | From | To | Type | Item | ||
|---|---|---|---|---|---|---|---|---|---|
| no NFT transfers for this address yet | |||||||||
| Txn Hash | Age | Event | Topics / Data |
|---|---|---|---|
| 0x0c6789…f50e78 | 5 days agoWed, 12 Aug 2026 01:13:12 UTC | 0x986156…351f | [0] 0x024813b91c54…2028b9a7 [1] 0x000000000000…48b6d5d7 data: 0x000000000000000000…000005af |
| 0x0c6789…f50e78 | 5 days agoWed, 12 Aug 2026 01:13:12 UTC | Transfer | [0] 0x000000000000…48b6d5d7 [1] 0x000000000000…00000000 [2] 0x000000000000…000005af |
| 0x0c6789…f50e78 | 5 days agoWed, 12 Aug 2026 01:13:12 UTC | 0x7edb6f…9d4f | [0] 0x000000000000…48b6d5d7 data: 0x000000000000000000…00007595 |
| 0x66e247…16c769 | 8 days agoSun, 09 Aug 2026 18:57:04 UTC | 0x7883fa…eef5 | [0] 0x9b20ab68f2e8…002ee639 [1] 0x000000000000…48b6d5d7 data: 0x000000000000000000…000005af |
| 0x66e247…16c769 | 8 days agoSun, 09 Aug 2026 18:57:04 UTC | 0xc4b8a8…68e8 | [0] 0x000000000000…000005af data: 0x000000000000000000…bb13c127 |
| 0x66e247…16c769 | 8 days agoSun, 09 Aug 2026 18:57:04 UTC | Transfer | [0] 0x000000000000…00000000 [1] 0x000000000000…48b6d5d7 [2] 0x000000000000…000005af |
| 0x621fa0…e80605 | 8 days agoSun, 09 Aug 2026 16:43:13 UTC | 0xbe4864…b674 | data: 0x000000000000000000…00000000 |
| 0xd7c72a…03eb18 | 8 days agoSun, 09 Aug 2026 16:43:13 UTC | 0x238399…b98b | data: 0x000000000000000000…518fb5d8 |
| 0x9db939…5c8016 | 8 days agoSun, 09 Aug 2026 16:42:02 UTC | 0xf9c780…32f6 | data: 0x000000000000000000…00000000 |
| 0x6680c3…cf4a10 | 8 days agoSun, 09 Aug 2026 16:41:32 UTC | 0xae1d65…1c62 | data: 0x000000000000000000…000001f4 |
| 0x6680c3…cf4a10 | 8 days agoSun, 09 Aug 2026 16:41:32 UTC | 0xfca882…2419 | data: 0x000000000000000000…00000000 |
| 0x6680c3…cf4a10 | 8 days agoSun, 09 Aug 2026 16:41:32 UTC | 0x8be007…57e0 | [0] 0x000000000000…00000000 [1] 0x000000000000…21901164 |
| Transaction Hash | Method ? | Block | Age | From | To | Amount | Txn Fee ? | ||
|---|---|---|---|---|---|---|---|---|---|
| 0x0c6789…f50e78 | send | 34,121,769 | 5 days agoWed, 12 Aug 2026 01:13:12 UTC | 0x25bb…d5d7 | IN | Lil Mutants On Robinhood | $1.000.00052 ETH | 0.00004019 | |
| 0xd7c72a…03eb18 | setPeer | 32,088,487 | 8 days agoSun, 09 Aug 2026 16:43:13 UTC | 0x5418…1164 | IN | Lil Mutants On Robinhood | $0.000 ETH | 0.00000129 | |
| 0x621fa0…e80605 | setEnforcedOptions | 32,088,487 | 8 days agoSun, 09 Aug 2026 16:43:13 UTC | 0x5418…1164 | IN | Lil Mutants On Robinhood | $0.000 ETH | 0.00000143 | |
| 0x9db939…5c8016 | setBaseURI | 32,087,760 | 8 days agoSun, 09 Aug 2026 16:42:02 UTC | 0x5418…1164 | IN | Lil Mutants On Robinhood | $0.000 ETH | 0.00000319 |
| Type | Age | Block | Details |
|---|---|---|---|
| no cross-chain L1↔L2 transactions for this address | |||
| Transaction Hash | Method | Block | Age | From | To | Amount | Token | ||
|---|---|---|---|---|---|---|---|---|---|
| no token transfers for this address yet | |||||||||
| Block | Age | Parent Transaction Hash | Type | Method | From | To | Value | |
|---|---|---|---|---|---|---|---|---|
| 34,121,769 | 5 days agoWed, 12 Aug 2026 01:13:12 UTC | 0x0c6789…f50e78 | CALL | send | 0xe706…f674 | OUT | 0x6f47…dd5b | 0.00037 ETH |