[ { "inputs": [ { "internalType": "address", "name": "_treasury", "type": "address" }, { "internalType": "address", "name": "_layerZeroEndpoint", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AccessControlBadConfirmation", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bytes32", "name": "neededRole", "type": "bytes32" } ], "name": "AccessControlUnauthorizedAccount", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "target", "type": "address" } ], "name": "AddressEmptyCode", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "AddressInsufficientBalance", "type": "error" }, { "inputs": [], "name": "CollateralNotSupported", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "allowance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientAllowance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC20InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC20InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC20InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" } ], "name": "ERC20InvalidSpender", "type": "error" }, { "inputs": [], "name": "FailedInnerCall", "type": "error" }, { "inputs": [], "name": "InvalidDelegate", "type": "error" }, { "inputs": [], "name": "InvalidEndpointCall", "type": "error" }, { "inputs": [], "name": "InvalidLocalDecimals", "type": "error" }, { "inputs": [ { "internalType": "bytes", "name": "options", "type": "bytes" } ], "name": "InvalidOptions", "type": "error" }, { "inputs": [], "name": "LzTokenUnavailable", "type": "error" }, { "inputs": [], "name": "NoChangeInBoolean", "type": "error" }, { "inputs": [ { "internalType": "uint32", "name": "eid", "type": "uint32" } ], "name": "NoPeer", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "msgValue", "type": "uint256" } ], "name": "NotEnoughNative", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "addr", "type": "address" } ], "name": "OnlyEndpoint", "type": "error" }, { "inputs": [ { "internalType": "uint32", "name": "eid", "type": "uint32" }, { "internalType": "bytes32", "name": "sender", "type": "bytes32" } ], "name": "OnlyPeer", "type": "error" }, { "inputs": [], "name": "OnlySelf", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "type": "error" }, { "inputs": [], "name": "Paused", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" } ], "name": "SafeERC20FailedOperation", "type": "error" }, { "inputs": [ { "internalType": "bytes", "name": "result", "type": "bytes" } ], "name": "SimulationResult", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "amountLD", "type": "uint256" }, { "internalType": "uint256", "name": "minAmountLD", "type": "uint256" } ], "name": "SlippageExceeded", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "components": [ { "internalType": "uint32", "name": "eid", "type": "uint32" }, { "internalType": "uint16", "name": "msgType", "type": "uint16" }, { "internalType": "bytes", "name": "options", "type": "bytes" } ], "indexed": false, "internalType": "struct EnforcedOptionParam[]", "name": "_enforcedOptions", "type": "tuple[]" } ], "name": "EnforcedOptionSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "inspector", "type": "address" } ], "name": "MsgInspectorSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "guid", "type": "bytes32" }, { "indexed": false, "internalType": "uint32", "name": "srcEid", "type": "uint32" }, { "indexed": true, "internalType": "address", "name": "toAddress", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amountReceivedLD", "type": "uint256" } ], "name": "OFTReceived", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "guid", "type": "bytes32" }, { "indexed": false, "internalType": "uint32", "name": "dstEid", "type": "uint32" }, { "indexed": true, "internalType": "address", "name": "fromAddress", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amountSentLD", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amountReceivedLD", "type": "uint256" } ], "name": "OFTSent", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint32", "name": "eid", "type": "uint32" }, { "indexed": false, "internalType": "bytes32", "name": "peer", "type": "bytes32" } ], "name": "PeerSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "preCrimeAddress", "type": "address" } ], "name": "PreCrimeSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } ], "name": "RoleAdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleGranted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleRevoked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MINTER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "OPERATOR_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "SEND", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "SEND_AND_CALL", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "collateral", "type": "address" } ], "name": "addCollateral", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "uint32", "name": "srcEid", "type": "uint32" }, { "internalType": "bytes32", "name": "sender", "type": "bytes32" }, { "internalType": "uint64", "name": "nonce", "type": "uint64" } ], "internalType": "struct Origin", "name": "origin", "type": "tuple" } ], "name": "allowInitializePath", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "approvalRequired", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint32", "name": "_eid", "type": "uint32" }, { "internalType": "uint16", "name": "_msgType", "type": "uint16" }, { "internalType": "bytes", "name": "_extraOptions", "type": "bytes" } ], "name": "combineOptions", "outputs": [ { "internalType": "bytes", "name": "", "type": "bytes" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimalConversionRate", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "endpoint", "outputs": [ { "internalType": "contract ILayerZeroEndpointV2", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint32", "name": "", "type": "uint32" }, { "internalType": "uint16", "name": "", "type": "uint16" } ], "name": "enforcedOptions", "outputs": [ { "internalType": "bytes", "name": "", "type": "bytes" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "grantRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "isCollateral", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "uint32", "name": "srcEid", "type": "uint32" }, { "internalType": "bytes32", "name": "sender", "type": "bytes32" }, { "internalType": "uint64", "name": "nonce", "type": "uint64" } ], "internalType": "struct Origin", "name": "", "type": "tuple" }, { "internalType": "bytes", "name": "", "type": "bytes" }, { "internalType": "address", "name": "_sender", "type": "address" } ], "name": "isComposeMsgSender", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint32", "name": "_eid", "type": "uint32" }, { "internalType": "bytes32", "name": "_peer", "type": "bytes32" } ], "name": "isPeer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "uint32", "name": "srcEid", "type": "uint32" }, { "internalType": "bytes32", "name": "sender", "type": "bytes32" }, { "internalType": "uint64", "name": "nonce", "type": "uint64" } ], "internalType": "struct Origin", "name": "_origin", "type": "tuple" }, { "internalType": "bytes32", "name": "_guid", "type": "bytes32" }, { "internalType": "bytes", "name": "_message", "type": "bytes" }, { "internalType": "address", "name": "_executor", "type": "address" }, { "internalType": "bytes", "name": "_extraData", "type": "bytes" } ], "name": "lzReceive", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "components": [ { "components": [ { "internalType": "uint32", "name": "srcEid", "type": "uint32" }, { "internalType": "bytes32", "name": "sender", "type": "bytes32" }, { "internalType": "uint64", "name": "nonce", "type": "uint64" } ], "internalType": "struct Origin", "name": "origin", "type": "tuple" }, { "internalType": "uint32", "name": "dstEid", "type": "uint32" }, { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "bytes32", "name": "guid", "type": "bytes32" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "address", "name": "executor", "type": "address" }, { "internalType": "bytes", "name": "message", "type": "bytes" }, { "internalType": "bytes", "name": "extraData", "type": "bytes" } ], "internalType": "struct InboundPacket[]", "name": "_packets", "type": "tuple[]" } ], "name": "lzReceiveAndRevert", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "uint32", "name": "srcEid", "type": "uint32" }, { "internalType": "bytes32", "name": "sender", "type": "bytes32" }, { "internalType": "uint64", "name": "nonce", "type": "uint64" } ], "internalType": "struct Origin", "name": "_origin", "type": "tuple" }, { "internalType": "bytes32", "name": "_guid", "type": "bytes32" }, { "internalType": "bytes", "name": "_message", "type": "bytes" }, { "internalType": "address", "name": "_executor", "type": "address" }, { "internalType": "bytes", "name": "_extraData", "type": "bytes" } ], "name": "lzReceiveSimulate", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "msgInspector", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint32", "name": "", "type": "uint32" }, { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "name": "nextNonce", "outputs": [ { "internalType": "uint64", "name": "nonce", "type": "uint64" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "oApp", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "oAppVersion", "outputs": [ { "internalType": "uint64", "name": "senderVersion", "type": "uint64" }, { "internalType": "uint64", "name": "receiverVersion", "type": "uint64" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "oftVersion", "outputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" }, { "internalType": "uint64", "name": "version", "type": "uint64" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "name": "peers", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "preCrime", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "collateral", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "print", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "uint32", "name": "dstEid", "type": "uint32" }, { "internalType": "bytes32", "name": "to", "type": "bytes32" }, { "internalType": "uint256", "name": "amountLD", "type": "uint256" }, { "internalType": "uint256", "name": "minAmountLD", "type": "uint256" }, { "internalType": "bytes", "name": "extraOptions", "type": "bytes" }, { "internalType": "bytes", "name": "composeMsg", "type": "bytes" }, { "internalType": "bytes", "name": "oftCmd", "type": "bytes" } ], "internalType": "struct SendParam", "name": "_sendParam", "type": "tuple" } ], "name": "quoteOFT", "outputs": [ { "components": [ { "internalType": "uint256", "name": "minAmountLD", "type": "uint256" }, { "internalType": "uint256", "name": "maxAmountLD", "type": "uint256" } ], "internalType": "struct OFTLimit", "name": "oftLimit", "type": "tuple" }, { "components": [ { "internalType": "int256", "name": "feeAmountLD", "type": "int256" }, { "internalType": "string", "name": "description", "type": "string" } ], "internalType": "struct OFTFeeDetail[]", "name": "oftFeeDetails", "type": "tuple[]" }, { "components": [ { "internalType": "uint256", "name": "amountSentLD", "type": "uint256" }, { "internalType": "uint256", "name": "amountReceivedLD", "type": "uint256" } ], "internalType": "struct OFTReceipt", "name": "oftReceipt", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "uint32", "name": "dstEid", "type": "uint32" }, { "internalType": "bytes32", "name": "to", "type": "bytes32" }, { "internalType": "uint256", "name": "amountLD", "type": "uint256" }, { "internalType": "uint256", "name": "minAmountLD", "type": "uint256" }, { "internalType": "bytes", "name": "extraOptions", "type": "bytes" }, { "internalType": "bytes", "name": "composeMsg", "type": "bytes" }, { "internalType": "bytes", "name": "oftCmd", "type": "bytes" } ], "internalType": "struct SendParam", "name": "_sendParam", "type": "tuple" }, { "internalType": "bool", "name": "_payInLzToken", "type": "bool" } ], "name": "quoteSend", "outputs": [ { "components": [ { "internalType": "uint256", "name": "nativeFee", "type": "uint256" }, { "internalType": "uint256", "name": "lzTokenFee", "type": "uint256" } ], "internalType": "struct MessagingFee", "name": "msgFee", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "collateral", "type": "address" } ], "name": "removeCollateral", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "callerConfirmation", "type": "address" } ], "name": "renounceRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "uint32", "name": "dstEid", "type": "uint32" }, { "internalType": "bytes32", "name": "to", "type": "bytes32" }, { "internalType": "uint256", "name": "amountLD", "type": "uint256" }, { "internalType": "uint256", "name": "minAmountLD", "type": "uint256" }, { "internalType": "bytes", "name": "extraOptions", "type": "bytes" }, { "internalType": "bytes", "name": "composeMsg", "type": "bytes" }, { "internalType": "bytes", "name": "oftCmd", "type": "bytes" } ], "internalType": "struct SendParam", "name": "_sendParam", "type": "tuple" }, { "components": [ { "internalType": "uint256", "name": "nativeFee", "type": "uint256" }, { "internalType": "uint256", "name": "lzTokenFee", "type": "uint256" } ], "internalType": "struct MessagingFee", "name": "_fee", "type": "tuple" }, { "internalType": "address", "name": "_refundAddress", "type": "address" } ], "name": "send", "outputs": [ { "components": [ { "internalType": "bytes32", "name": "guid", "type": "bytes32" }, { "internalType": "uint64", "name": "nonce", "type": "uint64" }, { "components": [ { "internalType": "uint256", "name": "nativeFee", "type": "uint256" }, { "internalType": "uint256", "name": "lzTokenFee", "type": "uint256" } ], "internalType": "struct MessagingFee", "name": "fee", "type": "tuple" } ], "internalType": "struct MessagingReceipt", "name": "msgReceipt", "type": "tuple" }, { "components": [ { "internalType": "uint256", "name": "amountSentLD", "type": "uint256" }, { "internalType": "uint256", "name": "amountReceivedLD", "type": "uint256" } ], "internalType": "struct OFTReceipt", "name": "oftReceipt", "type": "tuple" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_delegate", "type": "address" } ], "name": "setDelegate", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "uint32", "name": "eid", "type": "uint32" }, { "internalType": "uint16", "name": "msgType", "type": "uint16" }, { "internalType": "bytes", "name": "options", "type": "bytes" } ], "internalType": "struct EnforcedOptionParam[]", "name": "_enforcedOptions", "type": "tuple[]" } ], "name": "setEnforcedOptions", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_msgInspector", "type": "address" } ], "name": "setMsgInspector", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_status", "type": "bool" } ], "name": "setPaused", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint32", "name": "_eid", "type": "uint32" }, { "internalType": "bytes32", "name": "_peer", "type": "bytes32" } ], "name": "setPeer", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_preCrime", "type": "address" } ], "name": "setPreCrime", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_treasury", "type": "address" } ], "name": "setTreasury", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "sharedDecimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "token", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "treasury", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" } ]
60c060405234801561001057600080fd5b506040516146c83803806146c883398101604081905261002f91610374565b6040518060400160405280601c81526020017f4c61796572205a65726f20496e73616e6520546563686e6f6c6f677900000000815250604051806040016040528060048152602001631b1e925560e21b8152508233838361009461025360201b60201c565b84848181818133806100c057604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100c981610258565b506001600160a01b0380831660805281166100f757604051632d618d8160e21b815260040160405180910390fd5b60805160405163ca5eb5e160e01b81526001600160a01b0383811660048301529091169063ca5eb5e190602401600060405180830381600087803b15801561013e57600080fd5b505af1158015610152573d6000803e3d6000fd5b505050505050505061016861025360201b60201c565b60ff168360ff16101561018e576040516301e9714b60e41b815260040160405180910390fd5b6101996006846103bd565b6101a490600a6104ba565b60a05250600891506101b890508382610571565b5060096101c58282610571565b5050600c80546001600160a81b0319166001600160a01b038916179055506101f5935060009250339150506102a8565b506102207f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929336102a8565b5061024b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6336102a8565b505050610630565b600690565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000828152600a602090815260408083206001600160a01b038516845290915281205460ff1661034e576000838152600a602090815260408083206001600160a01b03861684529091529020805460ff191660011790556103063390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610352565b5060005b92915050565b80516001600160a01b038116811461036f57600080fd5b919050565b6000806040838503121561038757600080fd5b61039083610358565b915061039e60208401610358565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b60ff8281168282160390811115610352576103526103a7565b600181815b808511156104115781600019048211156103f7576103f76103a7565b8085161561040457918102915b93841c93908002906103db565b509250929050565b60008261042857506001610352565b8161043557506000610352565b816001811461044b576002811461045557610471565b6001915050610352565b60ff841115610466576104666103a7565b50506001821b610352565b5060208310610133831016604e8410600b8410161715610494575081810a610352565b61049e83836103d6565b80600019048211156104b2576104b26103a7565b029392505050565b60006104c960ff841683610419565b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806104fa57607f821691505b60208210810361051a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561056c576000816000526020600020601f850160051c810160208610156105495750805b601f850160051c820191505b8181101561056857828155600101610555565b5050505b505050565b81516001600160401b0381111561058a5761058a6104d0565b61059e8161059884546104e6565b84610520565b602080601f8311600181146105d357600084156105bb5750858301515b600019600386901b1c1916600185901b178555610568565b600085815260208120601f198616915b82811015610602578886015182559484019460019091019084016105e3565b50858210156106205787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a05161402d61069b600039600081816109240152818161277d015281816127f20152612a6a01526000818161079001528181610e4801528181611a6401528181611e49015281816123150152818161259a01528181612b660152612c36015261402d6000f3fe6080604052600436106103a25760003560e01c8063715018a6116101e7578063bc70b3541161010d578063d547741f116100a0578063f2fde38b1161006f578063f2fde38b14610bbd578063f5b541a614610bdd578063fc0c546a146106e2578063ff7bd03d14610c1157600080fd5b8063d547741f14610b17578063dd62ed3e14610b37578063f0d2d5a814610b7d578063f0f4426014610b9d57600080fd5b8063ca5eb5e1116100dc578063ca5eb5e114610a90578063d045a0dc14610ab0578063d424388514610ac3578063d539139314610ae357600080fd5b8063bc70b35414610a1c578063bd815db014610a3c578063c7c7f5b314610a4f578063c99d3a0614610a7057600080fd5b8063963efcaa11610185578063ac68553911610154578063ac6855391461098f578063b731ea0a146109af578063b98bd070146109cf578063bb0b6a53146109ef57600080fd5b8063963efcaa146109125780639f68b96414610946578063a217fddf1461095a578063a9059cbb1461096f57600080fd5b8063857749b0116101c1578063857749b0146106195780638da5cb5b1461089957806391d14854146108b757806395d89b41146108fd57600080fd5b8063715018a6146108285780637d25a05e1461083d57806382413eac1461087957600080fd5b80632f2ff15d116102cc57806352ae28791161026a5780635e280f11116102395780635e280f111461077e57806361d027b3146107b25780636fc1b31e146107d257806370a08231146107f257600080fd5b806352ae2879146106e25780635535d461146106f55780635a0dfe4d146107155780635c975abb1461074c57600080fd5b806336568abe116102a657806336568abe146106555780633b6f743b1461067557806340c10f19146106a257806342966c68146106c257600080fd5b80632f2ff15d146105f9578063313ce567146106195780633400288b1461063557600080fd5b8063134d4f251161034457806318160ddd1161031357806318160ddd146105755780631f5e13341461059457806323b872dd146105a9578063248a9ca3146105c957600080fd5b8063134d4f25146104ca578063156a0d0f146104f257806316c38b3c1461053357806317442b701461055357600080fd5b80630d35b415116103805780630d35b4151461041e5780630ee21e541461044d578063111ecdad1461047d57806313137d65146104b557600080fd5b806301ffc9a7146103a757806306fdde03146103dc578063095ea7b3146103fe575b600080fd5b3480156103b357600080fd5b506103c76103c2366004612ebb565b610c31565b60405190151581526020015b60405180910390f35b3480156103e857600080fd5b506103f1610cca565b6040516103d39190612f4d565b34801561040a57600080fd5b506103c7610419366004612f75565b610d5c565b34801561042a57600080fd5b5061043e610439366004612fb9565b610d74565b6040516103d393929190612fee565b34801561045957600080fd5b506103c76104683660046130a5565b600b6020526000908152604090205460ff1681565b34801561048957600080fd5b5060045461049d906001600160a01b031681565b6040516001600160a01b0390911681526020016103d3565b6104c86104c336600461311d565b610e46565b005b3480156104d657600080fd5b506104df600281565b60405161ffff90911681526020016103d3565b3480156104fe57600080fd5b50604080517f02e49c2c00000000000000000000000000000000000000000000000000000000815260016020820152016103d3565b34801561053f57600080fd5b506104c861054e3660046131cb565b610f38565b34801561055f57600080fd5b50604080516001815260026020820152016103d3565b34801561058157600080fd5b506007545b6040519081526020016103d3565b3480156105a057600080fd5b506104df600181565b3480156105b557600080fd5b506103c76105c43660046131e8565b610ff9565b3480156105d557600080fd5b506105866105e4366004613229565b6000908152600a602052604090206001015490565b34801561060557600080fd5b506104c8610614366004613242565b61101f565b34801561062557600080fd5b50604051600681526020016103d3565b34801561064157600080fd5b506104c861065036600461328b565b61104a565b34801561066157600080fd5b506104c8610670366004613242565b6110a8565b34801561068157600080fd5b506106956106903660046132a7565b6110f9565b6040516103d391906132ee565b3480156106ae57600080fd5b506104c86106bd366004612f75565b611160565b3480156106ce57600080fd5b506104c86106dd366004613229565b611194565b3480156106ee57600080fd5b503061049d565b34801561070157600080fd5b506103f1610710366004613317565b6111a1565b34801561072157600080fd5b506103c761073036600461328b565b63ffffffff919091166000908152600160205260409020541490565b34801561075857600080fd5b50600c546103c79074010000000000000000000000000000000000000000900460ff1681565b34801561078a57600080fd5b5061049d7f000000000000000000000000000000000000000000000000000000000000000081565b3480156107be57600080fd5b50600c5461049d906001600160a01b031681565b3480156107de57600080fd5b506104c86107ed3660046130a5565b611246565b3480156107fe57600080fd5b5061058661080d3660046130a5565b6001600160a01b031660009081526005602052604090205490565b34801561083457600080fd5b506104c86112bb565b34801561084957600080fd5b5061086061085836600461328b565b600092915050565b60405167ffffffffffffffff90911681526020016103d3565b34801561088557600080fd5b506103c761089436600461334a565b6112cf565b3480156108a557600080fd5b506000546001600160a01b031661049d565b3480156108c357600080fd5b506103c76108d2366004613242565b6000918252600a602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561090957600080fd5b506103f16112e4565b34801561091e57600080fd5b506105867f000000000000000000000000000000000000000000000000000000000000000081565b34801561095257600080fd5b5060006103c7565b34801561096657600080fd5b50610586600081565b34801561097b57600080fd5b506103c761098a366004612f75565b6112f3565b34801561099b57600080fd5b506104c86109aa366004612f75565b611301565b3480156109bb57600080fd5b5060025461049d906001600160a01b031681565b3480156109db57600080fd5b506104c86109ea3660046133f6565b61144d565b3480156109fb57600080fd5b50610586610a0a366004613438565b60016020526000908152604090205481565b348015610a2857600080fd5b506103f1610a37366004613453565b6115ae565b6104c8610a4a3660046133f6565b61173a565b610a62610a5d3660046134b4565b6118dd565b6040516103d3929190613522565b348015610a7c57600080fd5b506104c8610a8b3660046130a5565b6119d8565b348015610a9c57600080fd5b506104c8610aab3660046130a5565b611a24565b6104c8610abe36600461311d565b611ac3565b348015610acf57600080fd5b506104c8610ade3660046130a5565b611b0b565b348015610aef57600080fd5b506105867f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b348015610b2357600080fd5b506104c8610b32366004613242565b611b79565b348015610b4357600080fd5b50610586610b52366004613575565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b348015610b8957600080fd5b506104c8610b983660046130a5565b611b9e565b348015610ba957600080fd5b506104c8610bb83660046130a5565b611bed565b348015610bc957600080fd5b506104c8610bd83660046130a5565b611c52565b348015610be957600080fd5b506105867f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92981565b348015610c1d57600080fd5b506103c7610c2c3660046135a3565b611ca6565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b000000000000000000000000000000000000000000000000000000001480610cc457507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b606060088054610cd9906135bf565b80601f0160208091040260200160405190810160405280929190818152602001828054610d05906135bf565b8015610d525780601f10610d2757610100808354040283529160200191610d52565b820191906000526020600020905b815481529060010190602001808311610d3557829003601f168201915b5050505050905090565b600033610d6a818585611cdc565b5060019392505050565b60408051808201909152600080825260208201526060610da7604051806040016040528060008152602001600081525090565b604080518082018252600080825267ffffffffffffffff602080840182905284518381529081019094529195509182610e03565b604080518082019091526000815260606020820152815260200190600190039081610ddb5790505b509350600080610e28604089013560608a0135610e2360208c018c613438565b611ce9565b60408051808201909152918252602082015296989597505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163314610eaf576040517f91ac5e4f0000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b60208701803590610ec990610ec4908a613438565b611d46565b14610f2057610edb6020880188613438565b6040517fc26bebcc00000000000000000000000000000000000000000000000000000000815263ffffffff909116600482015260208801356024820152604401610ea6565b610f2f87878787878787611d9b565b50505050505050565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929610f6281611f1b565b811515600c60149054906101000a900460ff16151503610fae576040517fa1f5423e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50600c805491151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055565b600033611007858285611f25565b611012858585611fb6565b60019150505b9392505050565b6000828152600a602052604090206001015461103a81611f1b565b6110448383612047565b50505050565b6110526120f5565b63ffffffff8216600081815260016020908152604091829020849055815192835282018390527f238399d427b947898edb290f5ff0f9109849b1c3ba196a42e35f00c50a54b98b91015b60405180910390a15050565b6001600160a01b03811633146110ea576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110f4828261213b565b505050565b6040805180820190915260008082526020820152600061112960408501356060860135610e236020880188613438565b91505060008061113986846121c2565b909250905061115661114e6020880188613438565b8383886122ff565b9695505050505050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a661118a81611f1b565b6110f483836123e0565b61119e338261242f565b50565b6003602090815260009283526040808420909152908252902080546111c5906135bf565b80601f01602080910402602001604051908101604052809291908181526020018280546111f1906135bf565b801561123e5780601f106112135761010080835404028352916020019161123e565b820191906000526020600020905b81548152906001019060200180831161122157829003601f168201915b505050505081565b61124e6120f5565b600480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081179091556040519081527ff0be4f1e87349231d80c36b33f9e8639658eeaf474014dee15a3e6a4d4414197906020015b60405180910390a150565b6112c36120f5565b6112cd600061247e565b565b6001600160a01b03811630145b949350505050565b606060098054610cd9906135bf565b600033610d6a818585611fb6565b600c5474010000000000000000000000000000000000000000900460ff1615611356576040517f9e87fac800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0382166000908152600b602052604090205460ff166113a8576040517fb047cbb900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600c546040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b03918216602482015260448101839052908316906323b872dd906064016020604051808303816000875af115801561141a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143e919061363b565b5061144933826123e0565b5050565b6114556120f5565b60005b8181101561157c5761149a83838381811061147557611475613658565b90506020028101906114879190613687565b6114959060408101906136c5565b6124e6565b8282828181106114ac576114ac613658565b90506020028101906114be9190613687565b6114cc9060408101906136c5565b600360008686868181106114e2576114e2613658565b90506020028101906114f49190613687565b611502906020810190613438565b63ffffffff1663ffffffff168152602001908152602001600020600086868681811061153057611530613658565b90506020028101906115429190613687565b61155390604081019060200161372a565b61ffff168152602081019190915260400160002091611573919083613795565b50600101611458565b507fbe4864a8e820971c0247f5992e2da559595f7bf076a21cb5928d443d2a13b674828260405161109c929190613880565b63ffffffff8416600090815260036020908152604080832061ffff871684529091528120805460609291906115e2906135bf565b80601f016020809104026020016040519081016040528092919081815260200182805461160e906135bf565b801561165b5780601f106116305761010080835404028352916020019161165b565b820191906000526020600020905b81548152906001019060200180831161163e57829003601f168201915b5050505050905080516000036116ab5783838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509294506112dc9350505050565b60008390036116bb5790506112dc565b60028310611704576116cd84846124e6565b806116db84600281886139be565b6040516020016116ed939291906139e8565b6040516020818303038152906040529150506112dc565b83836040517f9a6d49cd000000000000000000000000000000000000000000000000000000008152600401610ea6929190613a10565b60005b81811015611843573683838381811061175857611758613658565b905060200281019061176a9190613a24565b905061179d61177c6020830183613438565b602083013563ffffffff919091166000908152600160205260409020541490565b6117a7575061183b565b3063d045a0dc60c08301358360a08101356117c66101008301836136c5565b6117d7610100890160e08a016130a5565b6117e56101208a018a6136c5565b6040518963ffffffff1660e01b81526004016118079796959493929190613a6e565b6000604051808303818588803b15801561182057600080fd5b505af1158015611834573d6000803e3d6000fd5b5050505050505b60010161173d565b50336001600160a01b0316638e9e70996040518163ffffffff1660e01b8152600401600060405180830381865afa158015611882573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526118aa9190810190613b1e565b6040517f8351eea7000000000000000000000000000000000000000000000000000000008152600401610ea69190612f4d565b6118e5612e73565b604080518082019091526000808252602082015260008061191c33604089013560608a013561191760208c018c613438565b612541565b9150915060008061192d89846121c2565b909250905061195961194260208b018b613438565b8383611953368d90038d018d613bc0565b8b612567565b60408051808201909152858152602080820186905282519298509096503391907f85496b760a4b7f8d66384b9df21b381f5d1b1e79f229a47aaf4c232edc2fe59a906119a7908d018d613438565b6040805163ffffffff909216825260208201899052810187905260600160405180910390a350505050935093915050565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929611a0281611f1b565b506001600160a01b03166000908152600b60205260409020805460ff19169055565b611a2c6120f5565b6040517fca5eb5e10000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063ca5eb5e190602401600060405180830381600087803b158015611aa857600080fd5b505af1158015611abc573d6000803e3d6000fd5b5050505050565b333014611afc576040517f14d4a4e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f2f87878787878787610f20565b611b136120f5565b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081179091556040519081527fd48d879cef83a1c0bdda516f27b13ddb1b3f8bbac1c9e1511bb2a659c2427760906020016112b0565b6000828152600a6020526040902060010154611b9481611f1b565b611044838361213b565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929611bc881611f1b565b506001600160a01b03166000908152600b60205260409020805460ff19166001179055565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929611c1781611f1b565b50600c80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b611c5a6120f5565b6001600160a01b038116611c9d576040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260006004820152602401610ea6565b61119e8161247e565b6000602082018035906001908390611cbe9086613438565b63ffffffff1681526020810191909152604001600020541492915050565b6110f48383836001612672565b600080611cf585612779565b915081905083811015611d3e576040517f71c4efed0000000000000000000000000000000000000000000000000000000081526004810182905260248101859052604401610ea6565b935093915050565b63ffffffff811660009081526001602052604081205480610cc4576040517ff6ff4fb700000000000000000000000000000000000000000000000000000000815263ffffffff84166004820152602401610ea6565b6000611dad611daa87876127b0565b90565b90506000611dd982611dc7611dc28a8a6127c8565b6127eb565b611dd460208d018d613438565b612821565b90506028861115611eb9576000611e16611df960608c0160408d01613bf2565b611e0660208d018d613438565b84611e118c8c612835565b612880565b6040517f7cb590120000000000000000000000000000000000000000000000000000000081529091506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690637cb5901290611e859086908d906000908790600401613c0f565b600060405180830381600087803b158015611e9f57600080fd5b505af1158015611eb3573d6000803e3d6000fd5b50505050505b6001600160a01b038216887fefed6d3500546b29533b128a29e3a94d70788727f0507505ac12eaf2e578fd9c611ef260208d018d613438565b6040805163ffffffff9092168252602082018690520160405180910390a3505050505050505050565b61119e81336128b2565b6001600160a01b0383811660009081526006602090815260408083209386168352929052205460001981146110445781811015611fa7576040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024810182905260448101839052606401610ea6565b61104484848484036000612672565b6001600160a01b038316611ff9576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610ea6565b6001600160a01b03821661203c576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610ea6565b6110f4838383612920565b6000828152600a602090815260408083206001600160a01b038516845290915281205460ff166120ed576000838152600a602090815260408083206001600160a01b03861684529091529020805460ff191660011790556120a53390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610cc4565b506000610cc4565b6000546001600160a01b031633146112cd576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610ea6565b6000828152600a602090815260408083206001600160a01b038516845290915281205460ff16156120ed576000838152600a602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610cc4565b606080600061221f85602001356121d886612a63565b6121e560a08901896136c5565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612a8f92505050565b9093509050600081612232576001612235565b60025b90506122556122476020880188613438565b82610a3760808a018a6136c5565b6004549093506001600160a01b0316156122f657600480546040517f043a78eb0000000000000000000000000000000000000000000000000000000081526001600160a01b039091169163043a78eb916122b3918891889101613c41565b602060405180830381865afa1580156122d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122f4919061363b565b505b50509250929050565b60408051808201909152600080825260208201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ddc28c586040518060a001604052808863ffffffff16815260200161236289611d46565b8152602001878152602001868152602001851515815250306040518363ffffffff1660e01b8152600401612397929190613c66565b6040805180830381865afa1580156123b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123d79190613d2d565b95945050505050565b6001600160a01b038216612423576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610ea6565b61144960008383612920565b6001600160a01b038216612472576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610ea6565b61144982600083612920565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006124f560028284866139be565b6124fe91613d49565b60f01c9050600381146110f45782826040517f9a6d49cd000000000000000000000000000000000000000000000000000000008152600401610ea6929190613a10565b60008061254f858585611ce9565b909250905061255e868361242f565b94509492505050565b61256f612e73565b600061257e8460000151612b21565b602085015190915015612598576125988460200151612b62565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632637a450826040518060a001604052808b63ffffffff1681526020016125e88c611d46565b81526020018a815260200189815260200160008960200151111515815250866040518463ffffffff1660e01b8152600401612624929190613c66565b60806040518083038185885af1158015612642573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906126679190613d91565b979650505050505050565b6001600160a01b0384166126b5576040517fe602df0500000000000000000000000000000000000000000000000000000000815260006004820152602401610ea6565b6001600160a01b0383166126f8576040517f94280d6200000000000000000000000000000000000000000000000000000000815260006004820152602401610ea6565b6001600160a01b038085166000908152600660209081526040808320938716835292905220829055801561104457826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161276b91815260200190565b60405180910390a350505050565b60007f00000000000000000000000000000000000000000000000000000000000000006127a68184613e28565b610cc49190613e63565b60006127bf60208284866139be565b61101891613e7a565b60006127d86028602084866139be565b6127e191613e98565b60c01c9392505050565b6000610cc47f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff8416613e63565b600061282d84846123e0565b509092915050565b606061284482602881866139be565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929695505050505050565b6060848484846040516020016128999493929190613ede565b6040516020818303038152906040529050949350505050565b6000828152600a602090815260408083206001600160a01b038516845290915290205460ff16611449576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401610ea6565b6001600160a01b03831661294b5780600760008282546129409190613f5c565b909155506129d69050565b6001600160a01b038316600090815260056020526040902054818110156129b7576040517fe450d38c0000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024810182905260448101839052606401610ea6565b6001600160a01b03841660009081526005602052604090209082900390555b6001600160a01b0382166129f257600780548290039055612a11565b6001600160a01b03821660009081526005602052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612a5691815260200190565b60405180910390a3505050565b6000610cc47f000000000000000000000000000000000000000000000000000000000000000083613e28565b8051606090151580612af0578484604051602001612adc92919091825260c01b7fffffffffffffffff00000000000000000000000000000000000000000000000016602082015260280190565b604051602081830303815290604052612b17565b84843385604051602001612b079493929190613f6f565b6040516020818303038152906040525b9150935093915050565b6000813414612b5e576040517f9f704120000000000000000000000000000000000000000000000000000000008152346004820152602401610ea6565b5090565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e4fe1d946040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612be69190613fc8565b90506001600160a01b038116612c28576040517f5373352a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805133602482018190527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03818116604485015260648085018890528551808603909101815260849094019094526020830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790526114499385169286906110449085906000612ce28383612d49565b90508051600014158015612d07575080806020019051810190612d05919061363b565b155b156110f4576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401610ea6565b60606110188383600084600080856001600160a01b03168486604051612d6f9190613fe5565b60006040518083038185875af1925050503d8060008114612dac576040519150601f19603f3d011682016040523d82523d6000602084013e612db1565b606091505b5091509150611156868383606082612dd157612dcc82612e31565b611018565b8151158015612de857506001600160a01b0384163b155b15612e2a576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610ea6565b5080611018565b805115612e415780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604051806060016040528060008019168152602001600067ffffffffffffffff168152602001612eb6604051806040016040528060008152602001600081525090565b905290565b600060208284031215612ecd57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461101857600080fd5b60005b83811015612f18578181015183820152602001612f00565b50506000910152565b60008151808452612f39816020860160208601612efd565b601f01601f19169290920160200192915050565b6020815260006110186020830184612f21565b6001600160a01b038116811461119e57600080fd5b60008060408385031215612f8857600080fd5b8235612f9381612f60565b946020939093013593505050565b600060e08284031215612fb357600080fd5b50919050565b600060208284031215612fcb57600080fd5b813567ffffffffffffffff811115612fe257600080fd5b6112dc84828501612fa1565b8351815260208085015190820152600060a08201604060a0604085015281865180845260c08601915060c08160051b8701019350602080890160005b83811015613087578887037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4001855281518051885283015183880187905261307487890182612f21565b975050938201939082019060010161302a565b505087516060880152505050602085015160808501525090506112dc565b6000602082840312156130b757600080fd5b813561101881612f60565b600060608284031215612fb357600080fd5b60008083601f8401126130e657600080fd5b50813567ffffffffffffffff8111156130fe57600080fd5b60208301915083602082850101111561311657600080fd5b9250929050565b600080600080600080600060e0888a03121561313857600080fd5b61314289896130c2565b965060608801359550608088013567ffffffffffffffff8082111561316657600080fd5b6131728b838c016130d4565b909750955060a08a0135915061318782612f60565b90935060c0890135908082111561319d57600080fd5b506131aa8a828b016130d4565b989b979a50959850939692959293505050565b801515811461119e57600080fd5b6000602082840312156131dd57600080fd5b8135611018816131bd565b6000806000606084860312156131fd57600080fd5b833561320881612f60565b9250602084013561321881612f60565b929592945050506040919091013590565b60006020828403121561323b57600080fd5b5035919050565b6000806040838503121561325557600080fd5b82359150602083013561326781612f60565b809150509250929050565b803563ffffffff8116811461328657600080fd5b919050565b6000806040838503121561329e57600080fd5b612f9383613272565b600080604083850312156132ba57600080fd5b823567ffffffffffffffff8111156132d157600080fd5b6132dd85828601612fa1565b9250506020830135613267816131bd565b815181526020808301519082015260408101610cc4565b803561ffff8116811461328657600080fd5b6000806040838503121561332a57600080fd5b61333383613272565b915061334160208401613305565b90509250929050565b60008060008060a0858703121561336057600080fd5b61336a86866130c2565b9350606085013567ffffffffffffffff81111561338657600080fd5b613392878288016130d4565b90945092505060808501356133a681612f60565b939692955090935050565b60008083601f8401126133c357600080fd5b50813567ffffffffffffffff8111156133db57600080fd5b6020830191508360208260051b850101111561311657600080fd5b6000806020838503121561340957600080fd5b823567ffffffffffffffff81111561342057600080fd5b61342c858286016133b1565b90969095509350505050565b60006020828403121561344a57600080fd5b61101882613272565b6000806000806060858703121561346957600080fd5b61347285613272565b935061348060208601613305565b9250604085013567ffffffffffffffff81111561349c57600080fd5b6134a8878288016130d4565b95989497509550505050565b600080600083850360808112156134ca57600080fd5b843567ffffffffffffffff8111156134e157600080fd5b6134ed87828801612fa1565b9450506040601f198201121561350257600080fd5b50602084019150606084013561351781612f60565b809150509250925092565b600060c0820190508351825267ffffffffffffffff6020850151166020830152604084015161355e604084018280518252602090810151910152565b5082516080830152602083015160a0830152611018565b6000806040838503121561358857600080fd5b823561359381612f60565b9150602083013561326781612f60565b6000606082840312156135b557600080fd5b61101883836130c2565b600181811c908216806135d357607f821691505b602082108103612fb3577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561364d57600080fd5b8151611018816131bd565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18336030181126136bb57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126136fa57600080fd5b83018035915067ffffffffffffffff82111561371557600080fd5b60200191503681900382131561311657600080fd5b60006020828403121561373c57600080fd5b61101882613305565b601f8211156110f4576000816000526020600020601f850160051c8101602086101561376e5750805b601f850160051c820191505b8181101561378d5782815560010161377a565b505050505050565b67ffffffffffffffff8311156137ad576137ad61360c565b6137c1836137bb83546135bf565b83613745565b6000601f8411600181146137f557600085156137dd5750838201355b600019600387901b1c1916600186901b178355611abc565b600083815260209020601f19861690835b828110156138265786850135825560209485019460019092019101613806565b50868210156138435760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b60208082528181018390526000906040808401600586901b8501820187855b888110156139b0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088840301845281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18b360301811261390057600080fd5b8a01606063ffffffff61391283613272565b16855261ffff613923898401613305565b1688860152868201357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe183360301811261395c57600080fd5b90910187810191903567ffffffffffffffff81111561397a57600080fd5b80360383131561398957600080fd5b818887015261399b8287018285613855565b9689019695505050918601915060010161389f565b509098975050505050505050565b600080858511156139ce57600080fd5b838611156139db57600080fd5b5050820193919092039150565b600084516139fa818460208901612efd565b8201838582376000930192835250909392505050565b6020815260006112dc602083018486613855565b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec18336030181126136bb57600080fd5b67ffffffffffffffff8116811461119e57600080fd5b63ffffffff613a7c89613272565b1681526020880135602082015260006040890135613a9981613a58565b67ffffffffffffffff811660408401525087606083015260e06080830152613ac560e083018789613855565b6001600160a01b03861660a084015282810360c0840152613ae7818587613855565b9a9950505050505050505050565b6040805190810167ffffffffffffffff81118282101715613b1857613b1861360c565b60405290565b600060208284031215613b3057600080fd5b815167ffffffffffffffff80821115613b4857600080fd5b818401915084601f830112613b5c57600080fd5b815181811115613b6e57613b6e61360c565b604051601f8201601f19908116603f01168101908382118183101715613b9657613b9661360c565b81604052828152876020848701011115613baf57600080fd5b612667836020830160208801612efd565b600060408284031215613bd257600080fd5b613bda613af5565b82358152602083013560208201528091505092915050565b600060208284031215613c0457600080fd5b813561101881613a58565b6001600160a01b038516815283602082015261ffff831660408201526080606082015260006111566080830184612f21565b604081526000613c546040830185612f21565b82810360208401526123d78185612f21565b6040815263ffffffff8351166040820152602083015160608201526000604084015160a06080840152613c9c60e0840182612f21565b905060608501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08483030160a0850152613cd78282612f21565b60809690960151151560c08501525050506001600160a01b039190911660209091015290565b600060408284031215613d0f57600080fd5b613d17613af5565b9050815181526020820151602082015292915050565b600060408284031215613d3f57600080fd5b6110188383613cfd565b7fffff0000000000000000000000000000000000000000000000000000000000008135818116916002851015613d895780818660020360031b1b83161692505b505092915050565b600060808284031215613da357600080fd5b6040516060810181811067ffffffffffffffff82111715613dc657613dc661360c565b604052825181526020830151613ddb81613a58565b6020820152613ded8460408501613cfd565b60408201529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082613e5e577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8082028115828204841417610cc457610cc4613df9565b80356020831015610cc457600019602084900360031b1b1692915050565b7fffffffffffffffff0000000000000000000000000000000000000000000000008135818116916008851015613d895760089490940360031b84901b1690921692915050565b7fffffffffffffffff0000000000000000000000000000000000000000000000008560c01b1681527fffffffff000000000000000000000000000000000000000000000000000000008460e01b16600882015282600c82015260008251613f4c81602c850160208701612efd565b91909101602c0195945050505050565b80820180821115610cc457610cc4613df9565b8481527fffffffffffffffff0000000000000000000000000000000000000000000000008460c01b16602082015282602882015260008251613fb8816048850160208701612efd565b9190910160480195945050505050565b600060208284031215613fda57600080fd5b815161101881612f60565b600082516136bb818460208701612efd56fea2646970667358221220dc53642dbf9a723b498dcd1fdd4962ca77ba45d2f472484af3f3aa10fa2486f064736f6c63430008190033000000000000000000000000bfc57b070b1eda0fcb9c203edc1085c626f3a36d0000000000000000000000001a44076050125825900e736c501f859c50fe728c